Skip to content

feat(P0010): land retrieval-disclosure-contract as active canon + bootstrap rhythm#221

Merged
klappy merged 2 commits into
mainfrom
p0010-exec-retrieval-disclosure-active
May 28, 2026
Merged

feat(P0010): land retrieval-disclosure-contract as active canon + bootstrap rhythm#221
klappy merged 2 commits into
mainfrom
p0010-exec-retrieval-disclosure-active

Conversation

@klappy
Copy link
Copy Markdown
Owner

@klappy klappy commented May 28, 2026

P0010 Execution PR — Retrieval Disclosure Contract becomes active canon

Turns P0010 from a merged proposal artifact into enforced canon.

Changes

  • New canon: canon/constraints/retrieval-disclosure-contract.md — lifted verbatim from the embedded four-backtick fence in docs/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.
  • Bootstrap: 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_preflight kept per-milestone per the proposal's actual structure. date bumped.

Decision resolved

Handoff offered active vs accepted; accepted is not a legal status for audience: canon (schema enum: active/proposed/final/superseded), so the real fork was active vs proposed. Operator chose active.

Validation (local, pre-push)

  • scripts/validate-frontmatter.py -> 0 findings
  • scripts/audit-retrieval-readiness.py -> 12 blocking, all about/ (the expected, deliberate debt) — new doc resolves cleanly via path (kind: canon, tier: 1), introduced nothing

Follow-up in this PR

Second commit fills the proposal's Execution Record + promotion_status: accepted with 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: active canon ahead of implementation; doc-only in this PR but misalignment or premature active status 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-controlled disclosure flags, structural filters and document-kind include/exclude (journals/apocrypha opt-in), per-flag limits, and body only on get/resolve. The promotion doc is marked accepted with review notes and an execution record pointing at #221.

canon/bootstrap/model-operating-contract.md is updated for 2026-05-28: the Every Turn rhythm now includes a cheap retrieval slice (oddkit_catalog or oddkit_search with filters, then oddkit_get), citing the new constraint and the ~1.3K vs ~110K token browse cost shift that makes per-turn retrieval viable; oddkit_preflight stays 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.

…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.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 28, 2026

Canon Quality — Frontmatter Schema ✅

All 41 file(s) in writings/ conform to klappy://canon/meta/frontmatter-schema.

Validator: scripts/validate-frontmatter.py · Canon: klappy://canon/constraints/frontmatter-validation-before-merge · Run: #181

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 28, 2026

Canon Quality — P0010 Retrieval-Readiness ⚠️

Soft report for klappy://canon/constraints/retrieval-disclosure-contract. 648 files scanned. Never blocks — informational until the corpus is ready to enforce.

  • Blocking-class findings: 12 (structural fields the contract would filter on)
  • Warnings: 0 (kind resolves to unknown)
  • Informational: 13 (exempt templates/archive/drafts)

Kind distribution: {'essays': 42, 'canon': 165, 'apocrypha': 38, 'docs': 287, 'journals': 110, 'unknown': 6}
Kind source: {'path': 642, 'none': 6} (frontmatter-primary, path-secondary)
Default-include visibility: 494 visible, 154 hidden (journals/apocrypha/unknown)

By rule: {'audience-invalid': 2, 'exposure-missing': 5, 'tier-missing': 5, 'tier-invalid': 7, 'kind-unresolvable': 6}

These are not schema violations (see the Frontmatter Schema job for those on writings/). They are corpus-readiness signals for the retrieval contract: invalid/missing audience, exposure, tier, and docs whose kind cannot be resolved. Fix in a corpus-cleanup PR before the contract flips to enforcing. See the retrieval-readiness-findings artifact for the full list.

Validator: scripts/audit-retrieval-readiness.py · Constraint: klappy://canon/constraints/retrieval-disclosure-contract · Run: #181

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 28, 2026

Canon Quality — oddkit_audit

No dead klappy:// references or legacy link patterns found in writings/. 42 files scanned.

Spec: klappy://docs/oddkit/specs/oddkit-audit · Workflow: .github/workflows/canon-quality.yml · Run: #181

@klappy klappy merged commit 11f9732 into main May 28, 2026
4 checks passed
@klappy klappy deleted the p0010-exec-retrieval-disclosure-active branch May 28, 2026 15:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant