generated from coulomb/repo-seed
76 lines
2.0 KiB
Markdown
76 lines
2.0 KiB
Markdown
# Repository Ability Registry
|
|
|
|
The Repository Ability Registry maps repositories from usefulness to implementation:
|
|
|
|
```text
|
|
Ability -> Capability -> Feature -> Evidence -> Code location
|
|
```
|
|
|
|
The first implementation slice is a Python registry core plus FastAPI HTTP API for manual repository profiles. It deliberately separates the manual/canonical registry path from the later analyzer pipeline.
|
|
|
|
## Local Development
|
|
|
|
Create an environment and install dependencies:
|
|
|
|
```bash
|
|
python3 -m venv .venv
|
|
. .venv/bin/activate
|
|
python -m pip install -e ".[dev]"
|
|
```
|
|
|
|
Run tests:
|
|
|
|
```bash
|
|
pytest
|
|
```
|
|
|
|
Run the API:
|
|
|
|
```bash
|
|
uvicorn repo_registry.web_api.app:app --reload
|
|
```
|
|
|
|
The API creates a local SQLite database at `var/repo-registry.sqlite3` by default.
|
|
|
|
## First API Loop
|
|
|
|
```bash
|
|
curl -X POST http://127.0.0.1:8000/repos \
|
|
-H 'content-type: application/json' \
|
|
-d '{"name":"MailRouter","url":"https://example.com/mail-router.git"}'
|
|
```
|
|
|
|
Then add abilities, capabilities, features, and evidence under that repository and inspect:
|
|
|
|
```bash
|
|
curl http://127.0.0.1:8000/repos/1/ability-map
|
|
curl 'http://127.0.0.1:8000/search?q=classify'
|
|
```
|
|
|
|
## Deterministic Analysis
|
|
|
|
For local development, repository URLs may be local filesystem paths. Git URLs, including `file://` URLs, are cloned into `var/checkouts` before scanning. Trigger a deterministic scan:
|
|
|
|
```bash
|
|
curl -X POST http://127.0.0.1:8000/repos/1/analysis-runs \
|
|
-H 'content-type: application/json' \
|
|
-d '{}'
|
|
```
|
|
|
|
Or override the scan source path explicitly:
|
|
|
|
```bash
|
|
curl -X POST http://127.0.0.1:8000/repos/1/analysis-runs \
|
|
-H 'content-type: application/json' \
|
|
-d '{"source_path":"/path/to/repository"}'
|
|
```
|
|
|
|
Inspect recorded facts:
|
|
|
|
```bash
|
|
curl http://127.0.0.1:8000/repos/1/analysis-runs
|
|
curl http://127.0.0.1:8000/repos/1/observed-facts
|
|
```
|
|
|
|
The deterministic scanner records observed facts only: languages, documentation files, examples, tests, package manifests, configuration files, framework hints, and likely API/CLI interfaces.
|