fix(conformance): repair protected tool bootstrap - #93
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The workflow currently exports rustup_executable using resolveExecutableInvocation(...).executable (symlink-preserving), which can conflict with the supervisor’s “no symlink” safety checks and cause avoidable failures.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR repairs protected conformance workflow bootstrap by tightening how trusted tools are introduced into the supervised environment (notably Rust toolchain entrypoints), fixing a PowerShell cleanliness check on Windows, and repinning the Phase 1 harness authority to a new behavior commit/tree.
Changes:
- Update Unix producer supervisor to optionally accept and copy a reviewed
rustupproxy into the trusted root asrustup/cargo/rustc, and prepend that trusted root to the restricted PATH. - Fix Windows PowerShell git status cleanliness checks by forcing command output to an array before reading
.Count. - Repin Phase 1 conformance authority (tests, lock file, and docs) to the new revision/tree and updated trusted file digests.
File summaries
| File | Description |
|---|---|
src/phase1-conformance-lock.test.ts |
Updates expected harness authority revision/tree and file digests to match the repin. |
src/client-v1-conformance-workflow.test.ts |
Adjusts workflow assertions for the Windows bootstrap change and new Unix rustup handling. |
scripts/unix-producer-supervisor.test.sh |
Adds coverage for passing a trusted rustup multicall proxy via --rustup-executable. |
scripts/unix-producer-supervisor.sh |
Adds --rustup-executable, copies it into the trusted root as rustup/cargo/rustc, and updates restricted PATH. |
phase1-conformance.lock.json |
Repins harness revision/tree and updates trusted file digests. |
docs/phase1-conformance.md |
Updates documented byte sizes and SHA-256s for repinned trusted files. |
.github/workflows/client-v1-conformance.yml |
Updates Windows git status .Count usage; updates Unix tool-path step to export a rustup executable path and pass it into the supervisor. |
Review details
- Files reviewed: 7/7 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| expect(toolPathStep).toContain('resolveUnixToolPath'); | ||
| expect(toolPathStep).toContain("[''node'', ''corepack'', ''rustup'']"); | ||
| expect(toolPathStep).toContain("resolveExecutableInvocation(''rustup''"); | ||
| expect(toolPathStep).toContain("[''node'', ''corepack'']"); | ||
| expect(toolPathStep).toContain("''tool_path='' + toolPath"); | ||
| expect(toolPathStep).toContain("rustup_executable='' + rustupExecutable"); |
There was a problem hiding this comment.
Fixed in c4d0bf3: the workflow test now requires .resolvedCommand and rejects the prior .executable export.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Repairs the failures observed in protected run
33888933482.rustup,cargo, andrustcproxy commands instead of exposing the runner private homegit statusoutput as an empty array instead of accessing a missing.Countpropertyc4d0bf31763b70e1266439ff2ef1984b543e04fdand treef4bb14af2e0f2a503bb78153645a67e7f7a76f63Validation: workflow tests, executable-resolution tests, 92-test heavy authority-lock suite, lint, typecheck, shell syntax, and copied rustup/cargo/rustc proxy execution. Privileged native UID containment remains covered by Linux/macOS CI.