v31.1-roots.1 · Commit 11: [PATCH 11/17] fix(test): bound policy oracles and retain CI diagnostics
doc/roots-v31-port-review.md
Before: doc/roots-v31-port-review.md · After: doc/roots-v31-port-review.md
File metadata
index 3c884d320c6e229806526260e86c8fe52dc7b9f5..585a1ca3dfd840536b5abed0ce4223a74a2f1a97 100644
Download original patch · Release notes
Diff rows 1–88 of 88. 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
|
@@ -1368,3 +1368,88 @@ and the export fixture tag belong to that clone; candidate refs are unchanged.
|
|
|
1368
1368
|
After an eventual accepted L15 commit, documentation tree/artifact identity is
|
|
1369
1369
|
checked again. This is export integrity evidence, not release, signing,
|
|
1370
1370
|
promotion, hosted-matrix or whole-candidate acceptance.
|
|
1371
|
+
|
|
1372
|
+
## L16.1 ordinary oracle and diagnostic repair evidence
|
|
1373
|
+
|
|
1374
|
+
The test-only decimal validator now iterates the `char` representation supplied
|
|
1375
|
+
by `std::string_view` and rejects everything outside ASCII `0` through `9`
|
|
1376
|
+
before converting a digit. The independent dynamic-dust oracle keeps its
|
|
1377
|
+
multiprecision multiplication, floor division and clamping. Its final signed
|
|
1378
|
+
conversion handles both bounds explicitly, returns `INT64_MIN` directly and
|
|
1379
|
+
converts only representable positive magnitudes before applying a negative sign.
|
|
1380
|
+
Neither oracle calls the production parser or scaling implementation to derive
|
|
1381
|
+
its expected result. Production policy is unchanged.
|
|
1382
|
+
|
|
1383
|
+
The shared test-only helpers are covered by `roots_policy_oracle_tests.cpp`,
|
|
1384
|
+
registered in the native unit target. The same two ordinary Boost test cases
|
|
1385
|
+
were built and run in an isolated executable, with both signed and unsigned
|
|
1386
|
+
`char` defaults, preserving the established candidate build trees and binaries.
|
|
1387
|
+
They cover signed limits and adjacent values, saturation, negative floor
|
|
1388
|
+
division, decimal grammar/overflow and all 256 byte values, including embedded
|
|
1389
|
+
NULs. This is focused ordinary coverage, not execution of a fuzz target.
|
|
1390
|
+
|
|
1391
|
+
CI now forwards and bind-mounts an explicit `ROOTS_ARTIFACTS_DIR` at the same
|
|
1392
|
+
host/container path. Command logs, result JSON and crash artifacts use that
|
|
1393
|
+
directory, as do workflow uploads. Failure summaries identify the command or
|
|
1394
|
+
target, exit status and full log path, with a bounded tail; complete output is
|
|
1395
|
+
retained in the artifact. Ordinary helper fixtures demonstrate the generated
|
|
1396
|
+
mount/environment contract, host-visible failed-run output and result files,
|
|
1397
|
+
timeout handling and bounded summaries. They mock Docker and do not establish
|
|
1398
|
+
an actual hosted upload or hosted test pass.
|
|
1399
|
+
|
|
1400
|
+
The original seven-pass/two-failure local result and historical hosted failure
|
|
1401
|
+
above remain unchanged evidence. `dynamic_dust_fee` and `policy_args` are
|
|
1402
|
+
**not rerun under instrumentation**. No further fuzz execution, sanitizer
|
|
1403
|
+
campaign, saved-input replay or hosted substitute was performed. The old fuzz
|
|
1404
|
+
binary therefore does not contain these repairs; its prior results cannot be
|
|
1405
|
+
reused as passing verification of the changed oracle sources. L16.2 owns the
|
|
1406
|
+
remaining ordinary candidate gates and provenance reconciliation before review.
|
|
1407
|
+
|
|
1408
|
+
## L16.2 reduced candidate gates
|
|
1409
|
+
|
|
1410
|
+
The repair starts from accepted L15 commit
|
|
1411
|
+
`0c0d2f1bf2e70f85e93423b61d1acd9b0b327578`. Current ordinary maintenance
|
|
1412
|
+
verification runs all **128 cases** successfully, superseding the earlier
|
|
1413
|
+
125-case result for that scope. Both isolated ordinary oracle cases pass with
|
|
1414
|
+
signed and unsigned `char` defaults. Fresh uninstrumented CMake configuration
|
|
1415
|
+
also registers `roots_policy_oracle_tests` in the native CTest manifest; this
|
|
1416
|
+
configuration check does not claim a rebuilt full native test executable.
|
|
1417
|
+
|
|
1418
|
+
Reconciliation matches all eight accepted repair-source hashes, thirteen
|
|
1419
|
+
binary hashes, four cache hashes and seventeen prior command-log hashes.
|
|
1420
|
+
All 389 functional fixtures, the native-stream fixture and three Qt fixtures
|
|
1421
|
+
match. Of 60 maintenance fixtures, six changed CI/helper files are covered by
|
|
1422
|
+
the fresh full maintenance run; 54 retain matching hashes. Production sources
|
|
1423
|
+
are unchanged since accepted L14. The earlier 774 native cases, 156 CTest
|
|
1424
|
+
passes plus one skip, 278 functional passes plus 17 skips, 22 Qt result rows
|
|
1425
|
+
per major and three benchmark smokes retain their original tested scope and
|
|
1426
|
+
limitations. The added native suite is verified separately rather than being
|
|
1427
|
+
claimed as part of those older binaries. Prior stream sanitizer evidence is
|
|
1428
|
+
preserved as historical coverage, without another instrumented run.
|
|
1429
|
+
|
|
1430
|
+
Current documentation, shell lint, header guards, Python syntax, scoped
|
|
1431
|
+
include checks and whitespace checks pass. The preexisting global include
|
|
1432
|
+
findings remain: duplicate `QTimer` and the missing `cpp_int.hpp` allowlist
|
|
1433
|
+
entry. The new ordinary oracle unit tests use that same existing Boost
|
|
1434
|
+
multiprecision dependency; this is explicitly not a clean global include-lint
|
|
1435
|
+
claim.
|
|
1436
|
+
|
|
1437
|
+
Portable export/replay uses an isolated eleven-commit snapshot of the exact
|
|
1438
|
+
seventeen-file repair scope, including both new C++ files. Staged snapshot
|
|
1439
|
+
blobs match the working-tree files. `git am -3 --keep-cr` reproduces every
|
|
1440
|
+
product path, excludes `.github/**` from the patch and leaves Core hosting
|
|
1441
|
+
files unchanged. Source accounting remains 72 exact commits/authors and 25
|
|
1442
|
+
contract dispositions, including the accepted L7 build gap and L8–L13 trailer
|
|
1443
|
+
exceptions. All snapshot commits, refs and the fixture tag exist only in a
|
|
1444
|
+
disposable clone; protected candidate/source refs and accepted history are
|
|
1445
|
+
preserved.
|
|
1446
|
+
|
|
1447
|
+
A read-only hosted refresh still finds draft PR 49 at remote head
|
|
1448
|
+
`8e7ffad5d932e07c0c80f3756f7c3a442786877e`, with historical PR Tests run
|
|
1449
|
+
`38249608708` completed unsuccessfully. The local L15 documentation and L16
|
|
1450
|
+
repairs have no hosted test result. No omitted campaign or substitute job was
|
|
1451
|
+
dispatched. Final acceptance uses the approved reduced scope: the original
|
|
1452
|
+
seven-pass/two-failure record remains, the two repaired targets are **not rerun
|
|
1453
|
+
under instrumentation**, and the hosted failure's underlying cause remains
|
|
1454
|
+
unidentified. L16 review/commit and a later independent terminal review remain
|
|
1455
|
+
separate gates; this evidence does not authorize publication or promotion.
|