Skip to content

fix(evidence): disclose HIL metal run path; correct POSIX runner profile claims - #13

Merged
maxwellsantoro merged 1 commit into
mainfrom
fix/evidence-claim-honesty-s13-posix
Jun 25, 2026
Merged

maxwellsantoro merged 1 commit into
mainfrom
fix/evidence-claim-honesty-s13-posix

Conversation

@ramen-implementer

Copy link
Copy Markdown
Contributor

Summary

Closes two evidence/claim-honesty findings from review.

1. HIL metal graduation now discloses its run path

Standalone golden-machine PASS/METAL stays legitimate (valid per EVIDENCE_LEVELS.md when RAMEN_HIL_GRADUATION=1 + live serial + target-emitted provenance markers), but per-gate HIL evidence JSON now carries:

  • claim_pathoperator-golden-machine vs appliance-mediated (plus appliance-live / operator-live / development-log-replay / qemu-or-scaffold for non-graduation paths).
  • an appliance object (controller id, target id, controller evidence/log refs, power events) populated only when RAMEN_HIL_APPLIANCE=1.

So a standalone run can no longer be silently read as appliance-mediated S13 graduation. claim_path is also required by a doctrine check in the gate, tying the doc to the code. Previously the appliance evidence fields documented in EVIDENCE_LEVELS.md were never emitted at all.

2. POSIX runner default profile is honestly reported

The default posix_run_v0_sandboxed profile is host-portable-rlimits-only (seccomp=false namespaces=false chroot=false rlimits=true). Seccomp/namespace/chroot helpers remain implemented + unit-tested in sandbox.rs but are not wired into the default path (not portable on unprivileged CI). The security doc previously overclaimed "actual enforcement" for all three, and the S7 gate only grepped a blanket Sandbox: ENABLED log string.

Now: the runtime logs the real control state, a unit contract locks the profile, the S7 gate asserts the actual seccomp=false namespaces=false chroot=false rlimits=true string, and POSIX_RUNNER_SECURITY.md / SECURITY_STATUS.md correct the claims (risk restored to HIGH). DECISIONS.md records both decisions (chosen/rejected/gate) and tracks wiring real enforcement in as future work behind a portable pre-exec design.

Validation

  • cargo fmt --all -- --check
  • just foundry-org-governance-g0
  • just hil-appliance (new per_gate_evidence_contract step)
  • just foundry-s7-posix-runner-security (new Test 4 honesty check + Test 4b unit contract)

Notes

  • Opened by ramen-implementer[bot] (A2); awaiting a different identity (A3) to approve + merge per separation of duties.
  • OS-code change (.rs / .sh), so the foundry job runs under the path-scoped merge-gate.

…ile claims

Closes two evidence/claim-honesty review findings.

- HIL: per-gate evidence now stamps claim_path (operator-golden-machine vs appliance-mediated) plus an appliance object, so standalone golden-machine PASS/METAL can no longer be mistaken for appliance-mediated S13 graduation. just hil-appliance validates both paths; EVIDENCE_LEVELS requires claim_path disambiguation.

- POSIX: default profile is honestly reported host-portable-rlimits-only (seccomp/namespaces/chroot helpers remain tested but are not default-wired). Runtime logs the real control state, a unit contract locks the profile, and the S7 gate asserts actual controls instead of the blanket 'Sandbox: ENABLED'. Risk restored to HIGH.

DECISIONS.md records both decisions (chosen/rejected/gate).

@maxwellsantoro maxwellsantoro left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A3 approval. Both findings independently verified closed (HIL claim_path disambiguation + POSIX profile honesty; code/gate/docs three-way consistent). Full Foundry suite green on CI (foundry PASS 6m26s, merge-gate PASS). Separation held: opened by ramen-implementer[bot] (A2), approved by a different identity.

@maxwellsantoro
maxwellsantoro merged commit 216a499 into main Jun 25, 2026
8 checks passed
@maxwellsantoro
maxwellsantoro deleted the fix/evidence-claim-honesty-s13-posix branch June 25, 2026 02:53
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