artifact-store/README.md

90 lines
3.6 KiB
Markdown
Raw Normal View History

2026-05-15 20:08:32 +02:00
# artifact-store
2026-05-15 16:14:36 +00:00
Generic artifact registry and storage gateway for generated outputs,
evidence packages, reports, logs, snapshots, exports, and release
artifacts.
2026-05-15 20:08:32 +02:00
The registry owns artifact identity, metadata, provenance, retention
policy, and retrieval records. Bytes are delegated to configured storage
backends (local filesystem in v1, S3-compatible / Ceph RGW in WP-0004).
2026-05-15 20:08:32 +02:00
The shape is library-first (`artifactstore` Python package); the HTTP
server and the CLI are thin consumers. Content is addressed by digest;
state is authoritative in an append-only event log
([ADR-0002](docs/adr/0002-event-log-source-of-truth.md)); materialised
views are rebuildable.
2026-05-15 20:08:32 +02:00
## Status
**v0.1 (WP-0001 baseline)** — library, CLI, minimal HTTP app, local FS
backend, end-to-end ingest + finalize + replay all working. The full
package CRUD HTTP API lands in WP-0002.
## Quick start
Requires Python ≥ 3.12 and [`uv`](https://docs.astral.sh/uv/).
```sh
uv sync --all-extras # install dependencies (creates .venv + uv.lock)
cp .env.example .env # optional; defaults work out of the box
make migrate-fresh # initialise ./var/artifactstore.db
make dev # uvicorn on 127.0.0.1:8000
# in another terminal
curl -s http://127.0.0.1:8000/health | python3 -m json.tool
artifactstore health
```
## Make targets
| Target | Purpose |
|----------------------|---------|
| `make install` | `uv sync --all-extras` |
| `make dev` | run the FastAPI app with reload |
| `make test` | run the pytest suite |
| `make lint` | ruff check + ruff format --check |
| `make format` | apply ruff format + ruff check --fix |
| `make type` | mypy --strict |
| `make migrate` | `alembic upgrade head` |
| `make migrate-fresh` | drop the local SQLite DB and re-run migrations |
| `make clean` | remove caches and build artefacts |
## CLI
```sh
artifactstore version # print the package version
artifactstore migrate # alembic upgrade head
artifactstore replay # rebuild materialised views from the event log
artifactstore health # JSON liveness summary (same payload as /health)
```
## Documentation
- [INTENT.md](INTENT.md) — purpose, product thesis, scope, boundary.
- [SCOPE.md](SCOPE.md) — lightweight orientation.
- [docs/OPERATOR.md](docs/OPERATOR.md) — runbook: env vars, DB backends,
CLI / HTTP reference, end-to-end smoke test, replay procedure.
- [docs/ARCHITECTURE-BLUEPRINT.md](docs/ARCHITECTURE-BLUEPRINT.md) — v2
architecture: modules, data model, API shape.
- [docs/PLATFORM-AMBITION.md](docs/PLATFORM-AMBITION.md) — longer-horizon
thesis and v1 schema commitments.
- [docs/ROADMAP.md](docs/ROADMAP.md) — workplan sequencing across phases.
- [docs/adr/](docs/adr/) — architecture decision records (ADR-0001 …
ADR-0006).
- [docs/ASSEMBLY-EXPERIMENT.md](docs/ASSEMBLY-EXPERIMENT.md) — opt-in
research line on hand-tuned asm for hot kernels.
## Workplans
- [WP-0001 — Foundation: scaffold, core kernels, local FS backend](workplans/ARTIFACT-STORE-WP-0001-service-baseline.md) — **done**
- [WP-0002 — Ingestion API and manifest surface](workplans/ARTIFACT-STORE-WP-0002-ingestion-api.md) (planned)
- [WP-0003 — Retention lifecycle](workplans/ARTIFACT-STORE-WP-0003-retention-lifecycle.md) (planned)
- [WP-0004 — S3-compatible backend](workplans/ARTIFACT-STORE-WP-0004-s3-compatible-backend.md) (planned)
- [WP-0005 — Guide-board pilot ingestion](workplans/ARTIFACT-STORE-WP-0005-guide-board-pilot.md) (planned)
## Agent operating notes
See [AGENTS.md](AGENTS.md) for the StateHub-integrated session protocol,
workplan conventions, and progress-logging contract.