Skip to content
Bitcoin Roots

v31.1-roots.1 · Commit 10: [PATCH 10/17] docs(roots): record v31 contract preservation evidence

doc/roots-v31-port-review.md

Before: doc/roots-v31-port-review.md · After: doc/roots-v31-port-review.md

File metadata
index 2732a300ad5d2aeabe2a811531685bb69ba0bcbb..3c884d320c6e229806526260e86c8fe52dc7b9f5 100644

Download original patch · Release notes

Diff rows 1–400 of 502. Line numbers refer to the original before/after files.

+ Added− RemovedUnmarked lines are context.

Scroll the code area horizontally to read long lines. Before is on the left; after is on the right. Unified view fits narrow screens more easily.

doc/roots-v31-port-review.md CHANGED
@@ -1,12 +1,15 @@
1
  # Roots Core v31 port review
2
 
3
- This is a preservation review for an unpublished local candidate, not a release
4
  announcement or an executable patch manifest. The accepted 30.3 contracts define
5
- intent; Git defines each version's implementation. At the input-review stage,
6
- the candidate contained unmodified Core plus this document. The foundation now
7
- carries preservation documentation and CMake selections/probes described in
8
- [the portability guide](roots-build-portability.md). Later themes must land
9
- before their Roots runtime behavior can be described as available.
 
 
 
10
 
11
  ## Exact inputs and authentication
12
 
@@ -57,7 +60,9 @@ not a Roots-series merge.
57
 
58
  ## Proposed smaller series and dependencies
59
 
60
- The user approved a nine-theme target: **9 instead of 72 commits**. The former
 
 
61
  policy/mining theme is split into independently reviewed local checks, graph
62
  accounting, and mining adaptations. Historical fixes,
63
  tests and documentation travel with the behavior they correct; release/CI work
@@ -74,7 +79,9 @@ No broad compatibility layer is proposed.
74
  | L11 wallet | Database/signer boundaries, per-send RBF, sweep authorization/secrets and coin-control facts. Requires L10. |
75
  | L12 operator/runtime | Read/write config, effective-policy RPC and platform resource support; dormant stats remain dormant. Requires L7 state and L11. |
76
  | L13 integration | Identity/icons/QR/taskbar, generated help artifacts, CI and release/export tools. Requires L12. |
77
- | L14 evidence | Final preservation review, range comparison and exact-candidate supported gates. Requires L6–L13. |
 
 
78
 
79
  Preimplementation review found distinct algorithm risks: v31's block builder
80
  can include or skip only the current whole chunk, while Roots selects an
@@ -95,11 +102,12 @@ statistics or permit unrelated repairs. Dynamic runtime is still deferred.
95
  Until then, feature tests must cover Core CLI/config semantics and explicitly
96
  defer Roots `confrw` precedence cases; they cannot claim those cases passed.
97
  The full precedence gate runs when L12 lands. Feature-local tests still ship
98
- with each implementation; L14 is additional aggregate evidence.
99
 
100
  ## Contract dispositions against actual v31.1 APIs
101
 
102
- These are implementation directions for review, not completed-port claims.
 
103
  **Adapted** retains all intended behavior while changing Core-specific placement;
104
  **kept** retains compatible behavior/support; **adopted-upstream** needs equivalent
105
  defaults, configuration, invariants and current acceptance evidence. No intended
@@ -131,7 +139,7 @@ contract with remaining Roots behavior. Existing source gaps remain explicit.
131
  | identity-desktop | adapted / L13 | Core version/icons/help remain Core; Roots identity, QR-PNG export and Windows taskbar support are not equivalent. Port limited identity/desktop changes while preserving upstream names/protocol attribution. Generate manuals/config from final help only; run version, Qt QR/icon and Windows/platform/visual gates. |
132
  | maintenance-ci | adapted / L13 | Core's v31 compiler/platform/cluster fixtures supersede old job assumptions; Roots classifier, exact promotion proof and platform/fuzz scheduling need adaptation. Retain actual exact-candidate CI gates and bounded corpora scheduling; run maintained tool tests and supported candidate profiles. |
133
  | maintenance-release | adapted / L13 | Upstream does not provide Roots immutable source/tag/assets, signed new-draft-only five-platform release, portable export or contributor-credit rules. Adapt version/base validation and replay without publishing/tagging. Retain `.github` exclusions and `git am -3 --keep-cr`; test temporary export/replay and all release tools. Expanded notices remain deferred. |
134
- | maintenance-docs | adapted / L6,L13,L14 | Carry accepted contracts first with explicit deferred status, reconcile catalog/privacy/provenance to actual candidate, generate help artifacts when interfaces land, and complete review evidence last. Historical release notes are provenance, not a v31 feature claim. Check links/doc lint/whitespace and generated-output parity. |
135
  | maintenance-native | adapted / owning theme | Inspect every surviving source hunk; keep behavior-preserving C++/empty-write/test hooks only where needed on v31 APIs. Port test fixtures with their features rather than overwriting newer Core tests. Transient reverted script work is not a new consensus feature. Run affected unit/functional/fuzz gates. |
136
 
137
  The shared consensus-neutral and no-RDTS boundaries apply to every row. Contract
@@ -142,45 +150,48 @@ be preserved on v31, seek an explicit compatibility decision before removing it.
142
 
143
  ## Complete source-to-theme accounting
144
 
145
- Every abbreviated object below uniquely resolves in the pinned source range.
146
  Rows assign the final semantic content, including tests, docs and maintenance;
147
  mixed source commits may feed multiple themes. References are provenance, not
148
- instructions to replay whole commits. Aggregate commits must include the full
149
- `Source-commit:` values for the content they use and honest adaptation notes.
 
 
150
 
