Closes ticket #000010 (Meta-Cognition Preflight Guard). Mechanism complete; defaults preserve the dry-run discipline pattern from #000008. Phase 2 — wire preflight into query() and runner.ask(): - preflight_question() runs after policy resolution + quantifier classification, before retrieval. - QuestionState surfaces on miss path, cache-hit path, AND reject-broad early-return path of query() — schema column- aligned across all four returns. - runner.ask() carries the same fields for `aborist ask` parity. Phase 3 — policy fields + governance hash + CLI flags: - 6 new policy fields, all default-on except metacognition_block_on_contradiction (default False — label- only by default; opt-in via --block-on-contradiction). - All 6 folded into _VERIFIER_POLICY_FIELDS so flipping any invalidates prior cache records on lookup. - 2 new CLI flags on `aborist query`: --no-preflight Level 2 master kill --block-on-contradiction strict mode (hard-block on lexical contradictions) Phase 4 — audit-line labels + bench fields + tests: - _render_warrant_tail extended with 5 metacog tail tokens: · false premise · contradictory · stale risk · out of corpus · frame ambiguous - Bench rows in qa_sweep.py gain 7 new bounded-size projection fields (logical_statuses, question_shape, preflight_result, temporal_sensitivity, has_false_premise, has_contradiction, corpus_requirement). Full QuestionState stays on result dict for CLI render only. - tests/test_metacognition.py grew from 42 → 68 tests (16 new: 6 governance + 6 audit-line tail + 4 default-policy pinning). Live verified end-to-end: $ make query-dry Q="Who is the current CEO of OpenAI?" BURN=1 UNGROUNDED · via claim_lattice · stale risk $ make query-dry Q="When did Mr. Burns become Homer's biological father?" BURN=1 UNGROUNDED · via claim_lattice · false premise 978 tests passing; 36 skipped. What's NOT shipped (deferred): - Run-DAG node binding for metacognition_preflight stage — joins ticket #000009 Phase 5 (same audit-replay gap; both nodes can land together). - Reference-frame plumbing — frame_detection runs post-retrieval, preflight here is pre-retrieval; deferred until two-pass or post-classification update lands. - SOFT_PREFLIGHT_HINT (model-assisted sidecar) — source doc §18 reserves this label; hard rule preserved (no LLM in preflight hard path). - Bench A/B measuring preflight on vs off — quick to run once stack settles. Ticket #000010 status: closed · landed 2026-05-03.
3.7 KiB
3.7 KiB
Aborist tickets — index
Aborist uses a flat ticket-NNNNNN-<slug>.md convention for actionable
proposals: defects with a known root cause, design proposals awaiting
go/no-go, or scoped enhancements queued for future implementation.
Convention
- Filename:
docs/tickets/ticket-NNNNNN-<slug>.md. The ID is a six-digit zero-padded integer; the slug is hyphen-lowercase and short enough to stay readable on a 100-column terminal. - Numbering: monotonic, never reused. Pick the next free integer
greater than every existing ticket. The current next ID is on the
Next IDline below; bump it when you open a ticket and commit the bump in the same commit as the new ticket file. - Header: every ticket starts with
# Ticket #NNNNNN — <short title> **Status:** open · awaiting go/no-go (or "in progress", "closed") **Opened:** YYYY-MM-DD **Scope:** <one-liner — what this ticket is for> **Audience:** <who reads this> **Hard constraint:** <invariants this ticket commits to NOT break> - Body: problem statement, design choices with trade-offs,
recommendation, implementation sketch, scope boundaries, status.
See
ticket-000001-retrieval-keywords-audit-gap.mdfor a worked template. - Closure: when a ticket lands, flip Status to
closed · landed in commit <sha>and leave the file in place. Do not delete tickets; they are the design log.
Distinction from other docs
docs/ also contains architecture references and bench journey notes
that are NOT tickets — they describe state of the world rather than
proposing change. Examples that stay un-numbered:
cti-architecture.md(architecture reference)mesh.md,mesh-deploy.md(architecture + ops reference)qa-modes-bench-2026-04-30.md(point-in-time bench journal)verifier-semantic-gap-design.md,self-reference-design.md(older design docs that pre-date the ticket convention; leave as-is unless retroactively promoting one to a ticket adds value)concept-relations-design.md(architecture reference for the per-shardconcept_relationssynonym/rivalry layer + the 1.6% storage-tax rationale; landed 2026-05-01)
If a doc proposes change AND awaits a decision AND has scoped implementation cost, it's a ticket. Otherwise it's reference.
Index
Newest first. Update on every open/close.
| ID | Title | Status | Opened | Directive |
|---|---|---|---|---|
| #000010 | Meta-Cognition Preflight Guard (M0 / MCTL) | closed · landed 2026-05-03 (Phases 1–4); Phase 5 DAG join #000009 | 2026-05-03 | D1, D3 |
| #000009 | Quantifier preflight run-DAG node binding | open · awaiting go/no-go | 2026-05-03 | D3, D4 |
| #000008 | Broad-quantifier preflight guard | closed · landed in 4f2b5a6; Phase 5 DAG binding split into #000009 |
2026-05-02 | — |
| #000007 | Query-layer hyphen folding | closed · 2026-05-02 | 2026-05-02 | — |
| #000006 | Bench-emergent findings (rolling research log) | open · rolling | 2026-05-02 | — |
| #000005 | Label ladder migration (POINTER-LINKED → …) | closed · 2026-05-02 | 2026-05-01 | D7 |
| #000004 | Directive coverage in bench summary | closed · acd1f9c |
2026-05-01 | D8 |
| #000003 | Anchor-class warrant generalization (Module H+) | closed · 2026-05-02 | 2026-05-01 | D6 |
| #000002 | Reference-Frame Polarity Contract (Module L) | closed · 2026-05-02 | 2026-05-01 | D3 |
| #000001 | Retrieval-keywords audit gap | closed · 2026-05-02 | 2026-05-01 | D4 |
Next ID
000011