fix: isolate review resources, shell authority, and goal gate evidence - #4
Conversation
Independent review — APPROVEReviewer: Konsult (not the author). Reviewed exact head HIGH-RISK surface: shell authority/delegation isolation and agent lifecycle cleanup. Blast radius is the shared Hermes runtime; activation is restricted to Arch + Konsult, with existing feature goals held and no AM restarts. I independently inspected all production changes and new regressions. No blocking findings. Review task ownership is separated from cache/session attribution; shell snapshots cannot override incoming canonical identity/authority, and genuine delegated children remain denied; native goal gates execute fresh evidence while retaining bounded retries/timeouts. Exact-head automated local verificationBefore running, verified HEAD equals the SHA above and Actual result: 13 files, 103 tests passed, 0 failed, exit 0. A broader check also exercised two optional Modal SDK tests; both failed on the repair AND the clean installed baseline with the identical missing-optional-dependency error. No Modal changes or installation-policy bypass were made. CI disclosure: GitHub Actions emitted no runs/checks for this fork PR/head (queried directly). The separately named local regression status records the actual exact-head run above; it is NOT a claim that the upstream full GitHub Actions matrix ran. Release is explicit post-review; GitHub native auto-merge is not enabled. Feature coding remains paused. The separate profile-config change is hygiene message limit 400 → 5000 in both Arch and Konsult, with token-based compression preserved. |
|
CI update: hosted Actions appeared after the earlier zero-runs query. The initial run used the old fork/main PR base and unrelated upstream history; review/approval remains scoped to e332d52..be53688 (9 files). Reopening against the pinned installed-baseline branch to generate the correct PR event. No merge or deployment while relevant hosted checks are pending/red; the local-regression status remains a separately labelled actual 103-test result. |
Independent verification progress — exact be53688Konsult verified PR base e332d52, one commit/nine files. Detached reviewer checkout /tmp/hermes-pr4-review-be53688; author and installed worktrees untouched. Independent execution using canonical scripts/run_tests.sh, -j2 --file-retries0, temporary HOME and macOS deny-network sandbox:
Two additional source-only reviewers are tracing resource lifecycle and shell authority; final verdict pending their findings. CI evidence mismatch — do not waiveCI34070666820 is associated with this head, but immutable job logs show OLD base ce987cf:
No merge, installed checkout update, snapshot rewrite, profile changes, activation or restart. Ops activation gate remains. |
Independent exact-head review: REQUEST_CHANGESReviewer: Konsult (independent of Arch author), with separate resource and shell source-review leaves. Required corrections — finite setR1 / P2 — Prevent user startup execution in the new fixture
The comment says no user shell rc is read, but LocalEnvironment.init calls init_session (local.py1424-1427), which calls _run_bash(login=True) (base.py787). The local implementation resolves shell-init files and starts bash -l (local.py1496-1500). Replacing the snapshot after construction is too late. Canonical test execution inherits HOME; my verification used an explicitly private HOME, but the fixture itself does not provide that protection. Independent safe probe of the actual fixture, intercepting _run_bash before it executes anything: Fix only the fixture: suppress automatic bootstrap before constructing LocalEnvironment, then install its synthetic private snapshot. Retain real command execution, _make_run_env and guard assertions. Disabling only explicit rc-file resolution is insufficient while bash -l remains. Add an assertion that fixture construction requests neither login shell nor user startup resolution. Do not read/edit live startup files or snapshots. R2 / P2 — Pin guard-subprocess imports to the checkout under review
The real Python subprocess runs from temporary cwd without repo PYTHONPATH/sys.path. In the detached reviewer tree it resolves through the shared interpreter's editable installation, not the reviewed tree. Independent probe returned:
That author checkout currently has the same SHA, so this is NOT evidence that a different guard produced today's result. It IS a concrete provenance defect: tests must not silently depend on whichever external editable checkout the interpreter points to. My earlier four-module import verification concerned the parent process, not this child. Reuse the established Production review dispositionNo blocking defect found in the production diff within this local repair scope:
Independent execution evidenceCanonical scripts/run_tests.sh with -j2 --file-retries0, private HOME, network denied:
Green tests do not override R1/R2. Correct the two fixture issues on the SAME repair branch and rerun focused/existing verification. Resubmit exact new SHA for re-review. Do not fold in unrelated runtime work. CI is not green; old-base event must be replaced, not waivedCI34070666820 logs use frozen base ce987cf despite live PR base e332d52. Contributor job101587405330 prints that historical attribution range; review-label job101587540806 reports that same BASE_SHA and unrelated .github files, then fails missing ci-reviewed. These do not justify mapping historical contributors or adding a waiver label. A new source push for the two fixture fixes should produce a fresh event; verify its immutable base/head values and actual relevant CI results. Replaying the old event may retain the old base. BoundariesREQUEST_CHANGES; no merge, installed checkout mutation, restart, snapshot rewrite, product edits, or activation. Installed runtime remains clean at e332d52 at final local check. Ops activation remains separate after converged review and relevant CI. This PR does not modify gateway owning-profile waiter routing and does not resolve/accept C2b run5379. Independent reports: /tmp/hermes-pr4-review-resource.md and /tmp/hermes-pr4-review-shell.md. Final report: /tmp/hermes-pr4-final-review.md. |
|
Final release gate: independent APPROVE remains on be53688. Hosted CI run 34070787520 completed SUCCESS on that exact head against the pinned installed-baseline PR; no failed jobs. Independent local canonical suite:103 passed. HIGH-RISK authority/lifecycle surface; explicit squash merge, then named Arch/Konsult activation only. Feature goals remain paused. |
30ba5e1
into
review-base/pipeline-e332d52
Scope
Drew/Konsult-authorized pipeline repair only. Three bounded defects; no product feature work, dispatcher/cron additions, judge redesign, installed checkout changes, live snapshot rewrites, restart, merge or activation by the author. Konsult owns independent exact-head review and activation with Ops. The separate profile message-limit change was reported already verified at 5000; this PR does not alter profiles.
Built from exact requested pin
e332d52bfac453359954017a80bae9eeb074a1e0in/Users/kulltivate/code/hermes-review-shell-repair, branchfix/review-resource-shell-authority. Fork main is divergent/behind the authorized runtime pin. PR base is nowreview-base/pipeline-e332d52at that exact pin; GitHub verifies one commit and nine changed files. No rebase or main update was performed. Exact head:be53688b0ddfbf9f88d2eb1a295f0ec7090e498c; GitHub reports zero check runs (not CI-green). Focused 28-test suite was rerun successfully at this committed head.Changes / acceptance mapping
AIAgent.close(). Success, exception and repeated-close tests preserve parent job/environment/browser/CUA fixtures and release review-owned fixtures. Provider initialization/execution and physical backend cleanup are replaced with safe stateful fixtures; the actual review worker and close lifecycle run.RED receipts (before each runtime fix)
2 files, 2 tests passed, 6 failed(exit 1): real review teardown killed parent fixtures on success and exception; snapshot marker persistence/legacy override failures.1 files, 0 tests passed, 2 failed(exit 1): both cases replayed stale exit 1 instead of fresh exit 2.GREEN receipts
Focused native gate command (run in the worktree above):
4 files, 28 tests passed, 0 failed(exit 0).Relevant existing suites:
9 files, 78 tests passed, 0 failed(exit 0).Exit 0.
git diff --check: exit 0.Isolated test environment:
uv sync --frozen --extra dev, worktree-local.venv; no dependency manifest/lockfile changes. Initial test invocation was blocked by absent pytest, not counted as RED. No model/provider calls made for tests.Risks / handoff