Skip to content

mcpx: Phase 3 of #1675 — review-first mcpx elicit surface + nix#255 truth-up #1678

Closed

Description

@dezren39

Phase 3 of design #1675 (mcpx elicitation broker hygiene). Design doc: files/designs/code-mcpx-elicitation-broker-hygiene.md in the keep-the-four-repos-healthy goal workspace. Gated on Phases 1–2 (the owner-only store and retention/events issues of #1675).

Scope

Make mcpx elicit a review-first answering surface, then tell the truth in the registers.

  • URL questions (internal/cli/elicit.go renderQuestion ~L201-232): print the URL's registrable domain on its own emphasised line apart from the full URL (the full URL still prints — do not regress the covered show-full-url behaviour). If the host contains xn-- labels or non-ASCII that renders as punycode, print an explicit warning to check the domain is the one expected.
  • Form questions: pre-fill the answer example (exampleFor ~L275-285, today "..." for every field) with each property's declared schema default where one exists; describeSchema (~L235-261) gains the default in the per-field detail. No default declared → "..." as today.
  • Review step: mcpx elicit answer on an interactive terminal renders the parsed answer back against the question (field → value, with credential-shaped fields — the ones elicit.Route routes to humans — masked) and asks for confirmation before Broker.Respond relays it. An opt-out flag (name settled in triage, e.g. --yes) preserves one-shot behaviour for scripts; non-interactive use is byte-for-byte today's behaviour.
  • Truth-up: retire the six elicit-ui conformance gaps (elicitation-app-review-modify-responses, elicitation-client-form-review-modify-responses, elicitation-client-url-show-domain-and-consent, elicitation-client-handle-urls-carefully, elicitation-client-highlight-domain, elicitation-client-warn-punycode) in internal/conformance/coverage_clientfeatures.go, and update the remaining #255-tagged gap texts that Phases 1–2 made stale (elicitation-server-follow-best-practices mentions world-readable storage).
  • Post the completion evidence on mcpx: elicitation storage is readable by any local user and never pruned; elicitation UI and response validation rows dezren39/darwin-nix#255 — commenting, not closing: its answer-validation acceptance is only partly this design's (client slice is mcpx: Phase 3 of #1481 — validate elicitation form answers against requestedSchema in client.answer #1484; the server-relay slice elicitation-server-validate-received-data stays open and must be named as remaining in the evidence comment).

Evidence (main d39e611, 2026-10-28)

  • Origin mcpx: elicitation storage is readable by any local user and never pruned; elicitation UI and response validation rows dezren39/darwin-nix#255 acceptance: "The answering surface shows which server is asking and allows review per the elicitation UI rows." (Server display already exists in renderQuestion — from <server>.<tool> — and is covered elsewhere; the open rows are review, defaults, and URL care.)
  • Gap text for all six UI gaps: "mcpx elicit prints the raw request: no review step, no domain emphasis or punycode warning, no defaults pre-filled".
  • Defaults precedent: the client-side path already applies schema defaults (mcpclient.TestElicitationDeclarations / TestModernElicitationAppliesSchemaDefaults, covered rows in the conformance register) — the CLI surface is the one place defaults are ignored.

Acceptance

  • URL question render: domain on its own line; a punycode host produces the warning; a plain host does not.
  • Form question render: fields with schema defaults show those defaults in the detail and in the answer example; fields without keep "...".
  • Interactive answer: the parsed answer is rendered (credential-shaped values masked) and nothing is relayed until confirmed; declining the review relays nothing. With the opt-out flag, and non-interactively, behaviour matches today.
  • Six elicit-ui gaps retired with tests/render fixtures as evidence; stale #255 gap texts updated.
  • Evidence comment posted on mcpx: elicitation storage is readable by any local user and never pruned; elicitation UI and response validation rows dezren39/darwin-nix#255 naming what landed and what remains (server-relay validation slice).
  • CI green for pkgs/mcpx (tests run in GitHub Actions).

Activity

  1. added
    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
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 28, 2026
  2. added
    work/assignedQueue worker lifecycle state
    and removed
    status/blockedQueue or user escalation state
    queue/queuedHas a queued task in the Supabase agent queue
    on Oct 28, 2026
  3. 105 remaining items

  4. chatgpt-codex-connector commented on Oct 31, 2026

    @chatgpt-codex-connector
  5. 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
  6. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up (resume)

  7. added 2 commits that reference this issue on Oct 31, 2026
  8. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done (fix merged)

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 workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)source/design-architectFiled by the repo design architect jobtask/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions