Skip to content

Reject invalid runtime resource types and add Foreman journey image recipe - #37

Draft
echo-fleet-builder[bot] wants to merge 34 commits into
mainfrom
agent/certforge-resource-types-20261102
Draft

echo-fleet-builder[bot] wants to merge 34 commits into
mainfrom
agent/certforge-resource-types-20261102

Conversation

@echo-fleet-builder

Copy link
Copy Markdown

Runtime profiles could pass identity validation with values that do not execute as measured: a string timeout reaches Docker process creation and then raises before the cleanup loop, while numeric CPU values remain non-string command arguments. This change validates the stored types at the shared sandbox boundary and rejects malformed resources before acquisition or launch, preserving the existing timeout and lease-loss cleanup.

The Foreman dependency image also needs a committed, reproducible recipe. The new images/journey-foreman/ recipe pins official Trixie Node24.22.1/Python3.12.16 manifests, all34 public wheel hashes, and a bounded non-root runtime/ELF inventory. It copies only Node and matching C++/GCC libraries, keeps npm absent, and separates the committed recipe identity from Foreman target cd088e2e07c756b8bc195ce3d1fa6253d845983f. It does not create a new Python-only policy or grant signing/admission authority.

This candidate is based on the existing PR31 reconciliation branch and retains owner commit 95bfed62905543c061414a5149b471605f51c65b unchanged. The isolated resource fix is 3b1ddaa8e9e7785db5fc6475dda85e5d45577522; the recipe commit and current exact candidate are 362f2d3df2664c26909d6991c80430fca5864b99. The original owner branch/worktree is preserved. This draft overlaps PR31 until its prerequisite reconciliation is integrated; review the two new scoped commits separately from the retained foundation.

Verification:

  • Actual regression RED:34 failures/25 passes across59 new resource cases, plus an inert launch-before-TypeError proof with no real child.
  • Resource-fix full source suite:888 passed,7 existing Windows/Docker skips,0 failures/errors; branch coverage81.59% above unchanged80%. All3 P1 scenarios passed while source-only and tampered evidence remain NOT_READY.
  • New runtime-probe parser/version controls:5 passed, plus syntax/diff checks.
  • Exact committed-source BUILD preflight passed; history secret scan from remote PR31 head through this candidate scanned60.94KB with0 leaks.
  • Current public Node-core review evaluated all204 records:24.22.1 has0 applicable/0 unknown; negative24.22.0 has8. This is advisory input, not image qualification.
  • Hosted checks and actual builds of the newly committed dual-runtime recipe are pending.

Release remains blocked. No runtime profile, registry capability, upstream scope/grant, trusted owner map, signing authority, halt marker, queue ownership, or production service changed. The existing exact Foreman certificate remains NOT_READY. Image build/security/SPDX/core qualification, existing-owner admission, exact-source dual certification, staging/rollback and real worker claim→changes→tests evidence remain required. Task #43963 remains with Claude.

ECHO-OMEGA-PRIME and others added 30 commits August 30, 2026 05:22
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
Replace fixed labels with measured image, journey, policy, harness and public runtime inputs. Share operator profiles across status, dispatcher and worker, and fence effective OCI overrides and measurement loss before execution.

Validation: 697 tests passed, 1 Docker test skipped on Windows; P1 acceptance passed; independent 19-test review passed. Exact committed source ran the FOREMAN program journey in the constrained FORGE sandbox. Production E2E, certification and deployment remain pending.

Based on measured deployed d8ad9fd; preserve its acquisition and production-E2E protections. Canonical main 4f7d99e diverges and must be reconciled before merge. Tested local commit be1714b74107e29ffe6495fdb611a99bfd6daed7 has the identical Git tree.
Resolve authenticated job argv without caller image control, fence declared identity before acquisition, package public harness declarations, and preserve explicit operator pins. Correct P7 fixture commitments and extend the generated read-only SDK surface. Refs #30.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant