01aa4c52c3
Surface-matrix sweep of every source doc; added nine missed behaviors (METADATA-115, REVIEW-50, APP-55/60/65, SETTINGS-45 mode, Generate-text availability, defaults-off). 153 requirements, 0 coverage gaps. Migrated capabilities to docs/capabilities/ and contracts to docs/contracts/; added WOO-API, API, DATA-MODEL, PROMPTS, UX, TEST-SPEC. Populated MILESTONES; branch-neutral trunk docs; renamed umbrella term to Woo Slab Taxonomy. Archived reconciliation working records under .audit/archive/.
5.0 KiB
5.0 KiB
Session handoff — requirements reconciliation
- Date: 2026-09-18
- Branch:
docs/clean-main - HEAD:
84d7681. The last pushed tip was1603467. - Working tree: clean. This session's work is committed as
84d7681; not pushed yet. - This file supersedes the stale "Resume here" section 0 of
2026-09-18-reconciliation-decisions.md.
Read first
docs/STRUCTURE.md— structure contract, ID namespaces, the step-5 ID stride rule.docs/REQUIREMENTS.md— the PoR. 136 requirements..audit/2026-09-18-migration-todos.md— deferred source-doc edits for step 3..audit/2026-09-18-coverage-gaps.md— the serial gap worklist (GAP-1..GAP-7)..audit/coverage/README.md— the coverage ledger schema.
Gates
python tools/check_requirements.py -> PASS, 12 docs, 8 namespaces, 136 requirements
python tools/check_coverage.py -> PASS, 40 atoms, 12 gaps, 20/136 IDs claimed
python tools/check_coverage.py --strict -> FAIL by design until coverage is complete
What this session did
- Renumbered every requirement in steps of 5 per namespace (see STRUCTURE.md). Nothing
cites IDs yet, so this was free. First IDs:
CAPTURE-5,METADATA-5, etc. - Applied owner corrections:
PUBLISH-8(no image cap),METADATA-16(template is the fallback only),REVIEW-8(calculated fields are not mutable),PUBLISH-30(attempt-level failure wording),PUBLISH-35andPUBLISH-36/37/38(error triage). - Walked
CAPTURE.md,PHOTOS.md,CREATE.md,CONTENT-WOO.mdsection by section. Added five rows:CAPTURE-41,CAPTURE-141,METADATA-66,PUBLISH-31,SETTINGS-51. - Built the coverage method:
tools/check_coverage.py,.audit/coverage/(schema plus a settings/auth/health pilot ledger), and the gap worklist.
Rulings locked this session (do not relitigate)
METADATA-1,-2,-3stay as written.- Audit decisions beat older specs. Title separator is the hyphen
-. - Grade is exactly 1.
fig-*tags are optional. The Figure attribute is at least 1. Ready set is two images;REVIEW-5is the PoR. - Tag scope is important: sync keeps only the figure and feature tag families so non-wood
Woo metadata does not pollute the workflow (
SETTINGS-51). - Content-generation logging stays (
METADATA-66), it is the trace/debug/tuning record. - Partial-publish orphaned media: log it, surface a manual cleanup note, no auto-delete
(
PUBLISH-31). - Order of the coverage walk: current docs, then tag docs, then the archived PRD, then the Gitea main design issues (#1–#20). TEST-SPEC is done LAST, reconciled against a finished PoR.
Open work
- Continue the coverage walk doc by doc, section by section. Remaining current docs:
PRODUCT,README,UAT-PRACTICE. Then the tag docs, the archived PRD, the main issues, and finally TEST-SPEC. - The pilot ledger
coverage/settings-auth-health.mdmixes sources. When a walked source collides with it, split the ledger into per-source files first (this write was started and reverted once; get explicit approval). - Resolve the coverage gaps in one pass, then step 3 migration
(
docs/capabilities/,docs/contracts/, branch-neutral, cite IDs), then retire the working records.
Known gaps
.audit/2026-09-18-coverage-gaps.mdhas GAP-1..GAP-7, all open. GAP-1 (test-woofailure semantics) and GAP-2 (health/woo_reachable) are the ones with the most downstream content.- The coverage ledger currently reports 12
gapatoms from the pilot slice. - Still-open decisions: the
attributeselement shape onPOST /products, and server persistence (full CRUD vs a thinner path). - Discussed but unresolved: Woo credentials are stored server-side, so two phones share one credential row and a wrong password locks both out. A "last-known-good plus auth-gated promotion" rule was proposed; no requirement row yet.
Process rules
- This is planning work. Walk in plan mode (read-only); flip to build only for edits the owner has explicitly approved.
- No file gets created, edited, or deleted without the owner saying go for that specific change.
- Where a doc and the shipped code disagree, the as-built code is what the PoR documents.
- Raw evidence for any "done": gate output, diff, or command output.
Environment
- Subagents
generalandexploreare routed to the local SWIFT model (deepblu5090-8084/Swift-Qwen3.8-27B-Q5_K_M.gguf) in the global config~/.config/opencode/opencode.jsonc. Config loads at startup; restart after edits. - SWIFT is suitable for mechanical extraction only (read and list). Dispositions and rulings stay with the owner. It never writes.
.audit/docs-structure-pass.tsvis finished history from 2026-09-09. Leave it.
Commit
84d7681— coverage gate, migration TODOs, session handoff. Working tree clean.- Touches:
docs/REQUIREMENTS.md(+5 rows),docs/README.md,AGENTS.md,.audit/2026-09-18-reconciliation-decisions.md, and the new.auditfiles plustools/check_coverage.py. - Not pushed to origin as of this handoff.