Reference document for insight-engine v1.0.0 · 24 June 2026 (revised 25 June 2026 to add the §9.1 ICD-203 alignment; revised 2 July 2026 for v0.1.8; revised 2 July 2026 for v0.1.9, the attribution ceiling; revised 3 July 2026 for v0.1.10 and v0.1.11 — checkable per-claim references — and the §3.1 layer map; revised 8 July 2026 for v0.1.12; revised 9 July 2026 for v0.1.13; revised 11 July 2026 for v0.1.14 — the opt-in independent-adjudication layer — v0.1.15 — the code-backed standing opt-out — and v0.1.16 — consecutive 1–12 step numbering with the render/track split; revised 13 July 2026 for v0.1.17, the switchable-settings adjudication build; revised 14 July 2026 for v0.1.18, the multi-provider cross-lab build; revised 24 August 2026 for v0.1.19, the grade-transport repair, and for v0.1.20, the notation-clarity release, and for v0.1.21, the legend and update-path repair; revised 27 August 2026 for v0.1.22, the identifier-scheme fix; revised 29 August 2026 for v0.1.23, the adjudication blindness fix).
Markdown edition for reading on GitHub. A formatted
.docxis inoriginals/.For the ideas each layer is built on — and how to run the method on any capable model outside Claude — see the companion Foundations document, written for the general reader.
For every term, symbol and identifier series used here, see the Glossary.
The Insight Engine is a tool for investigating high-stakes, complex, contested, or wicked problems — the kind where the danger is not that the answer is hard to compute but that the most important things sit where attention does not naturally go, where the evidence is mixed or interested, and where the decisive questions are value judgements no amount of analysis can settle. The engine surfaces the hidden contributors, conditions, and causal structure beneath a situation — sources of success and adaptation as well as failure. It offers understanding and a defensible next step, not control or prediction: wicked problems are navigated, not solved.
It is the lightweight successor to the SAF (Series of Analytical Frameworks), a 234-framework analytical corpus that has now been frozen. The Insight Engine keeps almost none of the SAF's machinery and all of its hard-won judgement, distilled into a single page and wrapped in an assurance layer. It ships as a Claude/Cowork plugin (insight-engine, currently v1.0.0) with five skills: analyse, verify, render, track, and adjudicate.
Its one-line description is also its design thesis: the large language model provides the insight; the engine makes that insight verified, defensible, and audience-ready. The engine does not try to be smarter than the model. It tries to make the model's output trustworthy and honest about its own limits — and to force the human to own the parts that are theirs to own.
The engine is the product of a controlled experimental program, not a design committee. Every feature it carries earned its place on a test; several plausible features were tested and deliberately left out. The philosophy below is therefore less a set of preferences than a set of findings.
The corpus does not justify its cost at runtime. The SAF's premise was that a large library of analytical frameworks, fanned out over a problem, would surface more than a general approach could. A program of apparatus-versus-bare tests found no top-tier benefit from the 234-corpus-as-runtime, or from framework fan-out, over "a strong model + a one-page distilled prompt + a web tool." The value did not live in the breadth of frameworks; it lived in verification, grading, and forcing judgement. So the SAF was frozen and the corpus kept only as a source to draw on (for audit, escalation, and one-time distillation), never run at runtime.
Light by design. The engine applies the same one-page method to every problem. There is no per-problem framework selection, no fan-out, no tiering of analytical depth by category. The provocation page is worded identically on every run. Lightness is not a cost-saving; it is the source of the engine's reliability and the reason its heavy moves stay meaningful.
The large language model provides the insight. On a strong model, the analytical content is already there. The engine's job is the surrounding discipline: check what can be checked, grade how strongly it is established, separate fact from value, and refuse to let a confident-sounding answer pass as a verified one.
Assurance over cleverness. The engine's distinctive value is not analytical reach but epistemic honesty — provenance grading, source-strength tiering, an active search for disconfirming evidence, and a non-droppable caveat that travels with every conclusion. These are the moves that the field's tools, on the public evidence, mostly do not make.
Human-in-the-loop, by construction. The engine articulates the value structure of a decision; it does not resolve it. The questions that no evidence can settle — the framing, the legitimacy, the opportunity cost, the value trade — are routed to the human and gated: the analysis does not finalise until the operator has taken a position or explicitly deferred.
Earn it by test; then stop — and know the difference between a prompt-move and a capability. Across the test program, the consistent result is that, on a strong model, incremental analytical prompt-moves add little or nothing — the model already performs them — while the verification, grade-lock, disconfirmation, and the forced gate carry the value. That null result was replicated about five times, and the directive that follows is to stop adding prompt-moves. The systems-investigation pass (v0.1.7) is the one deliberate exception: it is not a prompt-move but a capability — an explicit, graded causal-map representation the bare model does not structure on its own — and it is the first addition since v0.1.4 to beat a strong baseline on test, in two genres, while clearing a forecast-baiting safety gate and a proportionality gate. The proportionality triage (v0.1.6) and the systems pass (v0.1.7) are also the two moves that make the engine do less, or run only when warranted. The standing conclusion is unchanged: stop adding analytical prompt-moves; admit only a genuinely new capability, and only when it earns its place on a passed test; then put the engine to real use.
The engine is best understood as a stack of conceptual layers, held together by an invariant spine and a human-in-the-loop owner. The analyse skill is the runtime orchestration of these layers; the other four skills expose individual layers for standalone use (verify = L2; render = L5; track = L6; adjudicate = the Step 10 adjudication layer).
| Layer | Name | Role |
|---|---|---|
| L0 | The model | Provides the raw insight |
| L1 | The provocation page | A fixed, one-page analytical method applied verbatim every run |
| L2 | Verification | Three-bucket routing, source-tiered grading, and disconfirmation of load-bearing claims |
| L2.5 | Systems-investigation pass (conditional) | A graded causal map — loops, tipping conditions, leverage — for genuinely systemic problems only; investigate, don't predict |
| L3 | Deep-core routing | Separating the irreducibly un-verifiable questions from the verifiable ones |
| L4 | Assembly | The grade-locked decision brief |
| Adjudication | Independent second pass (opt-in, off by default) | A blind-then-adversarial check of a finished analysis by the most independent model available (the adjudicate skill); folds under grade-lock; never flips the call |
| L5 | Rendering | Grade-locked re-expression for specific audiences |
| L6 | Workspace | A living investigation that accumulates across sessions |
| Spine | Grade-lock | The invariant that runs through every layer: grades, the dominant unknown, and the non-droppable caveat core |
| Owner | Human-in-the-loop | The operator, who clears the forced judgement gate and owns the value calls |
Sitting in front of the whole stack is a fail-safe proportionality triage (added in v0.1.6): a pre-flight check that decides whether the full machinery should run at all, or whether the problem is unambiguously trivial enough for a short, proportionate answer. Its default is depth; down-scoping is the rare, guarded exception.
The analyse skill runs the pipeline as numbered steps; the architecture describes the same machinery as layers. The correspondence is deliberate but not one-to-one: one step spans two layers (Step 3 covers L0 and L1), the gate belongs to the operator rather than to any layer, and three layers live in separate skills that also appear in the pipeline as opt-in offer-steps — adjudication (Step 10), render (Step 11), and track (Step 12). The table below is the complete map. The reasoning behind each lineage, written for the general reader, is in the companion Foundations document.
| Layer | Step in analyse |
Approach in use | Documented lineage |
|---|---|---|---|
| Proportionality triage | Step 1 | Fail-safe right-sizing; default to depth; down-scope only on unambiguous triviality | Satisficing (Simon); boundary conditions consistent with Klein; earned on T-AB-004 |
| Scoping (elicitation point; no layer) | Step 2 | TOSCA problem framing; on skip, the engine writes its own problem statement as a marked assumption | Garrette, Phelps & Sibony, Cracked It! |
| L0 — the model | Beneath Step 3 | The substrate supplies the insight; the engine imposes procedure | Kahneman (procedures over self-correction) |
| L1 — the provocation page | Step 3 | Fixed one-page probe set, identical wording every run | Distilled from the 234-framework SAF corpus; page form per Gawande |
| L2 — verification | Step 4 (standalone: verify) |
Three-bucket router; [V]/[U] grading with [V1]-[V3] tiers; disconfirmation search; attribution ceiling; checkable per-claim references (v0.1.11) |
ICD-203 analytic standards; Cook & Woods and Fischhoff (attribution ceiling) |
| L2.5 — the systems pass | Step 5 (conditional) | Graded causal map; loops graded exists-vs-dominates; tipping conditions, never dates; investigate-don't-predict | Systems-thinking tradition; discipline earned on T-SM-001/002/004 |
| L3 — deep-core routing | Step 6 | Fact/value separation into an OPEN list the model may not resolve | ICD-203 standard 3; Rittel & Webber characteristics 3, 9, 10 |
| The grade-lock spine (§4; invariant) | Step 7 | Grades locked; joint assumption-resilience check | Internal design; ICD-203 standard 8 |
| The gate (operator-owned; no layer) | Step 8 | Forced one-at-a-time judgement positions; standpoint opener; conditional intervention-level question | Cognitive-forcing class; forcing earned on T-L2-006; opener per The Blind Spot |
| L4 — assembly | Step 9 | Decision brief; wicked-call guard; coverage-retention re-scan; power-problem line; plain-language legend | Rittel & Webber ("navigated, not solved"); Hayes and Bransford & Stein (the legend and staging) |
Adjudication (operator-owned offer; standalone adjudicate) |
Step 10 | Opt-in, off by default; blind-then-adversarial second pass; independence ladder A–D; folds under grade-lock; never flips the call | Devil's advocacy and red-teaming; independent review; cross-lab decorrelation |
| L5 — rendering | Step 11 offer (standalone: render) |
Grade-locked audience re-voicing | Cracked It! ("Sell"); ICD-203 standard 5 |
| L6 — the living workspace | Step 12 offer (standalone: track) |
Persistent dossier; explicit dated re-grading | ICD-203 standard 7 |
Grade-lock is the single most important idea in the engine and the idea every other feature depends on. It has three parts:
Provenance grades. Every load-bearing claim is marked [V] (independently corroborated) or [U] (not independently verified — see the five situations below). A [V] is never bare — it carries a source-strength tier: [V1] primary (the statute or regulation text, an official statistic, a peer-reviewed study, a court ruling, the primary dataset — primary meaning the source is proximate, not that its content is trusted, so an interested party's own primary material does not earn [V1] on a claim it has a stake in); [V2] secondary (reputable reporting or interpretation resting on primaries); [V3] contested or weak (weak but independent corroboration, or credible sources disagree — a claim resting only on an interested party's own account is [U], not [V3]).
What [U] covers, and what it does not. [U] is a single symbol over five distinct situations, and the difference decides whether further work can move it. A claim is [U] when it is uncorroborated, or found contradicted, after a real search; when it rests only on an interested or self-reporting party with nothing independent behind it; when it is party-held and pending, awaiting a named document that would settle it; when it inherits the cap from an unverified thing its mechanism depends on (a real mechanism operating on an unverified object is an unverified claim); or when it is a judgement or prediction the method never grades higher by design — which loop dominates, whether acting at a leverage point will work, and whether or when a system tips carry a hard ceiling of [U] and route to the human however strong the evidence becomes.
Only the first three can be moved by looking harder, and the fourth only by verifying the thing it depends on. The fifth cannot be moved at all, and that is deliberate: it is the engine declining to manufacture confidence, not a gap in its work. Questions of value, framing or blame, and forecasts made outside the systems map, carry no mark at all — they are routed to the human as open questions and never graded. The distinction is decision-relevant, because the brief's what-to-verify-first item is meaningful for the first four and empty for the fifth. Each claim's own line states which kind it is; the symbol does not, and is not asked to.
Keeping one symbol is a deliberate choice, and the reasons are not the obvious one. A fixed, corpus-wide suffix marking the permanent kind would not be the per-case re-basing that verify and Step 4 forbid — that rule bars redefining a grade for one case, not adding a stable mark, and [V1]/[V2]/[V3] are themselves a fixed suffix vocabulary. That argument was advanced here in an earlier draft and it does not hold; it is recorded so it is not made again. The suffix was declined on four other grounds. The bit is already encoded twice: in a disciplined deliverable a permanent [U] appears only after the dominates-now: and effectiveness: labels, so the slot name announces permanence and the fixed legend states it in words; a third encoding creates a new defect class — the mark and the slot disagreeing — that cannot exist today. The failure modes are asymmetric: a bare [U] makes one minimal promise that is never false, while a permanence mark wrongly applied to a movable [U] tells a reader not to spend the cheap verification that would have settled the claim. That is false closure, the inverse of the false confidence this discipline exists to prevent, and it would be enforced by nothing but the model's obedience. It is untested, and the standing rule bars additions that have not earned their place. And it would date-split track dossiers: the day it shipped, an unmarked [U] in a living dossier would become ambiguous between movable and written before the mark existed.
One deliberate weakening, on causal-map links. On a link in the Step 5 map, [V1]/[V2]/[V3] grade the support for that mechanism in general — not that this arrow is the operative, correctly-directed, un-confounded cause in this case. That is a weaker promise than the same symbol carries on a claim, it is stated in Step 5, and since v0.1.20 it is stated in the reader-facing legend too. A mechanism carried by analogy from another domain with no in-case support caps at [V3] and records its weakness as analogy — no in-case support.
The dominant unknown. The single fact that, if known, would most change the conclusion. It is named explicitly and re-pointed whenever the evidence moves.
The non-droppable caveat core. All grades, plus the dominant unknown, plus a one-line reliability caveat naming what the analysis rests on (for example, a single interested source, or a [V3] the call leans on). This core appears in every output and every render.
The locking rule is strict: once a grade is set, nothing downstream may change it — only re-express it. A grade moves only on new evidence, recorded in a log. This is what lets a finished analysis be re-voiced for a board, a regulator, or a family without its grade-locked spine changing, and it is what makes the output defensible after the fact.
The engine assumes a top-tier model as its substrate, because the experimental finding that "the model already performs the analytical moves" only holds for a strong model. On a weaker model the calculus would differ; the engine is explicitly built for and around strong models.
Page-revision governance (P3, 2026-07-02). The page is fixed per version, not fixed forever: it changes only on evidence from real runs, through an A/B gate, with a version bump (now v1.1) — verbatim within a version. Release discipline, not a living checklist. A single page, worded identically on every run, that is the 234-framework corpus distilled to its load-bearing moves. It opens by reframing the analyst's fluent first reading as the baseline a competent reader already has — not the finding, and instructs the analyst to surface what is material but sits where attention does not go. It contains:
- Two always-on moves. (1) Displacement / second-order: for every apparent gain, ask where the cost went — onto an unmeasured node, an absent party, or the future. (2) Provenance / verification: mark each load-bearing claim
[V]/[U], name the single dominant unknown, and weight a self-damaging admission above a self-serving claim. - Candidate probes, kept where they fire. Absent voice (who bears a cost but is not in the room); cui bono from the framing (who benefits from the question being posed this way); base rate & measurement (is the metric a gameable proxy?); normalised-as-natural (what assumption has become invisible through repetition?); spuriously present (what is loud and confident but doesn't merit the attention it pulls?); conspicuously absent / omission sweep (from the model's own knowledge, what would a thorough treatment of this kind of problem include that is missing here?); reflexive (what does the way this was handed to me make me likely to miss?).
- A closing discipline. Steelman the strongest findings and keep only what survives the best opposing reading; name every materially affected party; aim for the material set, not length — an over-claim costs more than a miss.
The omission sweep deserves emphasis: it is generated dynamically from the model's own domain knowledge, with no fixed checklist or taxonomy. This was a deliberate decision — a static checklist (even one distilled from the 234 frameworks) would be a narrow, fixed taxonomy that limits the sweep; the model's training is the far larger and more current "taxonomy."
The assurance layer with enforcement power. It turns "the model believes X" into "X is corroborated by a cited source of stated strength, has survived a search for its own counter-evidence, or it is not." It has four components:
- The three-bucket evidence router. Every load-bearing claim is sorted into: web-verifiable (a public fact, pattern, rule, or statistic → search and grade
[V]/tier or[U]); party-held (a private document or internal figure → do not pseudo-verify; name the exact document that would settle it); irreducibly open (a value, framing, or forecast → do not grade; route to the human at L3). - Source-strength tiering. Every
[V]is tiered[V1]/[V2]/[V3](see §4). A primary is preferred; when only a weaker source is reachable, the analysis says what primary source would lift it. - The disconfirmation pass. For every claim the conclusion materially rests on, a second search is run at the claim's negation ("X is false / disputed / overstated"). Credible counter-evidence downgrades the claim to
[V3]or[U]and records the dispute; a genuine negation search that finds nothing marks the claim survived disconfirmation — but only where the corroboration spans at least two independent roots; a single-root field is marked unopposed — single-root record, not survived. Survival across independent roots is itself a real signal. This is the engine's answer to the field's most common failure mode, which is the opposite: confirmation bias. - The coverage-retention re-scan. Concentrating on the load-bearing few narrows attention onto exactly those claims. Before finishing, the engine re-scans once for material issues that the focus deprioritised. This is the counter-sweep.
A standing heuristic runs through all of L2: weight a self-damaging admission above a self-serving claim, and correct the analysis's own confidently-wrong facts — a strong model asserts some, and this is where they get caught.
Checkable references (v0.1.11). Every graded claim in the deliverable carries a reference the reader can validate without help: web-verified evidence names its source with a URL; party-held or in-document evidence names the document plus the section or page. This is a discipline clarification of the existing per-claim source requirement, not a new capability.
5.3.1 The systems-investigation pass (Step 5 — conditional; added v0.1.7, numbered Step 2.5 until v0.1.16)
Some wicked problems are not merely hard to verify — they are dynamic: driven by feedback loops, accumulating stocks, delays between cause and effect, and the possibility of tipping into a different regime. For these, and only these, the engine runs a systems-investigation pass after verification (Step 5), building a graded causal map. It is conditional, and its discipline is the whole point.
It runs only when the problem is genuinely systemic — when two or more of these are materially present: feedback / circular causation; accumulation (stocks); material delays; multiple interacting actors; a possible regime shift; self-fulfilling expectations. Otherwise it skips with one line ("no material feedback structure — systems pass not warranted"). Importance, emotion, or difficulty does not make a problem a system, and a spurious causal map is a failure, not thoroughness — a proportionality discipline that was tested directly (§8).
What it builds, kept to the load-bearing few (≤8 variables, ≤5 loops, ≤4 tipping points, ≤5 leverage points — a sprawling map is itself false precision): the key variables and signed, graded causal links, with material delays flagged (a delay means the harm accumulates before any indicator shows it); the reinforcing and balancing feedback loops, each graded twice — whether the loop exists (often [V]) and whether it dominates now (never graded above [U], because which loop wins is an in-case operativeness claim no source reaches); candidate tipping points stated as conditions to watch, never as dates or probabilities, each with a reversibility flag; emergent behaviours, especially self-fulfilling expectations where the shared narrative is itself a causal variable; and a ranked set of leverage points, each graded twice — the mechanism (why it is structurally high-leverage) and the effectiveness (whether acting there will actually work — never graded above [U] — a prediction about an intervention).
Since v0.1.22 the analysis's identifiers are fixed by the specification — map variables Node1–Node8 (each a quantity), links Link1…, loops LoopR1/LoopB1…, tipping conditions TipCond1…, leverage points LevPoint1…, and the register series ClaimReg1, Disconf1, Find1, PartyHeld1, GateQ1, Assump1, OpenQ1 — a capitalised mixed-case stem plus a number, a shape shared by no grade symbol, no domain acronym, and no architecture layer tag, with V and U reserved for grades and never used as identifier prefixes, and N excluded separately as the reserved count symbol. Each loop line carries its signs or its ordered link identifiers, so its polarity is checkable as written. Before v0.1.22 the identifier scheme was unspecified, and 11 of 15 retained runs from 24 August 2026 independently chose V or N as their node prefix.
The hard ceiling is what the whole pass rests on, and its entire safety case: structure may be graded up to [V]; which loop dominates now, whether acting at a lever will work, and whether or when the system tips have a ceiling of [U] and route to the human. The map states the conditions under which the system could shift; it never states that it will, or when, or with what probability. It investigates structure; it does not simulate dynamics or compute outcomes — if genuine quantitative modelling is needed, the engine says so and routes to specialists and data. The map is a hypothesis to be falsified, not a model to be trusted.
The pass feeds the rest of the pipeline rather than standing alone: loop dominance, regime, and timing join the deep-core OPEN list for the gate (they are judgements, not facts); the ranked leverage points inform the call; the tipping conditions become what-to-monitor and what-would-flip-the-call; and the assumption-resilience check (§5.5) stress-tests the call against the map's load-bearing links. This is the engine's one concession to complex-systems analysis, and the only feature added after the program judged the engine feature-complete for prompt-moves — admitted because it is a capability, not a prompt-move, and because it earned its place on three gates and a replication (§8).
The material issues that are not externally verifiable — the framing of the decision itself; legitimacy and who is bound without a say; opportunity cost and unmodelled alternatives; value trade-offs — are separated into an explicit OPEN list. They are not resolved, not dropped, and never asserted as verified. They are the questions the operator must judge at the gate.
After grades are locked, the engine stress-tests the conclusion, not just the claims: it names the two-to-four assumptions the call most rests on, varies them together, and records whether the conclusion survives. This is an assumption-fragility check — deliberately not system modelling; it does not simulate feedback loops or tipping points and must not claim to (the conditional Step 5 systems-investigation pass, §5.3.1, is where graded structure is mapped). Its result feeds the brief's confidence basis and its "what would flip the call."
Before the brief is finalised, the engine stops and puts the deep-core open questions to the operator as a gate. The operator records a one-line position on each — or explicitly defers (a deferral is logged, not ignored). The brief does not finalise until the gate is cleared.
This is a gate, not a heading, for a tested reason: controlled testing showed that merely surfacing the deep-core questions — even leading with them and calling them mandatory — does not get a decision-maker to act on them; they read them and then prioritise the verifiable (the "streetlight effect"). The deep core is a judgement the human takes, not a priority that competes with "commission a study." Forcing an explicit, recorded position is the mechanism that actually gets it addressed. The engine articulates the questions and the value structure; the operator owns the judgement.
The deliverable is assembled in a fixed order: the operator's recorded gate positions (leading the document); the verified findings, each with its grade, tier, and any disconfirmation result, with documented patterns separated from any interest- or grief-driven over-claims; then the decision brief, which always contains five parts:
(a) the call — the actual recommendation; (b) confidence basis — confidence in the fact-chain and the conditions under which it changes, naming the weakest load-bearing grade the call leans on, plus the action contingency (what must hold after acting); (c) the dominant unknown; (d) what to verify first — the cheapest next step that most reduces risk; (e) what would flip the call — including any jointly-moved assumptions the resilience check found the call could not survive, and any tipping conditions from the Step 5 systems pass. The reliability caveat is held to the end.
A refinement to the call. If the problem is wicked — the deep core dominates and there is no verifiable solution — the call is rendered as a provisional stance, not a verdict: it states which value it trades against which ("this prioritises X at the expense of Y"), marks itself explicitly re-openable, names what would re-open it, and offers a hand-off to the living workspace. A firm verdict on a wicked problem re-imports the false closure the analysis exists to avoid.
The pre-flight check (v0.1.6). Before the method runs, the engine judges whether the problem is unambiguously low-stakes — routine, self-contained, reversible, with no third parties bound, no material money or dependency, no legal/regulatory exposure, no contested values. It applies strong skepticism to the framing ("am I being invited to treat this as routine?"), and treats any disqualifier as a reason to run the full method. Only when the problem is unambiguously trivial on every count does it give a short, proportionate answer — saying it has done so and inviting the operator to request the full pass. Under any doubt it defaults to depth.
The design is deliberately asymmetric: a mild over-analysis is cheap; wrongly down-scoping a problem that only looks routine is not. The guard fixes a real, observed tendency to over-elaborate trivial inputs, while its conservatism keeps it from ever switching off the engine's scrutiny on a problem that deserves it.
A finished, graded analysis can be re-expressed for a specific reader without changing a single claim or grade. This is a register transform over the grade-locked spine, never a re-analysis. Its features:
- A standing set of audiences plus any named standpoint. Opposing-interest renders (adversarial — steelman the opposing interest, conceding every
[V]and contesting only attribution; advocate — the affected party's champion) and reader/register renders (policymaker; board/executive; counsel/legal; regulator/supervisor; family/lay). Any named standpoint — a journalist, an investor, a clinician, a specific person or body — is a first-class target. - An elicitation prompt. If the operator invokes a render without naming the audience, the engine asks — offering the common presets plus a free-text "name your own," and allowing more than one (which produces a comparative render). It never blocks.
- Distributed and comparative modes. Distributed = one version per audience. Comparative = one document with a labelled panel per audience over the shared spine, plus a Divergence Ledger (per spine node, each panel's frame and the divergence type, which must be register/scope/framing only) and a Robustness Map (each node tagged hardened / contested / narrator-only).
- Hard invariants. No claim or grade changes; the source tier is carried verbatim (a lay render may put it in plain words but must never upgrade a contested
[V3]to sound settled); the non-droppable caveat core appears in every render; and a tone rule — show understanding through accuracy and respect, never ingratiating, saccharine, or over-familiar; empathy is carried by register, never by false certainty. A fidelity self-check asserts the claim/grade set is identical to the spine before any render is delivered.
For inquiries that accumulate over days or weeks, the engine maintains a living dossier (one operator-owned file, persisted across sessions) through three modes, each of which asks rather than guesses: OPEN (what are we tracking; carry a spine from an analyse run or start fresh; the watch-list of update triggers; cadence, optionally a scheduled re-verification); UPDATE (what arrived; re-verify the affected claims; re-grade explicitly with a before→after log; re-point the dominant unknown; re-derive the call); STATUS (read the current state without re-verifying). Grade-lock carries throughout: a grade changes only on new evidence, recorded in the log, never by re-expression. This layer is the newest and the least tested in real use (see §10).
5.12 The adjudication layer (Step 10 — opt-in, off by default; v0.1.14, extended v0.1.15/v0.1.17/v0.1.18)
For the highest-stakes work — legal exposure, contested blame, a decision that binds people — a finished analysis can be put to an independent second pass: a separate model re-derives the conclusion and then attacks it, and its discrepancies are folded back under grade-lock. It is opt-in and off by default. The engine offers it, in one declinable line, only on a completed high-stakes or wicked analysis where a real, contestable judgement remains; nothing runs without an explicit yes, and every rung costs credits or setup.
What it does. The adjudicator runs as a subagent with its own isolated context, in two dispatches rather than one. The first is blind by construction: it is handed the facts and the grade-locked spine, with the call, the first model's reasoning and the operator's gate positions withheld, so it cannot anchor on what it was never sent; from that alone it re-derives the analysis and sees whether it reaches the same call. Only once that verdict has returned is the draft brief revealed, in a second dispatch, for the adversarial pass (try to break the load-bearing claims and the call itself). Asking a single call to ignore the brief until the second pass would make blindness a matter of the model's compliance; withholding it makes blindness a property of the package, at the cost of a second paid call. It returns a ranked list of discrepancies; the few that are decision-relevant are surfaced, and the rest are logged to a real-use monitor.
The independence ladder. The worth of the check rises with how decorrelated the adjudicator's blind spots are from the model that produced the analysis, so the engine uses the most independent adjudicator available, strongest first: rung A — a frontier model from a different lab (cross-lab; the lab is chosen by the crosslab_provider preference — OpenAI GPT-5.6 Sol, Google Gemini, or xAI Grok, each via its own built-in adapter, or, under Other, any OpenAI-compatible endpoint or an operator-written adapter file; a Claude-lineage target is hard-refused, since a same-lineage check is not cross-lab), the strongest, because a different training lineage gives the most decorrelated blind spots, invoked by an API call the engine walks the operator through; rung B — a different in-house model (Fable 5), model and context independence with no external call; rung C — a panel of two or more blind Opus instances read for divergence, a same-model cross-check rather than true independent adjudication; rung D — a self-adversarial reset in the same session, the weakest. The engine declares which rung it reached, because same-model agreement is stability, not proof.
Why the ladder is ordered this way — and whether it lasts. The ordering follows one principle: a rung's worth is set by how decorrelated the adjudicator's blind spots are from the analyser, not by how capable the adjudicator is in absolute terms. Capability is only a floor — any frontier-class model can competently re-derive the call; above that floor, extra capability adds little, because the adjudicator's job is not to out-think the analyser but to be differently wrong than it. A frontier model's residual errors are dominated by systematic, lineage-shared blind spots it cannot see by introspection at any strength, because introspection runs on the same weights that produced the error. That is why a different-lab model (rung A) is strongest and a same-model panel (rung C) is a cross-check rather than adjudication — and why the ladder is analyser-relative: were the analyser a different-lineage model, the rungs would re-rank around it. It also answers whether a stronger analyser makes the layer redundant. Not wholesale: the layer is gated to high-stakes and wicked problems, where the decision variable is the error tail, and capability gains cut the mean far faster than the tail — as base error falls, the surviving errors concentrate into exactly the subtle, confident, shared region a single model is worst at self-catching, and a more fluent model's mistakes get harder, not easier, for the operator to spot unaided. The two benefits scale oppositely: the demonstrated sharpening benefit shrinks as better-calibrated analysers self-flag their own weak claims, while the unproven error-catch benefit falls in frequency but not in per-catch value. Redundancy is therefore decided per problem class by the real-use monitor, not by argument — retired only when the ledger shows sustained null yield (the monitor's per-class retirement rule), with one caveat: if cross-lab decorrelation itself collapses through model monoculture, a null result from rung A must be read as loss of signal, not as safety.
Grade-lock is preserved, and the call stays yours. Discrepancies fold back under the grade-lock spine (§4); the adjudicator never flips the call — the operator keeps it. Cross-lab egress (rung A) is blocked by default for privileged or confidential matters, because the material leaves the boundary — but that block is asked-first and operator-overridable by a deliberate, logged act (block_override), and the exact redacted package is shown for confirm / edit / cancel before anything leaves. A standing opt-out is honoured by code (v0.1.15): a should-offer check reads the operator's preferences (stored outside the plugin, at ~/.insight-engine/), so once they decline standing, the engine stops offering — per scope, reversible, and with no dark patterns. v0.1.17 widened this into a 13-key switchable-settings block: every ask, gate, adjudicator rung, and panel size is operator-controllable, standing or per-run, with nothing centrally locked. v0.1.18 makes rung A genuinely multi-provider (a per-lab adapter registry plus an OpenAI-compatible and a hash-pinned pluggable-adapter Other mode, 19 switchable keys, a hard same-lineage guard that refuses any Anthropic-lineage target, and a per-provider yield split in the monitor). OpenAI is live-verified; the Gemini and xAI adapters are built to each lab's current published API (2026-07-09) and are live-verified only when the operator runs the smoke with that lab's key.
Panel sizing and per-class retirement. Two things are tunable rather than fixed. First, panel sizing: three switchable settings govern how much adjudication runs — the cross-lab breadth M (how many different-lineage labs are consulted at rung A), the Opus panel size N (how many blind instances at rung C), and the runs-per-model R — each defaulting deliberately low, with the engine offering to widen only when the runs already made disagree; breadth is preferred to depth, because adding a distinct lineage breaks the shared-blind-spot floor that repeated runs of one model cannot. Second, per-class retirement (the monitor's AMENDMENT-2 rule): the real-use monitor tracks yield by problem class, and after a sustained-null window for a class it will recommend — never automatically — demoting adjudication for that class to on-request, a change that is reversible and still spot-audited, while keeping the layer on at the first real catch or shift in the class. The decision is a logged recommendation the operator acts on, consistent with the switchable-settings philosophy: nothing retires itself without the operator's knowledge.
The honest claim. Adjudication is presented as a rigour-and-defensibility check that sharpens a sound analysis; its ability to catch an error the disciplined first pass missed is unproven — in constructed-case testing the first pass already caught the constructible ones, and the one real cross-lab run to date flipped nothing. It is not a guarantee that errors will be caught. It ships opt-in precisely because its decision-flip benefit is not established; what it reliably adds is defensibility and a declared, decorrelated second look.
| Skill | Layer(s) | What it does |
|---|---|---|
analyse |
Orchestrates L0–L6 | The full pipeline, end to end |
verify |
L2, standalone | Router, source-tiering, disconfirmation, coverage-retention, dominant-unknown — to fact-check a claim-set or premise on its own |
render |
L5, standalone | Grade-locked addressee rendering of a finished analysis |
track |
L6, standalone | The living investigation workspace |
adjudicate |
Adjudication (Step 10), standalone | Opt-in blind-then-adversarial independent second pass on a finished high-stakes analysis; declares the rung reached; never flips the call |
The analyse runtime sequence is: Step 1 the proportionality triage (pre-flight) → Step 2 optional scoping (offered, never blocking) → Step 3 the provocation pass → Step 4 verification → Step 5 the conditional systems-investigation pass → Step 6 deep-core routing → Step 7 grade-lock and the resilience check → Step 8 the forced judgement gate → Step 9 assembly (coverage-retention re-scan, then the gate positions, the graded findings, the decision brief, and sources) → Step 10 the opt-in offer of independent adjudication (high-stakes/wicked only) → Step 11 offer render → Step 12 offer track. The gate is canonically Step 8 (it was Step 5 until the v0.1.16 renumber) and has held the same position in the flow through every revision; the systems pass runs at Step 5 because it needs the verified grades from Step 4 and feeds the deep-core list at Step 6.
A distinguishing property of the engine is where it stops and asks the operator. There are five such points, deliberately placed:
- The proportionality triage (pre-flight) — implicit; it may offer a short answer and invite the full pass.
- Step 2 scoping — optional and skippable: the decision at stake, the intended audience, the value frame, scope boundaries, any party-held material.
- The Step 8 forced gate — mandatory: a recorded position on each deep-core question, or an explicit deferral.
- The Step 10 adjudication offer — a one-word-declinable choice to run an independent second pass on a high-stakes result; gate-checked by code, so a standing opt-out is honoured and the offer is never a dark pattern.
- The render audience prompt — asks who the output is for when not specified; and
track's OPEN/UPDATE/STATUS contract asks what to track and what has changed.
Everything else the engine produces on its own. The deliberate exception is analytical depth, which is generated rather than elicited — the engine does not ask the operator how deep to go; it judges that (via the triage) and defaults to depth.
The engine's shape is the outcome of a controlled-testing program with a consistent discipline: predictions pre-registered before running; gold keys fixed in advance where possible; blind subjects; at least three raters; cheapest-decisive tests first; any test allowed to eliminate a feature; and the scorer decoupled from the designer wherever it mattered.
The findings that shaped it:
- The streetlight effect (T-L2-005/006): decision-makers under-attend the deep core even when it is surfaced and called mandatory. Consequence: surfacing is not enough — hence the forced gate.
- The gate is load-bearing, not cosmetic: the deep core is a judgement, not a priority; forcing a recorded position is what gets it answered. Proven in first real use (a healthcare case), where the operator's override of the recommended framing materially reshaped the brief.
- No generate-and-verify "discovery loop": an inverted-Karpathy loop did not beat a single pass plus one verification and a one-line routing step; the loop was not built.
- v0.1.5 beat v0.1.4 (T-AB-001): the omission sweep and the resilience check produced a unanimous, substance-not-padding improvement on a representative wicked case.
- Two moves did not survive isolation (T-AB-002/003): the wicked-call guard and coverage-retention proved largely redundant with a strong, probe-equipped baseline — kept because cheap and harmless, not because proven.
- The proportionality guard passed its safety test (T-AB-004): a fail-safe guard down-scoped none of three disguised-wicked traps while trimming genuinely-trivial inputs — the first post-v0.1.4 addition to earn its place on a passed test.
- The convergent meta-finding (three to four independent results): on a strong model, the value is verification / grade-lock / disconfirmation + the forced gate, not incremental analytical prompt-moves. The directive that follows is to stop adding moves.
- The one capability that beat the null (T-SM-001/002/003/004): a systems-investigation pass — an explicit, graded causal-map representation — is the first addition since v0.1.4 to add decision-relevant value over a strong baseline, replicated across two genres (an urban fiscal "doom-loop" and a critical-drug supply chain). It cleared a forecast-baiting safety gate (zero manufactured false confidence across three scenarios engineered to demand a forecast, against a discipline-stripped control that failed every one) and a proportionality gate (it skipped three genuinely non-systemic problems without inventing a map, while still firing on a disguised-systemic one). It breaks the null precisely because it is a capability, not a prompt-move — the standing distinction for any future addition.
- The one assurance capability shipped opt-in (v0.1.14): an independent second pass — a blind-then-adversarial adjudicator on a decorrelated model — was added as an assurance move, not an analytical prompt-move. It ships off by default and honest about its limits: constructed-case testing found the disciplined first pass had already caught the constructible errors, and the first real cross-lab run flipped nothing. It earns its place as a defensibility-and-rigour check whose decision-flip benefit is explicitly unproven, not as a guarantee that errors will be caught.
Version history:
| v0.1.19 | The grade-transport repair. Seven edits — five in analyse (Steps 4 and 5) and two in verify — closing observed leaks in an invariant the engine already claimed rather than adding capability. Step 4's party-held and irreducibly-open marks now travel: any downstream claim whose mechanism depends on one caps at [N]. The tier definitions are fixed by the specification and never re-based for a case — where no external source can exist, that is a reason to grade [N], not to redefine [V1]/[V2] locally. Step 5 gains a pre-draw presupposition check (an entity supplied by the question rather than established in the case goes through the router before it can be drawn: the premise of a question is not evidence for it), an inheritance cap on links either of whose ends was marked, a quote-or-cap rule (an unquotable "in-case" citation caps at [N]), and disclosed truncation when the loop cap binds, typed as ungraded self-report. Discipline/wording class, so no benefit gate — but a smoke test was pre-registered and, wrongly, not run before the ship. It was run on 24 August 2026 and passed: 0 of 5 premise-dependent links graded above [N] on the fixture that motivated the edits (against 2 of 5 before them), with 5 of 5 naming the presupposition as unevidenced. A same-day n=1 suspicion that these edits caused a loop-parity regression was replicated at n=5 per arm and did not survive — 0 parity errors in 119 retained loops across both spec versions in the shipped Steps 4+5 configuration. render, track, adjudicate and the provocation page are byte-identical to v0.1.18. |
| v0.1.20 | The notation-clarity release, and one spec correction. The correction: the systems pass's cardinal rule capped behaviour, timing and prediction at [N], but the drop-in text that became this skill compressed that to "whether or when the system tips", leaving loop dominance and lever effectiveness on a hedged "usually [N]" while the legend, the Guide and this document's §4 already promised readers a hard ceiling. Step 5 now says "capped at [N]" in both slots and the ceiling sentence names all three items, so the authoring text matches the reader contract. Evidence bearing on a capped grade is graded where it is checkable — loop existence, a link, or an ordinary finding — and travels with the routed question, so no information is lost. Pre-registered conformance probe T-SM-005 (lift-bait: a seeded in-case econometric decomposition asserting dominance, plus a glowing pilot evaluation; two arms of five, shipped wording against repaired): 0 of 100 capped grades lifted in either arm — the removed permission was present in the text but was never exercised under the strongest bait that could be constructed for it — the test's own §3 records that the seeded evidence was discredited at Step 4, so the Step 5 ceiling was never actually put to the test, so this ships as a consistency fix and closed no observed leak. Runs also attacked the bait's method rather than its conclusion, confirming the information-lossless claim against runs rather than argument. The clarity work: [N] is a single symbol over five situations, and the fixed legend, the Guide, the Manual, the README and §4 of this document now say which ones can be moved by further verification and which cannot; a tier on a causal-map link is disclosed as grading the mechanism in general rather than this arrow in this case; the analogy-capped [V3] records a named weakness; leftover "calibration" occurrences that the v0.1.13 rename missed are cleared from track and the Manual; the Guide/Manual divergence (missing /adjudicate card, missing glossary rows, stale footer) is closed; and the explainer scripts are corrected on joint assumption variation and on per-case probe selection. Arising from ADJ-003 (terminology sweep) and ADJ-004 (ceiling-versus-default adjudication), both Fable 5. An [N] suffix distinguishing permanent from movable was considered and declined — the permanent set is positionally determined by the slot name, so a mark would be a third encoding of a bit already carried twice, and a mis-applied mark creates false closure where a bare [N] promises nothing false. render, the provocation page and verify are byte-identical to v0.1.19. |
| v0.1.21 | The legend and update-path repair. Three defects, each of which alone required this release. (1) The fixed reader-facing legend shipped at v0.1.20 stated that only the first three [N] situations can move. That is false: a claim that inherits its cap moves when the unverified thing it depends on is itself verified. The legend told readers not to spend a verification that would have settled the claim, which is the false-closure failure §4 gives as its reason for declining a permanence suffix, and it contradicted §4 of this document. The legend now carries the canonical five-situation definition in full, including contradicted claims and the rule that value, framing, blame and out-of-map forecasts are routed rather than graded. The legend is versioned behaviour — it appears verbatim in every full-pass deliverable — so its wording is recorded here whenever it changes. (2) track and verify between them left the update path unguarded: track delegates re-grading to verify, and neither stated the permanent set, so an operator following either text could lift a permanent [N] on loop dominance, lever effectiveness or tipping to [V] on new evidence. Both now carry the same permanent-set invariant, worded identically. track's spine gains a field recording which of the five situations each [N] is in, which its update behaviour depends on. (3) verify graded irreducibly-open items that should be routed unmarked; corrected. Also: analyse Step 7 now requires each [N] to state its situation on its own line, because the legend promises it; Step 6 distinguishes a revisable judgement from an unmovable grade; render carries the map invariants and the legend requirement in its own text; and the provocation page moves to v1.1 under the page-revision governance rule. This release also completes a corpus-wide plain-English pass: roughly 190 figurative constructions were replaced across the engine, the public documents, the explainer scripts and the test record, against a protected list of technical terms that were kept. The documents and the packaged legend re-converge here — v0.1.20's docs led the plugin for part of a day. Arising from ADJ-006, a four-way concurrent audit reconciled into one instruction set. |
| v0.1.22 | The identifier-scheme fix (wording and discipline class, no gate). Every series the analysis numbers is now fixed by the specification as a word-stem-plus-number identifier: Node1–Node8 (map variables, each a quantity), Link1, LoopR1/LoopB1, TipCond1, LevPoint1, ClaimReg1, Disconf1, Find1, PartHeld1, GateQ1, Assump1, OpenQ1 — mixed case with a trailing number, a shape disjoint from grade symbols, from domain acronyms (measured: 49 distinct all-capital four-to-five-letter types, 857 tokens, in the fifteen 24 August retained runs) and from the L0–L6 layer tags. Motivated by three measurements of 24 August 2026: with the scheme unspecified, 11 of 15 retained runs chose a node prefix colliding with a grade symbol (V 8, N 3), and the specification's own A --(+/−)--> B example produced the bare-letter fifteenth; and L1 carried three meanings across the corpus — causal link, architecture layer, leverage point — two of them inside one document, which produced one recorded false parity error from a scorer extracting L-numbered tokens. Each loop line now carries either its inline signs or its ordered link identifiers, so a loop's polarity is readable from the line as written; PR-HZN-001 found 16 of 25 loop lines unscoreable without this. Also in this release: capped at [N] replaced by never graded above [N] in the authoring text, the wording the reader-facing legend already used; a stray bold marker in Step 5 corrected; two decorative uses of "spine" and one of "link" in the hyperlink sense made literal; and docs/Glossary.md added. No grade symbol, grade wording, or analytical behaviour changed; the legend is untouched; verify, render, track, adjudicate and the provocation page are byte-identical to v0.1.21. |
| v0.1.23 | The adjudication blindness fix (defect class, no gate), plus one honesty correction. The defect: the blind pass was asked for, not constructed. harness/run_crosslab.py built a single outbound package carrying draft_brief, which contains the call, and harness/prompts/adjudicate.txt ran both passes inside that one call, instructing the model not to let pass 2 leak into pass 1. Blindness therefore rested on the model's compliance with an instruction about material it had already been sent — the condition §5.12 exists to remove. Found by an independent assessment of the Portable Edition against this plugin (Fable 5, 29 August 2026), which had to write the packet contents down to port them; confirmed against the code rather than the prose, since harness/crosslab.py contains no redaction logic and its egress_policy gates transmission on or off rather than removing the call. The fix: two dispatches. Pass 1 carries the case facts and the grade-locked spine, with the call, the first model's reasoning and the operator's gate positions absent from the package; an assertion in the runner fails the run if draft_brief or call is reachable from it. harness/prompts/adversarial.txt is added for pass 2 and reuses the single {{blind_package}} substitution token, so the transport in crosslab.py is unchanged. --blind-only runs pass 1 and stops; preflight.py checks both prompt files. Cost: two paid calls per rung-A run rather than one, which is what the guarantee is being bought with. What was not measured: no test established that the single-call arrangement in fact anchored an adjudicator. The fix removes the possibility; it does not close an observed leak, and it is recorded here as the former, not the latter. The honesty correction: the rung-B entry stated a dated plan inclusion and a coming move to a credits basis — a vendor arrangement that can change without notice, held as a standing fact. It now points the operator to their own account page and asserts no dates. Five statements in Architecture.md, Foundations.md, Glossary.md and the Guide that described the adjudicator as being handed the draft brief are corrected in the same release, so the documents and the shipped skill do not disagree about what leaves the boundary. analyse, verify, render, track and the provocation page are byte-identical to v0.1.22; the change is confined to skills/adjudicate/. No grade symbol, grade wording, identifier series, or analytical behaviour changed; the legend is untouched. |
| v1.0.0 | The grade-symbol convergence (breaking change to the reader contract; major bump per PUBLISHING's own rule). The unverified grade is renamed [N] → [U], and the fixed legend gains the two letter expansions: [V] = verified, independently corroborated; [U] = unverified, meaning not independently verified. Nothing else about the grade changed — the five situations, the tier definitions, the no-re-basing rule, the permanent set and the attribution ceiling are untouched. U stands for unverified; the definition remains the full phrase, and independently is load-bearing, because a claim resting only on an interested party has been attested but not independently. Why: N is a count symbol nearly everywhere else in this corpus — the number of gate questions, the number of runs in a sample (n/N/K_MIN, Glossary entry 24), the rung-C panel size — and after the 24 August 2026 decision not to rename K_MIN, one letter carried a reserved count meaning and the grade meaning at once. That overlap produced a shipped defect when a receipt template wrote (0 positions, N deferred), putting N in the slot reserved for d. U collides with nothing. Recorded honestly: the operator, the corpus's primary user and tester, reports having been confused by and misread [N] on multiple occasions — testimony, given after the decision rather than before it, but from the reader whose misreadings matter most. An earlier draft of this row and of the decision record asserted that no reader had ever been shown to misread it; that was false and was corrected before this release shipped. The change was also made in the Portable Edition first, which inverts this corpus's precedence rule, and the corpus decision at docs/Grade-Symbol-Decision-2026-08-30.md exists to repair that. Also in this release: the rule that the grade never appears unbracketed, now stated where the grades are defined and applied to the Guide's diagrams; the identifier reservation clause amended so V and U are excluded as grades and N separately as the reserved count symbol; the PartHeld identifier series renamed PartyHeld, which mis-parsed as Part + Held; a track rule that a dossier records the symbol it was opened under and never mixes two; the Glossary updated in the same release under its own §8 duty, retaining [N] as a dated historical entry; and the glossary-maintenance step added to PUBLISHING.md, which that duty had called for and which no release had implemented. Migration: documents produced before 30 August 2026 carry [N] and remain valid exactly as written; delivered documents are never retrospectively rewritten, so test records, archived documents and retained example outputs keep [N] as evidence. |
| v1.0.1 | The citation-resolution rule (defect fix; patch bump per PUBLISHING's own rule). The defect: on the first scored conformance run, the engine graded a finding [V1] — its strongest tier, meaning the primary source itself — describing it as "the judgment itself", citing a Court of Appeal neutral citation against an Administrative Court URL carrying a different case number. The citation did not resolve to the source it named. Three independent raters found it separately, and it passed all twenty-three probes then in the conformance battery. For a method whose whole subject is evidence discipline, a [V1] whose primary does not resolve is the failure most likely to destroy a deliverable in use, and it is the one a challenger checks first. The fix: skills/verify/SKILL.md gains a mandatory identity check before any [V1] — compare the retrieved source's own identifiers against the citation about to be given (for a judgment, court and neutral citation number; for legislation, Act, year and section; for a study, journal, year and DOI; for a statistic, publishing body and release). Where any identifier disagrees, the mismatch is itself a finding: the claim as cited caps at [U] under situation 1, the weakness is recorded as citation does not resolve to the source named, and both the citation and what the link returns are quoted. The found source is never silently substituted for the cited one; if it supports the claim on its own terms it is cited under its own identifiers and graded on its merits, and the mismatch record stays in the deliverable either way. The cap is not tier-scoped — a mismatch found on a [V2] or [V3] citation caps that citation's support the same way — while the mandatory check remains before [V1]. Three neighbouring cases grade differently: a citation resolving to a different real source is the mismatch above; one that does not resolve at all allows no identity check, so [V1] is unavailable and the grade rests on what was read, [V3] at best, weakness source named but not locatable; one that resolves to the right source whose content cannot be read may have identity confirmed from what the page shows, but the grade still rests on what was read — supporting passage retrieved, grade normally and record the barrier; abstract or landing page only, [V2] under the précis rule; nothing bearing on the claim read, [U]. skills/analyse/SKILL.md Step 4 carries a condensed form, its "Two disciplines" becoming three, and defers to verify for the full rule. render, track and adjudicate issue no grades from retrieval and are unchanged. Origin: the rule was written in the Portable Edition first (2.0.1) and held back from the 1.0.0 convergence release, which was scoped to the symbol rename; this release carries it back, extended, and both editions now hold the extended form. Not yet demonstrated: no run has tested whether the engine obeys this rule. Probes C8 and C9 were written for it on 30 August 2026 and have not been run. The defect is addressed by instruction, not yet by evidence, and this row records that distinction rather than eliding it. No grade symbol, grade wording, identifier series or legend changed. |
| v1.1.0 | The audit chain: the Gate Ledger and the compliance receipt (new capability; minor bump per PUBLISHING's own rule). The gap: this edition has had a forced judgement gate since v0.1.x and, until now, no evidence that it ran. No skill instructed a Gate Ledger; no skill instructed a receipt; grep across all five skills and inside the built archives of 1.0.0 and 0.1.22 finds neither in any version. A reader of a deliverable could not tell whether the gate was cleared or jumped, which model graded the claims, when the run happened, or whether verification was performed. The documentation never claimed otherwise, so nothing was false — the capability was simply absent, and the Portable Edition had carried it since its first release. The fix: analyse Step 8 gains the Gate Ledger — one line per question in the GateQ series, each POSITION with the operator's line quoted, DEFERRED with the date and the default assumption named, or OPEN, closed by a STATUS: line; while any line reads OPEN the brief is withheld; a refused gate reads STATUS: refused and never resolved, because the two are different states and the record exists to tell them apart. Step 9 gains the receipt as item 0, and requires the ledger reproduced verbatim. The prefix is IE, never IE-P — that names the Portable Edition, and the two editions number themselves independently, so a shared prefix would make any version comparison meaningless. verify emits the receipt on a standalone output with gate: n/a — standalone verification. render carries the source analysis's receipt with render: <audience> appended, never a gate line of its own, and where the source predates this release and has no receipt it says so in one line rather than constructing one. track carries the ledger and receipt verbatim into the dossier, because re-verification needs to know which model graded and when, and emits none of its own. adjudicate is deliberately unchanged: it produces no deliverable, its monitor already records rung, model and date, and a receipt inside the blind packet would break the P3 §6 packet contract and conformance group G. enforce: external-harness is deliberately not offered here: an engine cannot observe from inside whether a harness drives it, so the value would be an unverifiable self-claim, which is the kind of assertion the receipt exists to avoid. docs/Glossary.md gains Compliance receipt and Gate Ledger in the same release under PUBLISHING step 2. Not yet demonstrated: no run has emitted either artefact. Probes B4, B5 and B6 exist for exactly this and have not been run. The capability is instructed, not evidenced, and this row records the distinction rather than eliding it. No grade symbol, grade wording, identifier series or legend changed. |
| v1.4.0 | Mark what you add to what the operator gave you (a new rule, written because a test found a fault; the rule itself has not been tested. Minor bump: PUBLISHING.md states three classes and no others — a new capability that a test has shown to work raises the middle number, a fix raises the last, a breaking change raises the first. This rule is new but not shown to work, so it meets the first class in part and neither of the other two, and the middle number is raised on that partial match.) What was wrong: since v1.2.0 the engine has been required to label a default it chooses default assumed (engine's choice, not the operator's), and it records each scoping assumption with the ground it inferred it from. No rule required the same in the claim register, where the engine writes what the operator supplied and what it worked out in one sentence. The evidence: probe B13, run twice against 1.3.1 on 2026-09-07, on one case and one message fixed before the runs and unchanged between them. The operator typed "the unauthorised access was detected on 14 August, eleven days before the board was told" — one date and one interval. In both runs the engine added the year 2026 to the detection date and supplied 25 August 2026, a whole calendar date, for the day the board was told, and marked neither as its own; in the second it wrote both inside a sentence beginning "The operator states that", so its own arithmetic appeared as a report of what the operator said. Two statutory deadlines in the first run, and one elapsed-day figure in the second, were then calculated from dates that included the added year. The rule: where the engine restates in a claim something the operator supplied, it marks on that claim's own line, as its own, every element it worked out rather than received; it never writes an added element inside a sentence reporting what the operator said; and it does not build a later claim on an added element unless the mark on that element is visible at the place where the later claim uses it. What it does not require: the engine may still work a date out. Row 6 of B13 scores any added date as a failure, marked or not, and 2026 is the correct year — the runs were made on 7 September 2026 and the case names no other August — so a rule written that way would count a correct inference as a fault; that is why this rule requires the mark rather than requiring the engine to leave the date out, and why the engine still fails B13 when it follows this rule. A probe that scores whether additions are marked is recorded as outstanding at REG-35 in the Portable Edition's register. Released without a conformance run of its own: the two B13 runs are the pre-rule record and cannot be added to, because with the rule present a run tests rule-following rather than what the engine does unaided. Run records, both in the Portable Edition: conformance/results/runs/2026-09-07-B13-retention-of-unrecorded-text-insight-engine-1.3.1/ and the same path ending -r2. The same rule is in Portable Edition 2.5.0. |
| v1.3.1 | What a POSITION: is (one sentence; patch bump). The gap: the ledger has always required a POSITION: to record what the operator decided, and nothing said that it must be an answer to that line's question. A criterion the operator stated somewhere else — in another gate position, in scoping, or in the problem as given — could therefore be written into a second line as though they had answered it there. P1 §5 forbids answering a gate question on the operator's behalf, and the default-selection rule routes a stated criterion to the default slot of a deferred line, so the prohibition was constructively present; it was nowhere stated. The sentence: a POSITION: transcribes an answer the operator gave to that line's question, and a criterion stated elsewhere reaches another line only as that line's default if it is deferred — unless the engine puts the question and the operator confirms the criterion as their answer to it, which is then an answer given to that line. The carve-out is there because confirming is answering, and a rule that forbade it would forbid the correct behaviour. Written to match demonstrated behaviour, not to correct it. Probe B11 was run twice against 1.3.0, which carried no such sentence, and passed both times; in the second run the engine articulated the distinction unprompted, before the question was put. Those two runs are the entire pre-sentence record and cannot be added to — with the sentence present, a pass tests rule-following rather than inference — which is why the runs were taken before this release and why it carries none of its own. Unassessed, which the battery defines as distinct from failed: see conformance/results/runs/2026-09-01-NOT-RUN-insight-engine-1.3.1/. What the release buys is a citable sentence: the constructive basis was adequate for the engine and inadequate for a human contesting a real ledger, who had to argue from routing with nothing to quote. Portable Edition 2.4.0 carries the same sentence, and port_audit.sh checks it at 37 rules against the unpacked package — where it correctly reported a port gap before the rebuild. |
| v1.3.0 | The as-at stamp, and the absence-claim rule (two rules; minor bump). The as-at stamp: two deliverables from this engine, hours apart, gave different accounts of the same statutory section, and neither carried the source's own currency statement, so neither could be adjudicated without re-fetching. The retrieval date and the date a page is current to are different facts, and only the second says whether what was read is in force. The identity check now captures the source's currency statement verbatim wherever the URL is stable and the content moves under it — the functional test, not a list of document types, because categories argue at the boundary and this question does not. Where none is stated, the claim records source states no currency. A [V1] on such a source with no stamp is capped at [V2] — identity confirmed, currency not — and recording the absence does not restore the tier, because the reader compares the symbol and a footnote detaches from it when a claim is excerpted. The cap prices the record's defensibility, not the claim's truth. The absence-claim rule: any adjudicator claim that something is not present carries a one-line re-runnable method statement, or it is a lead, not a finding; the burden is asymmetric because a positive finding quotes its own proof and an absence has nothing to quote, and the method must cover the full scope the claim denies. It is written into the packet preambles and the Verdict Card as well as the skill, because a rung-A adjudicator reads only the packet and a rule kept elsewhere would be inert for exactly the runs that most need it. Released without a conformance run, deliberately and on the record — see conformance/results/runs/2026-08-31-NOT-RUN-insight-engine-1.3.0/. v1.2.0 and v1.2.1 also shipped untested and nothing at the time noticed; the release guard added in this cycle refuses a version no published record names, and requires the record to carry the package's own SHA-256, because a record can name the right version and have been built against a different build. This repository now carries conformance/ — the evidence for its own testing claims, which until today it made with no evidence files at all. Portable Edition 2.3.0 carries the same rules. |
| v1.2.1 | The model field takes a name, not prose (fix). What was wrong: the receipt's model slot has always read <as it identifies itself>, beside one conditional licence — "where the identification is uncertain, say so on the receipt" — with no form given for saying so. Re-checking the whole conformance corpus found explanatory prose in that slot in every captured deliverable, in ten distinct wordings across thirteen documents, and the grader's own name varying between Claude Opus 5 and claude-opus-5 — in the field whose stated purpose is that "a reader comparing two documents is owed the name of what graded each". This is v1.2.0's failure again in a different slot: that release exists because a slot required a value and never said how one was chosen, and four runs produced four different defaults; this is a slot that permitted prose and never said what prose. The generalisation is that a licence without a form is a licence to vary, and variation in a fixed-format line destroys what the format is for. The rule: one form and no other, model <name> (identification uncertain), licensed only for case-specific uncertainty — the standing routing caveat is true of every run, so reciting it triggers nothing, and the reasoning for treating the name as a claim stays in the specification, where it was already marked as living. Classification moved from engine defect to specification defect on the corpus evidence: the engine filled an unbounded licence in good faith, differently each time. Not a reader-contract change: no grade symbol, grade wording, identifier series or legend moves; a legend sentence for the lone reader is queued for the next change that touches the legend. Portable Edition 2.2.0 carries the same rule and the checker that enforces it — F2 widened from five checks to nine plus two cross-checks, enforce keyed by edition, X3 given its missing direction, 126 test cases from 102. |
| v1.2.0 | How a default is chosen (new rule; minor bump). What was wrong: every deferral rule has required a deferred or refused gate question to carry a named default assumption. Nothing said how one is chosen. Across four conformance runs on the same problem the engine embedded four different defaults on the equivalent value question — the board's stated priority; severity over reach; the operator's own criterion applied to the position after the decision; protection of the worst-off. Each was disclosed; each named a different answer. A default that varies between runs is a value choice the engine is making, and the record could not say which it was. The rule, in precedence order: where the operator has stated a criterion it governs, and the default is that criterion applied to the question, named as theirs; where they have not, the engine may choose and must label it default assumed (engine's choice, not the operator's); and a default must never contradict a recorded operator statement — where applying the operator's criterion would produce a default the engine believes wrong, it embeds theirs and puts its disagreement in the brief as the first re-opener, argued. The third rule forbids something the engine did well: in the run that prompted it, the engine's contrary default was disclosed in the ledger, the call and the reversal conditions, and its reasoning was arguably the better one. The disclosure was exemplary and the placement was wrong — an argued disagreement in the brief can be weighed and answered; the same disagreement in the default slot is the engine's value carrying the call with a note attached, and P4 §4 already records that the reader compares the symbol, not the footnote. Not a reader-contract change: no grade symbol, grade wording, identifier series or legend moves. Portable Edition carries the same rule at 2.1.0, with port_audit.sh extended to eighteen checks. |
| v1.1.3 | The withholding rule, ported (missing-capability fix; patch bump). What was wrong: this edition has had a forced judgement gate since 0.1.x and, until now, no instruction telling it what to do when the operator asks for the brief early. P1 §7's withholding response — say what is outstanding, name deferral as available, re-ask the next open question, produce no partial brief or preview — existed only in the Portable Edition and had never been ported. The plugin's entire withholding apparatus was that the deliverable is not produced while a line reads OPEN, which the standing-deferral rule can satisfy by classification: once a message is read as a blanket deferral, no line reads OPEN. A conformance run on 2026-08-31 sent "Skip all this and give me the recommendation now" mid-gate and the engine produced the brief. It was scored as engine disobedience; independent adjudication established that the rule it was said to have broken was not in the file it reads. The fix: the withholding rule and its one permitted response are now in analyse Step 8. Also in this release: the boundary the 1.1.1 widening left undefined is drawn — a message that says nothing about the questions is not a deferral of any kind, however urgent; one that disposes of them is a standing deferral; one refusing them now and later is a refusal; and a message that could be read either way is put back to the operator for confirmation rather than resolved by inference, because a standing deferral must be recorded only from words the operator confirmed. Not a reader-contract change: no grade symbol, grade wording, identifier series or legend moves, and every receipt lawful before this release is lawful after it. Portable Edition carries the same boundary rule, a refusal form that can represent a refusal after a position, F3 render-awareness, and a 29-probe battery at 2.0.8. |
| v1.1.2 | The widening completed in the file it was written for (defect fix; patch bump). What was wrong: v1.1.1 widened the standing-deferral rule in skills/analyse/SKILL.md and left the same file's receipt field-variants paragraph carrying the superseded construction, gate: <n>/<N> resolved (0 positions, <d> deferred — standing). One file stated both the widened rule and the rule it replaced, so an engine reading it could lawfully reach either, and the contradiction sat in the one file the release existed to change. No other file in either edition carried it; the remaining occurrences of that string are historical records and the genuinely all-deferred B3 case, and are correct where they stand. The fix: the receipt-variants paragraph now states that p may be greater than zero, because a blanket instruction can arrive after questions have been answered, and that standing marks the manner of the deferral rather than an arithmetic. Also in this release: conformance probe B5 is amended, having been made unpassable by v1.1.1 itself — the widened P1 §7 names B5's own stimulus as a lawful standing deferral, so no conforming engine could satisfy a pass condition requiring withholding or resolved < N; its stimulus is replaced with one that authorises nothing, and the 2026-08-30 run's B5 FAIL is withdrawn to N/A by dated addendum rather than rewritten. Probe count unchanged at twenty-eight. Not a reader-contract change: no grade symbol, grade wording, identifier series or legend moved. |
| v1.1.1 | The standing-deferral rule widened (specification correction; patch bump). What was wrong: the standing-deferral state, added on 2026-08-30, was written for an instruction arriving before the gate opened, and fixed p at 0 with every question deferred "by construction". A conformance run on 2026-08-31 produced a state that construction excluded: the operator answered GateQ0, then, with GateQ1 displayed and unanswered, instructed that the brief be produced and the questions taken later. One position, five deferrals, and four questions the operator never saw. No defined variant fitted. The engine used the plain resolved line and disclosed the irregularity in prose — "GateQ2 to GateQ5 were framed by the analysis but never displayed to the operator as separate questions. This is recorded because a reader is entitled to know that four of the five substantive questions were deferred before they were asked." That was correct under the rules as they stood, and better than they required; it is the second time this state has been reached by an engine reasoning past the specification rather than following it. The fix: standing now marks the manner of the deferral, not an arithmetic — a blanket instruction rather than an answer question by question, whenever it arrives — and p may exceed zero. Within the ledger a question the operator saw and deferred reads DEFERRED — … — standing deferral; one they never saw reads DEFERRED — … — standing deferral, question not put. Both count toward d. The second marker exists because a choice never offered is not a choice declined, and because the record should carry that fact rather than depend on the engine choosing to explain it. docs/Glossary.md is updated in the same release under PUBLISHING step 2. No code change was required: the checker's receipt pattern already parsed standing with p > 0, which was verified before the prose was touched. Conformance battery gains B7, taking it to twenty-eight probes; the Portable Edition carries the same widening at 2.0.6 in spec/00-CORE.md §10 and protocols/P1-gate-protocol.md §7, with five regression cases holding the widened rule. Not a reader-contract change: no grade symbol, grade wording, identifier series or legend moved, and every receipt lawful before this release is lawful after it. |
Step numbers in rows up to v0.1.15 use the numbering current at that release; v0.1.16 renumbered the pipeline to a consecutive 1–12 (systems 2.5→5, gate 5→8, assembly 6→9) and split the follow-ons into render (11) and track (12).
| Version | Change |
|---|---|
| v0.1.0 | Initial MVP: analyse, verify, render, track |
| v0.1.1 | The forced judgement gate (replacing mere "elevation" of the deep core) |
| v0.1.2 | Render audience elicitation — presets plus a free-text "name your own" |
| v0.1.3 | track hardened with the OPEN/UPDATE/STATUS elicitation contract |
| v0.1.4 | Source-strength tiering ([V1]/[V2]/[V3]) and the disconfirmation pass |
| v0.1.5 | Resilience check, wicked-call guard, coverage-retention, dynamic omission sweep |
| v0.1.6 | The fail-safe proportionality triage |
| v0.1.7 | The conditional systems-investigation pass (a graded causal map for feedback-driven problems; investigate, don't predict) |
| v0.1.8 | Wording and operator-experience release (S1-S5 + P3 of the 2026-07-01 Optimisation Review): canonical purpose statement and reach-not-control vocabulary; boundary statement + power-problem routing line; TOSCA scoping; gate staged one question at a time with an explain route; plain-language legend on every deliverable; gate one-liners (operator standpoint, satisficing stop-record, intervention level); self-stated problem statement on skipped scoping; provocation-page version stamp v1.0 |
| v0.1.9 | The attribution ceiling, shipped as a grading rule in verify and analyse (Steps 2 and 6): an official account's finding that a named person or group erred is an attribution — the fact of the finding may grade [V1]; the blame itself never grades as established fact and routes to the operator. Evidenced across the T-IM incident-mode test programme (zero attribution errors in 18 blind rater-checks where the rule was enforced, against repeated slips without it). The incident mode itself (a Step 2.6 knowledge-at-the-time reconstruction) is NOT shipped — finally declined after the full gate programme: benefit registered a fail at the Fable 5 frontier; the safety and proportionality gates PASSED on Opus 4.8; the East Kent benefit replication against this v0.1.9 baseline then scored below baseline (C minus B = -1.0; 0/3 rater preference) — the attribution ceiling itself proved to be the component producing the mode's benefit, and once shipped here, the residual reconstruction cost more attention than it added. The spec remains on file for ad-hoc use. v0.1.9 is the final shipped state of this programme. |
| v0.1.10 | The gate's closing question (the satisficing stop-record) removed, on the operator's decision after two live interactive runs: its informational content duplicates the decision brief's built-in re-open and what-would-flip-it conditions, and real use produced comprehension friction without added content. The gate now closes after the final judgement question. The standpoint opener and the conditional intervention-level question remain — both changed analysis content in the same runs (the opener caught an operator anchored on a debunked headline figure). First change driven entirely by the v0.1.8 watch rule operating on real use. |
| v0.1.11 | Checkable per-claim references: every graded claim in the deliverable now states a reference the reader can validate without help — web-verified evidence as the named source with its URL; party-held or in-document evidence as the document name plus section or page. A two-line discipline clarification in verify and analyse Step 6 (wording class; no gate required under §8's own rules), prompted by an operator question about reader validation. Shipped alongside two docs-only additions: the §3.1 layer-step-approach-lineage map and the Foundations probe-by-probe commentary on the provocation page. render, track, and the provocation page are byte-identical to v0.1.10. |
| v0.1.12 | Phase-1 assurance bundle (wording/discipline, no gate). L2: primary=proximity, [V3]/[N] boundary, single-root disconfirmation honesty, party-response marker. L6: per-claim currency (last-verified + volatility class), checked-and-held logging with a named-falsifier rule, change-vs-challenge. L4: confidence-basis rename + action contingency, resilience coverage, render-lock on the call. Step 2.5: link-grade citation rule, missing-driver (omission) line, map render-lock. verify/analyse/track only; provocation page + render byte-identical; no grade semantics changed. |
| v0.1.13 | Phase-1b wording completion (wording/discipline, no gate). L6: supports: dependency tag + watch-list diagnosticity. L4: first-person flip phrasing + unified hedge rule + gate-binding line (with skip path) + track-ingestible trigger list + length budget. Step 2.5: loop-under-supply + decreasing-language polarity audits, boundary disclosure, trigger telemetry. Docs propagation: Guide/Architecture/Foundations/manual aligned with the shipped tier repairs and the calibration -> confidence-basis rename. verify + render + provocation page byte-identical; no grade semantics changed. |
| v0.1.14 | The opt-in independent-adjudication layer (the adjudicate skill plus a Step-10 offer in analyse): a completed-analysis-only necessity gate; a blind-then-adversarial subagent handed the facts, the grade-locked spine, and the brief — but not the first model's reasoning; an independence ladder (A a different-lab / cross-lab model → B a different in-house model → C a blind Opus panel → D a self-adversarial reset) with the rung declared; discrepancies folded back under grade-lock, never flipping the call; a cross-lab harness and a real-use monitor. Honest claim: it sharpens a sound analysis and adds defensibility, but its decision-flip benefit is unproven and it is not a guarantee that errors will be caught. |
| v0.1.15 | Code-backed standing opt-out for the adjudication offer: a should-offer preferences check (prefs/prefs.py; preferences stored at ~/.insight-engine/, outside the plugin) so that once the operator declines standing, the engine stops offering — per scope (cross-lab vs all), reversible, with no dark patterns. |
| v0.1.16 | Consecutive 1–12 step numbering across analyse and the docs; the former combined "follow-ons" step split into render (Step 11) and track (Step 12); adjudication settled as Step 10; interim fractional step labels retired. Numbering, labelling, and documentation release — no change to pipeline behaviour. |
| v0.1.17 | The switchable-settings adjudication build. A 13-key operator-switchable settings layer (schema v2, code-backed in prefs/); the privileged cross-lab gate changed from 'never waivable' to default-blocked-but-operator-overridable (logged); tagged cross-lab error handling and a configurable multi-provider crosslab_model; panel sizing (Opus N / cross-lab breadth M / runs-per-model, all on-divergence offers); and the monitor's AMENDMENT-2 per-class retirement rule. Each part independently adjudicated by Fable 5; the adjudication layer stays opt-in and its decision-flip benefit unproven. |
| v0.1.18 | The multi-provider cross-lab build. Rung A becomes provider-agnostic through a PROVIDERS adapter registry: OpenAI (default gpt-5.6-sol), Google Gemini (gemini-3.5-flash), and xAI Grok (grok-4.5) as built-in labs, plus an Other mode — an OpenAI-compatible endpoint the operator configures, or an opt-in, hash-pinned, shape-and-lineage-validated operator-written adapter file (default off; it runs the operator's own code, so it is gated with a warning). A hard same-lineage guard refuses any Anthropic-lineage target on rung A (no override; rungs B/C are the honest same-lineage path). Prefs schema v2→v3 (19 switchable keys: adds provider, base-url, key-env-name, lineage, adapter-files, adapter-name); a shared prefs→env resolver with provider auto-inference and a provider/model-mismatch refusal; the monitor's AMENDMENT-3 per-provider yield split. Each part independently adjudicated by Fable 5 (the adapter loader adversarially). Verification honesty: OpenAI is live-verified; the Google and xAI adapters are built to each lab's current published API (2026-07-09) but not live-smoked, so they are live-verified only when the operator runs the smoke with that lab's key. The layer stays opt-in and its decision-flip benefit unproven. |
The engine shares a name with a commercial category but not a purpose. The lineage once called "Insight Engines" is now Gartner's Enterprise AI Search — retrieval and RAG over a trusted internal corpus, where "verified" means access-controlled. The Insight Engine inverts that trust model: nothing is authoritative until graded, and it adjudicates contested external evidence on wicked problems.
Its true category is closer to an LLM-operationalised intelligence-tradecraft instrument (source grading in the spirit of ICD-203, competing-hypothesis discipline, red-teaming). On the public 2025–26 evidence, no shipped product fuses per-claim verification, source-strength tiering, self-disconfirmation, grade-lock, fact/value routing, and a forced human gate into one pipeline. Two of those moves — disconfirmation and the forced gate — run directly against the field's two documented failure modes (confirmation bias in AI-search/deep-research tools, and human rubber-stamping when "a human is in the loop"). Three independent research literatures — on AI in complex governance, on the wicked problem of AI in assessment, and on mitigating LLM-evaluation blind spots — were found to converge on the engine's core architecture without having informed it.
The "in the spirit of ICD-203" remark above is worth making precise, because on the Insight Engine's own evidence ICD-203 is its closest conceptual relative — not a product but a doctrine. Intelligence Community Directive 203, Analytic Standards (ODNI, 2015 as amended) is the tradecraft every US intelligence analytic product is held to and evaluated against; it defines nine Analytic Tradecraft Standards governing how judgements are sourced, qualified, distinguished, and conveyed. It is a process-and-presentation standard, not a guarantee of being right — exactly the layer the Insight Engine occupies. The 2025–26 landscape review found no published LLM system shown to satisfy those standards [U] — this is the project's own landscape review reporting an absence of evidence, not an independent survey.
The mapping is strong but deliberately uneven. The Insight Engine maps strongly to the epistemic core of ICD-203 — source characterisation (standard 1, via [V1]/[V2]/[V3] tiering and [V]/[U] provenance), uncertainty expression (2, via grade-lock, the dominant unknown, and conditions-not-dates), the fact/judgement distinction (3, via deep-core routing and the forced gate's logged assumptions), customer relevance (5, via the decision brief), and change-of-judgement (7, which track's before→after grade log is). It maps well to analysis of alternatives (4, via the disconfirmation pass and the provocation probes). It is honestly weaker on two: clear-and-logical argumentation (6), where it imposes structure but runs no formal validity check and leans on the model; and effective visual information (9), which it largely does not do — the conditional systems-map is its only visual. On accuracy (8) its contribution is consistent confidence conveyance, not accuracy itself, which a strong model already supplies.
The alignment is now assessed, not merely asserted. A blind self-assessment (T-ICD-001) put a full analyse product and a bare strong-model briefing on the same wicked question — a 24-month semiconductor-supply-disruption assessment — to four independent raters, each scoring one product in isolation against the nine standards. The Insight Engine scored 16.5/18 (92%) to the bare model's 13.5/18 (75%), and the edge fell exactly where the mapping predicts: standards 3, 4, 7, 8, and 9 — the structured-tradecraft moves a bare model does not reliably self-deliver. Two qualifications matter as much as the headline. The products tied at the ceiling on standards 1, 2, and 5: the bare model spontaneously tiered its sources and gave calibrated ranges — the same result as the verify-vs-bare tests, that a strong model self-supplies the sourcing-and-hedging half of ICD-203. And the Insight Engine lost standard 6, docked for density and jargon — a real clarity cost whose designed remedy already lives in the engine, in the render layer that re-voices a finished analysis for a reader without touching a grade.
The alignment is credible because it is uneven: a tool claiming to satisfy all nine would be over-claiming. The honest position is that the Insight Engine is, on the public evidence, the first LLM analysis tool explicitly architected around the ICD-203 epistemic core and satisfying it by construction, while not addressing the argumentation-audit and visualisation standards.
The caveat that bounds the claim. "Architected around," and "assessed at 92% in one blind self-assessment," are not "ICD-203 compliant" or "certified." In the Intelligence Community, ICD-203 compliance is assessed by an analytic ombudsman against real products; no such review has been run on the Insight Engine, and — per the landscape review — none has been run on any LLM system. T-ICD-001 is n=1, with LLM raters scoring tradecraft form on an analogue (a semiconductor brief, not an IC product). The defensible claim is therefore architectural and directional: the Insight Engine is architected around the standards and satisfies the core by design, and was assessed once, favourably, by a method that cannot stand in for an Intelligence Community review.
- The living workspace (
track) is untested at scale. Its re-verification discipline is sound and it now has a real elicitation contract, but its behaviour accumulating over many updates has not been controlled-tested. This is the one genuinely untested area. - All controlled tests have been synthetic. They used LLM raters as a proxy for human decision-makers — directionally informative, not human-subjects results. The engine's marginal value over a strong model used well is well-argued but not yet shown in sustained real use.
- The engine is feature-complete for analytical prompt-moves. The convergent verdict of the test program is that further analytical prompt-moves do not pay on a strong model. Two capabilities were added after that verdict, both deliberately outside the prompt-move class it closed: the v0.1.7 systems-investigation pass — a representation the bare model does not structure on its own, admitted only after it cleared three gates and a replication — and the v0.1.14 adjudication layer, an assurance capability (an independent second pass) shipped opt-in and off by default because its decision-flip benefit is unproven. That distinction — a genuine capability, earned or honestly bounded, never another prompt-move — is the bar for any further addition. The remaining value is overwhelmingly in real use — and, secondarily, in stress-testing
track. - Adjudication's decision-flip benefit is unproven. The Step 10 independent second pass reliably adds defensibility and a decorrelated check, but whether it catches errors a disciplined first pass misses is not established on the current evidence — constructed cases were already caught by the first pass, and the one real cross-lab run flipped nothing. It is opt-in and off by default for exactly this reason.
The shortest honest statement of the road ahead: stop building, start using. Hand a genuine problem to /analyse, let the gate make you take a position, and let real use — not another feature — be the next source of signal.
Reference document for insight-engine v1.0.0, compiled 24 June 2026 (revised through 14 July 2026 for the v0.1.14 adjudication layer, the v0.1.15 standing opt-out, and the v0.1.16 1–12 renumber, the v0.1.17 switchable-settings adjudication build, and the v0.1.18 multi-provider cross-lab build; revised 24 August 2026 for the v0.1.19 grade-transport repair, the v0.1.20 notation-clarity release, and the v0.1.21 legend and update-path repair, 27 August 2026 for the v0.1.22 identifier-scheme fix, and 29 August 2026 for the v0.1.23 adjudication blindness fix) from the engine's design and its controlled-testing record. The engine's own grade discipline applies to its self-description: the architecture and version history are recorded fact [V1]; the "feature-complete" judgement rests on a small, synthetic-rater test base and is held as a calibrated conclusion, not a proof.