d6aa79b593
METADATA was ordered as it was written, not by topic, and used Call 1 / Call 2 without defining them. - Add a short METADATA preamble stating the inference flow: Call 1 vision proposes taxonomy, the name and short description are deterministic, Call 2 writes the long description. - Regroup the rows: taxonomy, then Call 1, then deterministic copy, then Call 2, then cross-cutting. - METADATA-70 said the deterministic name and short description were an inference-off fallback; they are unconditional. It now covers only the inference-off description. - METADATA-81 folded into METADATA-80 (same rule, two strings). - METADATA-45 now names the below-threshold outcome. - METADATA-90 now states what the fact block drives. 153 requirements; check_requirements and check_coverage both pass.
Contract docs
Cross-cutting interface detail shared by capabilities.
Rules (docs/STRUCTURE.md): a contract doc cites requirement IDs from docs/REQUIREMENTS.md; it never defines or restates them.
Contract docs (migrated):
WOO-API.md— external WooCommerce REST API v3 surface (new; the dependency contract)API.md— FastAPI HTTP contract (from tagOPENAPI.md)DATA-MODEL.md— SQLite schema and status machine (from tagDATA-MODEL.md)UX.md— screens, field recovery, outcomes (from tagUX.md)PROMPTS.md— Call 1 / Call 2 prompt text and inputs (from tagPROMPTS.md)CONTENT-WOO.md— listing copy and Woo payload intent (fromdocs/CONTENT-WOO.md)TEST-SPEC.md— test pyramid, vectors, dishonest proxies (from tagTEST-SPEC.md) — pending
Template: docs/_templates/contract.md.