151
- | Source commits | Owning themes and treatment |
152
- | --- | --- |
153
- | `5c210e17fb` | L6 build/dependency support; L13 platform CI/release integration. Adapt required probes, not old generated summaries. |
154
- | `85257a0986`, `724f8c2ee7` | L7–L9 policy utility dependencies; L10 peer diagnostics; L11 signer boundary; L12 config/runtime/stats support. Split mixed runtime content by contract; preserve dormant status. |
155
- | `1b73fe3d21`, `ec9db369f5` | L7 local checks; L8 accounting/dynamic dust/replacement; L9 mining and broad functional fixtures; L10 peer controls; L11 wallet boundary fixes/fixtures; L12 runtime dependencies; L13 CI test-script integration. Adapt actual surviving deltas to clusters/interfaces. |
156
- | `dd03dcb989` | L11 database/SQLite/signer hardening, adapted. |
157
- | `c592888088` | L6 Qt build support; L10 peer view; L11 wallet GUI support; L13 identity/QR/taskbar. Split mixed GUI content without importing incidental upstream text. |
158
- | `fc0dc945d0` | L7 fixed-dust/sigop tests; L8 sub-dust/TRUC tests, plus L10 peer fixtures and L12 operator tests where present. Preserve tests' actual feature ownership. |
159
- | `9f1780f330`, `4570a6a547` | L6 necessary build registration; L13 assurance/CI/release tooling and fixtures; owning-feature tests across L7–L12. No replacement maintenance state system. |
160
- | `9da5851410`, `26b691e4f3`, `201927c151`, `e819a07a4a`, `56e2894760` | L13 CI scheduling, apt-retry, optional-feature selection and branded archive checks; adapt to v31 jobs. |
161
- | `83fa42a963`, `f5182f0e3a`, `7791eede50`, `11c84c39ef`, `0efa437e29`, `f2595557d9`, `38bc7ec2ce`, `df8aa8e2b7`, `ddae467a78`, `778ff50d19`, `c474825f96`, `17e1d484ab` | L13 release/rehearsal/source/archives/signing/new-draft/promotion CI and notice deferral; preserve final safeguards, fold corrective history. `f5182f0e3a` also supplies L11 sweep/privacy boundary tests and L12 safe-empty-stream writes/tests, plus L13 apt/sanitizer checks. No releases dispatched. |
162
- | `25f889f97e`, `3e13c1f213` | L13 Windows icon and QR QString-size corrections, kept/adapted with identity. |
163
- | `b0b235d6a1`, `f4066e5282`, `30f673a4bc`, `a13f28e2f4`, `1517d925b2`, `628bdf4e38`, `02464df449`, `089888acdd` | L6/L13/L14 catalog, scope, historical notes and provenance; rewrite candidate claims for actual implementation, retain relevant history/credit. |
164
- | `bbd7339af2`, `9b778b9a23` | L10 peer stale-state fix/apptests; L12 streams assertion fixtures and L13 QR/build GUI assertions from the mixed test commit. |
165
- | `e4b26462de`, `0e3ae72d89` | L11 wallet-derived per-send RBF and locked Qt assertions, adapted. |
166
- | `5e2d79e937` | L7 `node/mempool_args.cpp` string-view prefix modernization, adapted only where the parser remains; no consensus feature. |
167
- | `fb21288879`, `dc1b217cbd`, `9a216bc389`, `7c70374050`, `f3cd7da535`, `96fecfd411`, `a1748ccc64`, `f9e9a36cd1` | L11 sweep RPC/GUI, coin-control facts, documentation, asynchronous authorization, locked fee snapshot and secret cleansing. Fold security corrections into final feature. |
168
- | `875fa15829`, `9ab60f217b`, `9d9c125d9e` | L9 priority-selected ancestor/resource correctness and locale-independent regression fixtures, adapted to chunk mining. |
169
- | `aa27c9117a`, `48f3b3bbe8`, `a6f35e915c` | L8 configured RBF/TRUC semantics and tests; L12 truthful RPC field; L13 final generated help. |
170
- | `30e7eac266`, `12d67ba60a`, `e6d4abc704`, `085a84a7cb`, `8cb07ef1b9` | L7–L10/L12 feature-owned full-suite, Taproot-carrier, fee-estimator and startup fixtures; adapt to current APIs without erasing upstream regressions. |
171
- | `1f7cfce176` | L13 regenerate manuals/example configuration from final help, not source-byte replay. |
172
- | `16b2198275`, `47329c00dd`, `1b2431c74c` | L6 native crypto flags, exact MiniUPnPc dependency patch and usable system LevelDB memory environment; the Chain interface include and mempool/1p1c lint fixtures follow L7/L10. |
173
- | `784b2af17a`, `f74cc0433b`, `73c97862e2` | L8 synchronized dynamic-dust publication/snapshot and changing-rate tests; consumers in L12 report the same authoritative state. |
174
- | `f66eca4ae4` | L6 accepted stable contract collection and source/provenance reconciliation. |
175
- | `87c950de92` | L7 strict policy grammar, scoped help/diagnostics and parser/startup tests; distinct source behavior change. |
176
- | `b60a6e04d0` | L12 additive effective-policy RPC/schema/parity tests; distinct source API change. |
177
- | `10d772eb7f` | L7 local valid-block/carrier interactions and parser fuzz; L8 penalty/carrier arithmetic and fuzz; L9 priority/fee/template interactions; L6 retains documented gaps until tests are ported. |
178
 
179
  Source-range authors are Jaromil and devjoinedthechat. Preserve their existing
180
  copyright/credit and upstream Core/Knots lineage; use retained source authorship
181
  and attribution in aggregate commit bodies. These thematic rewrites are not
182
  single-commit cherry-picks and must not fabricate an `-x` trailer.
183
 
 
184
  ## Input-stage verification
185
 
186
  Baseline evidence is tied to untouched Core commit
@@ -942,7 +953,7 @@ The remaining maintenance-only history is folded by responsibility:
942
  | `5c210e17fb`, `9f1780f330`, `4570a6a547` | Adapted CI/platform/assurance entry points and maintained fixtures; retain v31 native cache actions, compiler profiles, build script and test runners. Feature-owned code/tests stay in their earlier themes. |
943
  | `9da5851410`, `26b691e4f3`, `201927c151`, `e819a07a4a`, `56e2894760` | Adapted additive classification, conservative scheduled-change gate, strict APT retry, optional-feature selection and branded archive checks. Broad platform jobs move to nightly/manual; no optional capability is retired. |
944
  | `83fa42a963`, `f5182f0e3a`, `7791eede50`, `11c84c39ef`, `0efa437e29`, `f2595557d9`, `38bc7ec2ce`, `df8aa8e2b7`, `ddae467a78`, `778ff50d19`, `c474825f96`, `17e1d484ab` | Kept/adapted final release-source/rehearsal, five-platform archives, COPYING, portable replay, trusted signing/new-draft-only and promotion-proof safeguards. Corrective source history is folded; expanded notices remain optional/deferred. The configured-version sub-aspect is also preserved in L13.1. |
945
- | `b0b235d6a1`, `f4066e5282`, `30f673a4bc`, `a13f28e2f4`, `1517d925b2`, `628bdf4e38`, `02464df449`, `089888acdd` | Adapted relevant candidate identity, maintained workflow guidance, provenance and credit; existing upstream release notes remain historical. Final aggregate/range evidence stays L14. |
946
  | `1b73fe3d21`, `ec9db369f5`, `c592888088`, `9b778b9a23` | Remaining CI/build/GUI assertions are carried or adapted to v31 paths and the accepted owning-feature implementations; semantic source content is not reintroduced as a second chronological series. |
947
 
948
  PR/development execution now uses the existing `ci/test_run_all.sh` and native
@@ -1007,3 +1018,353 @@ binary/tool-test/export hashes are local evidence under
1007
  `.gestalt/l13-integration`. L13.1 GUI/capture/manual evidence remains unchanged
1008
  and is reused. Full L13 acceptance and the final candidate/hosted matrix remain
1009
  later gates, rather than being inferred from these focused checks.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # Roots Core v31 port review
2
 
3
+ This is a preservation review for a review candidate, not a release
4
  announcement or an executable patch manifest. The accepted 30.3 contracts define
