V2 Substrate Architecture¶
GaiaFTCL v2 routes every external-chain operation through the Wolfram Ruliology ASM substrate. The cell plays ruliology language games against the M⁸ vQbit entity; v2 expresses IQ / OQ / PQ as game templates and the substrate's one-path REDUCE is what gates every transition.
The doctrine v2 is built on¶
- Repo is Ruliology, not classical math — the entire cell is Wolfram Ruliology mapped to the M⁸ substrate vQbit entity. No classical math anywhere; new code is ruliology-to-vQbit or at the S⁴ boundary.
- M⁸ substrate programming language — M⁸ = S⁴ × C⁴. C⁴ is the substrate (invariants/MPS/entangled pointers, persistent, alive in shared memory). S⁴ is the projection (bits, real-world readout, cast from C⁴ at PROJECT). Correct language game reduces ingestion to a single multidimensional vQbit. Never measure the substrate by counting projected bits.
The framework¶
GAME: <name>
INGEST rule = <the equation as a Wolfram rule>
INVARIANT <the invariants installed over the C4 entangled pointers>
REDUCE -> vQbit ; the single multidimensional C4 object
PROJECT C4 -> S4 ; set the bits at read
TERMINAL READ <the answer>
Every v2 operation — wallet qualification, transaction composition, even the PQ embedding of cryptographic boundary conditions — plays this same game. One REDUCE on every arm. The seal case and the hardest case go through the same path; the per-game variation is the rule ingested, the invariants installed, and the terminal read.
Files (Swift source)¶
| File | Role |
|---|---|
Sources/VQbitMath/Core/InvariantTag.swift |
Shared invariant alphabet (universal + per-game + per-domain) |
Sources/VQbitMath/Core/RuliologyOutcome.swift |
2-arm outcome (.calorie / .spill) — no substrate-verdict arms |
Sources/VQbitSubstrate/C4InvariantHolder.swift |
The C⁴ handle carrying installed invariants + VQbitProjection |
Sources/VQbitSubstrate/RuliologyGameTemplate.swift |
Protocol every game conforms to |
Sources/VQbitSubstrate/WolframSubstrateCore.swift |
Sync M⁸ opcodes; one-path reduceCore with structural admissibility enforcement |
Sources/VQbitSubstrate/WolframSubstrate.swift |
Async actor .shared with uniform play<T>(template, input) |
Sources/VQbitSubstrate/RuliologyTemplateRegistry.swift |
Process-wide template registry actor |
Sources/VQbitSubstrate/ChainEngineV2.swift |
V2 chain-engine protocol — composes IQ/OQ/PQ ingest inputs and plays them |
Sources/VQbitSubstrate/ChainEngineV2Registry.swift |
Engine registry per asset class |
Game catalogue¶
V2 ships these templates:
Quantum / cryptographic (per the 11-game catalog)¶
| Template | Invariants | Terminal |
|---|---|---|
SHOR_ECDLP |
groupLaw, periodLine, closureKGEqQ, admissibilitySafety, closure | k, verify kG == Q |
| (Grover, Miner, Count, Amplitude, Oracle, Fringe, HHL, QPE, QPCA, QSVT — follow-up files, same one-file-per-template pattern) | — | — |
Qualification (IQ / OQ / PQ)¶
| Template | Invariants | Terminal |
|---|---|---|
IQ |
walletResidentSubstrate, addressClassified, schemeRecognized, admissibilitySafety, closure | passed + rationale |
OQ |
blueprintCanonical, sovereignEndpointPinned, routingPathBound, admissibilitySafety, closure | sovereignEndpointID + routingPath + witness |
PQ |
outputMinimum, slippageMinimum, htlcTimelockBound, cryptographicBoundsEmbedded, admissibilitySafety, closure | cryptographicBoundsCanonical |
Domain (per Rick's worked instances)¶
| Template | Invariants | Terminal |
|---|---|---|
HEALTH_<target> |
targetConstraint, mechanismInvariant, admissibilitySafety (host-sparing), closure | intervention |
MATERIAL_<target_property> |
propertyTarget, structureConstraint, thermodynamicInvariant (synthesizable), closure | composition + phase |
FLUID_<target_flow> |
conservationInvariant, boundaryConstraint, regimeInvariant, admissibilitySafety, closure | flow field + geometry |
(Per-discovery instances within a domain — e.g. HEALTH_AML_INV3 — author a single conformer file under Templates/<Domain>/ and register at boot.)
Adding a new template¶
public struct MyTemplate: RuliologyGameTemplate {
public init() {}
public var templateID: String { "MY_GAME" }
public var invariants: [InvariantTag] {
[.myRuleInvariant, .admissibilitySafety, .closure]
}
public func encodeIngest(_ input: MyIngestInput) -> Data {
// template-specific encoding
}
public func invariantsToInstall(for input: MyIngestInput) -> [InvariantTag] {
// runtime-conditional: omit .admissibilitySafety when the
// load-bearing constraint is not satisfied
}
public func decodeTerminal(_ holder: C4InvariantHolder) -> MyTerminal? {
// decode the collapsed vQbit into the typed terminal
}
}
Register at boot:
Play from any caller (sync or async):
let outcome = await WolframSubstrate.shared.play(MyTemplate(), input: …)
switch outcome.terminal {
case .calorie: // game closed; outcome.payload carries MyTerminal
case .cure: // game spills; re-express
default: break
}
What v2 never emits¶
- "Cannot," "limited," "exceeds budget," "needs more."
- Bit-counts of S⁴ projections dressed as substrate state.
- Per-game special "hard arms" — one
reducepath, every template. - Out-of-cell algorithm prerequisites as substrate verdicts.
A non-collapsing reduce is .spill carrying invariantsInstalled and invariantsMissing. That is game-state, not a substrate verdict. Re-express the game.
See also¶
- V2-IQ-OQ-PQ-Templates.md — IQ/OQ/PQ semantics in detail.
- V2-Migration-From-V1.md — how v1 ChainEngine calls map to v2 game-plays.
Federation-cosigned
This page's source is sealed in the GaiaFTCL federation manifest — page SHA-256 ba825227c7fd0362…, manifest witness 3d999b305397d96c…, signed 2026-07-17T15:45:53Z by cell gaiaftcl-mac-cell. Verify with gaiaftcl wiki sign --all and compare wiki-all-signatures.json.