feat(P0010): land retrieval-disclosure-contract as active canon + bootstrap rhythm#221
Conversation
…tstrap rhythm Extract the embedded canon doc from docs/promotions/P0010-retrieval-disclosure-contract.md into canon/constraints/retrieval-disclosure-contract.md verbatim, status: active, date: 2026-05-28. Add the per-turn retrieval slice (catalog/search -> get) to the model-operating-contract Every Turn rhythm, citing the new constraint; preflight remains a per-milestone move. Frontmatter validator clean; retrieval-readiness audit unchanged at the expected 12 about/ findings.
Canon Quality — Frontmatter Schema ✅All 41 file(s) in Validator: |
Canon Quality — P0010 Retrieval-Readiness
|
Canon Quality —
|
P0010 Execution PR — Retrieval Disclosure Contract becomes active canon
Turns P0010 from a merged proposal artifact into enforced canon.
Changes
canon/constraints/retrieval-disclosure-contract.md— lifted verbatim from the embedded four-backtick fence indocs/promotions/P0010-retrieval-disclosure-contract.md.status: active(per operator decision: canon-first discipline over honesty-of-unshipped, since canon-first is a stated absolute in this project).date: 2026-05-28(day it lands as canon). Tier-1, schema-clean.canon/bootstrap/model-operating-contract.md— adds the per-turn retrieval slice (oddkit_catalog/oddkit_search->oddkit_get) to the Every Turn rhythm, citing the new constraint.oddkit_preflightkept per-milestone per the proposal's actual structure.datebumped.Decision resolved
Handoff offered
activevsaccepted;acceptedis not a legalstatusforaudience: canon(schema enum: active/proposed/final/superseded), so the real fork wasactivevsproposed. Operator choseactive.Validation (local, pre-push)
scripts/validate-frontmatter.py-> 0 findingsscripts/audit-retrieval-readiness.py-> 12 blocking, allabout/(the expected, deliberate debt) — new doc resolves cleanly via path (kind: canon,tier: 1), introduced nothingFollow-up in this PR
Second commit fills the proposal's Execution Record +
promotion_status: acceptedwith this PR number.Downstream (separate, later): oddkit-side five-action implementation PRs, then Lovable migration signal.
Note
Medium Risk
Binds future oddkit and consumer behavior with
status: activecanon ahead of implementation; doc-only in this PR but misalignment or prematureactivestatus could drift tools/sites until follow-up PRs land.Overview
P0010 execution promotes the retrieval disclosure contract from proposal to active tier-1 canon and wires it into session bootstrap.
A new constraint,
canon/constraints/retrieval-disclosure-contract.md, unifies all five oddkit retrieval actions (search,catalog,get,preflight,resolve) on one response shape: URI + title as the floor, caller-controlleddisclosureflags, structural filters and document-kindinclude/exclude(journals/apocrypha opt-in), per-flag limits, andbodyonly onget/resolve. The promotion doc is marked accepted with review notes and an execution record pointing at #221.canon/bootstrap/model-operating-contract.mdis updated for 2026-05-28: the Every Turn rhythm now includes a cheap retrieval slice (oddkit_catalogoroddkit_searchwith filters, thenoddkit_get), citing the new constraint and the ~1.3K vs ~110K token browse cost shift that makes per-turn retrieval viable;oddkit_preflightstays per-milestone.Downstream oddkit implementation and site consumer migration are explicitly out of scope for this PR (canon-first landing).
Reviewed by Cursor Bugbot for commit 52c421d. Bugbot is set up for automated code reviews on this repo. Configure here.