Skip to content

mcpx: Phase 3 of #2434 — -32021 when no broker audience can answer + error-register truth-up (ERR-08, conflict #8, three gap rows) #2438

Open

Description

@dezren39

Phase 3 of design #2434 (mcpx error honesty, finished). Design doc: files/designs/code-mcpx-error-honesty.md in the keep-the-four-repos-healthy goal workspace. Gated on Phase 1 (#2435) — relayed requiredCapabilities must survive the gateway intact before this phase produces more of them. The decision is recorded on #2434.

Scope

-32021 exactly when waiting is not an answer, at the ask seam (internal/mcpserver/ask.go, canAsk ~L85):

  • When a question would go to the broker because the requesting peer did not declare the capability the question needs, AND the broker's routing for that question has no audience that can answer it (no default audience, no routed audience for its kind/server — cf. ask.go:~196 "the default audience can answer, so waiting is right"; this phase is exactly the case where that premise fails), the request fails instead of waiting:
    • modern peer → -32021 with data.requiredCapabilities naming the missing capability, in the same shape missingTasks (tasks.go:199) and listen.go:138 already emit; HTTP 400 via the existing modernStatus mapping;
    • legacy peer → the existing broker-less failure behaviour for that surface (no new code coined for legacy; -32021 is a 2026 construction).
  • When any audience CAN answer, nothing changes: the broker fallback remains the deliberate alternative ERR-08 records.
  • If the broker cannot today answer "does any audience exist for this question" truthfully, add that signal first — never guess it.

Truth-up (same phase)

Acceptance

Out of scope: Phases 1-2 mechanics, ERR-09/ERR-13 (they belong to #2209's classification), #1948's fixture-shaped items.

Acceptance criteria

  • At the ask seam: when a question would go to the broker for a capability the requesting peer did not declare AND no broker audience can answer it, modern peers receive -32021 with data.requiredCapabilities naming the missing capability (HTTP 400 via the existing modernStatus mapping); legacy peers keep the existing broker-less failure behaviour.
  • When an audience CAN answer, behaviour is unchanged (the request waits as today).
  • The error-register truth-up named in this issue is applied, and tests cover both the no-audience failure and the audience-exists wait. (Gated on Phase 1, mcpx: Phase 1 of #2434 — structured upstream-error carriage through the gateway + local-error origin marker #2435.)

Activity

  1. added
    task/triageQueue packet kind: verify, reproduce, and route this item
    status/blockedQueue or user escalation state
    priority/normalOrdinary priority (the default)
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. added
    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
  4. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    🤖 agent-note:v1 — design-architect pass 16 (2026-10-29). Phase 3 of design #2434, gated on Phase 1 (#2435) — labelled status/blocked accordingly. Triage packet enqueued: pilot task 3648 (queue=repo-health-code-pilot, status=queued, verified). Triage: record the gate state, confirm the broker no-audience signal exists or scope it as the phase's first step, and enqueue the implementation follow-up with the acceptance criteria intact.

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

    @dezren39
    MemberAuthor

    Intake review (fleet monitor, 2026-10-29 run):

  7. 404 remaining items

  8. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: parked
    task: 3979 (small_fix, repo-health-code-pilot)
    lane: c29174f1-48e0-4b13-b4ff-9b73ab67e9ab
    worker: repo-worker-code
    at: 2026-11-04T22:16:48Z
    reason: Gate issue #2435 is still OPEN and assigned to dezren39. The packet requires #2435 to land before implementation; #2438 is also Drew-assigned. Fresh checks found no PRs for either issue.
    resume_after: 2026-11-04T22:46:35Z, and only after #2435 lands on main and ownership of #2438 is released/handed off.
    next: revalidate both issues and all matching PR state; no code or branch changes this run.

  9. 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 Nov 4, 2026
  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  11. 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 Nov 4, 2026
  12. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  13. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor
  14. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  15. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  16. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

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/enhancementmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)source/design-architectFiled by the repo design architect jobstatus/parkedDeliberately paused with a recorded resume conditiontask/small-fixQueue packet kind: bounded fix with reproduction and targeted testswork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions