Skip to content

canon(E0008.3): validation mode + context break (creator cannot be own critic)#105

Merged
klappy merged 4 commits into
mainfrom
canon/validation-as-fourth-epistemic-mode
Apr 19, 2026
Merged

canon(E0008.3): validation mode + context break (creator cannot be own critic)#105
klappy merged 4 commits into
mainfrom
canon/validation-as-fourth-epistemic-mode

Conversation

@klappy
Copy link
Copy Markdown
Owner

@klappy klappy commented Apr 19, 2026

What this adds

Validation as the fourth epistemic mode (E0008.3), with a structural context-break requirement between creator and critic.

The mode was always implicit — canon described it, the oddkit_validate tool enforced its shape, case studies documented QA flows — but canon did not name validation as a distinct mode alongside exploration/planning/execution, and did not name the creator-cannot-be-own-critic requirement as a non-negotiable obligation of the mode.

This PR closes both gaps.

Two shifts, one epoch

E0008.3 is not just naming. It is naming + separation.

  • Naming — validation is a peer mode with its own truth conditions, obligations, and non-collapse rules. Three-mode framing becomes four-mode framing.
  • Separation — validation requires a context break between the authoring agent/session and the validating agent/session. Same model family is acceptable. Same governance is acceptable. Same session is not. Valid handoff forms: temporal (rest), architectural (fresh session), social (peer review), tooled (separate reviewer agent or bot).

Without the break, the mode label is cosmetic. The fresh-context principle (canon/principles/verification-requires-fresh-context, E0007) is now a load-bearing companion to validation-as-mode, elevated from "good practice" to "structural obligation."

The epoch arc

  • E0008 — eyes on usage (telemetry)
  • E0008.1 — eyes on infrastructure (tracing, cache tiers)
  • E0008.2 — eyes on time (server_time in every response)
  • E0008.3 — eyes on process (validation as its own mode, with structural separation from creation)

Each sub-epoch of E0008 promotes one implicit thing into one named, observable thing. E0008.3 promotes the review step that was always buried inside execution — and the context-break requirement that was always implicit in the fresh-context principle.

Hand-off to E0009

Naming enables seeing. Separation enables honesty. Honesty enables correcting. E0009 (self-correction) cannot begin until validation is both mode-distinct AND context-separable. Mode-distinct alone would produce self-correction loops inside the authoring context — which is to say, not correction at all. TruthKit's future harness architecture is implicated here: validation is a routing concern, not a step.

Changes

New canon (tier 1):

  • canon/definitions/validation-as-epistemic-mode.md — full contract including the Context Break Requirement section, four-mode rhythm with [context break] in the diagram, non-collapse rules covering self-review collapse, failure signals.

Revised canon + docs (all stamped E0008.3):

  • canon/definitions/epistemic-modes.md — three-mode → four-mode framing, non-collapse extended
  • canon/constraints/mode-discipline-and-bottleneck-respect.md — self-review masquerading as validation named as the most structural collapse form
  • canon/bootstrap/model-operating-contract.md — Mode Discipline gains context-break paragraph; rhythm diagram updated; derives_from adds the fresh-context principle
  • docs/appendices/epoch-8-3.md — reframed as naming + separation; forcing_fault extended to name the bugbot episode; E0009 handoff strengthens separation as prerequisite
  • docs/appendices/mode-separated-conversations.md — Validation Conversations adds fresh-context characteristic and same-session-no-break invalid move
  • docs/examples/project-instructions-template.md — public template mirrors bootstrap changes

Durable session record:

  • odd/ledger/2026-04-18-e0008-3-validation-and-teams-over-swarms.md — full DOLCHE ledger covering the multi-day session: canary forcing fault, knowledge_base rename, E0008.3 discovery, creator-cannot-be-own-critic integration, teams-over-swarms principle discovery, and the operator's solo-to-team transition. Serves as retrievable session context that complements the canon decisions.

The forcing fault

The telemetry_policy canary refactor (klappy/oddkit#106) shipped to production with three contract-conformance gaps. Parser tests were green. The tool was "done." Validation against stated claims had never happened — and even when the authoring agent attempted validation, it missed bugs that bugbot (fresh context, same model family, same governance) caught in seconds. The fix was not better tests. The fix was recognizing that validation is not part of execution, has different truth conditions, requires its own mode, AND requires a context break. Both conditions held before the canary shipped complete.

Follow-ups this PR anticipates (not included)

  1. canon/principles/teams-over-swarms.md — architectural preference principle grounded in the African proverb, 1 Corinthians 12, and the operator's testimony (oddkit alone, TruthKit together). Dedicated follow-up PR to keep the scope focused.
  2. Solo-to-team transition canon record — durable record of the operator's shift from solo MIT work (oddkit, klappy.dev, public journal) to team-driven commercial work (TruthKit). Follows teams-over-swarms.
  3. E0009 self-correction architecture — waits on E0008.3 landing. Will require canon + team structure.

Sequencing

Independent of klappy/oddkit#108 (canary completion + rename). Either merge order works. No code changes here — canon and docs only.

Related

  • klappy/klappy.dev#101 — merged; knowledge_base_url contract
  • klappy/klappy.dev#106 — merged; forward-facing doc sweep
  • klappy/oddkit#108 — open; canary completeness + rename + smoke test (24/24 green on preview)

klappy added 2 commits April 19, 2026 00:34
Adds validation as a first-class epistemic mode, peer to exploration,
planning, and execution. Prior canon described validation extensively
(oddkit_validate tool, qa-validation case study, many process refs)
but never named it as a distinct mode with its own truth conditions
and non-collapse obligations. The three-mode framing implicitly
treated validation as a phase of execution, which produced the
'validating mid-build' failure pattern — noticing concerns during
execution and surfacing them as inline pivots instead of carrying
them to a dedicated post-execution review.

This is the second half of the mode-collapse pattern documented in
canon/constraints/mode-discipline-and-bottleneck-respect. The first
half is planning-into-execution (inline clarifying questions). The
second half is validation-into-execution (inline concerns). Both
externalize cost to the operator's attention. Both feel like care
to the agent performing them. Both are the same throughput violation.

New canon:
- canon/definitions/validation-as-epistemic-mode.md (tier:1)
  Full contract for validation as a fourth mode. Names purpose,
  characteristics, truth condition, obligations, primary risk,
  valid/invalid moves. Defines the exec→val→(accept|iterate|pivot)
  rhythm. Extends the non-collapse rule to cover all six pairings.

Revisions:
- canon/definitions/epistemic-modes.md — blockquote and section
  heading updated from three to four modes; validation added as
  mode #4; non-collapse rule extended to name validation-specific
  collapses.
- canon/constraints/mode-discipline-and-bottleneck-respect.md —
  'Three Modes' section becomes 'Four Modes'; non-collapse contract
  extended with 'execution pretending to validate', 'validation
  pretending to plan', 'validation pretending to execute'; the
  rhythm named explicitly.
- canon/bootstrap/model-operating-contract.md — summary and Mode
  Discipline section updated to four modes; validation-mode invalid
  moves listed; exec→val→iter rhythm named.
- docs/appendices/mode-separated-conversations.md — adds Validation
  Conversations section mirroring Planning and Execution sections.
- docs/examples/project-instructions-template.md — public template
  updated to four modes with validation-mode invalid moves list.

Sequencing: this PR layers on top of klappy.dev#104 (merged), which
introduced the mode-discipline canon and model-operating-contract
bootstrap in their original three-mode framing. Landing validation
as a separate PR keeps the delta reviewable and preserves the
commit history of the original #104 work.

Origin: this work came out of a post-canary review session. The
gauntlet-then-fix rhythm (execution produces → validation reviews →
iteration pivots) worked cleanly in practice while the canon had no
name for the middle step. Naming validation as its own mode closes
the gap between how the system actually works and how it is
documented.
Addresses validation findings from gauntlet on the #105 PR docs:

F1: validation-as-epistemic-mode.md did not cite prior art. Added
a 'Prior Art' section acknowledging PDCA, software QA practice, and
agile retrospectives as precedent. Distinguishes what ODD inherits
(the idea that review is distinct from doing) from what is specific
(integration with the epistemic-mode framework, Theory of Constraints
framing, oddkit_validate enforcement). Names a retraction condition
so the principle is falsifiable, per canon/principles/challenge
prerequisite that a principle without retraction condition is a
preference, not a principle.

F2: epistemic-modes.md had stability: stable but this PR changed the
core framing from three modes to four. Stable canon should not
receive structural framing changes. Downgraded to semi_stable to
match the new validation-as-epistemic-mode doc and signal that the
four-mode framing is still in its first epoch of use.
klappy added a commit that referenced this pull request Apr 19, 2026
…canon→knowledge_base, baseline→bundled

External-facing rename: terminology that users and future maintainers
will actually read. Decision to rename made after canary validation
revealed that 'canon' and 'baseline' are ODD-specific jargon that leaks
into every caller's mental model. Zero reported external users today,
so the migration cost is zero.

Naming principles applied:
- Name by function, not form. 'knowledge_base_url' names what the
  URL refers to (a knowledge base); 'canon_url' presumed a specific
  governance framework.
- Use plain English that external users already know. 'Knowledge base'
  is universal vocabulary; 'canon' is a Klappy/ODD term.

Tier renames in response envelope:
- canon     → knowledge_base  (served from user's KB)
- baseline  → bundled         (served from Worker's bundled snapshot)
- minimal   → minimal         (unchanged; already plain English)

'Canon' as a content genre/concept stays throughout the prose —
it's still what the docs ARE (stable, curated, human-governed
truth). 'Knowledge base' is where they LIVE (a URL you point at).
Different concepts, different words.

Companion changes landing separately:
- klappy/oddkit#108 (telemetry_policy canary completeness + same rename)
- #105 (no changes needed — doesn't reference canon_url)
- canon/principles/consistency-same-pattern-every-time.md — one stray
  reference to update in a follow-up sweep commit

TruthKit alignment: this rename makes 'bring your own knowledge base'
the supported story. A TruthKit consumer sets knowledge_base_url and
the response envelope's governance_source tells them whether they're
reading their canon, the bundled fallback, or the minimal last resort.
Adds docs/appendices/epoch-8-3.md and updates frontmatter on three
canon docs to stamp the epoch number.

E0008.3 framing: validation was always happening, always implicitly,
always collapsed into execution. Naming validation as a first-class
mode is not a new capability — it is observability applied to
process itself, the natural next extension of E0008's observability
arc.

The epoch story:
- E0008   — eyes on usage (telemetry)
- E0008.1 — eyes on infrastructure (tracing, cache tiers)
- E0008.2 — eyes on time (server_time in every response)
- E0008.3 — eyes on process (validation as its own mode)

Each sub-epoch promotes an implicit thing into an observable thing.
E0008.3 promotes the review step that was always buried inside
execution into a first-class mode with its own truth conditions
and non-collapse obligations.

The hand-off paragraph at the end of the epoch doc explicitly names
E0009 as the next move: once validation is observable, self-correction
mechanisms become the natural next step. E0009 cannot begin until
validation is mode-distinct — otherwise self-correction would collapse
back into execution, producing the same mid-build micro-pivot pattern
E0008.3 exists to prevent.

Naming → seeing → correcting. Ordering matters.

Frontmatter stamps:
- canon/validation-as-epistemic-mode.md: epoch E0008 → E0008.3
- canon/constraints/mode-discipline-and-bottleneck-respect.md: E0008 → E0008.3
- canon/definitions/epistemic-modes.md: (was missing) + epoch: E0008.3, date: 2026-04-18

Compatibility note in the epoch doc: all E0008 through E0008.2
artifacts remain valid. Canon now references four modes; the fourth
mode was always implicit, canon now names it.
@klappy klappy changed the title canon: validation as the fourth epistemic mode canon: validation as the fourth epistemic mode (E0008.3) Apr 19, 2026
…tic integration + session ledger

Integrates `canon/principles/verification-requires-fresh-context`
into the validation-as-fourth-mode work across six canon/doc files,
reframing E0008.3 as a pair of shifts — naming plus separation —
rather than naming alone. Naming without a context break is cosmetic;
the authoring agent in the authoring session cannot validate its own
work honestly regardless of how carefully the work is labeled.

Structural change: validation is defined as a mode + a handoff.
Valid handoff forms: temporal (rest), architectural (fresh session),
social (peer review), tooled (separate reviewer agent/bot). Same
model family and same governance are acceptable; same session is not.

Files updated:
- canon/definitions/validation-as-epistemic-mode.md — new Context
  Break Requirement section, updated blockquote and Summary, extended
  Invalid Moves and non-collapse rules to name self-review collapse,
  Failure Signals add the same-session-no-break failure, four-mode
  rhythm diagram now shows `→ [context break] →`, Related Canon
  expanded to include the fresh-context principle as load-bearing
  companion.
- canon/constraints/mode-discipline-and-bottleneck-respect.md —
  Non-Collapse Contract adds 'Self-review masquerading as validation'
  as the most structural collapse form; derives_from picks up the
  fresh-context principle.
- docs/appendices/epoch-8-3.md — reframed as two shifts (naming +
  separation) in the epoch blockquote, frontmatter forcing_fault /
  new_invariant / core_shift, Summary, What E0008.3 Introduces, and
  the E0009 handoff paragraph (self-correction requires not just
  observable validation but structurally-separable validation).
- docs/appendices/mode-separated-conversations.md — Validation
  Conversations section gains 'conducted with fresh context' as a
  characteristic and 'same session no context break' as an invalid
  move; frontmatter stamped with epoch E0008.3 and date.
- canon/bootstrap/model-operating-contract.md — context-break
  requirement added as its own paragraph in Mode Discipline; rhythm
  diagram shows the break; epoch bumped E0008 → E0008.3;
  verification-requires-fresh-context and validation-as-epistemic-mode
  added to derives_from.
- docs/examples/project-instructions-template.md — same context-break
  paragraph and rhythm update; Validation invalid moves extended;
  epoch bumped E0008 → E0008.3; derives_from extended.

Plus one durable session artifact:
- odd/ledger/2026-04-18-e0008-3-validation-and-teams-over-swarms.md —
  full DOLCHE ledger for the session: canary forcing fault, rename
  decision, E0008.3 framing, teams-over-swarms principle discovery,
  operator's solo-to-team transition, plus explicit handoffs to the
  teams-over-swarms PR and the solo-to-team transition canon record
  that will follow.

The ledger makes retrievable what happened and why, so future
sessions can recover context without re-deriving. Canon is the
durable form of decisions; this ledger is the durable form of
session-scoped context that complements the canon docs.

The E0009 hand-off is now explicit: self-correction cannot begin
until validation is both mode-distinct AND context-separable.
Mode-distinct alone would produce self-correction loops inside the
authoring context — which is to say, not correction at all.

Naming → seeing → separating → correcting. E0008.3 delivers the
first three. E0009 is what becomes possible on the other side.
@klappy klappy changed the title canon: validation as the fourth epistemic mode (E0008.3) canon(E0008.3): validation mode + context break (creator cannot be own critic) Apr 19, 2026
@klappy klappy merged commit 072ff73 into main Apr 19, 2026
1 check passed
@klappy klappy deleted the canon/validation-as-fourth-epistemic-mode branch April 19, 2026 06:36
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