feat(#935): add pi runtime plumbing to fleet harnesses - #965
Conversation
|
🤖 Review · Commit: |
252f28a to
7a828ac
Compare
|
🤖 Finished Review · ✅ Success · Started 1:05 PM UTC · Completed 1:20 PM UTC Commit: |
ReviewFindingsMedium
Low
Previous runReviewFindingsMedium
Low
Previous run (2)ReviewFindingsMedium
Low
|
C1 plumbing for the opt-in pi runtime (issue #935): - Binary allowlists: add `**/pi` next to `**/claude` in profiles/fullsend-vertex-ai.yaml and all inline policies under policies/github/, policies/gitlab/, and policies/jira/ - Protected paths: add `.pi/` next to `.claude/` in harness/review.yaml (both runner and sandbox blocks), scripts/post-review-test.sh (test fixture), skills/pr-review/ SKILL.md (governance paths list and classification glob), and agents/fix.md (protected paths list). Repos that already carry a `.pi/` directory will now see changes under it refuse auto-approval, like `.claude/`. - Image digest pins: bump all seven harness image: lines to the current `:latest` index digests (v0.37.0, fullsend revision 1f027be, built from main by sandbox-images.yml — no release needed): fullsend-sandbox sha256:9af3fba8... (triage, prioritize, retro, scribe) and fullsend-code sha256:9743bc7b... (code, fix, review). Both images carry the pi install (PI_CODING_AGENT_DIR/PI_* in the image env); the only other delta vs the previous pins is Claude Code 2.1.220 -> 2.1.234. - Env file: env/gcp-vertex.env needs no change (CLOUD_ML_REGION is already exported; no GOOGLE_CLOUD_LOCATION alias required) - post-review-test.sh: cover `.pi/settings.json` against the default list (protected) and `docs/.pi/` (not a root prefix) Refs #935 (C1 plumbing; the C2 pilot and docs stay open on the tracker) Assisted-by: Claude (code, fix), Grok (review) Signed-off-by: Wayne Sun <gsun@redhat.com>
7a828ac to
90f19f8
Compare
|
🤖 Finished Review · ✅ Success · Started 1:24 PM UTC · Completed 1:38 PM UTC Commit: |
waynesun09
left a comment
There was a problem hiding this comment.
Reviewed via review-squad (Claude + Grok, two rounds) and fix-and-verify; CI green incl. functional tests on the new images; protected-path changes are the intended C1 scope of #935. Approving.
Merge-queue functional tests flaked twice on functional-tests (triage), each time a different eval case exceeding max_turns: 30 (observed 17-31 turns across runs on the current sandbox image, median ~24). The budget sits inside normal variance rather than signaling a real regression, so raise the ceiling instead of retrying blind. Signed-off-by: Wayne Sun <gsun@redhat.com>
|
🤖 Finished Review · ✅ Success · Started 3:10 PM UTC · Completed 3:24 PM UTC Commit: |
waynesun09
left a comment
There was a problem hiding this comment.
Re-approving after folding in the eval max_turns fix (30→35) directly on this branch — the flake blocking merge-queue was eval budget, not real regression; all checks now green including functional-tests (triage).
|
🤖 Finished Retro · ✅ Success · Started 3:40 PM UTC · Completed 3:52 PM UTC Commit: |
Retro: PR #965 — pi runtime plumbingTimeline. Issue #935 was triaged on 2026-08-22 (2 runs, blockers identified). On 2026-08-23, waynesun09 re-triaged after blockers resolved, then triggered What went well.
Existing issue coverage (no new proposals needed).
One proposal filed for standardizing eval turn-budget headroom to reduce merge-queue flakes. Proposals filed
|
C1 plumbing for the opt-in pi runtime (#935). Claude Code stays the fleet default; nothing here changes
defaults.runtime.Binary allowlists — add
**/pinext to**/claudeinprofiles/fullsend-vertex-ai.yamland every inline policy underpolicies/github/,policies/gitlab/,policies/jira/(10 sites). npm-globalpiis a node shebang, so**/nodealready covered it; the entry keeps the rows symmetrical and is needed if a standalone binary is ever installed.Protected paths — add
.pi/next to.claude/inharness/review.yaml(runner + sandbox blocks), thescripts/post-review-test.shfixture,skills/pr-review/SKILL.md(governance list + classification glob) andagents/fix.md. Behaviour change: repos that already have a.pi/directory will now see PRs touching it refuse auto-approval, exactly like.claude//.cursor/(root-anchored prefix match inpost-review.src.sh).Image digest pins — bump all seven harness
image:lines to the current:latestindex digests, built from fullsendmainbysandbox-images.yml(no release needed; the latest release v0.36.0 predates pi):ghcr.io/fullsend-ai/fullsend-sandbox@sha256:9af3fba87d193bc58ae9da6c916fcc9689176eeee9247b563bc14d8acb3cc734(triage, prioritize, retro, scribe)ghcr.io/fullsend-ai/fullsend-code@sha256:9743bc7b6e451e0bcea25ae4a67e0c040c296f1fee04c08988ae80c53fafcfe6(code, fix, review)Provenance: both are v0.37.0,
org.opencontainers.image.revision=1f027be5(2026-08-23);skopeo inspectshowsPI_CODING_AGENT_DIR,PI_CODING_AGENT_SESSION_DIR,PI_OFFLINE,PI_SKIP_VERSION_CHECK,PI_TELEMETRYin the image env (pi 0.84.2 + vendoredpi-anthropic-vertex0.1.13 perimages/sandbox/Containerfile). Diffing the Containerfiles between the old pins (revisionf1da2bb) and these: the only non-pi delta is Claude Code 2.1.220 → 2.1.234; base image, Go, gitsign, lychee, gopls and ProtectAI pins are unchanged.Env file —
env/gcp-vertex.envneeds no change (CLOUD_ML_REGIONis already exported; the vendored Vertex provider reads it first, so noGOOGLE_CLOUD_LOCATIONalias).Tests —
scripts/post-review-test.shgains two cases against the default list:.pi/settings.jsonis protected;docs/.pi/notes.mdis not (root-anchored prefix).Test plan
bash scripts/post-review-test.sh— all pass (the harness-vs-fixture drift test runs in CI whereyqis installed;script-testjob)hack/lint-agent-docspassesFunctional Testsworkflow, triage/review/code/fix/retro matrix)runtime: pion a disposable repo) and per-agent docs — follow-ups tracked on Enable fleet agents on the pi runtime #935, not this PRRefs #935 (C1 only — the C2 pilot and docs checkboxes stay open on the tracker; do not auto-close).
Post-script verification
agent/935-pi-runtime-fleet-plumbing)a0a2c25fac3c99c4d2614f8a110f422c019cfd1d..HEAD)