docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
---
|
|
|
|
|
id: ARTIFACT-STORE-WP-0004
|
|
|
|
|
type: workplan
|
|
|
|
|
title: "S3-Compatible Backend (Ceph RGW Target)"
|
|
|
|
|
repo: artifact-store
|
2026-06-22 23:16:24 +02:00
|
|
|
domain: infotech
|
2026-05-17 13:45:01 +02:00
|
|
|
status: done
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
owner: codex
|
|
|
|
|
topic_slug: stack
|
|
|
|
|
planning_priority: medium
|
|
|
|
|
planning_order: 4
|
|
|
|
|
created: "2026-05-15"
|
2026-05-17 13:45:01 +02:00
|
|
|
updated: "2026-05-17"
|
2026-05-15 21:26:08 +02:00
|
|
|
state_hub_workstream_id: "d0526cfc-e532-431f-970d-f3e548d27a80"
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# ARTIFACT-STORE-WP-0004: S3-Compatible Backend
|
|
|
|
|
|
|
|
|
|
## Purpose
|
|
|
|
|
|
|
|
|
|
Add a second concrete storage backend that speaks the S3 protocol.
|
|
|
|
|
Validated targets: Ceph RGW (primary self-hosted production target),
|
|
|
|
|
MinIO (dev / CI), AWS S3 (interop check). The backend must satisfy
|
|
|
|
|
the storage SPI without any leaks of S3-specific concepts into the
|
|
|
|
|
registry.
|
|
|
|
|
|
|
|
|
|
## Constraints
|
|
|
|
|
|
|
|
|
|
- `storage.spi.StorageBackend` Protocol from WP-0001 is the contract.
|
|
|
|
|
- No S3 vocabulary leaks into `registry.*` or `api.*`.
|
|
|
|
|
- `docs/ARCHITECTURE-BLUEPRINT.md` storage-backend section.
|
|
|
|
|
|
|
|
|
|
## Prerequisites
|
|
|
|
|
|
|
|
|
|
- WP-0001 done (SPI exists, local backend exists as a reference).
|
|
|
|
|
|
|
|
|
|
## D4.1 - Configuration Surface
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
id: ARTIFACT-STORE-WP-0004-T001
|
2026-05-16 23:26:03 +02:00
|
|
|
status: done
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
priority: high
|
2026-05-16 23:26:03 +02:00
|
|
|
state_hub_task_id: "1db0d548-cdac-4b07-962b-bcafa3aae30e"
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Acceptance:
|
|
|
|
|
|
|
|
|
|
- `s3` backend configuration accepts: `endpoint_url`, `region`,
|
|
|
|
|
`bucket`, `key_prefix`, `access_key_ref`, `secret_key_ref`,
|
|
|
|
|
`storage_class`, `sse` (optional), `multipart_threshold_bytes`,
|
|
|
|
|
`multipart_chunk_bytes`.
|
|
|
|
|
- Credential references resolve from env vars or mounted files; never
|
|
|
|
|
from request bodies.
|
|
|
|
|
- Documented Ceph RGW configuration example checked in under
|
|
|
|
|
`docs/OPERATOR.md`.
|
|
|
|
|
|
|
|
|
|
## D4.2 - S3 Backend Implementation
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
id: ARTIFACT-STORE-WP-0004-T002
|
2026-05-16 23:26:03 +02:00
|
|
|
status: done
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
priority: high
|
2026-05-15 21:26:08 +02:00
|
|
|
state_hub_task_id: "14b50595-5820-4369-b037-b015fcbddcc4"
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Acceptance:
|
|
|
|
|
|
|
|
|
|
- `storage.backends.s3.S3Backend` implements the SPI using `aioboto3`
|
|
|
|
|
or `aiobotocore` (decision recorded in the workplan; whichever is
|
|
|
|
|
better-maintained at implementation time).
|
|
|
|
|
- Object key layout
|
|
|
|
|
`<key_prefix>/<digest_algorithm>/<hex[0:2]>/<hex[2:4]>/<hex>`.
|
|
|
|
|
- `put` uses multipart for objects above the configured threshold.
|
|
|
|
|
- `get` supports `Range`.
|
|
|
|
|
- `head`, `delete`, `health` implemented.
|
|
|
|
|
- `delete` is idempotent (delete-of-missing returns success).
|
|
|
|
|
|
2026-05-16 23:26:03 +02:00
|
|
|
Decision: use `aioboto3` as the optional S3 client dependency. The
|
|
|
|
|
backend imports it lazily so local-only deployments do not need S3
|
|
|
|
|
dependencies installed.
|
|
|
|
|
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
## D4.3 - Backend Selection And Routing
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
id: ARTIFACT-STORE-WP-0004-T003
|
2026-05-16 23:26:03 +02:00
|
|
|
status: done
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
priority: medium
|
2026-05-15 21:26:08 +02:00
|
|
|
state_hub_task_id: "725dafd6-3337-4f81-b221-bb9f3a564d7e"
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Acceptance:
|
|
|
|
|
|
|
|
|
|
- A registry can have multiple backends configured; package creation
|
|
|
|
|
records which backend a file is stored in.
|
|
|
|
|
- Per-package backend selection rule: configurable function of
|
|
|
|
|
`retention_class` + producer; default routes everything to a single
|
|
|
|
|
backend.
|
|
|
|
|
- `storage_locations.backend_id` reflects the actual storage.
|
|
|
|
|
|
|
|
|
|
## D4.4 - Test Strategy: MinIO In CI, RGW As Documented Manual Smoke
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
id: ARTIFACT-STORE-WP-0004-T004
|
2026-05-17 13:45:01 +02:00
|
|
|
status: done
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
priority: high
|
2026-05-15 21:26:08 +02:00
|
|
|
state_hub_task_id: "4fd7b73b-7058-4edd-b5e3-edca396760d4"
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Acceptance:
|
|
|
|
|
|
|
|
|
|
- Integration tests run against MinIO via `testcontainers-python`
|
|
|
|
|
(or a docker-compose fixture if testcontainers fights the WSL2
|
|
|
|
|
environment).
|
|
|
|
|
- A documented manual procedure tests against a real Ceph RGW
|
|
|
|
|
endpoint; results recorded in `docs/OPERATOR.md`.
|
|
|
|
|
- No CI dependency on a live Ceph or AWS account.
|
|
|
|
|
|
2026-05-17 13:45:01 +02:00
|
|
|
Closure note: the S3 backend implementation and local verification
|
|
|
|
|
for artifact-store are complete. MinIO-specific compatibility,
|
|
|
|
|
testcontainers/bootstrap, and community-fork assessment have been moved
|
|
|
|
|
to ARTIFACT-STORE-WP-0007 so this backend workstream can close without
|
|
|
|
|
hiding the remaining external-platform work.
|
2026-05-16 23:26:03 +02:00
|
|
|
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
## D4.5 - Verification Pass
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
id: ARTIFACT-STORE-WP-0004-T005
|
2026-05-16 23:26:03 +02:00
|
|
|
status: done
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
priority: medium
|
2026-05-15 21:26:08 +02:00
|
|
|
state_hub_task_id: "5a55546f-288f-4da0-a646-3d9319908279"
|
docs+plans: reconcile blueprint with ambition, add ADRs, sequence workplans
Aligns the v1 architecture with the longer-horizon platform thesis so we can
start implementation without the schema-level inconsistencies the prior
review surfaced.
ADRs (docs/adr/0001..0006): content-addressed dual-digest storage, append-only
event log as source of truth, canonical CBOR manifests, control/data-plane
contract, v1 tech stack (Python 3.12 / uv / FastAPI / SQLAlchemy Core +
asyncpg / Alembic / cbor2 / blake3 / ruff / mypy / pytest / typer), OCI
compatibility kept reachable.
Architecture blueprint rewritten to v2: library-first (ffmpeg-shaped) module
layout, materialised-view data model over the event log, upload-session and
event-stream endpoints pinned, retrieval tiering promoted into the schema.
Roadmap added (docs/ROADMAP.md) with three phases. WP-0001 rewritten as the
Foundation plan (scaffold + kernels + local FS + minimal app). WP-0002..0005
created carrying the existing state_hub_task_ids forward semantically:
ingestion API (T004), retention lifecycle (T005), S3-compatible backend
(T006), guide-board pilot (T007). T001/T002/T003/T008 remain in WP-0001
with refined acceptance.
README and AGENTS.md refreshed to reflect the new repo shape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 21:16:17 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Acceptance:
|
|
|
|
|
|
|
|
|
|
- `artifactstore storage verify --backend s3` re-reads every object in
|
|
|
|
|
the backend, recomputes its primary digest, and emits
|
|
|
|
|
`v1.storage.location_verified` events.
|
|
|
|
|
- Mismatches are reported as `failed` locations and surfaced via the
|
|
|
|
|
health endpoint.
|
|
|
|
|
|
|
|
|
|
## Success criteria
|
|
|
|
|
|
|
|
|
|
- The same package ingestion flow that worked against `local` in
|
|
|
|
|
WP-0001 works unchanged against `s3`.
|
|
|
|
|
- Switching backend by config — without code changes in the registry
|
|
|
|
|
or API layers — is the smoke test.
|