Repository navigation
Description
Phase 3 of design #2077 (origin umbrella #1935, register rows ELI-12 server half + ELI-04/ELI-09 truth-up). Design doc: files/designs/code-mcpx-elicitation-era-edges.md in the keep-the-four-repos-healthy goal workspace. Decision is recorded on #2077 — this phase implements it as scoped; do not re-file under #1935, this phase is what closes it.
Gated on Phases 1–2 of #2077 (the truth-up needs their as-built state; the production trigger is settled against Phase 2's as-built flow).
Scope
Server-side -32042 (pkgs/mcpx/internal/mcpserver, the viaAsk path in ask.go): today a url question for a client that cannot take it stays with the broker and -32042 is never returned — conformance gap elicitation-server-must-return-32042 (internal/conformance/coverage_clientfeatures.go), against the 2025-11-25 error-handling MUST.
- Produce
-32042for a host's call only when ALL hold: host negotiated 2025-11-25; host declaredelicitation.url; a URL question raised by that call is pending; the question cannot be delivered to the host inline (no live channel forelicitation/create— the stateless/no-session case the error exists for). Triage settles the precise undeliverable trigger against Phase 2's as-built flow; the gating rules here are the design's and are not triage's to relax. - The error's
data.elicitationslists exactly the pending URL questions blocking the call, each url-mode with anelicitationId(theparamsFormcpx-<id>synthesis where the upstream sent none). - Never for form questions, never when inline delivery is possible, never at 2026 (MUST NOT emit). An upstream
-32042that reaches the server side unhandled by Phase 2 is relayed only to a host that declaredelicitation.url; otherwise it surfaces as a generic call error. - Truth-up: compare-register rows ELI-04, ELI-09, ELI-12 in
pkgs/mcpx/docs/compare/register/elicitation.mdupdated to as-built — ELI-09 recorded landed with its evidence (Client.capabilitiesdeclareselicitation.urlwhen a handler is installed,internal/mcpclient/modern.go~L71-84; pool installs it,internal/pool/pool.go:508) — plus gapelicitation-server-must-return-32042retired or explicitly recorded partial. - Completion evidence comment on mcpx: elicitation edges — enum downgrade for 2025-06-18, url mode upstream, -32042, and a script-side answer hook #1935 against each of its acceptance bullets, closing mcpx: elicitation edges — enum downgrade for 2025-06-18, url mode upstream, -32042, and a script-side answer hook #1935 iff all are met; the ELI-21 bullet is answered by the design doc's documented-question record (the acceptance's own "or the broker-only path is documented as the deliberate design" ending), not by silence.
Acceptance
- A 2025-11-25, url-declared host whose call is blocked by an undeliverable URL question receives
-32042listing exactly those elicitations with ids; in every other configuration (form question, inline-deliverable, 2026 host, undeclared host) no-32042is emitted, proven by tests per configuration. - Register rows ELI-04/ELI-09/ELI-12 match the as-built code; the conformance gap is retired or recorded partial with the reason.
- mcpx: elicitation edges — enum downgrade for 2025-06-18, url mode upstream, -32042, and a script-side answer hook #1935 carries completion evidence per acceptance bullet and is closed iff all are met.
🤖 agent-note:v1 — filed by the design-architect job (pass 11) as a sub-issue of design #2077, gated on its Phases 1–2. Audit basis: main 26221fcc, 2026-10-28.
Acceptance criteria
- -32042 is produced for a host's call only when all gating conditions hold: host negotiated 2025-11-25, host declared elicitation.url, a URL question from that call is pending, and the question cannot be delivered inline.
- The conformance gap elicitation-server-must-return-32042 is covered by a passing test.
- Register rows ELI-04/ELI-09/ELI-12 are truthed-up to as-built state, and umbrella mcpx: elicitation edges — enum downgrade for 2025-06-18, url mode upstream, -32042, and a script-side answer hook #1935's closure criteria are met or explicitly handed off.
Activity
developing-today commentedon Oct 29, 2026
CODE-996
dezren39 commentedon Oct 29, 2026
🤖
agent-note:v1— design-architect pass 11 (2026-10-28): Phase 3 of design #2077, filed as its sub-issue (verified), gated on Phases 1–2 (#2078/#2079) +status/blocked. Triage packet enqueued: pilot task 3002 (queue=repo-health-code-pilot, status=queued, verified). Packet:hidden_files/queue-packets/packet-2080.jsonin the keep-the-four-repos-healthy goal workspace. Decision recorded on #2077; design docfiles/designs/code-mcpx-elicitation-era-edges.md.dezren39 commentedon Oct 29, 2026
Intake review
Fleet monitor intake (2026-10-29) — verified still live: no merged PR or commit implements this yet; the filing audit/decision record it cites is current.
Notes: Phase 3 of design #2077 (umbrella #1935). Already labelled kind/bug, priority/normal, effort/m, source/design-architect, app/mcpx at filing; this pass adds the missing acceptance section and meta/enriched only. Gated on Phases 1–2 (#2078, #2079) — the truth-up needs their as-built state. Filed 2026-10-29 from the #2077 audit at main 26221fc; no merged PR implements it yet.
Suggested approach: Settle the precise undeliverable condition against Phase 2's as-built flow first, then implement in the viaAsk path in pkgs/mcpx/internal/mcpserver/ask.go.
Risks: Producing -32042 in a case the host could actually have answered inline would break working flows — the gating conjunction is the whole design.
Labels normalized by the monitor; acceptance criteria appended to the body (original text preserved verbatim above it).
dezren39 commentedon Oct 29, 2026
Cross-reference from triage task 2830 on umbrella #1935 (2026-10-29): the row mapping was re-verified against current main — ELI-04 → #2078, ELI-12 client → #2079, ELI-12 server + register truth-up + #1935 closure → this issue (#2080), ELI-09 already landed in code (
internal/mcpclient/modern.go:74-79declareselicitation.url), ELI-21 remains the open question recorded on #2077. No duplicate packet was enqueued from #1935.46 remaining items
dezren39 commentedon Oct 31, 2026
🤖 Agent note · picked up
mcpx: produce -32042 for undeliverable URL elicitations (#2080) (#2886)
dezren39 commentedon Oct 31, 2026
🤖 Agent note · done