Repository navigation
SoFi rig fixes: a quote's total, a quote's reads, ERA as people count it; CORE receiver checks - #1091
Merged
Merged
Conversation
…d before any register read
… rule tested - **MR-DSM-0029 stays Partial.** The receiver now has evidence that a transfer of a token it never adopted is held before any register read. The relationship tip is still decided in the staged apply, after the read. Nothing yet drives its refusal: that needs a hostile sender signing from a rolled-back state, which the harness cannot produce. Recorded in §6.55. - **MR-DSM-0055 moves Partial to Met.** It is the same requirement as MR-STOR-0008, and STORAGE's syn test over every node source is its evidence. - **The §6.8 note on gossip, replication and discovery ticks is resolved:** the code and the fields are gone from the tree. Mutation controls, run and restored: - The sync's in-hand policy check removed: the adoption test goes red. The receiver asked dsm-node-1 for a cell. - `Instant::now()` added in db/pg.rs: no_node_source_reads_a_clock goes red. §7 totals regenerated.
On the rig, the A8/P15-9 payment from a trader took about 2.5 minutes, from pull to apply, and the payee's log could not say where the time went. peer_lineage logs nothing on success, so prevalidation's walk and the admission's second walk of the same segment (the known A8 first-contact cost) were indistinguishable from the storage reads around them. - The frontier store logs where each walk starts: the recorded frontier and its position, or the activation root. - resolve_peer logs the position it validated. - A refusal is returned unchanged. Its callers already log it with their own context. With logcat timestamps, the next rig run splits the time per walk.
…enesis once; ERA shown as people count it From the 2026-10-01 three-phone rig run. - A split's quote showed one leg as the total and seeded the minimum out with it. `sofi.findRoute` now reports the route's shape and what it takes and gives as one operation, by Core's rule for a route's endpoints (`movement_shape`, used by `route_endpoints`): a chain gives its last hop's output, a split the sum of its legs. The SoFi screen shows those. - A quote took minutes: each request read a vault's genesis four times, each a locator scan and a walk of the owner's lineage. A request's verifiers now share the geneses they accepted (`AcceptedGeneses`); each is still read from the network, once. - ERA amounts in base units read as whole ERA: the faucet message and the token wizard's fee and holding now show ERA at its committed decimals, rendered by Rust (`TokenFeeScheduleResponse` display fields). - A split trade's history row named one vault; it names every vault the route went through. Tests: `a_request_reads_each_vaults_genesis_once` (live reads, counted); the split and chain quotes' shape and totals; the split row names both vaults; the fee schedule's display strings. Each change mutation-checked. Three frontend tests are removed: two SoFi screen tests and a fee-query test whose stub and boolean lines are recorded in the real-code guard's baseline. Adapting them to the new shapes would edit recorded lines.
…-node-clock-row' into fix/sofi-quote-total-speed-and-display-units
The three-phone run of 2026-10-01: a split across two vaults of one pair, realized and seen by both owners, and a payment from the trader accepted by a device with no frontier for it. The fixes it led to, each with its mutation control; what it found that this branch does not fix (the old fleet's unbounded mirror sync, the owners' walks, a stale contacts banner); and the three frontend tests removed, with what they covered. Rows MR-SOFI-0349, 0353, 0357 and 0359 cite the new code and tests.
- 2 new rows pinned (`movement_shape`, `route_ends`). - 616 stale rows repinned, every one code-class. Evidence, run at ad41539: the 3 tests of the new rows and the 324 tests of the stale ones (18 runs), all passed. `make requirement-map-intent` on CI's code map: 0 failing rows, 635 pinned, 0 failing pins.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes from the 2026-10-01 three-phone rig run, plus CORE's receiver-check branch, in one PR.
The run (proven on real Android devices)
Fixed
sofi.findRoutenow reports the route's shape and what it takes and gives as one operation (SofiFindRouteResponsefields 3–7), by Core's endpoint rule:movement_shape, used byroute_endpoints.AcceptedGeneses), so each is read from the network once per request.TokenFeeScheduleResponsefields 4–5).Tests (release, Postgres node fleet)
dsm_sdknode_e2e, sender_admission, token_create, faucet_flow, realized_records and sofi_flow: 54 passed, 0 failed.a_request_reads_each_vaults_genesis_once, which counts live reads.dsmsofi::: 236 passed, 0 failed, includingmovement_shapecases.make lintexit 0.real_code_guardclean.conformance_evidence: 805 rows.(4, 4)reads against(1, 1);(2, 31, 236)against(2, 60, 460);Removed tests (frontend)
findRoutewith a hop list and the fee schedule with a boolean, on lines recorded in the real-code guard's baseline. Adapting them to the new shapes would edit recorded lines.sofi.tradefor one hop andsofi.routefor several.Not fixed here
Also included: CORE's receiver-check branch
fix/dsm-core-receiver-checks-and-node-clock-row(3 commits, CORE §6.55):Records
movement_shapeandroute_ends.