informed-decision/docs/evidence/2026-10-11-purpose-hardening/README.md
tegwick 1e0df2f4a3 Reject advisory policy envelopes before lifecycle effects
Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade
2026-10-11 02:22:07 +02:00

4 KiB

Advisory-purpose hardening image preparation — 2026-10-11

INFD-WP-0009-T04 remains in progress. This candidate is locally built and tested; it has no registry publication or deployment receipt. Proposal ID: INFD-WP-0009-T04/purpose-overlay-v1. No live action is authorized by this packet.

Base: forgejo.coulomb.social/coulomb/informed-decision@sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173. Base installed policy.py equals HEAD7db8485 policy SHA-256a00b93b34caee5f190dea750c53b7bca819b993b8ef2f499ef9525d7b8c11842. Overlay source SHA-2569d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62. Only policy.py is added as one layer. Dependency, schema/store, runtime user, entrypoint, env and ports remain exact. provenance.json binds source and build recipe; source patch remains uncommitted during preparation and no whole-tree commit provenance is claimed.

Local candidate informed-decision:purpose-hardening-20261011 has index digest sha256:b8b58944786015a5375304241c149d1dab885eb539d6d8945f56b01a3c2bc821, platform manifest918bbdce7337b716edfeb99b9343037dd141bb870aa3f32d7e4394c410c65b7d, configf187897d7322f10e06d53c153a6fa7e6f7403b47a9b59cf6edd12285ec479310. These local digests are not registry receipts. Verify eventual published digest and installed source before authoring a final admitted Deployment pin.

Evidence: checks.json proves base layer/config equality and fresh scan DB (2026-10-10 updated18:59Z, downloaded23:32Z), zero HIGH/CRITICAL findings. scan.json retains package findings; scanner warns Alpine3.24 is not on its EOL list. Vulnerability scan is bounded and not a universal security claim. container.json retains 13 checks, including private single writer, uncertain submission preservation, restart, consistent backup and separate synthetic restore. All temporary containers/volumes were removed. installed-purpose.py passes 10 installed-client forms: absent and empty allow, eight other/advisory forms refuse. Native identity/PDP/approval/audit proof is not claimed.

Rebuild: make a fresh private temporary context, copy exact policy.py from owner source and this Containerfile to it, check both hashes against provenance.json, then docker build --network none --pull=false -f <context>/Containerfile -t informed-decision:purpose-hardening-20261011 <context>. Use only the immutable base and these files; normal repo .dockerignore excludes a direct module copy. No package download or broader dirty-source wheel enters this overlay.

Concrete proposed release

After registry publication/verification, update only admission.candidate.json image and rendered service.candidate.json Deployment image, preserving current ConfigMap6c221878d051, schema5, review/lifecycle policy pins, requester custody, audience, network, PVC, 5m request, replicas1 and Recreate. Retain exact source revision/digest and server dry-run/diff through manual Argo before approval. Obtain separate supervisor approval of that concrete immutable image revision; the config-only7db8485 approval cannot be reused.

Before cutover retain metadata-only counts and unique consistent native snapshot in protected custody; verify restore with the candidate on a separate protected volume without printing record content or credentials. Synthetic restore here proves mechanism only. Same-schema rollback retains current DB/evidence and restores image7f5c6cb through owner Argo; no data downgrade or replay is intended. Risk: brief Recreate interruption, no concurrent writer; incremental EUR0 for existing infrastructure, no paid inference. This source correction refuses an advisory envelope before effects while preserving exact current enforcement.

After approved release verify exact image/config, health, current pins and native register/publication with stable keys; inject a native-provider-derived advisory response in an isolated installed-client probe and prove refusal before writes. Do not contaminate production PDP config or create human approvals to test this guard. Reconcile lifecycle/audit receipts and retain failed/uncertain outcomes.