docs(roadmap): mark sub-project 2 done, sub-project 3 next

Sub-project 2 (ingest & tagging / review tools) shipped via PR #1 this session.
Updates the status table and §2 detail, reconciles resolved decisions (first-ship
archives, media-root layout, ffmpeg-only opt-in dominant_color), and marks §3
(Pi player) as next.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ben Stull
2026-06-04 07:33:32 -07:00
parent d7a2cbaa40
commit 50ce6c9dfa
+17 -14
View File
@@ -14,8 +14,8 @@ Design reference: [`specs/2026-06-04-human-experience-filter-design.md`](./super
| # | Sub-project | Status | Unblocks |
|---|---------------------------------|---------------|----------|
| 1 | Catalog & Selection Core | ✅ Done | everything |
| 2 | Ingest & Tagging / Review tools | ⏳ Next | a real library |
| 3 | Player Runtime (Pi) | Not started | the room runs |
| 2 | Ingest & Tagging / Review tools | ✅ Done | a real library |
| 3 | Player Runtime (Pi) | Next | the room runs |
| 4 | Arduino Firmware (control panel)| ◻ Not started | real knobs |
| 5 | ~~Procedural Side Walls~~ | ❌ Dropped | — (superseded) |
@@ -59,11 +59,12 @@ Plan: [`2026-06-04-catalog-and-selection-core.md`](./superpowers/plans/2026-06-0
---
## 2. Ingest & Tagging / Review tools ⏳ (next)
## 2. Ingest & Tagging / Review tools
**Goal:** turn the manual catalog into the assisted *draft-then-review* flow from
the spec, and actually populate the library from public-domain sources. This is
where the content hunt lives.
**Done — merged to `main` via PR #1 (session 0002, 2026-06-04); 111 tests pass
(2 opt-in real-ffprobe tests skip when the binaries are absent).** The `tools/`
package turns the manual catalog into the assisted *draft-then-review* flow from
the spec, and can populate the library from public-domain sources.
**Delivers (`tools/`):**
@@ -82,17 +83,19 @@ where the content hunt lives.
Spec: [`2026-06-04-ingest-tagging-review-tools.md`](./superpowers/specs/2026-06-04-ingest-tagging-review-tools.md).
**Depends on:** sub-project 1 (`hef.catalog`).
**Done when:** you can run ingest against a source, get `proposed` records, review
them to `approved`, and `load_catalog` validates the result — covered by tests on
the mechanical-tagging and review state transitions.
**External deps:** `ffmpeg`/`ffprobe`, an image lib for dominant color, per-archive
download access.
**Open decisions:** which archives ship first; download/caching layout for media
files on the drive.
**Done when:** you can run ingest against a source, get `proposed` records, review
them to `approved`, and `load_catalog`/`validate_catalog` validate the result —
covered by tests on the mechanical-tagging and review state transitions.
**External deps:** `ffmpeg`/`ffprobe` only (no image lib `dominant_color`, when
requested, is ffmpeg-only and opt-in), per-archive download access.
**Decisions settled:** first-ship archives = **LibriVox, NASA, Internet Archive**
(Musopen/FMA/Freesound deferred stubs); media under a `--media-root` with
`file_path` stored relative to it (spec §6.3); only additive `hef.catalog` change
was `validate_catalog` + `index_by_id`.
---
## 3. Player Runtime (Pi)
## 3. Player Runtime (Pi) ⏳ (next)
**Goal:** the thing that makes the room run — read the controls, pick media, play
it across the single panoramic projector.