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. Before is on the left; after is on the right. Unified view fits narrow screens more easily.
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 |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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.
|
| 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.
|