From b5f2818edc80b8b1709331edef8586dcc9627dc8 Mon Sep 17 00:00:00 2001 From: klappy <118073+klappy@users.noreply.github.com> Date: Mon, 21 Sep 2026 15:39:39 +0000 Subject: [PATCH] gate canon points up, not down: remove adopter references from odd/gate/* Removes 'kitchen CHECKLIST 10/11', 'kitchen ticket ...', '(CHECKLIST 11)' in a public gap message, 'cowboy', 'Flavored Vodka'. Check words and ids unchanged. One gap message changes wording (drops a pointer to a private file). DRAFT: captain reads the exact words before merge. --- odd/gate/prerequisites.md | 6 +++--- odd/gate/transitions.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/odd/gate/prerequisites.md b/odd/gate/prerequisites.md index ce61f27..b519857 100644 --- a/odd/gate/prerequisites.md +++ b/odd/gate/prerequisites.md @@ -25,7 +25,7 @@ target_repo: "outcomes-driven-development" ## Summary — Fourteen Prerequisites, Referenced by ID from Transitions -Fourteen prerequisite ids are defined here. They are grouped roughly by what transition they tend to gate, though the same id can be referenced by multiple transitions if future canon adds such references. `problem_defined`, `constraints_reviewed`, `world_prior_cited`, `house_install_cited`, and `house_canon_cited` gate opening planning after exploration. The last three are independent presence-proofs — kitchen CHECKLIST 10 (observed world reference), CHECKLIST 11 (installation inspected), and a house-canon cite — because stemmed set intersection is per-id OR of stems; one id cannot enforce three-band AND, and a Worker AND would be Flavored Vodka. Official nulls count (`no world analogue` / `literature only` / `bide waiting`, `no house install`, `no house canon`). `decisions_locked`, `dod_defined`, `irreversibility_assessed`, and `constraints_satisfied` gate opening execution after planning. `dod_met` and `artifacts_present` gate declaring completion. `delegation_attempted` and `human_only_class_named` gate the `dispatch-to-captain-handoff` transition — the offload trip-wire of `klappy://canon/constraints/dispatcher-dispatches-never-executes`: no ask that assigns the captain operational work passes unless delegation to a subagent was attempted and a human-only class is named. `open_fork_cited` gates the `settled-direction-ratification` transition — the let-the-gates-govern clause of the same constraint: no approval-shaped escalation passes unless it affirmatively names the genuinely-open fork the gates cannot resolve. The prereq is deliberately framed as proof-of-openness rather than absence-of-settledness, because presence-based set-intersection matching can verify that an open fork was named but cannot verify that a settled decision was not — the burden sits on the escalation to cite what is open, and an ask ratifying an already-recorded decision has nothing to cite. Check vocabularies are deliberately broad word lists that cover the most common ways an operator signals the prerequisite in natural language. Gap messages name the missing prerequisite in a single sentence phrased to point the operator at what to surface next. +Fourteen prerequisite ids are defined here. They are grouped roughly by what transition they tend to gate, though the same id can be referenced by multiple transitions if future canon adds such references. `problem_defined`, `constraints_reviewed`, `world_prior_cited`, `house_install_cited`, and `house_canon_cited` gate opening planning after exploration. The last three are independent presence-proofs — an observed world reference, an inspected installation, and a canon cite — because stemmed set intersection is per-id OR of stems; one id cannot enforce three-band AND, and an AND inside the server would flavor it (`klappy://canon/principles/vodka-architecture`). Official nulls count (`no world analogue` / `literature only` / `bide waiting`, `no house install`, `no house canon`). `decisions_locked`, `dod_defined`, `irreversibility_assessed`, and `constraints_satisfied` gate opening execution after planning. `dod_met` and `artifacts_present` gate declaring completion. `delegation_attempted` and `human_only_class_named` gate the `dispatch-to-captain-handoff` transition — the offload trip-wire of `klappy://canon/constraints/dispatcher-dispatches-never-executes`: no ask that assigns the captain operational work passes unless delegation to a subagent was attempted and a human-only class is named. `open_fork_cited` gates the `settled-direction-ratification` transition — the let-the-gates-govern clause of the same constraint: no approval-shaped escalation passes unless it affirmatively names the genuinely-open fork the gates cannot resolve. The prereq is deliberately framed as proof-of-openness rather than absence-of-settledness, because presence-based set-intersection matching can verify that an open fork was named but cannot verify that a settled decision was not — the burden sits on the escalation to cite what is open, and an ask ratifying an already-recorded decision has nothing to cite. Check vocabularies are deliberately broad word lists that cover the most common ways an operator signals the prerequisite in natural language. Gap messages name the missing prerequisite in a single sentence phrased to point the operator at what to surface next. --- @@ -45,7 +45,7 @@ Fourteen prerequisite ids are defined here. They are grouped roughly by what tra | human_only_class_named | human-only, secret, credential, authorial, voice, irreversible, approval, spend, ruling | "No human-only class named — only HUMAN-ONLY(secret / voice / irreversible / approval) asks may go to the captain; anything else is a dispatch wearing a question's clothes" | | open_fork_cited | open fork, open question, genuinely open, undecided, unresolved, unsettled, options, fork, cannot resolve | "No open fork cited — this is settled: let the gates govern, proceed. The gates are the approval; escalate only a genuinely-open fork the gates cannot resolve, and name it: OPEN-FORK(the fork), with the open options stated" | | world_prior_cited | analogue, analog, analogous, analogy, literature, bide | "world_prior_cited: World analogue not cited — name an observed world analogue, or official null (no world analogue / literature only / bide waiting)" | -| house_install_cited | install, installation | "house_install_cited: House install not cited — name the installation repo/path inspected (CHECKLIST 11), or the official null (no house install)" | +| house_install_cited | install, installation | "house_install_cited: House install not cited — name the installation repo/path inspected, or the official null (no house install)" | | house_canon_cited | canon | "house_canon_cited: House canon not cited — write the word canon with the klappy:// URI you read (canon: klappy://...), or the official null (no house canon); a repo slug or stack folklore (CF, vodka) is not a cite" | --- @@ -64,4 +64,4 @@ The check vocabularies in this file are deliberately broad rather than narrow, b When the server cannot reach this file at runtime, `oddkit_gate` falls back to a hardcoded minimal vocabulary that mirrors the check terms above. The minimal tier is identified in the response envelope via `governance_source: "minimal"`; the canon tier via `governance_source: "knowledge_base"`. Both tiers use the same set-intersection matcher; they differ only in whether the vocabulary is editable by updating this file or locked to the deployed worker version. -The three exploration-to-planning presence ids (2026-09-21, kitchen ticket `2026-09-20-gate-explore-plan-prior-art`) omit shared tokens such as `house` and `cited` from their check columns so hyphen-split cannot leak a band: `no-house-install` in a check column would add `house`, and then `no house canon` would false-pass `house_install_cited`; `canon-cited` would add `cited`, and then ordinary cite language for the other two bands (`world prior cited`, `house install cited`) would false-pass `house_canon_cited`. Official nulls work from the input side (`no world analogue` contributes `analogue`). Do not put `prior-art` or `world-prior` in the check column: hyphen-split adds `prior`, and a problem statement that says prior art false-passes the band. No hyphenated entry belongs in any of these three check columns: `repo-path` and `inspected-repo` were removed from `house_install_cited` because hyphen-split added `repo`, `path`, and `inspect`, and `the path forward` false-passed the band. `klappy` was removed from `house_canon_cited` because every house repo slug (`klappy/oddkit`, `klappy.dev`) contains it, so an honest install cite paid the canon band too and the bands stopped being independent; the word `canon` is the only key, and the gap message says so. These three ids exist only in the canon tier: the Worker's minimal fallback still carries the original pair for this transition, so a run reporting `governance_source: "minimal"` can pass 2/2 — read the source field before trusting a PASS. Presence is not proof a tool ran, and negation passes (`did not read canon` contains `canon`); a dummy `klappy://` paste is the new cowboy — spawned audit, not this matcher. +The three exploration-to-planning presence ids (2026-09-21) omit shared tokens such as `house` and `cited` from their check columns so hyphen-split cannot leak a band: `no-house-install` in a check column would add `house`, and then `no house canon` would false-pass `house_install_cited`; `canon-cited` would add `cited`, and then ordinary cite language for the other two bands (`world prior cited`, `house install cited`) would false-pass `house_canon_cited`. Official nulls work from the input side (`no world analogue` contributes `analogue`). Do not put `prior-art` or `world-prior` in the check column: hyphen-split adds `prior`, and a problem statement that says prior art false-passes the band. No hyphenated entry belongs in any of these three check columns: `repo-path` and `inspected-repo` were removed from `house_install_cited` because hyphen-split added `repo`, `path`, and `inspect`, and `the path forward` false-passed the band. `klappy` was removed from `house_canon_cited` because every house repo slug (`klappy/oddkit`, `klappy.dev`) contains it, so an honest install cite paid the canon band too and the bands stopped being independent; the word `canon` is the only key, and the gap message says so. These three ids exist only in the canon tier: the Worker's minimal fallback still carries the original pair for this transition, so a run reporting `governance_source: "minimal"` can pass 2/2 — read the source field before trusting a PASS. Presence is not proof a tool ran, and negation passes (`did not read canon` contains `canon`); a made-up `klappy://` link still passes — that is work for a spawned audit (`klappy://canon/constraints/audit-gates-are-spawned-agent-sessions`), not this matcher. diff --git a/odd/gate/transitions.md b/odd/gate/transitions.md index aa8e025..c2bd42e 100644 --- a/odd/gate/transitions.md +++ b/odd/gate/transitions.md @@ -58,4 +58,4 @@ Prereq-ids listed in the Prerequisites column are resolved against `odd/gate/pre When the server cannot reach this file at runtime, `oddkit_gate` falls back to a hardcoded minimal vocabulary that mirrors the row order and detection terms above. The minimal tier is identified in the response envelope via `governance_source: "minimal"`; the canon tier via `governance_source: "knowledge_base"`. Both tiers run the same BM25 matcher; they differ only in whether the vocabulary is editable by updating this file or locked to the deployed worker version. -The `exploration-to-planning` row (2026-09-21, kitchen ticket `2026-09-20-gate-explore-plan-prior-art`) lists five prerequisite ids: the original pair plus `world_prior_cited`, `house_install_cited`, `house_canon_cited`. Those ids are defined in `odd/gate/prerequisites.md`. Planning-to-execution is unchanged. +The `exploration-to-planning` row (2026-09-21) lists five prerequisite ids: the original pair plus `world_prior_cited`, `house_install_cited`, `house_canon_cited`. Those ids are defined in `odd/gate/prerequisites.md`. Planning-to-execution is unchanged.