DCLTGMF3 caller bumps and founding-frame contraction — 2026-08-29

Result

DCLTGMF3 replaces DCLTGMF2 as the sole active generic-Market founding outer. It preserves the atomic Lock → Found → Realize → Claims → Open rollback domain while removing five repeated outer PDA bump searches and five redundant child sysvar account occurrences.

The instruction is exactly 13 bytes: the eight-byte DCLTGMF3 discriminator, then the canonical Lock, Found, Realize, Claims, and Open bump bytes in that order. Those bump bytes are invocation evidence, not persisted semantic truth. For each child, Trading uses create_program_address over the complete existing seed vector and requires the reproduced address to equal the account in the frame. Custody, Core, and Claims still perform their own canonical find_program_address search before honoring the PDA signature. A wrong bump therefore refuses at the outer equality boundary, and a noncanonical address cannot acquire child authority.

No PDA domain, seed component, request digest, role, or resulting address changed. The operator tests reproduce each of the five canonical addresses with create_program_address; the Trading hostile test changes every bump and proves the wrong address or invalid point cannot pass the identity check.

Runtime sysvars

The new frame removes these account occurrences and obtains the same runtime facts through the Solana sysvar syscall boundary:

This is an ABI contraction, not a semantic relaxation. The ordinary ProjectFound36 graph remains the independently owned global frame. Other Claims routes that authenticate a caller-presented Rent profile still use their prior account path. Only the generic founding children use runtime Rent/Clock here.

Exact geometry

For the permanent Direct-profile founding with two physical FundingLedgerV2 accounts:

MeasureDCLTGMF3
fixed account references before the funding tail125
physical funding-tail references2
Direct wrapper account references127
complete compiled unique keys58
static keys3
loaded writable keys12
loaded readonly keys43
required signatures1
base serialized v0 message bytes429
message bytes after six new distinct keys441
message bytes after seven new distinct keys443

The compiled complete-key census digest is 8fb27f15c8509350a0702a1c6e3208ade60d6c16b48bb6d324cc721a08186561. The boundary tests prove 58 + 6 = 64 is admitted and 58 + 7 = 65 is refused before any write or transaction planning. The frame itself contains no transaction-level signer; the one signature is the distinct fee payer.

Durable caller turnover

The public founding journal and its pre-send projection are now respectively:

The operation is dcltgmf3, the exact success mutation label is found the Market atomically: Lock, Found, Realize, Claims, Open (DCLTGMF3), and the compute label is founding-dcltgmf3. Per-run output uses dcltgmf3_compute_units; the twenty-seed summary owner uses dcltgmf3_compute_units_arithmetic_mean.

The six-row ordered founding journal remains DCLTCFQ1, DCLTPCB2, DCLTGMF3, Core funding Create, Resolution funding Activate, and Core funding Accept. ProjectFound36, four-row AggregateRetirement, and durable SourceAbort changes that landed ahead of this range remain intact.

Focused tests

The final rebased source passed:

The generated reference document docs/reference/abi/genericFoundingV1.md is intentionally not regenerated in this lane. The release-reference owner freezes all ABI sources first and runs the repository-wide generator and its check exactly once.

Exact SBF and frame evidence

The code range is 8ed1f1a8^..172f3420, rebased on main 6d9d4b36. An exact git archive of 172f3420 was expanded on hbox at /tank/dregg-build/dclutch-dcltgmf3-172f3420/source. Its Git tree is 591d92991a695552dd4dc37681d88b9ad9d05efa, equal to the local source tree.

Builds used swarm-build, cargo-build-sbf 4.0.0, platform-tools v1.53, and SBF rustc 1.89.0. Plain optimized links and independent -Zemit-stack-sizes --emit=obj,link measurement builds both emitted zero overwrites values in the frame diagnostics for every changed program.

ProgramELF bytesELF SHA-256measured framesdeepest framespare
Trading1,915,7529595c5856fc48fdc22f6b12520070993e65d4fde6b2a9c0b01bfad08a356e5f68034,03264
Core1,047,2400591bb399771a2fcf0df7fde56f9ffa97f916075242c398f64945af7073f12592353,968128
Claims1,162,6960549a8b373dabc9ed5ddf186f1bcbbac55af8ed6a954093ffe45beed4e812f462023,904192

The Core link's deepest measured frame is generic_founding_v1::authenticate_claims_and_custody at 3,968 bytes. The Trading link's deepest frame is an unrelated Direct replay setup function at 4,032 bytes; DCLTGMF3 did not become the link's stack owner.

The linked ELF imports confirm the intended runtime boundaries. Trading imports both sol_create_program_address and sol_try_find_program_address: the first is the DCLTGMF3 fast reproduction path, while the second remains reachable from other Trading routes. Core imports sol_get_clock_sysvar and sol_get_rent_sysvar; Claims imports sol_get_rent_sysvar. The presence of a link-wide canonical-search import is therefore not evidence that the five DCLTGMF3 outer searches survived.

The build logs and frame reports live under the same hbox evidence root. Their SHA-256 values are:

ArtifactSHA-256
Trading build logaaa88e9881ede5007846bf1b32e607c7063dc2f1aee62f742cf00f9631137f86
Trading frame-build log3926de4f03da4bf97cc2eea044b114d33b7e584a37b323b515f3956bfab7d84e
Trading frame report46ac8fead32117fe42cd5babd05220f465929f10687aec407f5040ed5a395def
Core build logfcb635af014fc28df401c22a981b840a28c861e9370783d161050d15d96edfa2
Core frame-build logf7f5526611b12e5af07722185baea0c4946cd253113ea282f50d5049a8edd317
Core frame report8e70e542c3e3ee95721e60342681a0eb0642cc25c98407b2b1377010fb77eafc
Claims build logdddb0470852cada6cf69be97f2d6a84a1bea21f98f4e441cb796fe90033f8536
Claims frame-build logfd1a8dcf87fe18bcac5ba783117312fc5743cbebfac540c6166776d85cb51de2
Claims frame reporte38ac4eb13f4d40b9340905b94652be1544703c913dec9b596cebd30de4e90fc

These builds are source-bound SBF and static-frame evidence. This lane did not run the final lifecycle twenty-seed campaign, so it makes no M-61 compute-margin claim. A margin requires the exact final ELF's pass count and 20-seed arithmetic mean; no single diagnostic execution is substituted for that result.