Thanks to visit codestin.com
Credit goes to github.com

Skip to content

canon: codify preflight as a hard, enforced takeoff gate#267

Open
git-repo-auth[bot] wants to merge 5 commits into
mainfrom
canon/preflight-checklist-takeoff-gate
Open

canon: codify preflight as a hard, enforced takeoff gate#267
git-repo-auth[bot] wants to merge 5 commits into
mainfrom
canon/preflight-checklist-takeoff-gate

Conversation

@git-repo-auth

@git-repo-auth git-repo-auth Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

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 + soft preflight-declaration CI job — mechanical presence check for the declaration on flight artifacts (<!-- flight-artifact --> opt-in). Per audit-gates-are-spawned-agent-sessions, this is the literal-presence half only; whether a declaration is true remains a spawned-agent judgment.
  • Governance markers — CHANGELOG 0.40.0 + release note. Behavior-affecting posture recalibration within E0010; no epoch bump.

Verification

  • Own preflight passed and declared before work (clock, canon hash ntc39x, tools, tier, boarded).
  • Frontmatter validator: ✅ on new docs. Retrieval-readiness: 0 new findings. Validator unit tests: pass. Workflow YAML parses. validate-preflight-declaration.py self-tested (passes good, fails missing-items/disposition, skips unmarked).
  • oddkit_challenge (execution) + oddkit_gate PASS 2/2 run on the draft.

Note for review

The dispatch referenced a BOARDING.md tier-check and an existing recording-as-landing rule/CI; neither exists in main. 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-gate constraint, root DISPATCH.md for 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.py plus a preflight-declaration job in canon-quality.yml that 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.

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.
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Canon Quality — Preflight Declaration ✅

Soft report for the START gate (klappy://canon/constraints/preflight-checklist-takeoff-gate). 61 file(s) scanned, 1 flight artifact(s) checked. Never blocks — informational until the gate flips to hard after the observation cycle.

All flight artifacts carry a well-formed preflight declaration (five items + disposition), or none are marked yet.

Validator: scripts/validate-preflight-declaration.py · Constraint: klappy://canon/constraints/preflight-checklist-takeoff-gate · Run: #317

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Canon Quality — Frontmatter Schema ✅

All 49 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: #317

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

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: scripts/surfacing-report.py · Canon: klappy://canon/constraints/frontmatter-validation-before-merge

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Canon Quality — P0010 Retrieval-Readiness ⚠️

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

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

Kind distribution: {'essays': 51, 'canon': 232, 'apocrypha': 38, 'docs': 299, 'journals': 60, 'unknown': 6}
Kind source: {'path': 551, 'frontmatter': 129, 'none': 6} (frontmatter-primary, path-secondary)
Default-include visibility: 582 visible, 104 hidden (journals/apocrypha/unknown)

By rule: {'audience-invalid': 2, 'exposure-missing': 5, 'tier-missing': 5, 'tier-invalid': 7, 'fm-missing': 3, '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: #317

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Canon Quality — oddkit_audit

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

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

…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.
Comment thread scripts/validate-preflight-declaration.py
Comment thread scripts/validate-preflight-declaration.py
Comment thread scripts/validate-preflight-declaration.py Outdated
Comment thread .github/workflows/canon-quality.yml

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

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).",
))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 0f6b79a. Configure here.

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.

2 participants