Repository navigation
Default repository evals to native Docker with Vally 0.21 - #17
Conversation
Document the explicit native Docker backend without changing execution defaults. Keep registry-specific tarball endpoints out of npm's generated lockfile. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve valid behavioral failures and document unsupported plugin Run and canonical bootstrap limits. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The lockfile weakens dependency integrity by dropping SHA-512 pins, while unresolved Node-version and regression-test issues affect supported installs, plugin customizations, and launcher safeguards.
3 open issues
What changed in this PR
Moves repository eval tooling to Vally 0.21.0 and defaults execution to native Docker, while keeping paid runs manual-only. Plugin source and versions remain unchanged.
Changes:
- Configures Docker execution with offline deterministic grading.
- Adds Docker preflight checks and three model-free backend-selection and fail-closed regressions.
- Documents authentication, backend precedence, isolation limits, cleanup, and the pinned Evals plugin’s unsupported Run entrypoint.
| File | Description |
|---|---|
README.md |
Introduces Docker requirements, defaults, and native CLI guidance. |
package.json |
Pins Vally CLI to 0.21.0. |
package-lock.json |
Updates Vally and transitive dependencies; removes registry-specific tarball URLs. |
docs/checks-and-evals.md |
Details Docker setup, authentication, overrides, execution boundaries, and lockfile maintenance. |
.vally.yaml |
Selects Docker by default and disables grading network access. |
.github/workflows/evals.yml |
Adds Docker/Compose preflight checks and removes host executor settings. |
.github/scripts/docker-defaults.test.mjs |
Adds model-free checks for Docker inheritance and failure without Docker. |
Review effort: Max (auto)
Gate retained reviewer coverage, reject all launcher backend overrides, align the Node minimum with Vally, and restore 109 original SHA-512 hashes for unchanged versions without reintroducing registry URLs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Addressed the integrity warning in review PRR_kwDOVRlbx88AAAABXe7pXA in 438fea4, including the overview-only finding. Comparing the PR base, the saved pre-URL-removal lockfile, and the reviewed head showed 109 unchanged-version packages had already changed from SHA-512 to SHA-1 during the dependency upgrade. The native omit-lockfile-registry-resolved step itself changed no other package fields. The configured registry currently omits dist.integrity for @types/debug@4.1.13 and supplies dist.shasum, which exactly matches the reviewed SHA-1 value. I restored all 109 SHA-512 values from the base for those exact unchanged versions. All 218 dependency entries now have SHA-512 integrity; no package version or other dependency-entry metadata changed, and zero registry-specific resolved URLs were reintroduced. The earlier preservation statement was too narrow: URL stripping preserved the initial upgrade, but that upgrade had already weakened these hashes. Documentation now calls out this mirror fallback. The three inline findings were also fixed, replied to, and resolved. Model-free lint, five focused tests, catalog consistency, diff checks, and the checksum audit pass. New-head GitHub CI and the next completed Copilot review are still pending; no paid evals or Docker operations were run. |
Clear all recognized tokens before selecting gh authentication; cover successful and failing commands using synthetic Bash and PowerShell stubs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Compare documentation to fixed test-owned recipes, and execute only those literals with synthetic credentials and shell stubs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The credential regression test can pass without an exported GH_TOKEN because its fake npm is a shell function, leaving missing credentials in real child processes undetected.
1 open issue
1 resolved since last review
Review effort: Max (auto)
Use printenv in the synthetic npm stub and reject the no-export negative control so shell-local values cannot mask missing child credentials. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Human assessment is needed to evaluate authentication failures and unintended credential exposure from the Docker example appearing before its authentication prerequisites.
No open issues 🎉
1 resolved since last review
Review effort: Max (auto)
Move the standalone case selector after the scoped credential recipes, link prerequisites first, and guard the first-example ordering in the existing model-free recipe test. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Addressed the fourth review's overview concern in d745d0b. The README and paid-evals section now put Docker and scoped authentication prerequisites first. The earlier standalone try-plugin-locally command moved below the authenticated Bash/PowerShell examples, with an explicit instruction to replace only the npm command inside that same credential scope. The existing model-free recipe test now requires the first paid code block to be the scoped authentication example. Six focused checks pass. No model run, real token lookup, Docker restart/build or settings change was performed. 🤖 AI-authored reply via Agency Finish PR. |
There was a problem hiding this comment.
🔵 Needs a closer look
Human assessment is needed because forwarding a broadly scoped GitHub token to network-enabled tasks that can execute candidate plugin code creates a critical risk of unauthorized access to unrelated repositories.
No open issues 🎉
Review effort: Max (auto)
…evals Use hidden local input instead of exporting a broad gh login token. Preserve ambient-token isolation/restoration, test empty input and true child-process export with synthetic tokens, and distinguish the historical broad-token run from model-free recipe checks. CI GITHUB_TOKEN billing is unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Addressed the broad-token review finding in The hidden-input recipes clear competing tokens, reject missing input, expose only the selected token and restore ambient values on success/failure. Fixed synthetic tests cover these properties without authenticating or running models. CI's repository/job-scoped No credentials were created/stored, real authentication or settings changed, or paid evals rerun. A fresh review is requested on the changed head; “No open issues” alone is not being treated as an unconditional signoff. 🤖 AI-authored reply via Agency Finish PR. |
|
The earlier review summaries are also addressed on the current head:
🤖 AI-authored reply via Agency Finish PR. |
|
Investigated cycle 6 on
🤖 AI-authored reply via Agency Finish PR. |
Resolve the README additively and keep model-roster guidance after scoped Docker authentication. Preserve the merged experiment, npm scripts and validation. No eval or Docker runs were started. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Normalize only validated eval-spec paths while separately requiring documented specs to exist. Execute fixed synthetic test recipes, never Markdown. Allow bounded PowerShell cold-start time after Linux CI hit the previous 15-second process timeout; token isolation and outcome assertions remain unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Cycle-seven's eval-path customization finding is fixed in 🤖 AI-authored reply via Agency Finish PR. |
Require example eval files only while a local plugins or evals tree is retained. Always enforce safe paths and run fixed synthetic credential recipes. Cover both absent trees, either retained tree and unsafe paths without weakening token assertions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Cycle-eight's remote-only customization finding is addressed in 🤖 AI-authored reply via Agency Finish PR. |
There was a problem hiding this comment.
🔵 Needs a closer look
Human assessment is needed because the Docker checks do not verify that experiments preserve isolation and fail rather than execute on the host when Docker is unavailable.
No open issues 🎉
1 resolved since last review
Review effort: Max (auto)
Extend the existing credential-free mock executor regression to the experiment entrypoint added by main. Both eval and two synthetic experiment variants must fail at Docker preparation when no Docker executable exists; no model, real daemon or host fallback is used. Also guard the standard-model launcher against backend overrides. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Addressed this overview in This adds missing experiment-entrypoint coverage after main's model-experiment integration; it does not claim complete network/credential/kernel isolation or bare-default-image-bootstrap validation. Actual current-head CI and final review cycle ten remain to be collected. 🤖 AI-authored reply via Agency Finish PR. |
|
The authorized ten-cycle review limit has now been reached, so I am stopping automated re-review here rather than treating “No open issues” as unconditional approval or requesting cycle eleven. The documentation's historical validation note ( On the exact reviewed head 🤖 AI-authored reply via Agency Finish PR. |


