Skip to content

mcpx: Phase 3 of #2077 — produce -32042 where it is true, register truth-up (ELI-04/09/12), and #1935 closure #2080

Closed

Description

@dezren39

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 -32042 for a host's call only when ALL hold: host negotiated 2025-11-25; host declared elicitation.url; a URL question raised by that call is pending; the question cannot be delivered to the host inline (no live channel for elicitation/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.elicitations lists exactly the pending URL questions blocking the call, each url-mode with an elicitationId (the paramsFor mcpx-<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 -32042 that reaches the server side unhandled by Phase 2 is relayed only to a host that declared elicitation.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.md updated to as-built — ELI-09 recorded landed with its evidence (Client.capabilities declares elicitation.url when a handler is installed, internal/mcpclient/modern.go ~L71-84; pool installs it, internal/pool/pool.go:508) — plus gap elicitation-server-must-return-32042 retired 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 -32042 listing exactly those elicitations with ids; in every other configuration (form question, inline-deliverable, 2026 host, undeclared host) no -32042 is 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

Activity

  1. added
    kind/bugSomething isn't working (prefixed form of the classic bug label)
    task/triageQueue packet kind: verify, reproduce, and route this item
    status/blockedQueue or user escalation state
    priority/normalOrdinary priority (the default)
    queue/queuedHas a queued task in the Supabase agent queue
    app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)
    effort/mMedium: expected under 1 day of work
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    🤖 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.json in the keep-the-four-repos-healthy goal workspace. Decision recorded on #2077; design doc files/designs/code-mcpx-elicitation-era-edges.md.

  4. added
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 29, 2026
  5. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    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).

  6. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    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-79 declares elicitation.url), ELI-21 remains the open question recorded on #2077. No duplicate packet was enqueued from #1935.

  7. 46 remaining items

  8. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Oct 31, 2026
  9. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  10. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Oct 31, 2026
  11. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workkind/bugSomething isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)source/design-architectFiled by the repo design architect jobtask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions