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

103 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.