What changed
Default repository evals to native Docker using pinned Vally 0.21.0 and
.vally.yamlgrade-network: none. Native CLI/npm runs and the manual Actions launcher inherit the setting. Node minimum is 22.15.0, matching Vally; Node 24+ is recommended. No custom runner, repository Dockerfile or automatic paid campaign.GITHUB_TOKENbilling is unchanged.mainconflict in source-branch commitd210f0c, preserving the merged standard-model experiment without executing that real matrix. Extend the model-free Docker failure check to both native eval and experiment entrypoints.No plugin source/version changes. Only the failed unpublished
pr-description0.1.1 candidate was removed; published 0.1.0 history and raw failed snapshots remain preserved. Host Copilot1.0.98and remote pins are unchanged.Review outcome: ten-cycle limit reached
Final reviewed head:
7cc9927e71e535ad59adbb1edddbeacc14675f0d. All six current GitHub check runs succeeded; the branch is mergeable and ready for human review, not merged.The tenth completed Copilot review reports No open issues, but Needs a closer look, not unconditional approval. Its remaining human judgment is whether the documentation's PR-specific validation context belongs in a starter template. The note deliberately distinguishes historical broad-token evidence from untested narrow-token recipes, as requested. Response and explicit deferral.
The authorized review loop stops here at 10/10; no eleventh review, merge or behavioral-failure campaign was started. All published inline findings were addressed. Seven focused model-free tests pass, including actual credential-free mock eval/experiment commands that must fail at Docker preparation when no Docker executable exists. No Docker or model is started by those checks.
Retained full-suite execution evidence
The single approved run
native-docker-21-full-default-20261112T020833014Zcompleted 7 evals / 19 cases: 12 behavioral PASS, 7 behavioral FAIL; zero execution errors, grading errors, retries or exclusions. Every selected case completed and was graded. Behavioral failure is valid infrastructure evidence, not an execution error; the manual workflow's existing--require-passstill enforces behavioral passes.This is historical evidence from the recorded pre-removal snapshot, including the failed unpublished routing candidate, not a paid rerun of the final head. It used the separately approved broad
ghcredential, not the new narrow-token recipe. Prompts, graders and thresholds were not weakened. No credentials were minted/stored, real authentication changed, settings modified or paid evals rerun for these fixes.d4c7babd2bb63367c66cd6b5e6df8307ccc46a0463e093fb9499257513704c32; corrected derived handoff:474875a6c7b150c630fa0dff20b6963eff0cd22f9a7b02042d301e7df5c47b2c.outputs/2026-11-12T02-31-32-422Z/eval-results.md, with rawresults.jsonlretained in that run folder. Actual container Copilot 1.0.109, Vally 0.21.0, model claude-haiku-5.5, distinct from the host pin.sha256:654c029a370cb5cb0bce6cea326fc47cdeda3eaa67e89f20ff3f02566f98723d, using the official 0.21 recipe plus a reviewed credential-free registry build argument. Explicit Docker/custom-image selection and repeated offline-grade policy were required. This proves native Docker task/grade execution, not bare-default live image bootstrap.Remaining limits
Canonical automatic bootstrap remains environment-blocked/unverified: observed public npm TLS fails before certificate exchange; the cause is not established. The working configured feed is not inherited by the native builder, which exposes no registry override. No company feed, TLS weakening, private Dockerfile or canonical-cache substitution is committed.
The pinned Copilot Evals plugin Run reader rejects project
defaults.backendbefore execution. Use native Vally CLI; this is unsupported Plugin Run integration, not a local fallback.Docker is not complete isolation: the host orchestrates/builds; tasks intentionally receive model credentials and normal network access; root initialization/evidence helpers and shared-kernel risk remain. Workspaces, captured evidence and model inputs are retention/data surfaces; interrupted cleanup may leave resources. Offline grading is configured policy, not proof from complete live inspection.
No merge or auto-merge authorization.