Add typed bounded repeatable inline query fields #260
Labels
No labels
burndown-2026-06
sunday-sprint
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/umbra#260
Loading…
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?
Goal
Extend the frozen inline HTTP grammar so guarded MCP consumers can describe query parameters with their real types, numeric bounds, and repeated array encoding.
Discovered by QA for coilyco-bridge/deploy#218
Problem
Flat
query "name"entries intentionally lower to strings. Discord API v10 needs integer pagination, boolean filters, and repeated array parameters. The currentopcore.Args.Query map[string]stringand ward-mcp bridge collapse every supplied value to one scalar, so the generated tool schema and wire request are inaccurate.Proposed contract
Keep flat query declarations backward compatible. Add a query block using the existing body-field vocabulary where it fits:
The exact property spelling may follow the repository's KDL conventions, but the resulting descriptor and JSON Schema must preserve type and bounds.
Acceptance
minimum,maximum,minItems, andmaxItemswhen declared.This is a generic engine capability. No Discord-specific names or defaults belong in cli-guard.
QA extended the generic acceptance contract: inline query fields also need an at-most-one declaration for cases such as cursor alternatives. The implementation uses
mutually-exclusive "a" "b" ...insidequery { ... }, resolves every member against local query names, enforces the group before any upstream call, and emits standard draft-07 pairwiseallOfconstraints usingnotplusrequired. Typed arrays continue to encode as repeated keys in input order.Implementation checkpoint is pushed on
feat/typed-query-260at91378ee38c9ab084678e778f9e7980ade1f2e617.Validation: focused opcore and specverb query tests pass,
make build,make vet,make tidy, the godoc check, andGOOS=linux make lintpass. All-files pre-commit passes the task files and reports only the pre-existing 81-line README catalog-cap failure. The native Windows full suite also reports existing Unix path, mode, HOME, and shell assumptions outside this change.Correction to the checkpoint comment: the exact pushed SHA is
91378ee6bb7d3f259fbe4473a7d7c4ef77750b2a.