Files
SlabUploader/.audit/archive/2026-09-18-session-handoff.md
T
Ty 01aa4c52c3 docs(phase2): reconcile requirements and migrate capabilities/contracts
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/.
2026-09-18 21:02:06 -07:00

5.0 KiB
Raw Blame History

Session handoff — requirements reconciliation

  • Date: 2026-09-18
  • Branch: docs/clean-main
  • HEAD: 84d7681. The last pushed tip was 1603467.
  • 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

  1. docs/STRUCTURE.md — structure contract, ID namespaces, the step-5 ID stride rule.
  2. docs/REQUIREMENTS.md — the PoR. 136 requirements.
  3. .audit/2026-09-18-migration-todos.md — deferred source-doc edits for step 3.
  4. .audit/2026-09-18-coverage-gaps.md — the serial gap worklist (GAP-1..GAP-7).
  5. .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

  1. 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.
  2. 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-35 and PUBLISH-36/37/38 (error triage).
  3. Walked CAPTURE.md, PHOTOS.md, CREATE.md, CONTENT-WOO.md section by section. Added five rows: CAPTURE-41, CAPTURE-141, METADATA-66, PUBLISH-31, SETTINGS-51.
  4. 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)

  1. METADATA-1, -2, -3 stay as written.
  2. Audit decisions beat older specs. Title separator is the hyphen -.
  3. Grade is exactly 1. fig-* tags are optional. The Figure attribute is at least 1. Ready set is two images; REVIEW-5 is the PoR.
  4. 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).
  5. Content-generation logging stays (METADATA-66), it is the trace/debug/tuning record.
  6. Partial-publish orphaned media: log it, surface a manual cleanup note, no auto-delete (PUBLISH-31).
  7. 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

  1. 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.
  2. The pilot ledger coverage/settings-auth-health.md mixes 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).
  3. 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

  1. .audit/2026-09-18-coverage-gaps.md has GAP-1..GAP-7, all open. GAP-1 (test-woo failure semantics) and GAP-2 (health/woo_reachable) are the ones with the most downstream content.
  2. The coverage ledger currently reports 12 gap atoms from the pilot slice.
  3. Still-open decisions: the attributes element shape on POST /products, and server persistence (full CRUD vs a thinner path).
  4. 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

  1. This is planning work. Walk in plan mode (read-only); flip to build only for edits the owner has explicitly approved.
  2. No file gets created, edited, or deleted without the owner saying go for that specific change.
  3. Where a doc and the shipped code disagree, the as-built code is what the PoR documents.
  4. Raw evidence for any "done": gate output, diff, or command output.

Environment

  1. Subagents general and explore are 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.
  2. SWIFT is suitable for mechanical extraction only (read and list). Dispositions and rulings stay with the owner. It never writes.
  3. .audit/docs-structure-pass.tsv is 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 .audit files plus tools/check_coverage.py.
  • Not pushed to origin as of this handoff.