Skip to content

Commit a0dd520

Browse files
docs: M5 milestone gate report in assumeutxo ledger
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 7970fa7 commit a0dd520

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

doc/backports/assumeutxo-ledger.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,22 @@ Branch structure: stacked milestone branches `assumeutxo/m1-persistence` →
108108

109109
| E2E capstone: feature_assumeutxo_dash.py + regtest authorization | design doc §5 testing plan | done (ff2f393e15 + 369257dca5 + f978c1a158 + afcb4c0671 + 6786c0fa96) | round1 REWORK (blocking: equality checks compared identifiers not deterministic state — fixed with normalized detailed ProTx + per-quorum member/key/commitment comparison; restart phases made distinct; -assumeutxodata negative coverage added); production commits confirmed sound, trees identical through the rework | Full lifecycle E2E: 8 MNs/EvoNodes past DIP3/DIP8/DIP0024/v19/v20, rotated + non-rotated quorums, dump→loadtxoutset→deep-state verify, CL+IS verification pre-completion, signing/MN-mode refusals, background completion with evo comparisons, 4-phase restarts (M3 recovery E2E), UTXO-only + tampered-evo rejection. New regtest-only `-assumeutxodata=<h>:<utxo_hash>:<evo_hash>:<nchaintx>:<blockhash>` (nondeterministic MN fixtures cannot use compiled params); ignored on non-regtest, duplicates/collisions rejected. Four production fixes flushed out by the lifecycle run; dcf-era assumed-valid repair identified as early partial bitcoin#29370 — M6 MUST fold it into that merge (recorded in m6-briefs-refs). |
110110

111-
### M5 milestone gate (2026-07-11): pending
111+
| fix: per-chainstate prune target vs Dash -prune=550 | orchestrator-found (milestone battery) | done (folded into a710182c00 adaptation) | gate1 root-caused: upstream #27596 clamps per-chainstate prune targets to MIN_DISK_SPACE_FOR_BLOCK_FILES (945MiB in Dash), breaking supported sub-minimum targets; fix preserves configured targets below the minimum while keeping the multi-chainstate division; feature_pruning restored to normal runtime | The stderr assertion in the battery was secondary cleanup fallout. Lesson: feature_pruning stays in every milestone battery. |
112+
| refactor: blockfilter circular dependency | lint gate | done (7970fa780d) | gate1 PASS | interfaces::BlockInfo moved to kernel/chain.h mirroring upstream's later cleanup; no exception-list entries. |
113+
114+
### M5 milestone gate (2026-07-11): PASS
115+
- `make check`: exit 0, 0 failures (final tree).
116+
- Functional battery (16): assumeutxo trio (feature_assumeutxo,
117+
feature_assumeutxo_dash E2E 128s, wallet_assumeutxo), rpc_dumptxoutset,
118+
dip3 ×2, llmq signing ×2/rotation/chainlocks, mnehf, asset_locks, init,
119+
reindex, pruning, txindex — all passed.
120+
- Lint: circular-dependencies PASS, whitespace PASS; python lint → CI.
121+
- Result: #27596 (2 rounds), 13-PR follow-up cluster (2 rounds; nChainTx
122+
workaround rejected and replaced by the correct upstream fixture fix),
123+
E2E capstone (2 rounds; 4 production fixes flushed out by the full
124+
lifecycle run). loadtxoutset works end-to-end on Dash regtest including
125+
MN/quorum state, dual chainstates, background completion, and crash
126+
recovery. M6 integration item recorded: fold the assumed-valid repair
127+
into the #29370 backport.
112128
## M6 — hardening (planned)
113129
## M7 — params + polish (planned)

0 commit comments

Comments
 (0)