5
+ intent; Git defines each version's implementation. Nine accepted thematic
6
+ commits now carry the implementation on Core v31.1. The stage reports below
7
+ retain their original scope and evidence limitations; their pending wording
8
+ does not supersede later accepted results. The [series audit](#l151-repaired-series-audit)
9
+ records exact history, contract coverage, compatibility decisions and closed
10
+ L14 repair findings. L15 is documentation acceptance only. The approved L16
11
+ repairs and reduced candidate gates, followed by independent terminal review,
12
+ remain pending; the draft PR is a review boundary, not a release.
13
 
14
  ## Exact inputs and authentication
15
 
 
60
 
61
  ## Proposed smaller series and dependencies
62
 
63
+ The user approved an eleven-theme target: **11 instead of 72 commits**, including
64
+ the bounded L14 preservation repair, the documentation-only tenth L15 commit
65
+ and the separate eleventh L16 test-oracle/hosted-diagnostics repair commit. The former
66
  policy/mining theme is split into independently reviewed local checks, graph
67
  accounting, and mining adaptations. Historical fixes,
68
  tests and documentation travel with the behavior they correct; release/CI work
 
79
  | L11 wallet | Database/signer boundaries, per-send RBF, sweep authorization/secrets and coin-control facts. Requires L10. |
80
  | L12 operator/runtime | Read/write config, effective-policy RPC and platform resource support; dormant stats remain dormant. Requires L7 state and L11. |
81
  | L13 integration | Identity/icons/QR/taskbar, generated help artifacts, CI and release/export tools. Requires L12. |
82
+ | L14 repairs | Qt5 persistence, configured benchmark default and safe empty AutoFile writes. Requires L6–L13. |
83
+ | L15 evidence | Preservation ledger, range comparison and honest diagnostic/provenance accounting; documentation acceptance only. Requires L6–L14. |
84
+ | L16 diagnostic repairs | Two test-oracle conversions, hosted failure-log visibility and final candidate gates under the approved reduced verification. Requires accepted L15. |
85
 
86
  Preimplementation review found distinct algorithm risks: v31's block builder
87
  can include or skip only the current whole chunk, while Roots selects an
 
102
  Until then, feature tests must cover Core CLI/config semantics and explicitly
103
  defer Roots `confrw` precedence cases; they cannot claim those cases passed.
104
  The full precedence gate runs when L12 lands. Feature-local tests still ship
105
+ with each implementation; L15 is additional aggregate evidence.
106
 
107
  ## Contract dispositions against actual v31.1 APIs
108
 
109
+ These are the reviewed implementation placements; the current coverage table
110
+ below records candidate evidence and remaining platform limits.
111
  **Adapted** retains all intended behavior while changing Core-specific placement;
112
  **kept** retains compatible behavior/support; **adopted-upstream** needs equivalent
113
  defaults, configuration, invariants and current acceptance evidence. No intended
 
139
  | identity-desktop | adapted / L13 | Core version/icons/help remain Core; Roots identity, QR-PNG export and Windows taskbar support are not equivalent. Port limited identity/desktop changes while preserving upstream names/protocol attribution. Generate manuals/config from final help only; run version, Qt QR/icon and Windows/platform/visual gates. |
140
  | maintenance-ci | adapted / L13 | Core's v31 compiler/platform/cluster fixtures supersede old job assumptions; Roots classifier, exact promotion proof and platform/fuzz scheduling need adaptation. Retain actual exact-candidate CI gates and bounded corpora scheduling; run maintained tool tests and supported candidate profiles. |
141
  | maintenance-release | adapted / L13 | Upstream does not provide Roots immutable source/tag/assets, signed new-draft-only five-platform release, portable export or contributor-credit rules. Adapt version/base validation and replay without publishing/tagging. Retain `.github` exclusions and `git am -3 --keep-cr`; test temporary export/replay and all release tools. Expanded notices remain deferred. |
142
+ | maintenance-docs | adapted / L6,L13,L15 | Carry accepted contracts first with explicit deferred status, reconcile catalog/privacy/provenance to actual candidate, generate help artifacts when interfaces land, and complete review evidence last. Historical release notes are provenance, not a v31 feature claim. Check links/doc lint/whitespace and generated-output parity. |
143
  | maintenance-native | adapted / owning theme | Inspect every surviving source hunk; keep behavior-preserving C++/empty-write/test hooks only where needed on v31 APIs. Port test fixtures with their features rather than overwriting newer Core tests. Transient reverted script work is not a new consensus feature. Run affected unit/functional/fuzz gates. |
144
 
145
  The shared consensus-neutral and no-RDTS boundaries apply to every row. Contract
 
150
 
151
  ## Complete source-to-theme accounting
152
 
153
+ Every source object below resolves in the pinned source range.
154
  Rows assign the final semantic content, including tests, docs and maintenance;
155
  mixed source commits may feed multiple themes. References are provenance, not
156
+ instructions to replay whole commits. Full source objects and honest adaptation
157
+ notes provide the provenance ledger. The [series audit](#l151-repaired-series-audit)
158
+ records the accepted commit-body format deviation; this ledger does not pretend
159
+ that omitted trailers exist.
160
 
161
+ | Source commits | Exact source authors | Owning themes and treatment |
162
+ | --- | --- | --- |
163
+ | `5c210e17fbafbdab01391fbfa60efa00701d6422` | Jaromil <jaromil@dyne.org> | L6 build/dependency support; L13 platform CI/release integration. Adapt required probes, not old generated summaries. |
164
+ | `85257a0986d841cb2f6a8db1eb4902e92cfa94f5`, `724f8c2ee71be107540ac5042ddb55d5c53ef69e` | Jaromil <jaromil@dyne.org> | L7–L9 policy utility dependencies; L10 peer diagnostics; L11 signer boundary; L12 config/runtime/stats support. Split mixed runtime content by contract; preserve dormant status. |
165
+ | `1b73fe3d2126e8a1233343e8485a28b507515426`, `ec9db369f5034677665ac1d93bdb87024fd7f21c` | Jaromil <jaromil@dyne.org> | L7 local checks; L8 accounting/dynamic dust/replacement; L9 mining and broad functional fixtures; L10 peer controls; L11 wallet boundary fixes/fixtures; L12 runtime dependencies; L13 CI test-script integration. Adapt actual surviving deltas to clusters/interfaces. |
166
+ | `dd03dcb98911e4ed75abb843ccdc5507b67dac7b` | Jaromil <jaromil@dyne.org> | L11 database/SQLite/signer hardening, adapted. |
167
+ | `c5928880885a32510cfd716f4354117eeaf4d4dc` | Jaromil <jaromil@dyne.org> | L6 Qt build support; L10 peer view; L11 wallet GUI support; L13 identity/QR/taskbar; L14 Qt5 startup/persistence repair. Split mixed GUI content without importing incidental upstream text. |
168
+ | `fc0dc945d0002ca054a7046a33b45ee92389b805` | Jaromil <jaromil@dyne.org> | L7 fixed-dust/sigop tests; L8 sub-dust/TRUC tests, plus L10 peer fixtures and L12 operator tests where present. Preserve tests' actual feature ownership. |
169
+ | `9f1780f33036b3a606b0120e94415587e44f018b`, `4570a6a54770fbda04d9cd05197b6f4fd8f88546` | Jaromil <jaromil@dyne.org> | L6 necessary build registration; L13 assurance/CI/release tooling and fixtures; L14 configured benchmark repair; owning-feature tests across L7–L12. No replacement maintenance state system. |
170
+ | `9da585141091354442aec822d5b47d8a0dc6afc0`, `26b691e4f35c66b28a2ddef7504790df29f07392`, `201927c151875aa3c19d96d7cbec00ece65c65b1`, `e819a07a4a1efc30d1d66f86394f7bbb0609f758`, `56e28947604c04e429e6035094e847452aeb38e1` | Jaromil <jaromil@dyne.org> | L13 CI scheduling, apt-retry, optional-feature selection and branded archive checks; adapt to v31 jobs. |
171
+ | `83fa42a963d3f190abeecec08db64f0175b2ebc8`, `f5182f0e3a7c49c85abe6159af0a16d1b6ae8298`, `7791eede50f6ca8bfca78ce2cb79ac005cc22d95`, `11c84c39ef4c0bf06d5f94b2299cf7502688cab3`, `0efa437e29d4fcb0ec567991c75221129c4c488f`, `f2595557d9e9029ab5506efc3aa094dd6252dc15`, `38bc7ec2ce41543a69dfec20e1fa98073f246502`, `df8aa8e2b79139f8c8cc9b4f1d412ab9d9a45792`, `ddae467a788aa0ca1f7c81fdd79d75e6014b10e7`, `778ff50d19a53a46bb0b0ba021a1111f886c7e7c`, `c474825f9698324747592c9535400ffd0cd01ed9`, `17e1d484aba2a881be03b8928fba3c0125e027a2` | Jaromil <jaromil@dyne.org> | L13 release/rehearsal/source/archives/signing/new-draft/promotion CI and notice deferral; preserve final safeguards, fold corrective history. `f5182f0e3a7c49c85abe6159af0a16d1b6ae8298` also supplies L11 sweep/privacy boundary tests and L12 safe-empty-stream writes/tests, plus L13 apt/sanitizer checks and L14 empty AutoFile write repair. No releases dispatched. |
172
+ | `25f889f97ef09b4596ccfc8a67cca3e420ffea9d`, `3e13c1f213b931c9304526cf17309a3af4d07174` | Jaromil <jaromil@dyne.org> | L13 Windows icon and QR QString-size corrections, kept/adapted with identity. |
173
+ | `b0b235d6a1d7c7548e96c6d171f5246c99e01be7`, `f4066e52827ae2edde22380159f4ace87e1a7dbf`, `30f673a4bca1ae92083bbd47035588216553ce18`, `a13f28e2f482a89a1b3979e9045ddabb4a3df498`, `1517d925b2d6e189bc395b484676d76b6d10b2f5`, `628bdf4e382b9c8b672e3017335ec37ef7ac542c`, `02464df449d3ce81bd3241ab6d7170788f621b06`, `089888acdd5c03a070a31177d9d20e2fce3ce72f` | Jaromil <jaromil@dyne.org>, devjoinedthechat <235875317+devjoinedthechat@users.noreply.github.com> | L6/L13/L15 catalog, scope, historical notes and provenance; rewrite candidate claims for actual implementation, retain relevant history/credit. |
174
+ | `bbd7339af2bb0b707f3d11f574f200352a7c2dbb`, `9b778b9a23d2d13a4b116984ad6739d83b1aa13f` | Jaromil <jaromil@dyne.org> | L10 peer stale-state fix/apptests; L12 streams assertion fixtures and L13 QR/build GUI assertions from the mixed test commit. |
175
+ | `e4b26462de371041bd9973e750e220f72895250e`, `0e3ae72d89552a4178e12b15fe56ffd87bf8eb03` | Jaromil <jaromil@dyne.org> | L11 wallet-derived per-send RBF and locked Qt assertions, adapted. |
176
+ | `5e2d79e9376a1fed32cd728091b23205e0ab9999` | Jaromil <jaromil@dyne.org> | L7 `node/mempool_args.cpp` string-view prefix modernization, adapted only where the parser remains; no consensus feature. |
177
+ | `fb2128887946f094cf1d69c8cbb3cfd3604ba9dc`, `dc1b217cbd4802cc45ef6d97919ce819f8f2a58e`, `9a216bc38919c9bd80c0438ef74f4013bc0d651d`, `7c70374050f61bfaa86f9de2c7955c3153c1e356`, `f3cd7da535bfe2f715b1ae49f32d54796503e0a3`, `96fecfd411a9b2e04633b8078dea038b7b3abf9b`, `a1748ccc6416563683710996e5380766dec61ac9`, `f9e9a36cd1715c4370a41f6527a71e2eb5c1536a` | Jaromil <jaromil@dyne.org> | L11 sweep RPC/GUI, coin-control facts, documentation, asynchronous authorization, locked fee snapshot and secret cleansing. Fold security corrections into final feature. |
178
+ | `875fa1582972f9cd6fa710b5f82bdc758b5470e4`, `9ab60f217b0ded70bebf08cb656de8d77944fa1c`, `9d9c125d9e6a3548f0d19678218bba9f66d6ae00` | Jaromil <jaromil@dyne.org>, devjoinedthechat <235875317+devjoinedthechat@users.noreply.github.com> | L9 priority-selected ancestor/resource correctness and locale-independent regression fixtures, adapted to chunk mining. |
179
+ | `aa27c9117a1f08e009d99417c0cd8151acbc7141`, `48f3b3bbe8930f91a6cedb3764ca3e1b6febd15f`, `a6f35e915c798236cebb6442756d0fe29a3214eb` | Jaromil <jaromil@dyne.org>, devjoinedthechat <235875317+devjoinedthechat@users.noreply.github.com> | L8 configured RBF/TRUC semantics and tests; L12 truthful RPC field; L13 final generated help. |
180
+ | `30e7eac266d6811c0520aa8846001b0501d47c5e`, `12d67ba60a926ec5993c2f2285bdece6e964d2fa`, `e6d4abc70406a8bc9082815a477ad0112e8e05ad`, `085a84a7cb936aa4317616fd9ba94152b3a26b32`, `8cb07ef1b92bf1f057d35bf478792725c14ab63e` | Jaromil <jaromil@dyne.org> | L7–L10/L12 feature-owned full-suite, Taproot-carrier, fee-estimator and startup fixtures; adapt to current APIs without erasing upstream regressions. |
181
+ | `1f7cfce1768ac2e26ebde8e8a2148098af4a7c83` | Jaromil <jaromil@dyne.org> | L13 regenerate manuals/example configuration from final help, not source-byte replay. |
182
+ | `16b2198275aee408686c22cb4365c594b7608ed6`, `47329c00dd66503166e7487d79a11589912ce2f3`, `1b2431c74c00eb5db1d0960e7480a39a4cce2ae2` | Jaromil <jaromil@dyne.org> | L6 native crypto flags, exact MiniUPnPc dependency patch and usable system LevelDB memory environment; the Chain interface include and mempool/1p1c lint fixtures follow L7/L10. |
183
+ | `784b2af17a0c8c0fa7a8b1988e9da168983a3890`, `f74cc0433bc4d5fefff6d1542707f32c532a78ee`, `73c97862e2888d2a65ea3adc4eaa1e2e4e96a877` | Jaromil <jaromil@dyne.org> | L8 synchronized dynamic-dust publication/snapshot and changing-rate tests; consumers in L12 report the same authoritative state. |
184
+ | `f66eca4ae466e198fecd66cac22a0033918b12ec` | Jaromil <jaromil@dyne.org> | L6 accepted stable contract collection and source/provenance reconciliation. |
185
+ | `87c950de92ea1d5b35eef50c2230e9705ad9467b` | Jaromil <jaromil@dyne.org> | L7 strict policy grammar, scoped help/diagnostics and parser/startup tests; distinct source behavior change. |
186
+ | `b60a6e04d09b4e706b6c382b844b61cc97c9280c` | Jaromil <jaromil@dyne.org> | L12 additive effective-policy RPC/schema/parity tests; distinct source API change. |
187
+ | `10d772eb7f4b00b5193428a0dde4c06558d6c297` | Jaromil <jaromil@dyne.org> | L7 local valid-block/carrier interactions and parser fuzz; L8 penalty/carrier arithmetic and fuzz; L9 priority/fee/template interactions; L6 retains documented gaps until tests are ported. |
188
 
189
  Source-range authors are Jaromil and devjoinedthechat. Preserve their existing
190
  copyright/credit and upstream Core/Knots lineage; use retained source authorship
191
  and attribution in aggregate commit bodies. These thematic rewrites are not
192
  single-commit cherry-picks and must not fabricate an `-x` trailer.
193
 
194
+
195
  ## Input-stage verification
196
 
197
  Baseline evidence is tied to untouched Core commit
 
953
  | `5c210e17fb`, `9f1780f330`, `4570a6a547` | Adapted CI/platform/assurance entry points and maintained fixtures; retain v31 native cache actions, compiler profiles, build script and test runners. Feature-owned code/tests stay in their earlier themes. |
954
  | `9da5851410`, `26b691e4f3`, `201927c151`, `e819a07a4a`, `56e2894760` | Adapted additive classification, conservative scheduled-change gate, strict APT retry, optional-feature selection and branded archive checks. Broad platform jobs move to nightly/manual; no optional capability is retired. |
955
  | `83fa42a963`, `f5182f0e3a`, `7791eede50`, `11c84c39ef`, `0efa437e29`, `f2595557d9`, `38bc7ec2ce`, `df8aa8e2b7`, `ddae467a78`, `778ff50d19`, `c474825f96`, `17e1d484ab` | Kept/adapted final release-source/rehearsal, five-platform archives, COPYING, portable replay, trusted signing/new-draft-only and promotion-proof safeguards. Corrective source history is folded; expanded notices remain optional/deferred. The configured-version sub-aspect is also preserved in L13.1. |
956
+ | `b0b235d6a1`, `f4066e5282`, `30f673a4bc`, `a13f28e2f4`, `1517d925b2`, `628bdf4e38`, `02464df449`, `089888acdd` | Adapted relevant candidate identity, maintained workflow guidance, provenance and credit; existing upstream release notes remain historical. Final aggregate/range evidence stays L15. |
957
  | `1b73fe3d21`, `ec9db369f5`, `c592888088`, `9b778b9a23` | Remaining CI/build/GUI assertions are carried or adapted to v31 paths and the accepted owning-feature implementations; semantic source content is not reintroduced as a second chronological series. |
958
 
959
  PR/development execution now uses the existing `ci/test_run_all.sh` and native
 
1018
  `.gestalt/l13-integration`. L13.1 GUI/capture/manual evidence remains unchanged
1019
  and is reused. Full L13 acceptance and the final candidate/hosted matrix remain
1020
  later gates, rather than being inferred from these focused checks.
1021
+
1022
+ ## L15.1 repaired series audit
1023
+
1024
+ The audited implementation tip is
1025
+ `8e7ffad5d932e07c0c80f3756f7c3a442786877e`, tree
1026
+ `05dba633973f45bd3a3cf40fdad467443ff7fc89`. Both worktrees were clean at audit entry. The source and
1027
+ base objects above resolve exactly; `v31.1` still resolves to the authenticated
1028
+ annotated-tag object and peeled commit. This audit does not repeat online
1029
+ release discovery or substitute public-main changes for the accepted source.
1030
+
1031
+ ### History and attribution
1032
+
1033
+ The source range has 72 commits; the candidate range has nine accepted implementation
1034
+ commits. The proposed evidence-only tenth commit remains pending acceptance.
1035
+ The approved eleven-commit target is below 72 (61 fewer, about an 84.7%
1036
+ reduction); the eleventh L16 repair commit is also pending. No candidate merge, `fixup!` or
1037
+ `squash!` commit occurs after the new base. Each commit has exactly the previous
1038
+ theme as parent; the old Roots tip is not an ancestor. Upstream merges before
1039
+ the new base remain upstream history. The eleven-theme grouping includes the approved
1040
+ revision of the original seven-theme proposal: graph policy and mining were
1041
+ separated from local parsing/checks to isolate cluster accounting and residual
1042
+ template risks, followed by the authorized preservation repairs. Accepted historical commit descriptions still mentioning seven
1043
+ themes describe that earlier proposal, not additional commits to replay.
1044
+
1045
+ | Theme | Exact accepted commit | Aggregate responsibility |
1046
+ | --- | --- | --- |
1047
+ | L6 | `6a60180521daedbc404caf23a8c4a77bcb739de7` | Build/portability foundation and preserved contracts. |
1048
+ | L7 | `e5445b7c96193c7ec141705aac5ba96651e0ee30` | Scoped parsing, local checks, valid-block regressions and inherited fixture adaptations. |
1049
+ | L8 | `846c9de12a5e71259dc1ed829413d68f449ebfd5` | Native graph weight/modified fees, replacement/TRUC/reuse and authorized dynamic-dust repair. |
1050
+ | L9 | `0fbff64239358c69a266705b189770b0f5570ff3` | Priority prefix, residual native chunks, resource/reward interactions. |
1051
+ | L10 | `2cd5097c909d1ab2f8bf27eb0df97b24b6c0807e` | Peer resource/permissions, current-connection health and GUI evidence. |
1052
+ | L11 | `ab07fc5490af30ce7c6da1c137c8280d1f4815f0` | Descriptor/signer boundaries, per-send RBF, transient sweep and coin-control facts. |
1053
+ | L12 | `44c15f2cde7d36f2733814d6ab68ce148f1a7079` | Configuration/effective-policy, dormant statistics and resource safeguards. |
1054
+ | L13 | `2f8bedaf1c56b3647746773492cb0d6c81a33e86` | Identity/desktop/help, Git-native maintenance/export and verification cadence. |
1055
+ | L14 | `8e7ffad5d932e07c0c80f3756f7c3a442786877e` | Qt5 startup/persistence registration, configured benchmark default and safe empty-write repair with regressions. |
1056
+ | L15 | Pending | This preservation ledger, observed diagnostics and limitations; documentation acceptance only. |
1057
+ | L16 | Pending | Test-oracle/hosted-diagnostics repairs and final candidate gates under reduced verification. |
1058
+
1059
+ The full-object source ledger above covers exactly 72 distinct source commits,
1060
+ with no object outside the pinned range. Its 25 contract IDs equal the catalog's
1061
+ stable-ID set. Mixed source commits contribute to several themes; historical
1062
+ corrections are folded into their corrected final behavior. Reverted script work
1063
+ has no surviving consensus behavior. All source-range authors are Jaromil and
1064
+ devjoinedthechat. Their credit and Bitcoin Core/Knots lineage are retained;
1065
+ the new executor's aggregate authorship does not replace that attribution.
1066
+
1067
+ The user explicitly accepted the historical commit-body provenance deviation: L6 and L7 carry respectively
1068
+ nine and twelve full `Source-commit:` trailers. L8–L13 use narrative source
1069
+ references and the document ledger rather than those trailers. The full-object
1070
+ ledger makes that provenance resolvable without rewriting accepted history;
1071
+ L14 carries the three exact full source trailers. This is not a claim of historical trailer conformance or a fabricated cherry-pick `-x`.
1072
+
1073
+ ### Range comparison and aggregate inspection
1074
+
1075
+ The exact comparison is:
1076
+
1077
+ ```sh
1078
+ git range-diff --no-color \
1079
+ 49faec4f87f5cd19c88db01a82e5c68b087c8227..10d772eb7f4b00b5193428a0dde4c06558d6c297 \
1080
+ 9be056a8a72b624dae9623b2f7bded92c2a21c91..8e7ffad5d932e07c0c80f3756f7c3a442786877e
1081
+ git diff --binary 49faec4f87f5cd19c88db01a82e5c68b087c8227 10d772eb7f4b00b5193428a0dde4c06558d6c297
1082
+ git diff --binary 9be056a8a72b624dae9623b2f7bded92c2a21c91 8e7ffad5d932e07c0c80f3756f7c3a442786877e
1083
+ ```
1084
+
1085
+ Default range-diff similarity finds **zero syntactic pairs: 72 old-only and
1086
+ nine new-only entries**. That result is expected for many-to-one semantic
1087
+ aggregation, different Core APIs and feature-owned test/doc corrections; it is
1088
+ not evidence that 72 features disappeared. The full source ledger and thematic
1089
+ table explain those unmatched entries. No matching threshold was adjusted to
1090
+ manufacture apparent equivalence. The source aggregate changes 377 paths;
1091
+ the candidate aggregate changes 313. Path-count reductions likewise do not
1092
+ establish behavioral preservation.
1093
+
1094
+ The remaining aggregate source-only production paths were inspected explicitly:
1095
+
1096
+ | Source paths absent from the candidate delta | Disposition |
1097
+ | --- | --- |
1098
+ | `common/system.{cpp,h}`, `qt/clientmodel.cpp`, `rpc/server.cpp` | Native v31 monotonic uptime/startup display; only the reviewed uptime sub-aspect adopts upstream. |
1099
+ | `policy/coin_age_priority.{cpp,h}`, `kernel/CMakeLists.txt`, `validation.h` | Entry-age caches and legacy admission signatures are replaced by active-UTXO priority/coinage and native v31 admission APIs; no kernel priority source is needed. |
1100
+ | `policy/rbf.{cpp,h}`, `policy/truc_policy.{cpp,h}` | Legacy ancestor replacement/TRUC helpers are replaced by v31 cluster checks plus the configured gates in admission; Never/OptIn/Always and TRUC modes remain tested. |
1101
+ | `policy/fees.{cpp,h}` | v31 moved the estimator under `policy/fees/`; long-horizon estimates, hourly flushing, initialization and changing-rate tests use those native APIs. The source bool/const flush wrapper has no result-consuming production caller. |
1102
+ | `util/ioprio.{cpp,h}`, `util/mempressure.{cpp,h}` | Accepted omission of unused support, not a working pressure/I/O service or a whole runtime-resource retirement. |
1103
+ | `util/batchpriority.cpp`, `util/exception.cpp`, `logging.cpp`, `util/overflow.h` | Native v31 header/logging/arithmetic maintenance replaces the old implementation; no separate Roots operator interface is represented by these maintenance hunks. |
1104
+ | `util/check.{cpp,h}` | Native test-only assertion-to-exception hooks retain the required testing capability. |
1105
+ | `util/fs.{cpp,h}` | Native path bridge and lock-error checks; Windows exclusive-open/reparse/permission execution remains an unproved platform boundary, not a Linux pass. |
1106
+ | `util/strencodings.{cpp,h}` | Native restrictive subversion sanitization is retained; the source printable-character expansion is not imported. No raw or secret-bearing peer string is exposed. |
1107
+ | `protocol.h` | The source reserved filtered-witness enum/helpers have no source production consumer; they are not an active wire feature to add. |
1108
+ | `bench/mempool_stress.cpp` | Old cached coin-age/entry-constructor fixture arguments are unnecessary on v31's native entry API. L14 configured the benchmark profile and passed three bounded one-iteration smokes; this is not performance certification. |
1109
+
1110
+ Paths in this table are relative to `src/`. L14 adds `qt/optionsmodel.cpp`,
1111
+ `bench/blockencodings.cpp` and `streams.cpp` to the candidate delta; those three
1112
+ closed omissions are no longer source-only paths. Source-only upstream tests and
1113
+ documentation remain assigned to their owning source-ledger themes: v31 tests
1114
+ retain newer native assertions instead of replaying old constructor/ancestor
1115
+ fixtures; historical release notes, generated help and platform/job assumptions
1116
+ are not byte-replay targets. Exact per-source and aggregate path inventories
1117
+ are retained in the local audit evidence. New candidate-only production deltas
1118
+ are `dbwrapper.cpp` (system MemEnv header), `qt/forms/debugwindow.ui` (peer
1119
+ details), and `script/descriptor.{cpp,h}` plus `wallet/scriptpubkeyman.{cpp,h}`
1120
+ (native local-key satisfaction for sweep destinations). Those changes follow
1121
+ the accepted L6/L10/L11 responsibilities and source security boundaries.
1122
+
1123
+ Consensus/script-interpreter/block/kernel-chain files and embedded
1124
+ LevelDB/secp256k1/crc32c/minisketch subtrees are unchanged from the new base.
1125
+ `validation.cpp` from `bool CheckBlock(` to EOF is byte-identical to that base;
1126
+ native `txgraph.{cpp,h}` is unchanged. This bounds source placement; the local
1127
+ reject/valid-block tests remain the behavioral evidence. No new RDTS/BIP110
1128
+ consensus rule is claimed.
1129
+
1130
+ ### Implemented contract coverage and explicit decisions
1131
+
1132
+ These are candidate test entry points, not assertions that every configuration
1133
+ passed. The prior accepted theme gates are historical matching evidence;
1134
+ L15.2 owns documentation and preserved-evidence provenance checks. L16 owns
1135
+ the remaining repairs and reduced candidate gates; independent terminal
1136
+ acceptance is a subsequent root-owned review.
1137
+
1138
+ | Contract | Current disposition and candidate evidence |
1139
+ | --- | --- |
1140
+ | policy-parsing | Adapted strict scoped grammar; [unit tests](../src/test/policy_args_tests.cpp), [startup/precedence](../test/functional/feature_policy_args.py), [fuzz oracle](../src/test/fuzz/policy_args.cpp). |
1141
+ | effective-policy | Adapted initialized-state schema; [report/admission parity](../test/functional/rpc_effective_policy.py), [mempool units](../src/test/mempool_tests.cpp). |
1142
+ | policy-standardness | Adapted local limits/reasons; [transaction units](../src/test/transaction_tests.cpp), [sigop cases](../test/functional/mempool_sigoplimit.py), [local reject/valid blocks](../test/functional/mempool_roots_local_policy.py). |
1143
+ | policy-carrier | Adapted detection/budgets/native graph weight; [carrier cases](../test/functional/mempool_datacarrier.py), [transaction units](../src/test/transaction_tests.cpp), [subdust interactions](../test/functional/mempool_subdust_fee_penalty.py). |
1144
+ | policy-dust | Fixed rules retained and dynamic lifecycle repaired under explicit authorization; [dust thresholds](../test/functional/mempool_dust.py), [runtime](../test/functional/mempool_dynamic_dust.py), [publication units](../src/test/mempool_tests.cpp). |
1145
+ | policy-subdust | Adapted graph deficits with actual rewards unchanged; [functional arithmetic/reward matrix](../test/functional/mempool_subdust_fee_penalty.py), [documented conservative signed budgets](feature-contracts/subdust.md). |
1146
+ | policy-replacement | Adapted modes over native cluster economic checks; [RBF modes](../test/functional/mempool_rbf_policy.py), [TRUC](../test/functional/mempool_truc.py), [replacement units](../src/test/rbf_tests.cpp). |
1147
+ | policy-coinage | Adapted active-coin bounded age/maturity; [enabled/disabled/reorg/valid-block cases](../test/functional/mempool_roots_local_policy.py), [miner units](../src/test/miner_tests.cpp). |
1148
+ | policy-reuse | Adapted full-script staged/resident claims; [mempool units](../src/test/mempool_tests.cpp), [mode/reorg/replacement cases](../test/functional/mempool_graph_policy.py). |
1149
+ | mining-template | Adapted priority/residual chunks; [miner units](../src/test/miner_tests.cpp), [template limits](../test/functional/mining_roots_template.py), [joint rewards](../test/functional/mempool_subdust_fee_penalty.py). |
1150
+ | peer-controls | Adapted resources/permissions/clearnet controls; [bounded controls](../test/functional/p2p_roots_controls.py), [extras](../test/functional/p2p_compactblocks_extratxs.py), [permissions](../test/functional/p2p_permissions.py). |
1151
+ | peer-health | Adapted current facts/unavailable reset; [RPC](../test/functional/rpc_net.py), [actual GUI tests](../src/qt/test/apptests.cpp). Non-Linux CPU/rendering remains unproved. |
1152
+ | wallet-foundation | Adapted descriptor/SQLite and Unix FD boundary; [signer](../test/functional/wallet_signer.py), [multiwallet](../test/functional/wallet_multiwallet.py), [process units](../src/test/system_tests.cpp). Windows handle/fallback gaps remain explicit. |
1153
+ | wallet-rbf | Adapted wallet-derived per-send choice; [confirmation/PSBT tests](../src/qt/test/wallettests.cpp), [send](../test/functional/wallet_send.py). |
1154
+ | wallet-sweep | Adapted transient-key authorization and corrected local signing capability; [sweep](../test/functional/wallet_sweepprivkeys.py), [GUI](../src/qt/test/wallettests.cpp), [structural boundary checks](../ci/test/test_wallet_privacy_contract.py). No full memory-erasure/race claim. |
1155
+ | wallet-coin-control | Adapted wallet facts/invalidation; [GUI](../src/qt/test/wallettests.cpp), [send](../test/functional/wallet_send.py), retained populated visual matrix. |
1156
+ | runtime-config | Adapted text config and failure-safe writes; [getarg units](../src/test/getarg_tests.cpp), [configuration](../test/functional/feature_config_args.py), policy/effective-policy/sweep integrated precedence cases. |
1157
+ | operator-stats | Dormant model/schema retained; [model units](../src/stats/test/stats_tests.cpp). Only [monotonic uptime](../test/functional/rpc_uptime.py) adopts upstream; stats RPC remains unavailable. |
1158
+ | runtime-resources | Adapted preserving allocation/FD/GiB; [FS units](../src/test/fs_tests.cpp), [util units](../src/test/util_tests.cpp). Explicit accepted change: native RAM-aware cache default; unused advisory support omitted. |
1159
+ | build-portability | Adapted Qt5/6/system probes; [LevelDB finder tests](../test/cmake/test_leveldb.py), [profile guide](roots-build-portability.md). L14 covers Qt5 fresh-process settings persistence including early language reads. |
1160
+ | identity-desktop | Adapted Roots identity/assets/QR/taskbar conditions; [version tests](../test/cmake/test_identity.py), [QR/icon GUI tests](../src/qt/test/apptests.cpp), [receive/save](../src/qt/test/wallettests.cpp). Windows taskbar runtime unproved. |
1161
+ | maintenance-ci | Adapted affected fast checks and nightly/manual assurance; [selector tests](../ci/test/test_roots_regressions.py), [CI budgets](../ci/README.md). Local fixtures are not hosted/platform passes. |
1162
+ | maintenance-release | Retained/adapted immutable export/tag/source/archive/signature/new-draft safeguards; [tools and replay](../ci/release/README.md), maintained `ci/test` suite. No publishing/signing action authorized here. |
1163
+ | maintenance-docs | Adapted actual help/contracts/credit; [help lint](../test/lint/check-doc.py), regenerated config/manual parity and local links. |
1164
+ | maintenance-native | Adapted native APIs/test hooks; L14 preserves the configured compact-block benchmark and safe empty writes, including null-handle behavior. Reverted source work is not imported as consensus behavior. |
1165
+
1166
+ No whole feature contract is retired or silently dropped. Dormant statistics,
1167
+ the unconsumed Tor-subprocess declaration and unused resource helpers are not
1168
+ available services. Native v31 sweep fee APIs replace removed settxfee/paytxfee.
1169
+ The source script-reuse collision/staging, signer fallback, sweep local-key and
1170
+ config stream-failure gaps are documented corrected adaptations. Conservative
1171
+ graph aggregate budgets can reject some representable final states; this
1172
+ accepted restriction is explicit in the subdust contract rather than called
1173
+ exact mathematical equivalence.
1174
+
1175
+ ### Historical buildability evidence
1176
+
1177
+ Accepted-tree SHA256 comparison against durable theme snapshots matches
1178
+ 25/25 L6, 66/66 L7, 44/44 L8, 23/23 L9, 37/37 L10, 63/63 L11, 29/29 L12,
1179
+ 105/105 L13 and 8/8 L14 changed source paths. These snapshots bind the theme review
1180
+ commands and binary hashes; this audit did not rebuild nine historical trees.
1181
+ They establish the recorded profiles only:
1182
+
1183
+ | Theme | Matched historical coverage / limit |
1184
+ | --- | --- |
1185
+ | L6 | Headless wallet, IPC build and actual Qt5/6 build/CTest; IPC Python cases skipped without capnp, distribution system-library profiles not proved. |
1186
+ | L7 | Daemon/native units, applicable functional and scoped sanitizer/fuzz targets. The user accepted this historical gap: the standalone wallet was not covered by the limited target build; L8 subsequently moved the script-size global from node to common to repair its link. Thus L7 is not claimed fully buildable across default executables. |
1187
+ | L8 | Full configured headless wallet build, native/functional and bounded sanitizer/fuzz evidence after that link repair. |
1188
+ | L9 | Full configured headless build plus current miner tests; inherited fixtures corrected with focused reruns after the frozen sweep. |
1189
+ | L10 | Full configured headless build and real Qt5/6 health tests; benchmark profile was off; L14 subsequently repaired and verified its source assertion omission. |
1190
+ | L11 | Full headless and Qt5/6 configured targets; bounded signer/wallet sanitizers and authorization/visual cases. |
1191
+ | L12 | Full headless and Qt5/6 targets; bounded runtime/config/resource regressions. L14 subsequently restored and tested the source empty-write guard. |
1192
+ | L13 | Full headless/native/CTest/functional, actual Qt5/6 suites and maintenance tests. New minimal-backend Save fixture failed initially; only the interaction fixture changed and both full Qt suites reran successfully. |
1193
+ | L14 | Current full headless/native/CTest/functional and tool gates, Qt5/Qt6 full suites after early-startup regression repair, configured benchmark build and bounded stream sanitizer/benchmark checks. Exact provenance is retained in the repair snapshot. |
1194
+
1195
+ L13's frozen accepted evidence records 772 native cases, 156 CTest passes plus
1196
+ one external-assets skip, 278 functional passes plus 17 prerequisite skips,
1197
+ 21 Qt result rows per major and 125 maintained tool cases. Its 32 reviewed
1198
+ identity images and seven repeated manuals retain original hashes. Those
1199
+ results are historical provenance at the L13 tree, not a new L15.2 gate. The
1200
+ old pure dynamic-dust fuzz binary's matching arithmetic closure does not certify
1201
+ the entire current candidate. Optional hosted CI, Windows/macOS/32-bit,
1202
+ USDT/ZMQ/IPC interfaces, system-library distributions, extended/previous-release
1203
+ fixtures and full modern sanitizer/fuzz profiles remain unexecuted locally.
1204
+
1205
+ ### Closed repair findings and current evidence
1206
+
1207
+ L14 closes the three verified preservation omissions in one accepted repair
1208
+ commit, without rewriting the eight earlier accepted themes:
1209
+
1210
+ 1. **Qt5 display-unit persistence:** source
1211
+ `c5928880885a32510cfd716f4354117eeaf4d4dc` (Jaromil) registers
1212
+ `qRegisterMetaTypeStreamOperators<BitcoinUnit>()`. The candidate retains the
1213
+ source-style `OptionsModel` hook for standalone construction and additionally
1214
+ registers in `BitcoinApplication::RegisterMetaTypes` before translation
1215
+ settings are read. A constructor-only hook was insufficient because Qt5's
1216
+ earlier language read cached an invalid enum. The fresh-process regression
1217
+ writes language and each of four units, then reads language before model
1218
+ construction and checks the stored type/value before fallback. The enhanced
1219
+ Qt5 test first failed; final Qt5 and Qt6 full suites each passed 22 result
1220
+ rows with no skips, including eight writer/reader child processes per major.
1221
+ 2. **Benchmark profile:** source
1222
+ `4570a6a54770fbda04d9cd05197b6f4fd8f88546` (Jaromil) preserves the configured default.
1223
+ The compact-block benchmark now uses the Roots default 32,768 rather than
1224
+ asserting the old value 100. The configured benchmark profile builds and
1225
+ three one-iteration producer smokes pass. These are build/smoke evidence,
1226
+ not throughput or full benchmark campaign results.
1227
+ 3. **Safe empty AutoFile writes:** source
1228
+ `f5182f0e3a7c49c85abe6159af0a16d1b6ae8298` (Jaromil) retains the guard after null-handle
1229
+ validation. Empty writes no longer call `fwrite` or mark a valid stream
1230
+ written. Regression coverage preserves null-handle failure and empty-write
1231
+ behavior; the current Clang ASan/UBSan streams smoke passes 20 cases with
1232
+ leak detection disabled. It does not certify leaks or a full sanitizer suite.
1233
+
1234
+ The repaired candidate records 774 native cases, 156 CTest passes plus one
1235
+ external-assets skip, 278 functional passes plus 17 prerequisite skips, 22 Qt
1236
+ result rows per major, 125 maintained-tool cases and the three benchmark smokes.
1237
+ Exact command records, all eight repair source hashes, thirteen binary hashes,
1238
+ four build-cache hashes and fixture hashes are bound in the local L14 review
1239
+ snapshot. Its Qt-startup correction reuse proof binds unchanged headless code,
1240
+ eight binaries, three primary caches and 389 tracked functional fixtures; the
1241
+ headless gates were not repeated merely for Qt-only corrections. L15.2
1242
+ revalidates this provenance by hashing the unchanged sources, binaries, caches,
1243
+ fixtures and recorded logs; it does not rerun those suites. Earlier GUI
1244
+ captures and generated manuals retain their original artifact identities and
1245
+ limitations; none are relabeled as new captures.
1246
+
1247
+ Changed-scope include lint passes. Global include lint has two explicitly
1248
+ accepted preexisting findings: duplicate `QTimer` in
1249
+ `src/qt/test/wallettests.cpp` and the `cpp_int` include allowlist finding in
1250
+ `src/test/fuzz/tx_pool.cpp`. They remain disclosed for terminal review; no
1251
+ production cleanup is hidden in this documentation commit. Optional hosted CI,
1252
+ Windows/macOS/32-bit, USDT/ZMQ/IPC interfaces, system-library distributions,
1253
+ extended/previous-release fixtures and full sanitizer/fuzz campaigns remain
1254
+ unproved by these local gates.
1255
+
1256
+ The refreshed audit records exact range/aggregate artifacts, per-source
1257
+ path/author/disposition accounting, historical source matches and protected
1258
+ source comparisons. The L15.1 audit neither changes nor fetches any ref. Its
1259
+ before/after local source, candidate and public ref snapshots match. Prior
1260
+ publication was separately authorized: the root published the candidate and
1261
+ exact-base `review/core-v31.1` review branch and opened
1262
+ [draft PR 49](https://github.com/LuganoPlanB/bitcoin-roots/pull/49). Existing
1263
+ public release/main/tag refs remain outside this execution's write scope; the
1264
+ executor performs no push, release, promotion, signing or history rewrite.
1265
+ L15 documentation/export checks establish evidence integrity only. The separate
1266
+ L16 repairs and reduced candidate gates, then a fresh independent terminal
1267
+ review, remain required before whole-plan acceptance.
1268
+