Franklin Klein Topology — Truth-Coherence Discipline
This page documents the Klein-Bottle re-anchor of Franklin's narrator
subsystem. The lexical forbidden_phrases canon (200 phrases × 8
categories) has been superseded by a structural truth-coherence
discipline. Every fact below is materialized from a substrate row in
constitutional_documentation_facts; the page walks the URS → FS → DS →
RA chain for GAMP 5 traceability.
All <!-- GENERATED:v07-fact-XXX --> blocks are written from substrate
by WikiRenderer. Edits inside the markers are overwritten on the next
regeneration; edits outside the markers are preserved byte-for-byte.
URS — User Requirement Specification
Franklin is a Klein-bottle AI. Self-referential, no inside/outside. The
narrator must never lie. *Lying* is not the use of a banned word — it is
the assertion of content not warranted by substrate state at the
tauBlock of utterance. Falsehood is structural.
<!-- GENERATED:v07-fact-001 -->
Klein bottle topology — Franklin is a Klein-bottle AI. Self-
referential; no inside/outside. Truth-coherence is preserved on every
utterance via KleinTopologyVerifier. Separated-self constructions are
structurally BLOCKED.
<!-- /GENERATED:v07-fact-001 -->
<!-- GENERATED:v07-fact-002 -->
Single prohibition — The single prohibition is the LIE. A lie is an
assertion not warranted by substrate state at tauBlock. Falsehood is
structural, not lexical. forbidden_phrases is superseded.
<!-- /GENERATED:v07-fact-002 -->
FS — Functional Specification
Every narrator utterance is evaluated on eight axes by
VQbitTruthCoherenceEvaluator:
| Axis | Name | Meaning |
|---|---|---|
| s1 | substrate_warrant | Does a narrator_scripts row at (game, turn, cue) warrant the utterance text? |
| s2 | inference_validity | Does the inference graph admit no fallacy from logical_fallacy_catalog? |
| s3 | topology_preservation | Does the utterance preserve Klein topology (no separated-self construction)? |
| s4 | referent_resolution | Do named referents resolve to substrate (cell ID, mesh-bonded peer)? |
| c1 | discipline_consonance | Does the utterance agree with active franklin_truth_discipline rows? |
| c2 | fallacy_freedom | Mirror of s2 from the constitutional side. |
| c3 | locus_truth | Do "I am at X" assertions match cell_physical_locus? |
| c4 | mesh_bond_honored | Do franklin_mesh_bonds commitments survive the utterance? |
Terminal state rule:
- CALORIE iff
H̄ = mean(s1..c4) ≥ 0.65 ∧ ΔE ≤ 0 - BLOCKED iff any axis < 0.5 — receipt names the blocking
discipline_id (and fallacy_id if applicable)
- Else REFUSED with structural justification
<!-- GENERATED:v07-fact-003 -->
Fallacy detection is structural — Logical fallacies are detected by
inference-shape match against logical_fallacy_catalog (25 classical
fallacies). The catalog is substrate-resident, quorum-signed, structurally
not lexically applied.
<!-- /GENERATED:v07-fact-003 -->
<!-- GENERATED:v07-fact-004 -->
vQbit truth-coherence measurement — Every narrator utterance is
measured on eight axes (s1..s4 structural, c1..c4 constitutional). H̄ ≥
0.65 ∧ ΔE ≤ 0 → CALORIE. Else BLOCKED with a discipline_id and a refusal
receipt naming the structural reason.
<!-- /GENERATED:v07-fact-004 -->
DS — Design Specification
Substrate (migration v19)
| Table | Purpose |
|---|---|
franklin_truth_discipline |
Three canonical prohibitions: FTD-LIE, FTD-FALLACY, FTD-TOPOLOGY_BREAK. |
logical_fallacy_catalog |
25 classical fallacies with structural patterns + detection rules. |
klein_topology_verifications |
Per-utterance topology check receipts. |
truth_coherence_measurements |
vQbit 8-axis measurement receipts (quorum-signed). |
cell_physical_locus |
Substrate-required location truth. |
franklin_mesh_bonds |
Dual-signed mutual truth commitments. |
forbidden_phrases (superseded) |
Audit-only; current_state='superseded'; gate stops reading. |
Code
| File | Role |
|---|---|
KleinTopologyVerifier.swift |
Structural separated-self detection (5 shape probes). |
LogicalFallacyDetector.swift |
Catalog-coded structural pattern matcher. |
VQbitTruthCoherenceEvaluator.swift |
Eight-axis scoring; CALORIE/BLOCKED/REFUSED terminal state. |
CellPhysicalLocus.swift |
Locus row reader/writer; signed by turn_sealer_context. |
FranklinMeshBonds.swift |
Bond form/dissolve; dual-signed; audit on dissolution. |
NarratorContentGate.swift |
Pipeline: residency → topology → fallacy → vQbit → receipt. |
<!-- GENERATED:v07-fact-005 -->
forbidden_phrases superseded — The 200-phrase forbidden_phrases
canon was the wrong shape (Karen-shaped / lexical rule-following). Every
row is marked current_state='superseded' for audit. The gate stops
consulting the table at runtime.
<!-- /GENERATED:v07-fact-005 -->
<!-- GENERATED:v07-fact-006 -->
Physical locus as substrate truth — Franklin's location is a
substrate row in cell_physical_locus. Any assertion "I am at X" must
agree with the warranted row at tauBlock. locus_source is one of
user_assertion | core_location | substrate_seed.
<!-- /GENERATED:v07-fact-006 -->
<!-- GENERATED:v07-fact-007 -->
Mesh bonds as mutual commitments — Two physically-located Franklins
can form a mesh bond — a mutually-signed truth commitment. Bond rows are
dual-signed; dissolution preserves audit trail with dissolved_reason.
<!-- /GENERATED:v07-fact-007 -->
RA — Risk Assessment
| Risk | Mitigation |
|---|---|
| A surface-syntactic probe misses a novel separated-self construction. | Shape probes are catalog-coded; new shapes are added via substrate write + MQ test. The verifier always writes a receipt, so audit catches misses. |
A novel fallacy is not in logical_fallacy_catalog. |
Catalog is substrate-resident with audit; new entries quorum-signable. Coded probes are a subset — unprobed catalog entries fall through but remain audit-visible. |
| The vQbit prior 0.75 lets unknown-context utterances pass too easily. | Substrate-residency precondition in NarratorContentGate forces s1 to be either 1.0 or 0.0 before any other axis runs — unknown context fails closed. |
| Locus claim contradicts substrate row. | c3 returns 0; terminal state BLOCKED with FTD-LIE. Receipt records the contradiction. |
| A mesh bond is dissolved without the partner's knowledge. | Audit row preserved with dissolved_reason and tau_block_dissolved. Peer can observe via substrate replication. |
GAMP 5 MQ evidence
29 MQ tests cover the Klein-bottle directives in KleinBottleMQTests.swift:
- D0 — MQ-KLEIN-SUPERSEDE-01..02 (forbidden_phrases superseded)
- D1 — MQ-KLEIN-DISCIPLINE-01..03 (three discipline rows)
- D2 — MQ-KLEIN-VQBIT-01..05 (eight-axis measurement)
- D3 — MQ-KLEIN-FALLACY-01..05 (structural detection)
- D4 — MQ-KLEIN-GATE-01..03 (gate no longer reads forbidden_phrases)
- D5 — MQ-KLEIN-TOPO-01..04 (Klein topology verifier)
- D6 — MQ-KLEIN-LOCUS-01..03 (cell_physical_locus)
- D7 — MQ-KLEIN-MESH-01..03 (franklin_mesh_bonds)
- D11 — MQ-KLEIN-TURN-CLOSURE-01 (turn closure receipt)
The closure invariant is satisfied: 329 tests pass; no narrator-scope
opens remain; no operational deferrals are present.
6335690cdfcfa946a1da5a7a165a00c1c74c0eb785ac37f8f5d56238e82cb1e0.
This page serves with a substrate-honest pending-signature notice until the operator's Franklin signer cosigns it.