Skip to content

docs(plan): fold the mediation-plane spike verdict into §4.1 - #506

Merged
vikasprogrammer merged 1 commit into
mainfrom
feat/plan-mediation-spike
Jul 31, 2026
Merged

docs(plan): fold the mediation-plane spike verdict into §4.1#506
vikasprogrammer merged 1 commit into
mainfrom
feat/plan-mediation-spike

Conversation

@vikasprogrammer

Copy link
Copy Markdown
Owner

Records the 2026-07-31 gateway spike outcome in docs/agent-os-plan.md §4.1 (the mediation-plane wedge).

Finding: both agentgateway and IBM ContextForge expose a real per-tool-call external decision hook + a structured reject, but neither can hold a call open for a minutes-long human approval — both are synchronous callouts on a bounded timeout. The bet is still viable; the primitive just has to be a protocol.

What changed in §4.1:

  • Suspend-for-a-human is now a deny-with-"pending" → idempotency-keyed retry protocol (sub-timeout approvals still resolve as a synchronous hold).
  • ContextForge is the first adapter (tool_pre_invoke return shape ≈ our existing PreToolUse gate-hook; async; configurable timeout; out-of-process plugin). agentgateway second (cleaner ExtMcp proto, but Rust + ~10s deadline).
  • The EffectIntent → Decision contract gains a first-class pending outcome (allow / ask / deny / pending).
  • Two unknowns flagged for a hands-on test: agentgateway's backend-timeout override on the guardrails gRPC channel, and the agent's client-side MCP request timeout (the true outer bound on any hold).

Docs-only; no code or version change.

🤖 Generated with Claude Code

The 2026-07-31 gateway spike: both agentgateway and ContextForge have a real
per-tool-call external decision hook + a structured reject, but NEITHER can hold
a call open for a minutes-long human approval (synchronous callouts on a bounded
timeout). So §4.1 now records:

- suspend-for-a-human is a deny-with-"pending" → idempotency-keyed retry protocol,
  not a blocking wait (sub-timeout approvals still resolve as a synchronous hold);
- IBM ContextForge is the FIRST adapter (tool_pre_invoke ≈ our gate-hook shape,
  async, configurable timeout); agentgateway second (cleaner ExtMcp proto, Rust,
  ~10s deadline);
- the EffectIntent → Decision contract gains a first-class `pending` outcome
  (allow / ask / deny / pending);
- two unknowns for a hands-on test: agentgateway backend-timeout override on the
  guardrails channel, and the agent's client-side MCP request timeout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vikasprogrammer
vikasprogrammer merged commit 7528b1c into main Jul 31, 2026
1 check passed
@vikasprogrammer
vikasprogrammer deleted the feat/plan-mediation-spike branch July 31, 2026 14:33
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.

1 participant