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 401–502 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. The two line-number columns refer to before and after.
doc/roots-v31-port-review.md
CHANGED
|
@@ -1007,3 +1018,353 @@ binary/tool-test/export hashes are local evidence under (continued)
|
|
|
1269
|
+
|
|
1270
|
+
## L15.2 provenance, observed failures and approved handoff
|
|
1271
|
+
|
|
1272
|
+
The evidence-only working tree is based on implementation HEAD
|
|
1273
|
+
`8e7ffad5d932e07c0c80f3756f7c3a442786877e` and Core base
|
|
1274
|
+
`9be056a8a72b624dae9623b2f7bded92c2a21c91`. The current reuse check compares
|
|
1275
|
+
all eight L14 repair-source hashes, thirteen binary hashes, four build-cache
|
|
1276
|
+
hashes, 453 fixture hashes (389 functional, 60 maintained-tool, one native-stream
|
|
1277
|
+
and three Qt) and seventeen command-log hashes with the accepted repair snapshot.
|
|
1278
|
+
Matched evidence retains its original commands, skips and profile limitations;
|
|
1279
|
+
no full unit, functional, Qt or sanitizer suite was rerun for this documentation
|
|
1280
|
+
change. The older dynamic-dust arithmetic-closure pass remains historical,
|
|
1281
|
+
limited evidence and does not supersede the current failures below.
|
|
1282
|
+
|
|
1283
|
+
| Matched accepted evidence | Result and scope |
|
|
1284
|
+
| --- | --- |
|
|
1285
|
+
| Native unit suite | 774 passing cases. |
|
|
1286
|
+
| CTest | 156 passes; one external-assets skip. |
|
|
1287
|
+
| Functional suite | 278 passes; 17 prerequisite skips, detailed below. |
|
|
1288
|
+
| Qt5 and Qt6 | 22 passing result rows per major, including fresh-process persistence probes; no skips. |
|
|
1289
|
+
| Maintained tools | 125 passing cases. |
|
|
1290
|
+
| Stream ASan/UBSan smoke | 20 passing cases with leak detection disabled; prior bounded stream evidence only. |
|
|
1291
|
+
| Compact-block benchmark | Three one-iteration smokes; no throughput claim. |
|
|
1292
|
+
|
|
1293
|
+
The 17 functional skips comprise uncompiled benchmark and chainstate tools
|
|
1294
|
+
(two), missing Python ZMQ (one), disabled USDT tracepoints (five), unavailable
|
|
1295
|
+
previous releases (five), external routable-address prerequisites (two) and
|
|
1296
|
+
uncompiled IPC (two). Previous-release cases are
|
|
1297
|
+
`wallet_backwards_compatibility.py`, `mempool_compatibility.py`,
|
|
1298
|
+
`feature_unsupported_utxo_db.py`, `feature_coinstatsindex_compatibility.py` and
|
|
1299
|
+
`wallet_migration.py`; IPC cases are `interface_ipc.py` and
|
|
1300
|
+
`interface_ipc_mining.py`. The earlier functional benchmark skip remains recorded
|
|
1301
|
+
although a later configured benchmark build and three smokes passed.
|
|
1302
|
+
|
|
1303
|
+
### Existing current-target diagnostic results
|
|
1304
|
+
|
|
1305
|
+
Before the reduced-verification instruction, the current-source local fast run
|
|
1306
|
+
completed all nine selected targets with five-second per-target budgets, seed 1,
|
|
1307
|
+
maximum input length 4096 and a 2048 MiB RSS limit. Its preserved result record
|
|
1308
|
+
reports **seven passes and two failures**, with no omitted target in that run:
|
|
1309
|
+
|
|
1310
|
+
| Target | Observed exit | Result |
|
|
1311
|
+
| --- | --- | --- |
|
|
1312
|
+
| `dynamic_dust_fee` | 1 | Fail: Boost multiprecision signed-bound conversion in the reference oracle reports unsigned-integer-overflow. |
|
|
1313
|
+
| `policy_args` | 1 | Fail: decimal-validator char conversion reports implicit-integer-sign-change at `src/test/fuzz/policy_args.cpp:37`. |
|
|
1314
|
+
| `process_message` | 0 | Pass within the bounded local run. |
|
|
1315
|
+
| `psbt` | 0 | Pass within the bounded local run. |
|
|
1316
|
+
| `script` | 0 | Pass within the bounded local run. |
|
|
1317
|
+
| `string` | 0 | Pass within the bounded local run. |
|
|
1318
|
+
| `subdust_fee_penalty` | 0 | Pass within the bounded local run. |
|
|
1319
|
+
| `tx_pool` | 0 | Pass within the bounded local run. |
|
|
1320
|
+
| `txgraph` | 0 | Pass within the bounded local run. |
|
|
1321
|
+
|
|
1322
|
+
These results belong to the existing local Clang 19 current-source build with
|
|
1323
|
+
`fuzzer,address,undefined,float-divide-by-zero,integer` instrumentation,
|
|
1324
|
+
`-ftrivial-auto-var-init=pattern` and IPC disabled. Hosted CI uses Clang 22;
|
|
1325
|
+
matching sanitizer names do not establish compiler/profile equivalence. The
|
|
1326
|
+
Boost diagnostic is in `cpp_int/misc.hpp:1303`, reached by the oracle conversion
|
|
1327
|
+
at `src/test/fuzz/tx_pool.cpp:574`; it is not a demonstrated production-policy
|
|
1328
|
+
failure. These observed failures are preserved, unresolved at the L15 tree,
|
|
1329
|
+
and cannot be relabeled as passing by using the older arithmetic-only binary.
|
|
1330
|
+
No failing input was replayed during this documentation reconciliation.
|
|
1331
|
+
|
|
1332
|
+
The preserved hosted observation for draft PR 49 is fuzz job `114814967702`
|
|
1333
|
+
in run `38249608708`, exit 1, with no uploaded per-target diagnostics. The
|
|
1334
|
+
historical hosted failing target remains unidentified. Existing inspection found
|
|
1335
|
+
per-target output in container scratch while artifact upload searched a host
|
|
1336
|
+
path; L16 owns diagnostic transport repair. The local failures do not establish
|
|
1337
|
+
the cause of that hosted failure. Hosted lint success is separate from the two
|
|
1338
|
+
accepted preexisting global include-lint findings disclosed above.
|
|
1339
|
+
|
|
1340
|
+
### Reduced verification and remaining ownership
|
|
1341
|
+
|
|
1342
|
+
On 2026-10-12 the user explicitly removed further fuzz execution, sanitizer
|
|
1343
|
+
campaigns and saved-input reproducer replays from remaining work and acceptance.
|
|
1344
|
+
No hosted substitute is authorized for those omitted actions. Reduced coverage
|
|
1345
|
+
is an accepted limitation, not a passing result. The existing nine-target
|
|
1346
|
+
results and failure logs remain evidence; no new instrumented pass is required
|
|
1347
|
+
or asserted. Following the planned L16 repairs, the affected targets must be
|
|
1348
|
+
reported as **not rerun under instrumentation**.
|
|
1349
|
+
|
|
1350
|
+
L16 separately owns safe signed-bound handling including `INT64_MIN` in the
|
|
1351
|
+
independent dynamic-dust reference oracle, explicit decimal-validator character
|
|
1352
|
+
conversion, host-visible failure artifacts and bounded console diagnostics.
|
|
1353
|
+
Its required verification uses ordinary focused unit/maintenance/CI-helper tests,
|
|
1354
|
+
source review, relevant lint, matched prior full-suite evidence and portable
|
|
1355
|
+
export/replay parity. Neither production-policy changes nor broad sanitizer
|
|
1356
|
+
suppression are part of this disposition. Final candidate acceptance belongs
|
|
1357
|
+
to L16 followed by fresh terminal review; acceptance of L15 only approves the
|
|
1358
|
+
accuracy and integrity of this documentation.
|
|
1359
|
+
|
|
1360
|
+
Current documentation checks verify the complete source/author ledger, 25
|
|
1361
|
+
contract dispositions, local links, option documentation, whitespace and exact
|
|
1362
|
+
single-document dirty scope with an empty index. An isolated disposable clone
|
|
1363
|
+
snapshots the intended documentation tree for portable export/replay using
|
|
1364
|
+
`git am -3 --keep-cr`: product paths match that snapshot, `.github/**` remains
|
|
1365
|
+
excluded from the patch and at the Core base on replay, and Jaromil and
|
|
1366
|
+
devjoinedthechat credit remains present. All temporary snapshot commits, refs
|
|
1367
|
+
and the export fixture tag belong to that clone; candidate refs are unchanged.
|
|
1368
|
+
After an eventual accepted L15 commit, documentation tree/artifact identity is
|
|
1369
|
+
checked again. This is export integrity evidence, not release, signing,
|
|
1370
|
+
promotion, hosted-matrix or whole-candidate acceptance.
|