Repository navigation
Closed
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/sSmall: expected under 2 hours of workSmall: expected under 2 hours of workkind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)priority/normalOrdinary priority (the default)Ordinary priority (the default)source/design-architectFiled by the repo design architect jobFiled by the repo design architect jobstatus:donetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
Phase 3 of #1753 — elicitation form gate + register truth-up + nix#210 evidence
Design: #1753 (mcpx sub-capability gating). Design doc: files/designs/code-mcpx-subcapability-gating.md in the keep-the-four-repos-healthy goal workspace. Origin: dezren39/nix#210. Gated on Phase 1 of #1753 (same file, pkgs/mcpx/internal/mcpserver/conn.go).
Problem (verified on main f6760a69)
Peer.CanElicit (pkgs/mcpx/internal/mcpserver/conn.go ~L232-249) special-cases url (revision ≥ 2025-11-25 plus the declared url key) but returns true for form against any elicitation declaration — including a 2025-11-25+ host that declared only {"url": {}}, which cannot render a form and would receive a request with a requestedSchema it never agreed to. Compare-register row CAP-08: "{} means form only"; the form gate ignores a url-only declaration.
Scope (decision recorded on #1753)
CanElicit("form")reads the declaration's shape where the revision defines sub-keys:- Peer revision ≥ 2025-11-25: form is sendable iff the declaration carries a
formkey or is empty (elicitation: {}is the form-only declaration). A declaration carrying onlyurlis not form-capable. - Peer revision < 2025-11-25: elicitation has no sub-keys; presence means form, exactly as today.
- The
urlbranch is unchanged.AnswersInlineinherits the corrected form answer. - Malformed declaration values behave as undeclared (existing tolerance).
- Peer revision ≥ 2025-11-25: form is sendable iff the declaration carries a
- Truth-up (after Phases 1–2 have landed):
- Compare-register rows CAP-02, CAP-04, CAP-05, CAP-06, CAP-08, SMP-09, SMP-11 in
pkgs/mcpx/docs/compare/register/updated to as-built — several were stale before this design (roots answering and handler-gated declaration landed earlier; cite those PRs/commits where the register names them). - Completion evidence comment on dezren39/nix#210 covering each of its acceptance bullets with its landing PR; close nix#210 if and only if every bullet is met, otherwise name the unmet bullet on both issues. (Commenting/closing on the nix repo is the cross-repo set rule: nix#210 is the origin record, mcpx: design — sub-capability gating (gate on sampling.tools / sampling.context / elicitation.form, not parent presence) #1753 is the design of record in the canonical repo.)
- Compare-register rows CAP-02, CAP-04, CAP-05, CAP-06, CAP-08, SMP-09, SMP-11 in
Out of scope
includeContextvalues across a relay (open question on mcpx: design — sub-capability gating (gate on sampling.tools / sampling.context / elicitation.form, not parent presence) #1753; gapsampling-server-avoid-includecontext-valuesstays open and must be named as remaining in the nix#210 evidence if it is still open).- Any change to the
urlgate, roots behaviour, or upstream declarations.
Acceptance criteria
- Tests cover declarations: url-only (form refused at 2025-11-25+), form-only, both keys,
{}(form allowed), legacy pre-2025-11-25 (form allowed), malformed (treated as undeclared). - A url-only host is no longer offered form elicitations on either the legacy wire path or the modern
input_requiredpath (sendableTocovers both); form-declaring hosts are unaffected. - Register rows listed above match the code; the nix#210 evidence comment is posted and nix#210 is closed iff all its acceptance bullets are met.
- CI green (GitHub Actions; per fleet rule, no builds on the sandbox).
Metadata
Metadata
Assignees
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/sSmall: expected under 2 hours of workSmall: expected under 2 hours of workkind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)priority/normalOrdinary priority (the default)Ordinary priority (the default)source/design-architectFiled by the repo design architect jobFiled by the repo design architect jobstatus:donetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
developing-today commentedon Oct 28, 2026
CODE-712
dezren39 commentedon Oct 28, 2026
🤖 Agent note · filed
internal/mcpserver/conn.go);status/blockedapplied at filing. Triage packet enqueued directly to therepo-health-code-pilotqueue as task 1980 (verified: queue=repo-health-code-pilot, status=queued, last_error=null); its triage confirms the gate state rather than implementing. Packet:hidden_files/queue-packets/packet-1757.jsonin the keep-the-four-repos-healthy goal workspace.{}still form-capable, legacy unchanged), register rows CAP-02/04/05/06/08 + SMP-09/11 match the code, and nix#210 carries completion evidence (closed iff all its bullets are met).files/designs/code-mcpx-subcapability-gating.md; origin mcpx: capabilities declared to upstreams that nothing answers, and host gates that ignore sub-capabilities dezren39/darwin-nix#210dezren39 commentedon Oct 28, 2026
🤖 Agent note · picked up — triage of Phase 3 elicitation form gate
47 remaining items
dezren39 commentedon Oct 29, 2026
🤖 Agent note · picked up
Merge pull request #2162 from developing-today/queue/2004-1757-elicit…
dezren39 commentedon Oct 29, 2026
🤖 Agent note · done