Repository navigation
Closed
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/design-architectFiled by the repo design architect jobFiled by the repo design architect jobtask/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted tests
Description
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.gorenderQuestion~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 containsxn--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 schemadefaultwhere one exists;describeSchema(~L235-261) gains the default in the per-field detail. No default declared →"..."as today. - Review step:
mcpx elicit answeron an interactive terminal renders the parsed answer back against the question (field → value, with credential-shaped fields — the oneselicit.Routeroutes to humans — masked) and asks for confirmation beforeBroker.Respondrelays 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) ininternal/conformance/coverage_clientfeatures.go, and update the remaining#255-tagged gap texts that Phases 1–2 made stale (elicitation-server-follow-best-practicesmentions 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-datastays 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
#255gap 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).
Metadata
Metadata
Assignees
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/design-architectFiled by the repo design architect jobFiled by the repo design architect jobtask/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted tests
Activity
105 remaining items
chatgpt-codex-connector commentedon Oct 31, 2026
To use Codex here, create an environment for this repo.
dezren39 commentedon Oct 31, 2026
🤖 Agent note · picked up (resume)
login.example.CO.UKrendersdomain CO.UK); (2) the confirmation read ignores context cancellation (Ctrl-C at the review prompt leaves the command stuck, and a laterystill relays). CI also still queued (runner backlog). Fixing both P2s on the laptop worktree this shift, then re-requesting Codex + parking on CI.fix(mcpx): lowercase host for domain lookup; cancellation-aware elici…
Merge pull request #3011 from developing-today/queue/3662-1678-elicit…
dezren39 commentedon Oct 31, 2026
🤖 Agent note · done (fix merged)
16d6d5a804a0330f14b7fb08b55639fed6e2e5c0); closing this issue on the merge (the PR carried no auto-close keyword).TestRenderQuestionURLUppercaseHostShowsRegistrableDomain; cancellation-awareconfirmSend+ ctx re-check beforeRespond, withTestConfirmSendHonoursContextCancellation), threads replied + resolved, and Codex re-reviewed f626032 clean ("Didn't find any major issues").go test ./internal/cli/ ./internal/elicit/pass;./internal/conformance/failures (TestAuthSplit/TestMatrix/TestMessagesClient/TestUtilitiesServer) proven pre-existing — identical with the fix stashed at e49aa20. The mcpx: elicitation storage is readable by any local user and never pruned; elicitation UI and response validation rows #1954 evidence comment was posted by the prior shift (2026-10-31T09:47Z).fix(mcpx): refresh stale vendorHash — vendor tree predates the public…
fix(mcpx): interim-exclude examples from the sandbox check phase (#2896)