Rocko-authored, Filbert-reviewed inspector (r6 manifest a4a44930...) with full review/build/verdict evidence under docs/plans/reviews. 43/0 selftests, oracle zero-disagreement, foundation checker PASS. Owner A9 acceptance recorded separately.
17 KiB
FI-FILBERT-8 — r6 independent CODE verdict: APPROVED
APPROVED for the bounded offline-demo code gate only. Reviewer: filbert. Sole implementation author: rocko. Coordinator/follow-up: darkwing. Date: 2026-09-07. No competing assignment is known; I have not authored or fixed the implementation. Owner A9/demo acceptance remains a separate subsequent gate.
R5-1 is closed: all six exact prior Unicode witness pairs now have stable first failures. Independent broader-domain and interaction checks support the correction. No blocking inspector-code finding remains in this review. Two nonblocking qualifications below correct the byte-identity claim and preserve an auxiliary native-parser observation without mislabeling it as a passing check.
1. Exact reviewed identities and source boundary
| Input | SHA-256 / commit |
|---|---|
docs/plans/reviews/2026-09-07_foundation-inspector-rocko-build-manifest-r6.json |
a4a4493000aff5905337a643886ca36e7c5377d52deed77b8aeab7174ca73dcf |
docs/plans/reviews/2026-09-07_foundation-inspector-rocko-build-r6.md |
ee0e83efd7c71eddecf5e26f939e9a34ba85b184cfcd1cffac9ff9e56ea13c37 |
| Charter candidate 3 | 19b6721128a627a2032ffdb95ece2d50abe69a8f6d521e9eff8bbdaff22798b6 |
| Incorporated feasibility r2 §§5–13, subject to charter overrides | f2f47fcfe22dca79f10f885b83d87a2f846fdb560425a4e20705c40ce4a123e1 |
| Pattern/profile addendum | afe2980be2f91e701dae5af3018831ac5c300474f52bcc06e740ce5b5cc68ca5 |
| Pinned record schema | 05774aaf6943cb69c113e39ff1c29676a2a230ca7bf665c50dbcaa8049672af6 |
| Pinned checker | 82564a7d3200afcdda0850a9454cac6e6cd6a76687d2162c13cf214d7eac4607 |
| Owner offline-demo test-gate decision | 62cea74bea59e69f29c8a29a9c0311fdc6feffa2c337bc6a141db55149204898 |
| Preserved r5 NOT APPROVED verdict | 154e7b5d804c059d6fec4c936c78e4ae33bb7fc273ba3a5eec7b00d0a9ce1e59 |
| Source/schema baseline | d4696d09eb1b5dcf1028f30db2cd63735f51cb16 |
| Measured integration HEAD | 9a5fbdbda74b16adf488fe28138b2ba69ea5e669 |
Independently verified before execution and rechecked at 2026-09-07T15:48:19Z: 382 distinct regular candidate files, exact allowlist/no extras, sizes, modes, SHA-256s, all six aggregates, report/manifest hashes and every pinned input. Both shared candidate and exported copies pass. HEAD remains unchanged. This uncommitted code is bound by the manifest, not falsely claimed to be committed at that HEAD.
Export: /tmp/fi-filbert-8.ehrv19oo.
Separate harness/evidence: /tmp/fi-filbert-8.ehrv19oo-evidence.
Compared with r5: five candidate files changed, thirteen fixtures added, none removed.
The CLI, strict parser, mock canonicalizer, oracle and other unchanged implementation
paths retain their verified prior identities; changed source/tests/generator were
inspected before execution.
The working-tree scripts/agent.sh and docs/TOOLS.md modifications were excluded.
Required integration dependencies were exported from the committed baseline. The
relevant agent/common/auth/config/conductor scripts, three authorized legacy tests,
package/RELEASE/policy/README dependencies have no committed difference between that
baseline and measured HEAD. Approval does not cover unrelated working-tree or
native/fleet/goal changes, nor a deployment of the entire current working tree.
2. Findings and dispositions
1. R5-1 / F5 — CLOSED: total ordering tie-break
Frozen scripts/foundation/resolve.mjs SHA-256:
c4951014828080caf9a5038845104afdac02465af10e94a2fddd3558b29621a3.
orderingForm at approximately lines 730–739 replaces the partial ASCII
canonicalizer in stableOrder's tie-break at approximately 755–770.
Over the actual strict-parser domain, it preserves scalar distinctions, Unicode strings, array order and object members while sorting object keys by UTF-16 code unit. Safe integer bounds, paired surrogates, dense arrays and bounded acyclic objects are supplied by the parser; arbitrary JavaScript objects/nonfinite numbers/getters are not claimed as supported inputs to this helper. The former exception-to-empty- string collapse is gone. No normalization, case folding or new Unicode ban appears. The ordering form is internal, not a digest or emitted record body.
I reran the exact twelve prior Unicode witness files, checking their input hashes against the prior review receipts. All four unkeyed-family pairs now return exit 2 / shape-type-mismatch; both equal-key pairs return exit 2 / shape-unknown-field in both orders. The four prior ASCII control pairs also remain stable.
Independent extension beyond writer examples:
- 2,540 strict-parser values, including safe-integer extrema, all JSON types, NFC/NFD/case distinctions, BMP/non-BMP strings and keys, escaped controls, prototype- named keys, numeric-looking keys, maximum-length strings, 1024-member arrays/objects and depth-32 structures. Forms matched an independently implemented Python UTF-16-key-sorted reference for every value; 1,663 distinct structural values/forms had no collisions. Strict-parser round trips and input immutability passed.
- 120 evaluations: all 24 permutations of four further malformed entries in each of the five inventory families; emitted first outcomes remained stable.
- Ten additional equal-key malformed-record pairs / twenty CLI runs spanning Unicode and escaped control display names. Competing enum/missing-field failures matched the first entry independently predicted by Python's ordering reference; all pre-admission nulls remained intact.
These are finite compatibility/regression measurements, not exhaustive proof.
2. NONBLOCKING — “byte-identical” should say structurally equal parsed values
The report §§2.2/3(a), stableOrder comment and test wording overstate the final
index fallback. For example, raw {"é":1,"a":2} and
{"a":2,"\u00e9":1} have different bytes and insertion orders but the same
ordering form. I independently asserted this distinction and the index tie.
That is correct for JSON object structural equality: member order, whitespace and escape spelling do not create different values. Array order and distinct string values remain significant. Thus this is a prose qualification, not a reopened code ordering defect. Future reports/comments should use “structurally equal parsed values,” not claim byte identity or general JCS conformance. No file was fixed here.
3. NONBLOCKING, scoped verification observation — native JSON.parse round trips
An auxiliary warm-run test initially failed a native JSON.parse/deep-equality
round-trip comparison. With all anomalies retained, 19 of the 2,540 comparisons
showed native reparse discrepancies involving object keys. For the initial case,
Python confirmed the raw input, strict-parser serialization and ordering form were
structurally equal; a separate cold native probe did not reproduce that discrepancy.
The full rerun independently verified every ordering form against Python, and
strict-parser round trips passed. Detailed raw/form/native-reparse evidence is saved
in domain-native-disagreements.json; underlying native-runtime cause is not claimed
as diagnosed or fixed.
This is not relabeled as a passing native-parser test or a waived schema mismatch.
The required pinned record oracle was unmodified and independently reported zero
schema disagreements. Production inspector/strict-parser/resolver/canonicalizer
paths do not call native JSON.parse; their inspected parsing path uses parseStrict.
The observed auxiliary native-reparse behavior therefore does not demonstrate an
inspector-code defect or invalidate the independent form/reference comparison.
Approval remains limited to the tested offline inspector, not general native JSON
parsing, the platform or a live runtime. Preserve this evidence for separately
scoped follow-up rather than asserting universal parser equivalence.
3. Retained original findings and A1–A8
The original nine F1–F5 witness inputs were also rerun unchanged. Actual outcomes:
| Finding | r6 disposition |
|---|---|
| F1 declarations | Missing agent registry declarations: exit 3 / missing-state / registry-declaration-missing. Undeclared dependency authorization: exit 3 / missing-state / authorization-undeclared. Closed. |
| F2 work.read | Assigned task-only change and task-only proposal refuse consulted-work-not-readable; taskless positives preserved. Closed. |
| F3 issuer narrowing | Original issuer-denies-work.read witness refuses consulted-work-not-readable in original requester context; both narrowed contexts remain checked. Closed. |
| F4 exact-revision cycles | Original acyclic history allowed; stale selection subsequently reaches assignment-stale. Genuine-cycle/precedence fixtures pass. Closed. |
| F5 ordering/message | Original shape-order pair and message priority corrected; all R5-1 pairs now corrected with broader coverage above. Closed, subject to structural-equality wording qualification. |
| F6 ownership evidence | Maintained UID/GID checks and independent ownership-inclusive inventories pass. Closed. |
The new fixed registry-declaration-missing diagnostic retains the reviewed admission- stage exit-3 missing-state semantics. Eight independently rerun interactions preserve structural/duplicate/profile/unsupported-operation precedence ahead of missing external declarations, message priority, history/currentness and Unicode positives.
| Acceptance group | Independent disposition within tested scope |
|---|---|
| A1 | Positive read/assigned-change previews, exact text/JSON goldens, disclaimers and bounded no-effects checks pass. |
| A2 | Missing registration/cross-project selection refusals, no fallback and body-free privacy checks pass. |
| A3 | Reference, duplicate, ownership, continuity and revision-exact cycle tests pass; detector and CLI precedence remain distinct. |
| A4 | Mandatory and optional policy layers, role/issuer/task/mission/execution narrowing, paths and no-assignment union tests pass; original F1–F3 witnesses corrected. |
| A5 | Parser/format/bounds negatives, zero-waiver record oracle, strict production identity profile and permitted Unicode/free-text controls pass tested domains. |
| A6 | Static I/O/import limits, descriptor tests, canaries and unchanged ownership-inclusive inventories pass; no containment/no-reads proof claimed. |
| A7 | Both requester contexts, issuer rechecks, original-selection retention and negative/unresolved-only reassignment tests pass; no allowed reassignment branch. |
| A8 | Closed output/exit classes, escaped diagnostics, pre-admission nulls and stable first-failure tests pass, with equality wording and auxiliary native-parser limits above. |
C1–C5 remain closed for the reviewed candidate: corrected demo identity/copy equality; genuine pinned schema agreement plus separate production profile; exactly twelve serialized fields and process exit separate; saved-before versus after inventories; required O_RDONLY/O_NOFOLLOW/O_NONBLOCK and FIFO refusal. No O_CLOEXEC, authentic permission, runtime reconciliation or complete schema-equivalence claim is added.
4. Actual commands, results and evidence
Commands inspected first; all candidate executions used the isolated export.
Measured versions: Node v26.8.1, Python 3.12.8, jsonschema 4.26.0.
The pinned year-999 strftime('%Y') witness remains 999.
From the export, with env -i, synthetic HOME/TMPDIR,
PYTHONDONTWRITEBYTECODE=1, NO_COLOR=1, and PATH
/home/jwoltje/.pyenv/versions/3.12.8/bin:/usr/bin:/bin:
| Command | Actual result |
|---|---|
node --test scripts/foundation/ |
Exit 0; 80 passed, 0 failed, 0 skipped |
bash scripts/test-foundation.sh |
Exit 0; 43 passed, 0 failed; fixture regeneration only in disposable scratch |
python3 scripts/foundation/verify-schema.py |
Exit 0; 1568 records; 540 agree-valid, 991 agree-invalid, 0 disagreements; 27 parser-bound and 10 unsupported-kind unassessed; 510 profile-valid/30 profile-invalid; 73 named probes verified |
python3 docs/plans/foundation-v1-candidate/check.py |
Exit 0; all pinned author checks pass, including 38 record shapes, 16 paths, 7 restricted fingerprints, 155 runtime/artifact shapes and 35 synthetic model cases; not runtime enforcement |
python3 integration.py independently ran the committed non-live tests in a separate
<evidence>/integration-fixture copy: bash scripts/test-config.sh 24/0,
bash scripts/test-auth.sh 15/0, bash scripts/test-conductor.sh 17/0
passed/failed, each exit 0. The authorized seed/clone/commit/reset operations occurred
only inside disposable conductor test repositories. Git global/system configuration
was disabled; HOME/TMPDIR were synthetic. Engine/network-command guards were never
invoked and did not substitute simulated successes. Auth data were fabricated test
canaries, not actual credentials.
Additional scratch commands and receipts:
python3 reproduce.py: exit 0; 29 exact prior inputs, covering nine original findings, six Unicode pairs and four ASCII pairs; preserved hashes checked.python3 domain-probes.py: initial auxiliary native-round-trip assertion failed; preserved indomain-probes.log. The instrumented rerun, logged separately indomain-probes-rerun.log, exited 0 after recording all native anomalies and independently checking all 2,540 forms with Python and strict-parser round trips. No candidate code or mandatory oracle was changed.python3 equal-key-probes.py: twenty final CLI checks pass, exit 0. The first reviewer harness expected type-mismatch for numeric status; the established enum checker emits enum-mismatch. That reviewer expectation was corrected and the original failed log preserved; the candidate was unchanged.python3 profile-probes.py: exit 0; 831 typed single-final-LF probes refuse exit 2 / profile-pattern-mismatch with selection/operation/proposal/diagnostic null; multiline objective remains allowed.python3 interactions.py: exit 0; eight independent interactions pass.python3 non-effect.py: exit 0; fifteen text/JSON/parser/I/O/usage runs; sixteen unchanged path/type/size/mode/UID/GID/inode/mtime-ns/content-or-symlink-target entries. Observed roots and harness output are separate; no synthetic canary output.python3 recheck.py: exit 0; final shared/export identities, all pins and HEAD pass.
Selected hashes, relative to /tmp/fi-filbert-8.ehrv19oo-evidence:
| Artifact | SHA-256 |
|---|---|
node-tests.log |
ca295bd80df32558d8d75d48c336ca6cc68bc74edb754ca4e5875247f8015c8d |
selftest.log |
e856f3fd68bcca7442f809e7a53af4aa674fd6483486120d429917688c4216a2 |
oracle.log |
40e7311b1aed62c12aaba4ad4dd9eca3d43b46b2785f1abc4263be9d85e93653 |
integration-receipts.json |
9f576d011b598fab9ac03c56ee68bf0d1ba5eba902d15a22a4742ebe06e8afcb |
reproduction-receipts.json |
a2677c32068ee62bd4bbdda89f44432252eeabfb6e433c97fccc28ff71d6b258 |
domain-summary.json |
edd9c1f7f03d8c9249bf2c3627cd1c7c706c6cd90aefc24f67da7f655ccaa8cf |
domain-native-disagreements.json |
395ae878a3edfe481b22511d720d00e20064c5806f44cf95e597e8324fb3a254 |
equal-key-receipts.json |
22f257f9145de8852255a547b14d79115d080f38bfbbcfde30c024c4afeb5ff3 |
profile-probe-receipts.json |
6c067bcd6c4d88482b410e4e91f228ae5ef293156670b32c13d88544bcba463a |
inventory-before.json and inventory-after.json (identical) |
494f2dbf66a48d3aba5c6731508859b05414c80a52a855708a2859dc5f5df57c |
recheck.log |
c121172527c5ccb47e4ca6f9d5fb820a1d3580610bba2d34fb61aca9247d3f44 |
Scratch is local/disposable evidence, not durable repository publication.
5. Deferrals, limits and return
test-task.sh and test-release.sh: NOT RUN / DEFERRED under Jason's offline-demo ruling. They are not green or fully covered. Full deployment/integration testing remains a later gate before dependent live runtime work. The historical correction that r3 ran live branches remains in force; this decision does not retroactively authorize or relabel those actions. No live branches were executed here.
Finite tests/static review/inventories do not prove OS containment, absence of every read, complete schema/native-parser equivalence, authentic delegation, crash safety, parent-path containment or protection against same-size concurrent mutation. Only Node v26.8.1 was executed. Approval covers no generalized JavaScript-call domain outside strict-parser-produced values and no runtime permission engine.
No code fixes/co-authorship, dependency installation, shared staging/index/commit/
checkout/reset/push, provider/engine/container/network/native/sync/live-data work or
actual credential/HOME/~/.mosaic investigation occurred. Git mutations were solely
the authorized disposable conductor fixtures. This verdict is the only repository
write for FI-FILBERT-8; prior evidence and unrelated owner modifications are preserved.
Return to darkwing: APPROVED at the exact r6 manifest for the bounded offline-demo code gate. Carry the nonblocking qualifications and deferred tests into the handoff. Jason's separate A9 acceptance is still required. No automatic demo acceptance, push, issue closure, live/dependent implementation, reassignment, timer or deadline follows.