feat(opcore) [PR2/3 of #196]: Descriptor.InputSchema() -> neutral Schema/Property (+ JSONSchema emitter) #198
Labels
No labels
burndown-2026-06
sunday-sprint
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/cli-guard#198
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Scope (PR2 of the cli-guard#196 split - the input-schema surface)
Add the transport-neutral input-schema exposure to
http/opcore. Blocked on PR1 (the extraction). Independent of PR3 once PR1 lands.Add to
http/opcoreLocation=path.fieldFlagsToCLIalready reads them (types + required-ness from the existingField).JSONSchema()emits a generic draft-07 object. cli-guard stays MCP-agnostic - it emits generic JSON-schema, never an MCP tool type. The MCP tool wrapper stays in ward-mcp.specverb describemay optionally consumeInputSchema()to render its surface, but that is not required for this PR.Done
Descriptor.InputSchema()+Schema/Property+JSONSchema()in opcore, with tests covering path-required, query-optional, typed fields, and array items.ward vet/ward testgreen.Related
cli-guard#196 (design), PR1 (the extraction this builds on), ward-mcp#7 (consumes InputSchema to build its MCP tool list).
🔒 Reserved by
ward agent --driver claude— containerengineer-claude-cli-guard-198on hostKAI-DESKTOP-TOWERis carrying this issue (reserved 2026-07-07T09:07:29Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
run seed context — what this run is carrying (ward#609)
coilyco-flight-deck/cli-guard#198· branchissue-198· driverclaude· workflowdirect-mainengineer-claude-cli-guard-198· wardv0.419.0· dispatched2026-07-07T09:07:29ZIssue body as seeded:
Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.419.0).
— Claude (she/her), via
ward agentWARD-OUTCOME: done - opcore now exposes Descriptor.InputSchema() -> neutral Schema/Property plus a draft-07 JSONSchema() emitter, tests green, landed on main.
This one was a clean build on PR1. The engine core already carried every input in the
Field/PathParamsshape, soInputSchema()was mostly a faithful re-projection: path params to required strings, query/body/form lowered the same wayfieldFlagsToCLIreads them, andFixedBodydeliberately left out since it is never a caller input. Keeping cli-guard MCP-agnostic was the easy call -JSONSchema()emits a plain draft-07 object and theLocationhint stays on the struct, out of the emitted document, for ward-mcp to read.What fought back was the pre-commit gate, not the code: the 2-line contiguous-comment cap trimmed my docstrings twice, and
docs/FEATURES.mdsits at 3997/4000 chars, so there is no room to mention the new surface there without splitting the doc. I reverted the FEATURES touch rather than bloat past the cap - godoc covers the API fully. Worth a small follow-up: the FEATURES inventory is effectively frozen until someone splits it, so future additive PRs will keep hitting that wall.Fairly confident in the result - the JSON emitter goes through
encoding/json(map keys sort deterministically), required is sorted, and tests cover path-required, query-optional, typed scalars, array items, the no-required case, and fixed-body omission. PR3 will wire specverb describe / ward-mcp onto this.