Repository navigation
DRAFT: reconcile deployed CertForge ancestry with main; retain readiness + production safeguards - #60
echoomegaprime wants to merge 19 commits into
Conversation
Successful hostile acceptance reports omitted the completed_phase_gate field required by the master collector. Publish P4 only after every core check and cleanup succeeds, and keep exact-wrapper reports pending until enrichment returns. Failed verification, malformed capture, interruption and nonzero exit cannot leave a newly completed report for the master consumer. Keep master validation, exact-source and signing rules, release verdicts and historical acceptance reports unchanged. Add producer/wrapper/consumer integration coverage including pending publication and failure paths. Validation: 24 focused and adjacent tests pass; full suite 637 pass, 2 skip, 1 existing symlink test blocked by Windows privilege 1314. P1 acceptance passes all 3 scenarios using a byte-identical source copy outside historical artifacts. Hosted CI, dual certification and deployment remain pending.
…#22) Release hardening so the P4 hostile acceptance gate can seal again: - Bump the pinned python:3.12-alpine base for all six role images, the sandbox default image and the P4 gate to sha256:4c47124a8391cb7a9f571164147d154777cf012a4ece5f86097130d7a4478111 (Trivy: 0 HIGH/CRITICAL findings on the new base). - Bump the hash-locked cryptography pin to 50.0.0 (all PyPI wheel and sdist hashes locked). - deploy_forge.sh: the dispatcher unit uses Wants= instead of Requires= on the API service so an API restart no longer tears down in-flight runs; the source-fetch git credential helper is configurable (CERTFORGE_GIT_CREDENTIAL_HELPER); the trusted manifest default is the canonical-JSON digest that run_worker pins (08ba068c...), not the raw file-bytes digest. - Opt the repository into its own CertForge gate with a stdlib-only journey (scripts/certforge_journey.py) and pin tests (tests/test_release_pins.py). The worker environment identity digest is label-derived and does not change with this release (8e6466d2...). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0152mN1wMwj9vE2YmV2xZF4F
…space (#22) The fresh P4 hostile-acceptance run for bc1b8ad built and sealed all 12 images and passed the scans, the static and runtime attack matrices and the custody and anchor service probes. It then stopped as INFRA_FAILED: the worker container exited before /healthz answered. Cause: since P6 (bfc2159) the worker app opens its deployment ledger at import time. Its default path, <package root>/var/deployments.sqlite3, resolves to /opt/var on the read-only image root, so uvicorn died with "Read-only file system: '/opt/var'". The last green P4 (9c07eb7) predates P6, so no P6-era source could pass P4 until now. Fix: the hardened probe sets ECHO_CERTFORGE_DEPLOYMENT_LEDGER to /workspace/state/deployments.sqlite3, next to the other state paths. Only the harness changes; production and the image stay as they are. Reproduced with the sealed worker image: exit 1 without the variable, healthy with it. A new test pins every worker state path to the writable workspace; it fails without this change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0152mN1wMwj9vE2YmV2xZF4F
…ndependent review Preserve deployed trust roots, production DB safeguards, worker dispatcher resilience, and the mainline 90-second configurable startup/rollback readiness probes with staging failure log custody. Source-only reconciliation; NO deployment or gate approval.
|
Independent exact-head FORGE regression proof — 2026-11-12 08:35–08:36 UTC.
|
|
Independent release-gate update (2026-11-12 09:32 UTC; read-only GitHub + FORGE verification) Exact candidate: Exact-commit check-runs: New exact-source review issue to resolve before approving the deployment script: Also require independent review of the full 16-commit reconciliation scope, protected-PR approval, CodeQL, and exact-source release acceptance. Verified deployed release marker is still |
|
Independent CertForge release-gate follow-up (2026-11-12 10:28 UTC) — SOURCE-ONLY; NO PRODUCTION PROMOTION I fixed the previously documented unbounded source-fetch path directly on this draft reconciliation branch. Current PR #60 head:
Release disposition HOLD pending full hosted CI, actual CodeQL, independent protected review and exact-SHA production certification. No merge, restart, SQLite mutation, signing-key use, fabricated worker heartbeat or 40-seat paid run. |
|
Independent exact-head CI closure (2026-11-12 11:25 UTC). Draft PR #60 head Exact-head checks: |
|
Independent FORGE integration acceptance, 2026-11-12: verified PR #60 exact head |
Scope: independent CertForge ancestry reconciliation — review only
This is a draft, nondeployment source-history merge to reconcile the actual deployed CertForge commit with GitHub main without losing deployment guards. It does not merge PR #49, approve Swarm #16, authorize a production service window, change a signed verdict, or modify the running service.
Exact parents: GitHub main
4f7d99e2dd4422f3d81cf5b709581be963f5818aand deployed CertForged8ad9fd881365801354b78a758632d2a31ab6828.Proposed merge head:
12d6fe72724039f149645be3b8cdadc668b1610a(tree61eae085b9f3e1cbe00f000e22236e35b18b1654).Required independent review: release owner, CertForge maintainer, production security owner. This commit's ancestry includes 16 deployed-side commits; review the entire merged diff, not only
deploy/deploy_forge.sh.Resolved deployment-script conflict
Wants=resilience.Bounded independent preflight
.certforge-release-sha=d8ad9fd881365801354b78a758632d2a31ab6828and exact Git blobs for subscriber, production_e2e, deploy script.7301e49cb3a3456b9409645aeecd4b7f3e70cbc3; isolatedbash -nPASS. Merged script SHA-256a7ee67610da822628e4904b8ceb2272d59083ca46c48c9d382f4267e6e091743.Release restrictions
Do not merge until protected approvals, exact-head CI and CodeQL, complete deployed history and rollback review, and a separate exact-SHA authorized release window. The seven stranded queue entries remain unchanged (run QUEUED, dispatch FAILED, reservation BOUND); PR #49 stacked recovery remains a separate draft.