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.
16 KiB
FI-FILBERT-7 — r5 independent CODE verdict: NOT APPROVED
Scope: bounded offline-demo code gate, not deployment or owner acceptance. Reviewer: filbert. Sole code author: rocko. Coordinator/follow-up: darkwing. Date: 2026-09-07. No competing assignment is known; no implementation authorship.
All nine original F1–F5 witness inputs now produce corrected results. All executed required suites pass. F5 nevertheless remains open: the new content tie-break collapses distinct Unicode entries to the same fallback and again makes the emitted first failure depend on inventory order. Six independent reversed-order witness pairs demonstrate this. This is a deterministic-refusal defect, not a real permission grant or demonstrated runtime-security exploit.
1. Exact candidate, authority and identity checks
| Input | SHA-256 / commit |
|---|---|
r5 manifest docs/plans/reviews/2026-09-07_foundation-inspector-rocko-build-manifest-r5.json |
a63bb103e4cfe51bbd8a42cd95545f935ac83c1da51cf469298375cf94ced135 |
r5 report docs/plans/reviews/2026-09-07_foundation-inspector-rocko-build-r5.md |
17c67427dfdf1bc5dac491c4d0223928e87fdfc67a26175ac239eb2b2f7b7dec |
| 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 demo test-gate decision | 62cea74bea59e69f29c8a29a9c0311fdc6feffa2c337bc6a141db55149204898 |
| Source/schema baseline | d4696d09eb1b5dcf1028f30db2cd63735f51cb16 |
| Measured integration HEAD | 9a5fbdbda74b16adf488fe28138b2ba69ea5e669 |
I independently verified 369 distinct regular candidate files, sizes, modes, SHA-256s, exact allowlist/no extras, all six aggregates, report/manifest hashes and every manifest-pinned input. Copies were hash-verified before execution. Final shared-tree/export recheck at 2026-09-07T15:15:57Z passed with the same HEAD. The code is uncommitted: HEAD is not falsely presented as its code identity.
Export: /tmp/fi-filbert-7.239u2bco.
Separate evidence/harness root: /tmp/fi-filbert-7.239u2bco-evidence.
Required baseline bytes came from the committed source baseline, not moving owner
work. The non-live integration scripts and their relevant baseline dependencies
are unchanged between that baseline and measured HEAD. Five unrelated native/fleet/
goal scripts differ between those commits; they were not executed or independently
reviewed here. No shared index or owner extension work was used as test scratch.
2. Numbered finding
R5-1 / F5 reopened — BLOCKING, medium: partial canonicalizer is not a total ordering tie-break
Sources in the frozen candidate:
scripts/foundation/resolve.mjs:730–751, especially734–735and750; SHA-256892f95ab8a971d93060353e43d53cb6988e7e61f2a5bae71f6f2aaf2b7c1f09f.scripts/foundation/canonical.mjs:29–43: the mock-content canonicalizer rejects non-ASCII strings, as required for its separately bounded digest domain.- New ordering tests:
scripts/foundation/resolve.test.mjs:548–712exercise ASCII tie-breaks and readable differing keys, but miss the colliding Unicode fallbacks.
Contract: charter §10.4 and the pinned ordering follow-up require stable within-stage ordering, including deterministic content tie-breaking for malformed entries. The r5 report's assertion that only indistinguishable duplicates fall back to input index is not true for this implementation.
stableOrder catches a CanonicalError and assigns canonical content "". Two
different entries containing non-ASCII strings therefore compare equal whenever
their typed keys are equal or both unreadable. The final a.i - b.i makes input order
choose the first shape failure. This affects emitted CLI rules, not just internal
locators.
Independent concrete witnesses
Start with a copy of the frozen
scripts/foundation/fixtures/demo/demo-file-change-src.json.
- Replace
registrieswith[{"extra":"é"}, "é"]. CLI--jsonreturns exit 2 / invalid-request / shape-unknown-field. Reverse only that array: exit 2 / invalid-request / shape-type-mismatch. Both entries have unreadable identity keys and both fail the ASCII canonicalizer. - The identical substitution/reversal independently produces the same differing rules in records, artifacts and delegationInputs: four affected families.
- For readable equal keys, duplicate
agent-aat the same kind/id/scope/revision. Give both copies the legitimate displayNameCafé; make the first copy's status an invalid enum and give the other an unknown payload field. Forward/reversed inventory gives shape-enum-mismatch / shape-unknown-field, both exit 2. - Duplicate
agent-policy/ap-fullwith identical registry/id/revision/digest keys. Both copies have readPaths[{"root":"workspace","path":"café"}]; give one an invalid network enum and the other an unknown restrictions field. Reversal again changes shape-enum-mismatch / shape-unknown-field, both exit 2, before the later digest/duplicate stages.
All six pairs were executed through the real exported CLI. Four matched ASCII-only malformed-entry controls are stable under reversal. Separate valid Unicode displayName and logical-path controls remain allowed, as the contract requires. All observed shape failures remain privacy-safe; no body disclosure is alleged.
Required correction: provide a deterministic tie-break over the relevant full strict-JSON input domain without treating distinct unsupported canonical values as identical. Preserve the ASCII-only mock digest domain, permitted Unicode record/ path values, semantic sequence order, stage precedence and body-free diagnostics. Do not fix this by blanket-rejecting Unicode or changing the charter. Add equal-key and unreadable-key multi-failure Unicode permutation regressions. Rocko alone owns any authorized implementation correction; none was made in this review.
Exact equal-key record witness input hashes:
File under evidence witnesses/ |
SHA-256 |
|---|---|
equal-key-unicode-records-forward.json |
372c5bf1fc0d600ed5d348dc3638c2206d9c6aa43b869f35b0699b7c836e63cf |
equal-key-unicode-records-reversed.json |
22ed3d21bc95b950af49f37b5c8f33b6be7db52ec4342542a04690696ed95134 |
No additional numbered code finding is asserted. Finite passing tests are not a claim that every other possible interaction is correct.
3. Original findings and acceptance dispositions
Original witness files were preserved byte-for-byte from FI-FILBERT-6; their hashes match the prior verdict's listed inputs. Actual r5 CLI dispositions:
| Finding | Independent result / disposition |
|---|---|
| F1 missing referenced declarations | Both original cases now refuse: exit 3 / missing-state / registry-declaration-missing; exit 3 / missing-state / authorization-undeclared. Closed for reviewed consulted-declaration paths. |
| F2 task-only work access | Assigned change and task-only proposal both refuse exit 3 / consulted-work-not-readable; proposal identifies original requester context. Taskless positives remain allowed. Closed. |
| F3 issuer narrowing | Original issuer-denies-work.read case now refuses exit 3 / consulted-work-not-readable, original requester context. Source rechecks the narrowed layers in both scopes. Closed for reviewed narrowing behavior. |
| F4 revision-collapsed cycles | Original acyclic exact-reference history now returns exit 0 / allowed. A further stale-selection mutation reaches assignment-stale, not a fabricated cycle. Real-cycle and cycle-before-continuity fixtures pass. Closed. |
| F5 ordering/message priority | Original forward/reversed shape cases both yield shape-enum-mismatch; original message case now yields message-is-not-authority. These witnesses close, but F5 overall remains OPEN via R5-1. |
| F6 ownership inventory | Both maintained inventories now include UID/GID; maintained and independent before/after tests pass. Closed. |
The fixed registry-declaration-missing diagnostic is consistent with the pinned
coordinator ruling and the declaration/admission distinction: it is an exit-3
missing-state refusal for a missing consulted external declaration, not the exit-2
ordinary-record reference rule. I independently combined missing declarations with
structural missing records, duplicates, invalid typed profiles and unsupported
operations: each earlier gate still wins with its specified exit/rule. Registry
lookups remain exact in registry/id/revision/digest; no live authority is inferred.
| Gate | r5 disposition |
|---|---|
| A1 | Tested positive read/assigned-change text and JSON outputs, goldens, disclaimers and no-effect observations pass. |
| A2 | Missing registration/cross-project selection and privacy/no-fallback fixtures pass. |
| A3 | Reference, ownership, duplicate, history and genuine-cycle detector/CLI tests pass; exact revision fix independently reproduced. |
| A4 | Tested role/policy/task/mission/execution/issuer intersections, path bounds and no-assignment-union cases pass; F1–F3 witnesses corrected. |
| A5 | Strict parser and separate schema/profile oracle pass tested domains; 831 independent typed-LF probes refuse before admission. Unicode/free-text positives remain valid. |
| A6 | Static runtime I/O/import review retained; descriptor, ownership-inclusive inventory and canary checks pass within bounded evidence limits. |
| A7 | Both requester contexts/narrowing checked in source/tests; original selection retained; no allowed reassignment branch. Original F2/F3/message witnesses corrected. |
| A8 | Closed fields, exits 0/2/3/4, escaping and body-free errors pass tested cases. Not satisfied overall: R5-1 violates stable first-failure ordering. |
| Offline-demo integration prerequisite | Inspector, oracle, checker, config/auth/conductor independently pass. Task/release NOT RUN / DEFERRED, not green. |
| A9 | Not performed. Jason's separate demo acceptance remains required and is not implied by this review. |
Prior C1–C5 closures remain supported by r5 identity and rerun tests: corrected demo digest/copy equality; genuine zero-waiver schema comparison plus strict production profile; twelve closed result fields with process exit separate; saved-before versus after comparisons; and required O_RDONLY/O_NOFOLLOW/O_NONBLOCK with FIFO refusal. The calendar platform witness and original LF witnesses remain. No trimming or normalized identity lookup replaces production refusal.
4. Executed commands and independent receipts
Commands were inspected before execution. From the isolated export, using env -i,
synthetic HOME/TMPDIR, PYTHONDONTWRITEBYTECODE=1, NO_COLOR=1 and PATH
/home/jwoltje/.pyenv/versions/3.12.8/bin:/usr/bin:/bin:
| Command | Exit and actual result |
|---|---|
node --test scripts/foundation/ |
0; 77 pass, 0 fail, 0 skipped |
bash scripts/test-foundation.sh |
0; 43 pass, 0 fail, including scratch-only fixture regeneration equality |
python3 scripts/foundation/verify-schema.py |
0; 1563 records, 539 agree-valid / 987 agree-invalid / 0 disagreements; 27 parser-bound unassessed, 10 unsupported-kind unassessed; 509 profile-valid / 30 profile-invalid; 73 named probes verified |
python3 docs/plans/foundation-v1-candidate/check.py |
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 |
Measured versions: Node v26.8.1, Python 3.12.8, jsonschema 4.26.0. The year-999
strftime('%Y') witness is 999, as required by the pinned checker on this platform.
Non-live integration ran via python3 integration.py in the separate disposable
<evidence>/integration-fixture copy. It seeded a disposable test Git repository
so the conductor suite could clone/commit/reset only its own test fixtures. Git
system/global configuration was disabled, HOME/TMPDIR synthetic, and no shared Git
mutation occurred. Commands bash scripts/test-config.sh, bash scripts/test-auth.sh
and bash scripts/test-conductor.sh each exited 0, respectively 24/0, 15/0,
17/0 passed/failed. Auth inputs were fabricated test canaries, never real credentials.
Failing guards for docker/podman/curl/wget/ssh were installed ahead of PATH and were
never invoked; they did not simulate services or supply passing branch results.
Additional independent harnesses, all under the evidence root:
python3 review-probes.py: exit 0 verifies the nine corrected original witnesses, six remaining Unicode ordering counterexamples, and four stable ASCII control pairs (29 CLI executions). Exit 0 here means the recorded findings were reproduced, not that the candidate passes the counterexamples.python3 interactions.py: exit 0; eight independently constructed stage-order, message/issuer, history/currentness and Unicode-positive interactions pass.python3 profile-probes.py: exit 0; 831 typed-identity single-final-LF mutations produce exit 2 / profile-pattern-mismatch with selection/operation/proposal/diagnostic all null; a multiline mission objective remains allowed.python3 non-effect.py: exit 0; 15 text/JSON/parser/I/O/usage executions, 16 unchanged inventory entries including path/type/size/mode/UID/GID/inode/mtime-ns/ content-or-symlink-target; observed fixture/home/cwd/data roots separate from logs.python3 recheck.py: exit 0; final shared/export candidate identities and HEAD pass.
Selected hashes, relative to the evidence root:
| Artifact | SHA-256 |
|---|---|
node-tests.log |
9cf6f45864e50b7c81e50c31e88d76bf41e6c046d54284205ea21f14f2bc7654 |
selftest.log |
a9eacfc0f8679cd0a6688d2dd3f705528f5b0c1299cf822e61e7be33f578af1e |
oracle.log |
7bffe6dc27383ee65d2a6b39443aafccab24d2e9247982de2719d29411d929fb |
integration-receipts.json |
9f576d011b598fab9ac03c56ee68bf0d1ba5eba902d15a22a4742ebe06e8afcb |
review-probe-receipts.json |
4c46cd6ebd0fc6cb560172e9364f9a6e34a8182b1b869c58ab70f3b76de9ba91 |
review-probes.py |
aa8132dd0a32878d3c94e0475bd34a2348d452af33538ee990a81283f53af107 |
profile-probe-receipts.json |
6c067bcd6c4d88482b410e4e91f228ae5ef293156670b32c13d88544bcba463a |
interaction-receipts.json |
3e27aee6492ee121f88f28cc00e20af0f2c63d086772210a3030d054784301c6 |
inventory-before.json and inventory-after.json (identical) |
5a4feeb061565506317b81dcc3af9bda310674bf0b8aa6ad0972286771ceda59 |
recheck.log |
edad63227d0c0f7ef8fc08869334fd19dc8a2f0e5a1dba5298b4e907367775ed |
Scratch is local/disposable evidence, not a durable repository receipt. The minimal recipes and frozen demo identity above permit reconstruction without modifying shared fixtures.
5. Deferred coverage, limits and handoff
scripts/test-task.sh and scripts/test-release.sh: NOT RUN / DEFERRED under
Jason's 2026-09-07 offline-demo decision. They are not passed, skipped-as-green or
fully covered. Full deployment/integration testing remains a later gate before
dependent live runtime work. The recorded correction that r3 ran live branches
stands; the new decision neither retroactively authorizes nor relabels that history.
No such branches were executed in this review.
Finite tests and inventories are not OS containment, proof of no reads, full schema
or Unicode equivalence, authentic delegation, crash safety, same-size-race defense
or parent-path containment. Only Node v26.8.1 was executed. No installation,
provider/engine/container/network/native/sync/live-data work or investigation of the
operator's actual credentials/HOME/~/.mosaic occurred. Git mutations were confined
to the explicitly authorized disposable conductor fixtures. No shared index,
implementation, fixture, charter, prior verdict, log or CURRENT changes; this verdict
is the only repository write for FI-FILBERT-7.
Return to darkwing: reconcile R5-1/F5, authorize Rocko alone to correct owned code if appropriate, then provide a newly hashed frozen candidate for re-review. The offline-demo code gate is NOT APPROVED. No automatic implementation, owner acceptance, demo completion, push, issue closure or dependent phase advance; no deadline or timer is set.