Repository navigation
fix(hermes): wait for observable gateway after start - #11950
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review. 📝 WalkthroughWalkthroughHermes startup settlement now uses a shared retry helper. Connect probes wait for a started gateway before process recovery, classify failed settlement, and stop before readiness publication. ChangesHermes gateway settlement
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix Sequence Diagram(s)sequenceDiagram
participant ConnectProbe
participant HermesSettlement
participant GatewayProcess
participant ProcessRecovery
ConnectProbe->>HermesSettlement: wait after starting stopped Hermes container
HermesSettlement->>GatewayProcess: probe gateway process
GatewayProcess-->>HermesSettlement: return settlement result
HermesSettlement-->>ConnectProbe: return true, false, or null
ConnectProbe->>ProcessRecovery: continue recovery when settlement succeeds
Merge Risk: ⚪ Minimal · up to The change addresses Hermes startup settlement with bounded recovery behavior, and no remaining merge-blocking issue is identified. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall line coverage in commit 5227620 in the TypeScript / code-coverage/cliThe overall line coverage in commit 5227620 in the Show a line coverage summary of the most impacted files.
Updated |
rsliter
left a comment
There was a problem hiding this comment.
Blocking on exact head 1463a24: waitForStartedHermesGatewayProcess retries null, but null includes non-transient supervisor failures, not only a gateway that is still starting. That delays the failure and replaces the existing classified diagnostic with a generic settlement timeout. Please retry only the exact stopped-process result (false / SUPERVISOR_NOT_RUNNING) and let null continue immediately to the existing gateway verification or recovery path. Add a start-path regression test proving one probe and immediate classified failure for null; add the equivalent probe-only connect handoff test if that path can express it. The exact-head Advisor gate independently reports this as a P1 behavior blocker.
|
@rsliter Your blocking comment is addressed in |
Signed-off-by: Rebecca Sliter <571084+rsliter@users.noreply.github.com>
Signed-off-by: Rebecca Sliter <571084+rsliter@users.noreply.github.com>
|
PR Review Advisor finished for commit Request review only when Require no Advisor blockers is green. |
rsliter
left a comment
There was a problem hiding this comment.
Approved at exact head 5227620 after reviewing the complete exact-head PR Review Advisor output. All nine specialists are clear, required CI passes, the settlement failure regression is covered, and local focused tests, repository checks, typecheck, and full PR validation pass. The Advisor's Hermes E2E recommendation is optional for this revision.
Outcome
Hermes recovery now waits for the gateway process to become observably running after NemoClaw starts a stopped sandbox. A transient indeterminate process observation no longer advances immediately to gateway verification and causes
sandbox startorconnect --probe-onlyto fail.Reason
Live Docker/Hermes testing of the fix from #11922 showed that the first post-start process observation can be indeterminate while the same container continues starting normally. The prior predicate accepted that state, so recovery reached gateway inspection too early and failed.
Related issues
Follow-up to #11922
Changes
sandbox startand whenconnect --probe-onlystarts a stopped ordinary Hermes sandbox.Verification
./node_modules/.bin/vitest run --project cli src/lib/actions/sandbox/start.test.ts src/lib/actions/sandbox/connect-probe-observe.test.ts— PASS, 2 files and 32 tests.node --max-old-space-size=8192 node_modules/typescript/bin/tsc -p tsconfig.cli.json— PASS after CLI and plugin builds.pre-commit,commit-msg, andpre-pushhooks — PASS.b259c14c33f20f18a8ae2c995aaeb5e8242b14d9— installation, created state, status, managed inference, route isolation, and official cleanup passed; explicit start and stop-to-probe recovery failed on the same running container after the transient process observation, confirming this change's target boundary.Review notes
This is a narrow lifecycle correction. It does not change credentials, network policy, routes, privileges, container identity, or external mutation controls. A PR-head live Docker/Hermes recovery run remains the final real-runtime validation.
Signed-off-by: Senthil Ravichandran senthilr@nvidia.com
Summary by CodeRabbit