canon: codify preflight as a hard, enforced takeoff gate#267
canon: codify preflight as a hard, enforced takeoff gate#267git-repo-auth[bot] wants to merge 5 commits into
Conversation
Make the preflight checklist a pass/fail takeoff gate rather than a habit: five items (clock, canon reachable, tools present, tier correct, boarded) checked live every flight before any work, each green only when observed this flight. Fail any item -> abort with an honest 'cannot reach X -- aborting', never fly from cache. A cleared flight declares its preflight result at the top of its first substantive message; work reported without a passed, declared preflight is invalid. START gate; recording-as-landing is the END gate. - canon/constraints/preflight-checklist-takeoff-gate.md (tier-1, authoritative) - model-operating-contract.md: 'The Preflight -- The Hard Takeoff Gate' - generic-boarding-pass.md + boarding-pass.md: gate in project + account text - DISPATCH.md: binds every dispatched flight to the gate - scripts/validate-preflight-declaration.py + soft CI job (mechanical presence check; truth-of-declaration remains a spawned-agent judgment per audit-gates-are-spawned-agent-sessions) - governance markers: CHANGELOG 0.40.0 + release note Grounded in canon/bootstrap/model-operating-contract, flight-deck-model, oddkit_preflight, and governance-change-discipline. Preflight passed and declared; oddkit_challenge + oddkit_gate (PASS 2/2) run on the draft.
Canon Quality — Preflight Declaration ✅Soft report for the START gate ( All flight artifacts carry a well-formed preflight declaration (five items + disposition), or none are marked yet. Validator: |
Canon Quality — Frontmatter Schema ✅All 49 file(s) in Validator: |
Canon Quality — Homepage Surfacing ✅49 essay(s) scanned. Soft report — never blocks; the hard field gate is the Frontmatter Schema job. All published essays resolve to the homepage feed. Report: |
Canon Quality — P0010 Retrieval-Readiness
|
Canon Quality —
|
…anding) First flight artifact under the new gate — carries the START-gate preflight declaration the CI check verifies and closes the END gate on the same flight.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
Reviewed by Cursor Bugbot for commit 0f6b79a. Configure here.
| path, "missing-disposition", | ||
| "flight artifact declares no preflight disposition — expected " | ||
| "'cleared for takeoff' (passed) or 'aborting' (aborted).", | ||
| )) |
There was a problem hiding this comment.
Abort substring passes disposition
Medium Severity
The disposition check treats any occurrence of abort as sufficient, without word boundaries. A marked flight artifact can mention abort policy or quoted abort text elsewhere while omitting an actual pass/fail outcome, yet still satisfy the disposition rule and avoid missing-disposition.
Reviewed by Cursor Bugbot for commit 0f6b79a. Configure here.


Preflight as a hard takeoff gate
Makes the preflight checklist a pass/fail gate, not a habit. Five items — clock, canon reachable, tools present, tier correct, boarded — checked live every flight before any work, each green only when observed this flight (never from cache/memory). Fail any item → the flight does not take off; it aborts and reports the specific failure (
cannot reach X — aborting) rather than simulating the result from recall. A cleared flight declares its preflight result at the top of its first substantive message; work reported without a passed, declared preflight is invalid. This is the START gate; recording-as-landing is the END gate. Both hard.Closes the failure observed across the fleet all week: dispatched Code flights carried zero MCP connectors, could not reach canon, and flew anyway on recall.
What's here
canon/constraints/preflight-checklist-takeoff-gate.md(tier-1) — authoritative rule: five items, declaration, abort behavior, two-surface enforcement.canon/bootstrap/model-operating-contract.md— new The Preflight — The Hard Takeoff Gate section (binding procedure).canon/bootstrap/generic-boarding-pass.md+boarding-pass.md— the gate in the paste-ready project + account instructions; update discipline names it boarding-relevant law (re-paste settings).DISPATCH.md(repo root) — binds every dispatched flight to the gate.scripts/validate-preflight-declaration.py+ softpreflight-declarationCI job — mechanical presence check for the declaration on flight artifacts (<!-- flight-artifact -->opt-in). Peraudit-gates-are-spawned-agent-sessions, this is the literal-presence half only; whether a declaration is true remains a spawned-agent judgment.0.40.0+ release note. Behavior-affecting posture recalibration within E0010; no epoch bump.Verification
ntc39x, tools, tier, boarded).validate-preflight-declaration.pyself-tested (passes good, fails missing-items/disposition, skips unmarked).oddkit_challenge(execution) +oddkit_gatePASS 2/2 run on the draft.Note for review
The dispatch referenced a
BOARDING.mdtier-check and an existingrecording-as-landingrule/CI; neither exists inmain. I grounded the work in the canon that does exist (operating contract, flight-deck-model,oddkit_preflight, governance-change-discipline) and wrote the declaration CI as the START-gate mirror of the recording-as-landing pattern. Flagging so the naming can be reconciled if those surfaces live on an unmerged branch.🤖 Assisted by a dispatched first-officer flight under the E0010 flight-deck model.
Note
Medium Risk
Behavior-affecting governance for every session and dispatched flight; wrong adoption could block legitimate work or create declaration theater, though CI remains informational until hard mode.
Overview
Canon 0.40.0 turns E0010 preflight from habit into a pass/fail START gate: five live checks (clock, canon, tools, tier, boarded), mandatory declaration before substantive work, and fail-closed abort (
cannot reach X — aborting) instead of flying from recall.New surfaces: tier-1
preflight-checklist-takeoff-gateconstraint, rootDISPATCH.mdfor dispatched flights, operating-contract section, and updated paste-ready boarding-pass / generic-boarding-pass text (maintainers must re-paste settings).Enforcement (soft CI):
scripts/validate-preflight-declaration.pyplus apreflight-declarationjob incanon-quality.ymlthat scans opt-in flight artifacts (<!-- flight-artifact -->) for a well-formed five-item declaration;journal/**is added to workflow path filters. Unit tests cover frontmatter not satisfying declaration keywords. Honesty of a passed preflight stays a spawned-agent judgment, not regex.Governance markers: changelog entry, release note, and an example ledger flight record demonstrating the pattern.
Reviewed by Cursor Bugbot for commit 0f6b79a. Bugbot is set up for automated code reviews on this repo. Configure here.