Skip to content

fix(solicitation-create): correct stale-schema misdiagnosis; doc MCP restart caveat#411

Merged
jjackson merged 1 commit into
mainfrom
emdash/labs-schema-correction
May 22, 2026
Merged

fix(solicitation-create): correct stale-schema misdiagnosis; doc MCP restart caveat#411
jjackson merged 1 commit into
mainfrom
emdash/labs-schema-correction

Conversation

@jjackson
Copy link
Copy Markdown
Owner

Supersedes PR #407 and corrects PR #405's misdiagnosis. The labs maintainer triaged jjackson/connect-labs#212 against the live tools/list schema — 3 of 4 'labs gaps' I filed were actually ACE reading a stale schema, not labs bugs. See the commit message for the full table; full PR body in the file change log entry.

Quick summary

  • Wire-shape 'drift': NOT a labs bug; deployed schema is flat since labs PR gdrive: inflight-dedupe + 30s TTL cache on Shared-Drive probe (PR 0g — perf lens) #211, ACE was reading a stale cached schema.
  • evaluation_criteria[].id: NOT a labs bug; live schema declares it required already.
  • Public-detail page 302s to login: WORKING AS INTENDED; is_public != anonymity.
  • questions[].framing: real ask, BUT already in the deployed schema as an optional property.

Changes

  • skills/solicitation-create/SKILL.md: dropped wire-shape fallback, dropped criterion-id hedge, dropped inline framing anchor convention, dropped 'is_public should be anonymous' verifier plan; added 'Stale-schema gotcha' explaining recovery; live tools/list documented as canonical contract.
  • CLAUDE.md: new section explaining that MCP changes (in-tree edits OR upstream deploys) need full Claude restart — /reload-plugins doesn't respawn MCP subprocesses, they bind tool list + schemas at startup.

Test plan

  • Restart Claude Code after merge; verify ToolSearch shows the fresh labs schema including questions[].framing.
  • Future /ace:step solicitation-create runs emit framing as structured key, payload validates server-side without workarounds.

🤖 Generated with Claude Code

…restart caveat

PR #405 + PR #407 framed three labs-side "gaps" as connect-labs#212
asks. The labs maintainer triaged against the live tools/list and
found 3 of 4 were ACE-side stale-schema reads, not labs bugs:

(a) Wire-shape: NOT a labs bug. Deployed schema is flat (no `data`
    envelope), has been since labs PR #211. ACE was reading a
    pre-#211 cached view.

(b) evaluation_criteria[].id undocumented: NOT a labs bug. Live
    schema declares `evaluation_criteria.items.required: [id, name,
    weight]` already. Same stale-ACE-view problem as #1.

(c) Public-detail page 302s to login: WORKING AS INTENDED.
    `is_public` controls marketplace listing visibility for
    logged-in labs users, not anonymous readability. The skill's
    Step 7a-bis curl-the-public-URL verifier (planned in PR #407)
    can never work because is_public != anonymous.

Only (d) — questions[].framing — was real, AND it turns out the
deployed schema already has framing as an optional question
property. Confirmed against live `tools/list`.

This PR corrects SKILL.md to match the live deployed schema:

- Step 6 wire-shape fallback paragraph removed; call the atom as
  documented (flat fields).
- Criterion-id hedge removed; documented as required by labs schema
  + ACE convention.
- Question framing inline anchor convention (Why we're asking:
  <framing>\n\n<text>) dropped; emit framing as a structured key.
- Step 7a "Why round-trip and not curl-the-public-URL" paragraph
  corrected to note is_public != anonymity.
- Added "Stale-schema gotcha" under Step 6 explaining the recovery:
  curl tools/list live, treat as truth, restart Claude Code
  (full process restart, not /reload-plugins) to pick up the new
  schema.
- Added "live tools/list is the canonical contract" at top of
  Step 2.
- Change log: prior 2026-05-22 entry marked superseded; correction
  entry documents the full retraction + lesson.

CLAUDE.md addition:

- New section under "Plugin updates" explaining that MCP subprocess
  changes (in-tree mcp/ edits OR upstream MCP server deploys) require
  a full Claude Code restart to take effect — /ace:update +
  /reload-plugins reload agents + skills + hooks but NOT MCP
  subprocesses, which bind tool lists + schemas + module code at
  subprocess startup. Symptoms documented; recovery (curl live
  tools/list to validate) documented.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@jjackson jjackson enabled auto-merge May 22, 2026 09:34
@jjackson jjackson merged commit ff08292 into main May 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant