Skip to content

Gsd/phase 09 canonical slot and certificate storage - #349

Draft
henriqueaklein wants to merge 247 commits into
developfrom
gsd/phase-09-canonical-slot-and-certificate-storage
Draft

Gsd/phase 09 canonical slot and certificate storage#349
henriqueaklein wants to merge 247 commits into
developfrom
gsd/phase-09-canonical-slot-and-certificate-storage

Conversation

@henriqueaklein

Copy link
Copy Markdown
Contributor

No description provided.

@henriqueaklein
henriqueaklein force-pushed the gsd/phase-08-burn-mint-datapath-robustness-multi-node-mint-race-e2e-test branch from 9a34622 to 26a9c83 Compare July 28, 2026 21:17
Base automatically changed from gsd/phase-08-burn-mint-datapath-robustness-multi-node-mint-race-e2e-test to develop July 29, 2026 14:02
@henriqueaklein
henriqueaklein force-pushed the gsd/phase-09-canonical-slot-and-certificate-storage branch from 00e467e to 7467701 Compare July 29, 2026 16:18
@henriqueaklein
henriqueaklein force-pushed the gsd/phase-09-canonical-slot-and-certificate-storage branch 4 times, most recently from 3badeec to 61b83c2 Compare August 17, 2026 20:47
- hash strict normal and mint slot preimages with SHA-256
- reject ambiguous mint identities and malformed embedded transactions
- cover candidate-independent burn slots and canonical aliases
- propagate typed canonical slot results through proposal and certificate paths
- reject recognized handler failures before consensus state mutation
- hash unregistered subject identities into fixed-size operational keys
- Resolve catch-up logs against cached full receipts
- Deduplicate burns by transaction hash and receipt-local ordinal
- Cover multi-log, missing-context, and re-inclusion identity cases
- Require receipt-local ordinals across relayer, node, and mint APIs
- Use indexed synthetic outpoints for checks, reservation, and rollback
- Persist executed burns by chain, transaction hash, and receipt index
- register thread-safe complete-delta filters before element filters
- expose delta filters through datastore and GlobalDB
- scaffold focused certificate pair validation tests
@henriqueaklein
henriqueaklein force-pushed the gsd/phase-09-canonical-slot-and-certificate-storage branch from 61b83c2 to 019e03a Compare August 18, 2026 12:56
@henriqueaklein

Copy link
Copy Markdown
Contributor Author

This solution is bad and flaky. Not gonna merge it and instead gonna use as reference on what I want and how NOT to do it.

- Focused Phase 12 gate passes 7/7 at af382b0 (94.43s)
- Mandatory isolated 11-node race fails deterministically (2 consecutive
  runs): mint output destination is the node's validator identity instead
  of its SGNS address on all 11 nodes; application_converged never holds
- Full suite not executed per plan stop gate; closure remains blocked
- Dynamic inventory re-captured: 98 configured tests, 4 lacking built
  executables in this tree
- Focused gate 7/7 PASS (90.46s) with evmrelay at recorded 4787e582
- bridge_race_single_burn_test PASS isolated -j1 (271.33s), clean 11-node teardown
- Mint output destination now equals burn destination SGNS address
- Task 2 full-suite sections pending
…te blockers

- Dynamic inventory: 98 configured tests, zero missing executables
- One unfiltered ctest -j2 run: 91/98 passed, 7 failed, zero Not Run
- 6 bridge/Anvil fixtures fail: sepolia.drpc.org dropped Sepolia from free plan
  (verified directly: HTTP 400 code 35; serial repro identical)
- bridge_race_single_burn_test timed out at 500s under -j2 load (passed isolated)
- 3 gated E2E suites recorded as reviewed prerequisite skips
- Closure not achieved; blockers recorded for scoped follow-up
Under full-suite -j2 load the 11-node race exceeded its 500s timeout
(500.04s) after passing isolated in ~271s. RUN_SERIAL plus a 900s
budget removes CPU contention from the mandatory race gate.
- Focused gate 6/7: StructuredTraceUsesStableIdentityForExactReplay fails
  nondeterministically (~1/3) — competitor proposal_id collides with the
  original when both CreateProposal calls share one CurrentTimeMs() tick
- Stop gate fired: isolated race and unfiltered full suite not run
- No source/test code modified per plan scope; evidence recorded in
  12-FULL-SUITE-REPORT.md
…stinct

With a shared subject, CreateProposal varies only by CurrentTimeMs(), so
a same-millisecond competitor proposal_id equaled the original and the
EXPECT_NE flaked (~1/3). Give the competitor its own proposer account so
its proposal_id differs deterministically.
- Focused gate: 7/7 pass in 91.45s (replay-identity flake fixed by 84bce439)
- Isolated bridge_race_single_burn_test: PASS 271.20s (-j1, within 900s)
- One winner certificate across 11 proposals/11 validators; clean teardown
- Report regenerated as run 5; full-suite leg pending Task 2
…d (run 5)

- Dynamic inventory: 98 configured tests (ctest -N, 2026-08-19T20:42Z)
- One unfiltered run: ctest --output-on-failure --no-tests=error -j2
- 98 passed, 0 failed, 0 timeouts, 0 crashes, 0 Not Run, 0 skips (1021.60s)
- bridge_race_single_burn_test passed in-suite at 284.96s (RUN_SERIAL, TIMEOUT 900)
- Run-3 blockers verified resolved: 6 bridge/Anvil fixtures green after rebuild
- TEST-01..06 requirement matrix satisfied; zero reviewed skips needed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant