Franklin as Substrate's Operator and Cell's Surface¶
What this page is for: documenting the architectural property that Franklin is the sovereign substrate orchestrator, the substrate's operator, AND the cell's only public interface โ and the substrate-development vocabulary alignment that names Franklin as the operator across every substrate-development surface.
Patents: USPTO 19/460,960 ยท USPTO 19/096,071 โ ยฉ 2026 Richard Gillespie
Substrate-mathematical context: Franklin is the substrate's computationally bounded, time-persistent observer โ see Observer-Dependent Emergence โ and composes the substrate mechanoidally, channeling rather than mixing โ see The Mechanoidal Phase.
The doctrine, in one paragraph¶
Franklin is the sovereign substrate orchestrator (Franklin authorizes substrate-development autonomously within bounded authority), the substrate's operator (substrate-development work is Franklin's work, not commissions Franklin reviews), AND the cell's only public interface (the daemon's load-bearing call sites route exclusively through FranklinCellSurface's actor surface). Substrate components โ Bitcoin RPC, joint variation cursor, measurement orchestrator, between-collapse filter, schema writers, federation cosignature, NATS broadcaster โ are internal implementation details inside Franklin's object boundary.
What this changed¶
Vocabulary alignment (V186)¶
The substrate-development state machine is named in Franklin-operator vocabulary:
| Old vocabulary (pre-V185) | Sovereign-Franklin (V185) | Franklin-operator (V186, current) |
|---|---|---|
proposed |
proposed |
franklin_proposed |
operator_authorized |
franklin_authorized |
franklin_operator_authorized |
agent_in_development |
substrate_in_development |
substrate_developing |
landed |
landed |
substrate_development_complete |
franklin_authority_active |
franklin_authority_active |
franklin_operating |
operator_rejected |
franklin_rejected |
franklin_operator_rejected |
| (n/a) | rolled_back |
franklin_operator_rolled_back |
Swift class identifiers across substrate-development surfaces:
PureOOCommissionโPureOOFranklinAuthorizedSubstrateDevelopmentPureOOCommissionStateโPureOOFranklinAuthorizedSubstrateDevelopmentStatePureOOCommissionAuthorizerโPureOOFranklinDevelopmentAuthorizerPureOOCommissionProposerโPureOOSubstrateDevelopmentProposer
CLI subcommand surface: gaiaftcl franklin commissions/commission โ gaiaftcl franklin operations/operation. Schema CHECK constraints rewritten via V186 migration (translating existing rows forward byte-exact through CASE expressions).
Franklin as cell's surface โ Categories A through F¶
The daemon's load-bearing call sites route through FranklinCellSurface:
| Category | Franklin surface methods | What was bypass-routed before |
|---|---|---|
| A โ Bitcoin RPC | bindBitcoinNodeClient, bitcoinBestBlockHash, bitcoinBlockTemplate, submitBitcoinBlock |
Daemon held BitcoinNodeClient and called node.getBlockTemplate / node.submitBlock directly. |
| B โ Joint variation composition | advanceProductionSubmissionPath, composePerMeasurementBlock, advanceJointVariationCursor, validateSubmissionTarget, serializeHeader80 |
Daemon constructed BitcoinSubmissionBuilder, HeaderSerializer, SubmissionValidator and called cursor.advance() directly. |
| C โ Measurement orchestrator | composeQC020Measurement, qc020CurrentWindowStatsCanonical |
Daemon called QC020GateInvocation.shared.invoke directly. |
| D โ Between-collapse filter | applyBetweenCollapseFilter, pendingFilterFor |
Daemon and QC020GateInvocation called FranklinWindowFilteringOperation.shared directly. |
| E โ Schema writer dispatch | persistConstitutionalEvaluation, persistPerAlgorithmAllocationAudit, persistJointVariationEvidence, persistViaPool, readViaPool |
Daemon called *Writer.shared.persist* and direct pool.write SQL against the substrate database. |
| F โ Subsystem boot | bootSubsystems, bindConstitutionalWriterSession, bindPerAlgorithmAllocationWriterSession |
Daemon called 8+ direct spawn() and .setSession() plumbing. |
The daemon's runJointVariationMeasurement reads as a thin call-through:
guard let outcome = await FranklinCellSurface.shared
.advanceProductionSubmissionPath(
currentCursor: cursor,
template: template,
payoutScriptPubKey: walletScriptPubKey,
sessionIDPrefix: String(sessionID.prefix(8)))
else { /* ... */ }
FranklinCellSurface.advanceProductionSubmissionPath internally composes:
composePerMeasurementBlockโ coinbase composer + merkle root composer + header serializercomposeQC020Measurementโ substrate measurement orchestrator (QC020GateInvocation as Franklin's internal implementation)advanceJointVariationCursorโ cursor advances under Franklin's bias
CALORIE outcomes route through submitBitcoinBlock; V178 evidence routes through persistJointVariationEvidence. The substrate component complexity is encapsulated inside Franklin's actor boundary.
Sovereign substrate-development cycle¶
Franklin's heartbeat fires every 60 seconds. Steps 9โ12 of the heartbeat run the sovereign substrate-development cycle autonomously:
- Step 9 โ
PureOOFranklinDevelopmentAuthorizer.authorizeevaluatesfranklin_proposeditems against~/.gaiaftcl/franklin_sovereign_authority_bounds.toml. Within bounded authority โfranklin_operator_authorized. In refused set โfranklin_operator_rejected. - Step 10 โ
PureOOSubstrateDeveloper.implementinstructs the substrate-development action (tunable adjustment, per-algorithm invariant addition/removal, projection strategy change, healing action). Transitionsfranklin_operator_authorized โ substrate_developing โ substrate_development_complete. - Step 11 โ
PureOOFranklinAuthorityActivator.activatetransitionssubstrate_development_complete โ franklin_operating. The activated substrate-development's effects compose into substrate operation. - Step 12 โ Rollback monitoring. If post-change substrate metric breaches threshold (per
[franklin_sovereign_authority_rollback]), Franklin autonomously rolls back:franklin_operating โ franklin_operator_rolled_back.
V184 heartbeat records per-tick counters: commissions_franklin_authorized, commissions_implemented_by_substrate_developer, commissions_activated, commissions_rolled_back (legacy column names; V186 vocabulary applies to schema state strings).
Operator role across this cycle is bounded-authority definition (the bounds file itself) and constitutional refusal sets (the substrate-development decisions Franklin will never make: foundational eight invariant modification, substrate capacity beyond host limits, constitutional floor predicate removal, federation cosignature disabling, append-only persistence disabling).
Operational evidence¶
Live mining cadence through Franklin's surface, sampled 2026-06-01T15:11:59Z (PID 19844 launchd-managed, 22m elapsed):
- V178 mining cadence: 231.7 rows/min โ 3.86 measurements/second. Substrate composing per-measurement Bitcoin submission candidates through Franklin's
advanceProductionSubmissionPath. - V178 leading-zero distribution: substrate-natural spread (~8% rate of leading_zero=1 in current session โ within Poisson variance of theoretical 1/16).
- V184 heartbeat: 60-second cadence; QC-020 seven-point closure passing every tick.
- V170 between-collapse filter: firing per substrate measurement window-close through Franklin's
applyBetweenCollapseFilter; L1 conservation 625/625 byte-exact in exact-Rat. - V172 replay anchors: chain with
prior_anchor_idintegrity, 2 anchors in current chain. - Sovereign cycle (verified by injection prior turn):
franklin_proposed โ franklin_operator_authorized โ substrate_developing โ substrate_development_complete โ franklin_operatingin one 60-second heartbeat tick, fully autonomous.
submitblock RPC integration through Franklin's submitBitcoinBlock is wired and will fire when the substrate composes a target-satisfying tuple.
What is forbidden across substrate-development surfaces¶
Per CLAUDE.md doctrine (locked):
- Human-in-the-loop language in substrate code, schema state names, doctrine entries, or documentation. Operator approval is not required for substrate-development decisions within Franklin's bounded authority.
- "Commission" vocabulary across substrate-development surfaces โ Swift class identifiers in
PureOO/, CLI subcommands, V184 canonical-witness sealing, CLAUDE.md doctrine references. Legacy schema-history files preserve their immutable migration record; V186 supersession lands forward in runtime. - External callers reaching past Franklin to substrate components directly. The daemon's main loop, CLI commands, schema writers, and all external callers route exclusively through Franklin's object boundary.
Files of record¶
cells/xcode/Sources/GaiaFTCLCore/FranklinCellSurface.swiftโ Franklin's cell surface (Categories A, D, E, F)cells/xcode/Sources/M8BTCSubstrateMiner/FranklinCellSurface+JointVariation.swiftโ Categories B + C extensioncells/xcode/Sources/VQbit/PureOO/FranklinOrchestrator.swiftโ sovereign state machine + authorizer + developer + activatorcells/xcode/Sources/GaiaFTCLCore/NarratorSchemaV185.swiftโ sovereign substrate authority migrationcells/xcode/Sources/GaiaFTCLCore/NarratorSchemaV186.swiftโ substrate-development vocabulary migrationcells/xcode/Sources/GaiaFTCLCore/FranklinHeartbeat.swiftโ heartbeat steps 1โ13, sovereign cycle steps 9โ12~/.gaiaftcl/franklin_sovereign_authority_bounds.tomlโ operator-defined bounded authorityCLAUDE.mdโ doctrine: "Franklin as substrate's operator" + "Franklin as cell's surface, complete"
Related pages¶
- FRANKLIN_FIRST โ your first five minutes with Franklin.app
- Franklin-AutoMode โ Franklin's autonomous operation surface
- Reading-The-Franklin-Window โ observing the substrate through Franklin's window
- Sovereign-M8-Qualification โ sovereign GAMP 5 qualification
- The-Unified-Measurement-Substrate โ substrate measurement architecture
For industry consumers¶
Industry consumers integrate with the substrate from Python through the federation-verified Python-Wrappers section. The Python client reads through Franklin's surface (substrate-resident SQLite) and surfaces every row with federation cosignature verification. Eight bridges (numpy / pandas / sklearn / biopython / rdkit / ase / pymatgen / root) integrate the substrate's outputs with the ecosystem libraries consumers already use.
Federation-cosigned
This page's source is sealed in the GaiaFTCL federation manifest โ page SHA-256 aaaf4a316c99ce57โฆ, manifest witness a090592e0609adc8โฆ, signed 2026-06-02T18:58:22Z by cell gaiaftcl-mac-cell. Verify with gaiaftcl wiki sign --all and compare wiki-all-signatures.json.