fix(operator): builder tool-name validator, Discord crash guards, pnpm resolver + Rust shadow evidence#465
Merged
Merged
Conversation
…ible reached, daemons live as services Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3dkQzz2mSrSNtGBE9cmXr
…vice-PATH pnpm resolver Wave 1 of the operator-reality audit fixes: - Workflow validation now cross-checks tool grants against the registered tool registry (validateWorkflowRuntimeCapabilities): agent-step toolsAllow entries and builtin tool_grant gate nodes that match no registered tool get a workflow_tool_grant_unknown warning. Grants are fail-closed at runtime, so an unknown name silently stripped the tool — the canvas palette and the NL builder have both emitted such names. Registry set is cached per process and injectable for tests; unavailable registry skips the check rather than false-warning. - Canvas palette: image_generation → image_generate (the registered name). - Discord: three reconnect sites wrapped so vendor throws can't escape as uncaught exceptions (one crashed the whole gateway process 2026-07-02), and a retired gateway instance gets its connect/reconnect no-op'd so late vendor timers can't zombie-reconnect after give-up. - scripts/ui.js resolveRunner falls back to well-known pnpm homes (execPath sibling, homebrew, ~/Library/pnpm, ~/.local/share/pnpm, nvm) — the gateway LaunchAgent's minimal PATH made every restart log "Control UI build failed: Missing UI runner". Verified: UI builds under the exact service PATH now. Live-data fix alongside (not in diff): Task Board Hygiene cron model pin updated openai-codex/gpt-5.3-codex → gpt-5.5 (was failing weekly). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3dkQzz2mSrSNtGBE9cmXr
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Operator-reality wave 1 + Rust shadow-credible evidence
From today's operator-reality audit ("what actually works when you sit down"):
Builder — closes the silent tool-grant footgun
validateWorkflowRuntimeCapabilitiesnow cross-checks agent-steptoolsAllowentries and builtintool_grantgate nodes against the registered tool registry →workflow_tool_grant_unknownwarning. Grants are fail-closed at runtime, so unknown names silently stripped tools with no signal anywhere — both the canvas palette (image_generationvs realimage_generate, palette fixed here too) and the NL builder (AppForge capability ids) have emitted them. Registry set cached per process, injectable for tests, check skipped (not false-warned) when the registry can't build. +4 tests.Discord — the gateway-killing crash
All three vendor reconnect sites (give-up, fresh-IDENTIFY, HELLO-timeout — the last runs in a timer where a throw is process-fatal) are guarded, and a retired gateway instance gets
connect/reconnectno-op'd so late vendor timers can't zombie-reconnect: that exact uncaught error crashed the whole gateway process on 2026-07-02. Discord suite: 173/173 green.Control UI on service restarts
scripts/ui.jsresolveRunner falls back to well-known pnpm homes (execPath sibling, homebrew,~/Library/pnpm,~/.local/share/pnpm, nvm versions) — the gateway LaunchAgent's minimal PATH loggedControl UI build failed: Missing UI runneron every restart. Verified by running the build under the exact service PATH.Rust — promotion checklist evidence run (operator-directed "skip the soak")
rust/argent-execd/PROMOTION_CHECKLIST.mdboxes checked with dated evidence: workspace cargo tests green, all three smoke/soak scripts passed (single-cycle), protocol gen/check clean, all 42 TS consumer tests green (incl. real-daemon integration), both daemons now installed as KeepAlive LaunchAgents and reachable inargent status(first time running as services), parity report 19/0, promotionReady=true and picked up byargent gateway authority status. Status reached: Shadow-credible, live in shadow. The checklist now also records the honest remainder to real authority: argentd ws transport + gateway method surface (the long pole), the Node→Rust delegation seam, canary receipts end-to-end.Live-data fixes alongside (not in diff): Task Board Hygiene cron model pin
gpt-5.3-codex→gpt-5.5.Verification: 12/12 capability tests, 173/173 discord, tsc-since 0 net-new (189 baseline), dashboard tsc clean, oxfmt clean.
🤖 Generated with Claude Code
https://claude.ai/code/session_01T3dkQzz2mSrSNtGBE9cmXr