the-custodian/docs/changes/2026-11-01-scanner-json-digest
codex 26d4efd280
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Reject generated-only commits / generated-commit-guard (push) Successful in 14s
Prepare exact guarded JSON-digest scanner rollout from founder preflight
2026-11-02 01:25:37 +01:00
..
native-r2 Prepare exact guarded JSON-digest scanner rollout from founder preflight 2026-11-02 01:25:37 +01:00
consistency-confirmation.json docs: record native-return metadata refusal and final consistency proof 2026-11-02 00:26:54 +01:00
consistency-receipt.json docs: preserve consistency bindings and blocked-work handoff 2026-11-02 00:06:59 +01:00
final-tip-verification.json docs: finalize sync audit with explicit publication blockers 2026-11-02 00:57:03 +01:00
forge-metadata-proposal.json docs: record fleet synchronization results and scanner blockers 2026-11-01 23:49:05 +01:00
native-approval-pending.json Prepare exact guarded JSON-digest scanner rollout from founder preflight 2026-11-02 01:25:37 +01:00
native-preflight-proposal.json docs: record fleet synchronization results and scanner blockers 2026-11-01 23:49:05 +01:00
native-preflight.py docs: record fleet synchronization results and scanner blockers 2026-11-01 23:49:05 +01:00
projected-tasks.json docs: preserve consistency bindings and blocked-work handoff 2026-11-02 00:06:59 +01:00
proposal.json docs: record fleet synchronization results and scanner blockers 2026-11-01 23:49:05 +01:00
rapp-blocked-object-candidate-check.json docs: record fleet synchronization results and scanner blockers 2026-11-01 23:49:05 +01:00
read-only-preflight-outcome.json Prepare exact guarded JSON-digest scanner rollout from founder preflight 2026-11-02 01:25:37 +01:00
read-only-preflight-proposal.json Prepare exact guarded JSON-digest scanner rollout from founder preflight 2026-11-02 01:25:37 +01:00
read-only-preflight.py Prepare exact guarded JSON-digest scanner rollout from founder preflight 2026-11-02 01:25:37 +01:00
README.md Prepare exact guarded JSON-digest scanner rollout from founder preflight 2026-11-02 01:25:37 +01:00
remaining-findings.json docs: record fleet synchronization results and scanner blockers 2026-11-01 23:49:05 +01:00
scanner-json-digest.patch docs: record fleet synchronization results and scanner blockers 2026-11-01 23:49:05 +01:00
smtp-return-file-checks.json docs: record native-return metadata refusal and final consistency proof 2026-11-02 00:26:54 +01:00
smtp-return-finding.json docs: record native-return metadata refusal and final consistency proof 2026-11-02 00:26:54 +01:00
social-consistency-receipt.json docs: finalize sync audit with explicit publication blockers 2026-11-02 00:57:03 +01:00
social-source-checkpoint.json docs: finalize sync audit with explicit publication blockers 2026-11-02 00:57:03 +01:00
source-changes.json docs: record fleet synchronization results and scanner blockers 2026-11-01 23:49:05 +01:00
sync-closeout-receipt.json docs: record native-return metadata refusal and final consistency proof 2026-11-02 00:26:54 +01:00

JSON filename/SHA256 scanner candidate

Proposal SYNC-SCANNER-JSON-DIGEST-20261101, revision 1. This is a source candidate and review evidence, not a native activation receipt.

The existing reviewed YAML filename/digest exception rejects the equivalent JSON shape in the RApp source-pin and Custodian construction manifests. The candidate extends precisely that shape to a quoted JSON key/value, using the identical rule in both adapters. It does not allow ordinary secret keys, prefixed provider tokens, uppercase or extended-length values. Existing rule defaults, history traversal, scanner pin, time/size limits, inline-suppression refusal and fail-closed outcomes remain unchanged.

source-changes.json pins original and candidate source hashes. scanner-json-digest.patch includes both implementations and regression tests. proposal.json pins the built candidate and states verification/rollback and unapproved native status. Candidate build and ephemeral test checkouts are in /tmp/sync-scanner-candidate.

Validation: 12 local real-Gitleaks tests passed (37 unrelated tests deselected); full receiver FORGE_TEST_GITLEAKS=... go test -count=1 ./... passed in 150.087s. A prior Go invocation without that environment passed only scanner-independent tests and was superseded by this real-scanner run.

The founder returned the read-only artifact/config/guard/headroom receipt on 2026-11-02. It verifies the expected deployment, pod, node, old adapter, hook and pinned Gitleaks. CPU requests are 68%, memory requests 76%, and Forgejo uses Recreate. The original failed/refined metadata attempts remain recorded; the successful read-only execution grants no mutation authority.

The exact native preparation is now revision 2, under the same proposal ID; revision 1 remains unchanged. Approval packet SHA256: d22b1f555af96c203b7d68efd25e80815ce18ca4e3bf0dd3ab96b6f699d50237. It includes guarded stage/rollout/rollback, both scanner source changes and Apps source followthrough. Thirteen isolated filesystem/real receive cases and five controller tests passed. The initial missing temporary dispatcher fixture was retained as an unverified preparation attempt and replaced with an explicit offline fixture; native probes separately copy the live dispatcher. Live server dry-run, diff, probes and activation remain mandatory execution checks and have not run yet.

Native activation awaits exact founder approval under docs/agent-autonomy-decision.md ("The supervisor approves that proposal or performs it through the privileged execution path."). The agent must not borrow the founder admin kubeconfig. The prepared founder launcher is /tmp/forge-scanner-rollout.sh. Its sealed runner refuses unknown initial identity/guard/hook/source state and any packet drift.

The staged scanner in repo-manager and live receiver have not been altered by this candidate. Independent clean-file commits continue under the original policy.