Generic shared service artifact store to integrat S3 Buckets or scalable selfhosted Storage based on Ceph.
Find a file
tegwick a6b6746f91 WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest)
Lands the smallest credible foundation per ADR-0005:

- pyproject.toml: hatchling build, runtime deps (FastAPI, uvicorn, SQLAlchemy 2.0,
  asyncpg, aiosqlite, alembic, blake3, cbor2, typer, structlog, pydantic,
  pydantic-settings); dev deps (pytest, pytest-asyncio, httpx, hypothesis, ruff,
  mypy); ruff + mypy --strict + pytest configured.
- uv.lock committed.
- Makefile thin shims: install / dev / test / lint / format / type / migrate / clean.
- src/artifactstore/ package skeleton with placeholder __init__.py per concern:
  identity, manifest, events, retention, audit, storage, dataplane, registry,
  api/http (minimal FastAPI app, GET / scaffold banner), cli (typer app with
  version subcommand), config (pydantic-settings).
- tests/{unit,integration}/conftest.py present; unit smoke tests assert package
  imports, HTTP root route, CLI version round-trip, settings defaults.
- .env.example documents ARTIFACTSTORE_DATABASE_URL,
  ARTIFACTSTORE_STORAGE_LOCAL_ROOT, ARTIFACTSTORE_LOG_LEVEL.
- README updated with install / dev / test instructions.
- .gitignore: claude local state, local runtime data (var/, sqlite db).

make lint && make type && make test pass on a clean checkout (4 tests, 20
source files type-clean under mypy --strict).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 01:30:22 +02:00
docs docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans 2026-05-15 21:16:17 +02:00
src/artifactstore WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00
tests WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00
workplans WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00
.custodian-brief.md chore(consistency): sync task status from DB [auto] 2026-05-15 23:17:03 +02:00
.env.example WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00
.gitignore WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00
AGENTS.md docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans 2026-05-15 21:16:17 +02:00
INTENT.md Bootstraping the repo 2026-05-15 20:08:32 +02:00
LICENSE Initial commit 2026-05-15 16:14:36 +00:00
Makefile WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00
pyproject.toml WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00
README.md WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00
SCOPE.md Bootstraping the repo 2026-05-15 20:08:32 +02:00
uv.lock WP-0001-T001: service scaffold (Python, FastAPI, uv, ruff, mypy, pytest) 2026-05-16 01:30:22 +02:00

artifact-store

Generic artifact registry and storage gateway for generated outputs, evidence packages, reports, logs, snapshots, exports, and release artifacts.

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 next).

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; materialised views are rebuildable.

Status

Scaffold landed. The core kernels and local FS backend follow in the remaining tasks of WP-0001.

Develop

Requires Python ≥ 3.12 and uv on the path.

make install        # uv sync --all-extras
cp .env.example .env

make dev            # uvicorn artifactstore.api.http:app --reload
make test           # pytest
make lint           # ruff check + ruff format --check
make type           # mypy --strict
make migrate        # alembic upgrade head (configured in WP-0001-T002)

The dev server listens on 127.0.0.1:8000. The scaffold root route returns {"service": "artifact-store", "status": "scaffold"}; the real /health endpoint lands in WP-0001-T014.

Documentation

Active workplans

Agent operating notes

See AGENTS.md for the StateHub-integrated session protocol, workplan conventions, and progress-logging contract.