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.
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:
Approve a candidate graph into the canonical registry:
```bash
curl -X POST http://127.0.0.1:8000/repos/1/analysis-runs/1/candidate-graph/approve \
-H 'content-type: application/json' \
-d '{"notes":"Approved first review package"}'
```
Approval copies candidate abilities, capabilities, features, and evidence into the approved registry tables, marks candidates approved, and moves the repository status to `indexed`.