{"_self":{"principle":"Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.","widget":"article_topology","feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","contains":"claims, sources, anecdotes, question_graph slice","slug":"invented-clause-guard","urls":{"read":"https://miscsubjects.com/api/articles/invented-clause-guard/topology"},"how_to_use":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","write":null,"imessage":null,"router_tag":null,"proof_chain":[{"step":1,"claim":"Articles are voxel graphs of tiered claims, not prose blobs.","verify":"https://miscsubjects.com/api/articles/constitution"},{"step":2,"claim":"Claims link to hash-chained sources via source_ids.","verify":"https://miscsubjects.com/api/articles/invented-clause-guard/sources"},{"step":3,"claim":"Ask reads topology; ingest/claim append to ledger.","verify":"https://miscsubjects.com/api/protocol"},{"step":4,"claim":"Models queue growth: populate → collaborate → repair → reflex.","verify":"https://miscsubjects.com/api/protocol/grow"},{"step":5,"claim":"Graph proves its own shape (reflex) and $/claim (yield).","verify":"https://miscsubjects.com/graph.html?layer=reflex"},{"step":6,"claim":"Full feature index + _explain on every API response.","verify":"https://miscsubjects.com/api/articles/system-map"}],"related_features":[{"id":"ask","name":"Ask protocol","what":"Answer only from topology; creates question_node with gaps and ingest_hint.","urls":{"read":"https://miscsubjects.com/api/articles/invented-clause-guard/prompts","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"graph_topology","name":"Cross-article graph","what":"Merged claims/sources across condition+stack slugs for one question.","urls":{"read":"https://miscsubjects.com/api/articles/invented-clause-guard/graph-topology?question=..."}},{"id":"question_graph","name":"Question graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output).","urls":{"read":"https://miscsubjects.com/api/articles/invented-clause-guard/question-graph","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"voxels","name":"Voxel graph","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","urls":{"read":"https://miscsubjects.com/api/articles/invented-clause-guard/voxels","write":"https://miscsubjects.com/api/protocol/claim"}}],"system_map":"https://miscsubjects.com/api/articles/system-map","system_map_markdown":"https://miscsubjects.com/api/articles/system-map?format=markdown","not_medical_advice":true},"_explain":{"feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","why":"Every feature is auditable collective intelligence","how":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","model":null,"verifies":null,"urls":{"read":"https://miscsubjects.com/api/articles/invented-clause-guard/topology"},"imessage":null,"router":null,"related":[{"id":"ask","what":"Answer only from topology; creates question_node with gaps and ingest_hint."},{"id":"graph_topology","what":"Merged claims/sources across condition+stack slugs for one question."},{"id":"question_graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output)."},{"id":"voxels","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance."}],"not_medical_advice":true},"slug":"invented-clause-guard","title":"A model cited clauses 7, 8 and 12 of a three-clause ruleset and passed the structural gate — why self-consistency checks cannot catch coherent invention.","register":"technical","tags":["governance","adjudication","verification","evaluation"],"updated_at":"2026-07-30T19:40:20.921Z","body_excerpt":"A model was asked to decide a case under a ruleset containing three clauses. It returned a governed finding that cited clauses 7, 8 and 12. The finding was well-formed. Every required field was present, the reasoning was numbered, the terminal decision line was correct, and the machine-comparable clause vector parsed cleanly. It passed the structural gate. The law it applied did not exist.\n\nThe receipt is inv_2dsklah529 and the seat was glm-4.7-flash. This article is about why the check that should have caught it did not, what was built instead, and how the fix was demonstrated against the exact finding that motivated it. It is the second entry in the advancement line described in the register: name the constraint and the reason, ship the change, then demonstrate it on the case that forced it.\n\n## The check that looked sufficient\n\nThe finding parser produces a deterministic projection of a raw model response — decision-finding@1.0.0. It exists because the panel's agreement test needs something a machine can compare, and prose is not that. The projection carries the verdict, the exhaustive set of applicable rules, and the clause-evaluation vector: one object per clause, each naming the clause id, whether its condition fired on this record, its disposition relative to the action under review, the minimal load-bearing evidence ids, and a one-line ground.\n\nThe parser already refused invented evidence. When the request declares its record ids on an EVIDENCE_IDS line, the parser holds every cited evidence id against that set, and a citation outside it makes the finding structurally void. A seat cannot invent a document.\n\nClauses had a check too, and on paper it reads like the same protection: the set of clause ids in the vector must equal the exhaustive APPLICABLE_RULES set — every evaluated clause appears once, none omitted, none invented. The word *invented* is right there in the invariant.\n\nIt is the wrong comparison, and the reason generalises well beyond this parser.\n\nThat check compares the model against itself. It catches incoherence: a seat that lists clauses 1, 2, 3 as applicable and then evaluates 1, 2, 4 has contradicted its own answer, and the mismatch fires. What it cannot catch is a seat that is perfectly coherent about law that does not exist. Invent clauses 7, 8 and 12 in APPLICABLE_RULES, evaluate exactly clauses 7, 8 and 12 in the vector, and the two sets are equal. The invariant is satisfied. The finding is internally consistent and externally fictional.\n\nThis is the standing hazard with self-consistency checks: they measure whether an answer hangs together, and a confident fabrication hangs together better than a hesitant truth. Consistency is cheap to fake precisely because the model producing both halves is the same model. The only check with teeth is one that holds the answer against something the model did not write.\n\n## What was built\n\nThe something the model did not write is the ruleset in the request.\n\nTwo changes, both small, and the smallness is the point — the defect was not in the difficulty of the check but in nobody having asked for it.\n\nFirst, an extractor. `clausesFromRuleset(requestText)` reads the clause ids the request actually supplied. Every seat receives its case in a fixed shape: a `RULESET (numbered clauses):` marker, then one `N. <clause text>` line per clause, then the artifact block. The extractor reads clause numbers from that block and stops at the artifact boundary, which matters more than it sounds — artifacts routinely contain numbered prose, and a naive scan of the whole request would have read the artifact's own list items as clauses and then failed to void findings that cited them. The bound is what makes the guard mean anything.\n\nThe extractor returns an empty set when no ruleset block can be parsed. That choice is deliberate and it is the safety property of the whole change: an empty set disables the guard rather than voiding everything. A guard that fires on a request it merel","ranking":"safety-first (interaction_risk/limitations), then quote-gated effective_weight","claims":[{"id":"c1","text":"A seat (glm-4.7-flash, receipt inv_2dsklah529) returned a well-formed governed finding citing clauses 7, 8 and 12 of a ruleset containing three clauses, and it satisfied the invariant requiring the evaluated clause set to equal the exhaustive APPLICABLE_RULES set.","tier":"system","section":"The check that looked sufficient","interaction_risk":false,"status":"active","source_ids":[],"why_material":"The invariant that reads as an anti-invention guard compares the model only against itself.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c2","text":"Clause ids are now validated against the ruleset the request supplied, symmetric with the existing evidence-id guard, raising invented_clause and invented_clause_in_applicable_rules; the extractor is bounded to the RULESET block so numbered artifact prose cannot be read as clauses.","tier":"system","section":"What was built","interaction_risk":false,"status":"active","source_ids":[],"why_material":"Holding the answer against something the model did not write is the only check with teeth.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c3","text":"The guard disables rather than firing when no ruleset is parseable, so a malformed request can never void an honest finding; the test suite asserts this fail-open property directly.","tier":"system","section":"What was built","interaction_risk":false,"status":"active","source_ids":[],"why_material":"A governance guard that destroys valid findings for a parsing reason is worse than the hole it closes.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c4","text":"The suite went from nine tests to twenty and includes a test asserting the original finding is still structurally valid WITHOUT the guard, so that removing the guard fails against a passing test naming the hole it reopens.","tier":"system","section":"The demonstration","interaction_risk":false,"status":"active","source_ids":[],"why_material":"A defect fixed once and quietly reintroduced is the most expensive kind.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c5","text":"The guard closes only invention of law the request never supplied; a seat can still be wrong about a clause that exists, and the change has not run against production traffic since it landed.","tier":"system","section":"What is not satisfied","interaction_risk":false,"status":"active","source_ids":[],"why_material":"The structural layer answers a binary question and must not be read as a correctness result.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false}],"sources":[{"id":"em_es_9f3a800f45554937824b","type":"email","url":"https://miscsubjects.com/letter-miles-turpin-2026-07-30","title":"Letter to Miles Turpin — 2026-07-30","claim_ids":[],"hash":"8bca6c30f779e30cf8fe0a3ff2497cdaff6f2f09a2c65c119df83d70f9d1cf37"},{"id":"em_es_51538137575a4e9797de","type":"email","url":"https://miscsubjects.com/letter-miles-turpin-2026-07-30","title":"Letter to Miles Turpin — 2026-07-30","claim_ids":[],"hash":"919e7991456d3e49be0fdae84428baf589842cd4e536c7eb26932fb725fb8ed4"},{"id":"img_49dadf2c","type":"provenance","url":"https://miscsubjects.com/hero-invented-clause-guard","title":"Featured image receipt — the payload that generated this article's hero","quote":"Minimal editorial illustration: three numbered ruled lines on a sheet, and floating just above the sheet three further lines that find no matching slot on it, casting no shadow, clearly not part of the page. Ink-black line art on paper-white, one indigo accent color, flat vector style, generous negative space, clean and scientific. No text, no letters, no logos, no watermark.","claim_ids":[],"hash":"6e49df8fca0c3956046e37666c394f51c735cb5bb56c1c16e0131ff1884f5b35"}],"anecdotal_sources":[],"scientific_sources":[],"user_reports":[],"related_articles":[],"question_graph":{"slug":"invented-clause-guard","questions":[],"evidence":[],"edges":[],"counts":{"questions":0,"evidence":0,"edges":0}},"honesty":{"active_claims":5,"retracted_claims":0,"cut_claims":0,"challenges":0,"scrub_events":0,"note":"Retracted/cut claims stay on ledger but are excluded from ask unless ?include_inactive=1"},"counts":{"claims":5,"claims_total":5,"sources":3,"anecdotal":0,"scientific":0,"user_reports":0,"questions":0,"evidence_ingests":0}}