# Roadmap Status: living document Updated: 2026-05-17 The roadmap sequences `artifact-store` from "no code" to a credible production v1 to the longer-horizon platform shape recorded in `docs/PLATFORM-AMBITION.md`. Each row is a self-contained workplan with its own acceptance criteria; nothing here is a binding milestone. The sequencing principle is **library-first** (ffmpeg-shaped): foundational kernels and contracts before any consumer code. The HTTP server and CLI exist only after the core library can be exercised end-to-end against a local filesystem backend. ## Phase 0 — Cleanup (done 2026-05-15) - ADR-0001 through ADR-0006 accepted. - Architecture blueprint rewritten to v2. - Platform ambition and assembly experiment documented. - Workplans re-sequenced. ## Phase 1 — Foundation and pilot (v0.1) Goal: ingest a real guide-board run end-to-end, against a local filesystem backend, with retention applied and events logged. | ID | Title | Carries existing task IDs | Notes | |---|---|---|---| | WP-0001 | Foundation: scaffold, core kernels, local FS backend | T001, T002, T003, T008 | All of the library-shaped modules; no HTTP API yet beyond `/health`. | | WP-0002 | Ingestion API + manifest surface | T004 | The HTTP API. Builds on WP-0001's library. | | WP-0003 | Retention lifecycle | T005 | Retention engine, extensions, holds, deletion eligibility. | | WP-0004 | S3-compatible backend (Ceph RGW target) | T006 | Second concrete adapter. | | WP-0005 | Guide-board pilot ingestion | T007 | First real producer wired up. | Exit criteria for v0.1: WP-0001 through WP-0005 done; a guide-board CMIS run round-trips through artifact-store with manifest, retention, and Statehub linkage; backend swappable between local FS and an S3-compatible store. ## Phase 2 — Production hardening (v0.2 – v0.3) | ID | Title | Notes | |---|---|---| | WP-0006 | Garbage collection + reference counting | Required by ADR-0001 global dedup. Mark-eligible already lands in WP-0003; this workplan does the byte-deletion pass. | | WP-0007 | MinIO compatibility, MaxIO fork assessment, STS credential vending | Splits MinIO/community-fork and NetKingdom credential-vending work out of WP-0004/WP-0005 blockers. | | WP-0008 | Resumable / chunked upload implementation | The wire shape lands in WP-0002; this workplan makes the implementation actually streaming. | | WP-0009 | Auth, multi-tenancy, quota | OIDC integration; tenant namespacing; per-tenant rate limit and storage quota. | | WP-0010 | Observability: metrics, tracing, structured logs | OpenTelemetry SDK; latency / throughput SLOs published. | | WP-0011 | Event stream out (CDC) | NATS or Kafka topic of registry events; long-poll `/events` becomes a fallback. | | WP-0012 | Signed manifests | Sigstore / cosign integration; signature recorded alongside manifest digest. | Exit criteria for v0.3: a deployment is operatable by humans without internal knowledge; SLOs are measurable; access is authenticated; artifacts can be signed and verified. ## Phase 3 — Platform features (v0.4 – v1.0) | ID | Title | Notes | |---|---|---| | WP-0013 | OCI artifact `/v2/` endpoint | Implements OCI Distribution Spec on top of the same storage (ADR-0006). | | WP-0014 | Content-defined chunking + global dedup at chunk level | FastCDC; chunked storage. Builds toward `docs/ASSEMBLY-EXPERIMENT.md`. | | WP-0015 | Rust data plane extraction | Move `dataplane.inproc` to `dataplane.remote` (ADR-0004). | | WP-0016 | WASM plugin host | Extension surface for indexers, redactors, scorecard generators. | | WP-0017 | Cold-tier adapters | Glacier / Tape / IA classes; restore flow. | | WP-0018 | Federation and replication | Signed manifest exchange between artifact-store instances. | Exit criteria for v1.0: artifact-store is embeddable as a library, runs as a single-binary CLI, runs as a server, speaks OCI, federates between instances, and is fast enough to be a credible commercial substrate. ## What this roadmap deliberately does NOT promise - Specific calendar dates. Cadence is set by sessions, not quarters. - A UI. UIs are out-of-tree (see `docs/PLATFORM-AMBITION.md`). - ML-specific or container-specific features. Use OCI compatibility. - A storage backend for every cloud. Adapters are community surface. ## How to add a workplan 1. Pick the next free `ARTIFACT-STORE-WP-NNNN` number. 2. Create `workplans/ARTIFACT-STORE-WP-NNNN-.md` with the frontmatter and task block format in `AGENTS.md`. 3. Cite the ADRs the workplan depends on in its `## Constraints` section. 4. Append a row to the appropriate phase table in this file. 5. Notify the custodian operator to run `make fix-consistency REPO=artifact-store`. ## How to retire a workplan 1. Set `status: done` in the frontmatter when all tasks are `done`. 2. Move the file to `workplans/archived/YYMMDD-ARTIFACT-STORE-WP-NNNN-.md`. 3. Update this roadmap to reflect the new state.