Skip to content

docs(audit): exec.approval.* (singular) wire-path broken — #2606#2609

Merged
alexey-pelykh merged 1 commit intomainfrom
audit/exec-approval-singular-2606
Apr 27, 2026
Merged

docs(audit): exec.approval.* (singular) wire-path broken — #2606#2609
alexey-pelykh merged 1 commit intomainfrom
audit/exec-approval-singular-2606

Conversation

@alexey-pelykh
Copy link
Copy Markdown

Summary

Audit-only PR resolving #2606. Documents that the gateway handlers for exec.approval.{request,waitDecision,resolve} (singular) have been deleted (PR #2375 in 2026-04-16, after the original implementation was gutted by PR #70/#71 in 2026-02-27), but the protocol surface (method-scopes, server-methods-list, schemas, validators, broadcast scope guards) and live RPC callers (TS agents nodes-tool.ts:550, CLI register.invoke.ts:247, web UI app.ts:467, macOS GatewayConnection.swift:91) survive — leaving an unreachable RPC surface where every live caller would receive INVALID_REQUEST: unknown method: exec.approval.* from the gateway today.

The audit walks each of #2606's four acceptance criteria with file:line evidence, distinguishes the singular exec.approval.* (request/decision flow — broken) from the plural exec.approvals.* (policy/storage — working, out of scope per the issue body), confirms no production broadcast producers exist for exec.approval.{requested,resolved}, and verifies no shared correlation shape would be worth extracting before deletion.

Documentation alignment finding: docs/concepts/exec-approvals-architecture.md (2026-04-26, issue #2573, Path A) still asserts the singular path is "End-to-end functional" — written 10 days after the handlers were physically deleted. The audit doc is now the authoritative current-status reference.

This PR is audit-only. Restore-vs-full-gut is a follow-up sized after this lands, per the issue body. Recommendations live at the end of the audit doc.

Test plan

  • pnpm format:check clean (5126 files)
  • pnpm tsgo clean
  • pnpm lint clean (3404 files, 0 warnings, 0 errors)
  • pnpm lint:tmp:no-random-messaging clean
  • pnpm lint:no-remoteclaw-ai clean
  • pnpm lint:ui:no-css-class-drift clean (0 orphans)
  • All cited file:line references verified against current code (24 spot-checks via fresh-context polish review)
  • Doc-only change — no source code, schemas, or tests touched

Closes #2606

🤖 Generated with Claude Code

…2606)

The gateway handlers for `exec.approval.{request,waitDecision,resolve}`
were deleted by PR #2375 (commit 4e84640, 2026-04-16) — themselves
zero-caller stubs at that point, after the original implementation was
gutted by PR #70/#71 (commit 45d6734, 2026-02-27). The protocol-level
declarations (method-scopes, server-methods-list, schemas, validators,
broadcast scope guards) and live RPC callers (TS agents node-tool, CLI
nodes-cli register.invoke, web UI app.ts, macOS GatewayConnection +
ExecApprovalsGatewayPrompter) survived. Net result: an unreachable RPC
surface where every live caller would receive `INVALID_REQUEST: unknown
method: exec.approval.*` from the gateway today.

The audit (`docs/refactor/exec-approval-singular-audit-2606.md`) walks
each of #2606's four acceptance criteria with file:line evidence,
documents the subsystem split (singular `exec.approval.*` request/decision
flow vs plural `exec.approvals.*` policy/storage — the latter is in
active use and out of scope), confirms zero broadcast producers exist for
`exec.approval.{requested,resolved}` events, and verifies that no shared
correlation shape would be worth extracting before deletion.

Documentation finding: `docs/concepts/exec-approvals-architecture.md` was
written 2026-04-26 (10 days after the singular handlers were deleted by
PR #2375) and still asserts "End-to-end functional" for this path. The
audit doc is now the authoritative current-status reference.

This PR is audit-only — restore-vs-full-gut is a follow-up sized after
this lands, per the issue body. Recommendations live at the end of the
audit doc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@alexey-pelykh alexey-pelykh merged commit 5d77aae into main Apr 27, 2026
16 checks passed
@alexey-pelykh alexey-pelykh deleted the audit/exec-approval-singular-2606 branch April 27, 2026 07:47
alexey-pelykh added a commit that referenced this pull request Apr 27, 2026
#2618)

Two doc-only changes anticipating the broader cleanup tracked in #2618:

1. ICED banner on docs/concepts/exec-approvals-architecture.md — the
   architecture described is not currently implemented (gateway handlers
   for exec.approval.{request,waitDecision,resolve} were deleted by
   PR #2375; macOS-mediated path is broken; verified by the audit doc
   at docs/refactor/exec-approval-singular-audit-2606.md from PR #2609).
   Status changed: Accepted → Iced. Doc preserved for historical
   context only; will be replaced when the new approach ships.

2. middleware-architecture.md § The Middleware Boundary Principle table
   gains a row clarifying the boundary for tool-approval routing:
   - LEFT (RemoteClaw): AgentRuntime tool-approval routing (capture
     and surface to channels)
   - RIGHT (Agent): Tool-execution decisions and the actual invocation
     post-approval

   Plus a clarifying paragraph: routing is RemoteClaw's because the
   user is reachable only via RemoteClaw's channel adapters (the
   "requires RemoteClaw infrastructure?" test is satisfied); tool
   execution itself remains the agent CLI's responsibility.

The broader cleanup (gut 4 stranded callers + protocol declarations +
tests) is in #2618. The chat-mediated AgentRuntime tool-approval
routing implementation is in #2616 (referenced from the new
boundary-table paragraph).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
alexey-pelykh added a commit that referenced this pull request Apr 27, 2026
#2618) (#2619)

Two doc-only changes anticipating the broader cleanup tracked in #2618:

1. ICED banner on docs/concepts/exec-approvals-architecture.md — the
   architecture described is not currently implemented (gateway handlers
   for exec.approval.{request,waitDecision,resolve} were deleted by
   PR #2375; macOS-mediated path is broken; verified by the audit doc
   at docs/refactor/exec-approval-singular-audit-2606.md from PR #2609).
   Status changed: Accepted → Iced. Doc preserved for historical
   context only; will be replaced when the new approach ships.

2. middleware-architecture.md § The Middleware Boundary Principle table
   gains a row clarifying the boundary for tool-approval routing:
   - LEFT (RemoteClaw): AgentRuntime tool-approval routing (capture
     and surface to channels)
   - RIGHT (Agent): Tool-execution decisions and the actual invocation
     post-approval

   Plus a clarifying paragraph: routing is RemoteClaw's because the
   user is reachable only via RemoteClaw's channel adapters (the
   "requires RemoteClaw infrastructure?" test is satisfied); tool
   execution itself remains the agent CLI's responsibility.

The broader cleanup (gut 4 stranded callers + protocol declarations +
tests) is in #2618. The chat-mediated AgentRuntime tool-approval
routing implementation is in #2616 (referenced from the new
boundary-table paragraph).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Audit: exec-approvals request/decision/resolve subsystem registration survives a gut — wire-path or unregister

1 participant