Skip to content

feat(solicitation-create): ACE owns composition; labs validates schema#398

Merged
jjackson merged 1 commit into
mainfrom
emdash/e2e-malaria-itn-app-k3rt6
May 22, 2026
Merged

feat(solicitation-create): ACE owns composition; labs validates schema#398
jjackson merged 1 commit into
mainfrom
emdash/e2e-malaria-itn-app-k3rt6

Conversation

@jjackson
Copy link
Copy Markdown
Owner

Summary

Walks back the "future labs-side `create_solicitation_from_brief`" direction from PR #396. Operator decided to keep composition in ACE so this skill retains full control over voice, archetype branching, scope transformation from the work order, question framings, evaluation `scoring_guide`s, and decisions-log integration.

Labs's tightened MCP (forthcoming 2026-05-22 deploy) is the right server-side contribution: `create_solicitation` + `update_solicitation` now validate the canonical schema and fail loudly with `INVALID_SCHEMA` + `error.details.fields` keyed by JSON-path (e.g. `evaluation_criteria[0].linked_questions`). Schema enforcement, not content generation.

Changes

  • New top-level design-principle callout at the start of `## Process`:

    ACE owns composition; labs validates the schema. Labs does NOT compose content — there is no `create_solicitation_from_brief` tool, no "standard 6 questions" server-side, no labs-side AI agent that this skill defers to. ACE owns the entire compose-the-content path.

    Plus operational guidance for reading `INVALID_SCHEMA` responses and refreshing the schema against `tools/list` when this SKILL.md is stale relative to a recent labs deploy.

  • Step 6's payload-rejection paragraph updated: labs now rejects unknown top-level fields at write time (post-deploy); `error.details.fields` surfaces the offending JSON path. Don't retry with the same payload; don't stuff extras into free-form fields.

  • Change Log entry removes the "Removal criteria: keep until labs ships `create_solicitation_from_brief`" line from PR feat(solicitation-create): work-order-as-input + canonical labs schema + comprehensive content shape #396. This skill is the long-term home for solicitation composition.

Test plan

  • Next `/ace:run` against an opp publishes a solicitation; labs MCP accepts the canonical-schema payload.
  • Intentionally drift one field (e.g. send `overview` instead of `description`); labs returns `INVALID_SCHEMA` with `overview` in `error.details.fields` and the skill halts with a readable diagnostic rather than silently echoing.

🤖 Generated with Claude Code

Walks back the "future labs-side create_solicitation_from_brief"
direction floated in the previous PR. Operator chose to keep
composition in ACE so this skill retains full control over voice,
archetype-branched scope, framing/scoring_guide quality, and
decisions-log integration (all ACE-context that labs would have to
learn).

Labs's tightened MCP (2026-05-22 deploy) is the right server-side
contribution: create_solicitation + update_solicitation now validate
the canonical schema and fail loudly with INVALID_SCHEMA +
error.details.fields keyed by JSON-path (e.g.
evaluation_criteria[0].linked_questions). Schema enforcement, not
content generation.

Changes:

- New top-level design-principle callout at the start of ## Process:
  "ACE owns composition; labs validates the schema." Documents the
  contract + how to read INVALID_SCHEMA responses + when to re-read
  tools/list inputSchema as the source-of-truth.

- Step 6's payload-rejection paragraph updated: labs now rejects
  unknown top-level fields at write time (post-deploy); error.details
  surfaces the offending field path. Do not retry with the same
  payload; do not stuff extras into free-form fields.

- Change Log entry removes the "Removal criteria: keep until labs
  ships create_solicitation_from_brief" line from PR #396 — this
  skill is the long-term home for solicitation composition.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@jjackson jjackson enabled auto-merge May 22, 2026 08:10
@jjackson jjackson merged commit 8e01e70 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