Files
pad/internal
xarmian bb62cfdc95 test(mcp): derive the conflict property's population from the declared schema (BUG-2850)
The lead's finding after round 14, and it is a sharper statement of what
went wrong than mine was.

The property test enumerated its sources by hand, and that hand-written
list came from the same head as detectFieldConflicts. A property whose
input list mirrors the implementation cannot see a source the
implementation forgot — which is exactly how the round-14 defect survived
it: the property SKIPPED param-vs-array pairs as "out of scope", which
was the implementation's assumption restated as a test assumption.

So the population now comes from the DOOR'S DECLARED CONTRACT — the live
pad_item ToolDef's parameter list, which is what agents read — and every
declared param must be either classified by the conflict machinery or
explicitly excluded with a reason. The two lists have genuinely different
origins (the tool schema vs the four key sets), which is the whole point:
a test that derives its expectations from the thing it checks cannot
fail.

It earned its place immediately by naming ten declared params I had not
classified. Each is now excluded WITH its reason, because a bare list
would let a future field-writing param be silenced by adding one word to
it — the round-14 mistake in miniature.

The interesting group is summary/details/decision/rationale. Those DO
change item state, so excluding them is a real claim rather than a shrug:
they write implementation_notes / decision_log through their own actions,
and those exact keys are REFUSED through `field` and `fields`
(BUG-2627 / BUG-2675), so they cannot reach one key by two routes — which
is the only thing this pass adjudicates.

The reverse direction is checked too: every key the machinery classifies
must be reachable through the declared schema, or be a documented
undeclared form (the v0.16 compat IDs, and `plan`, a fields_patch
pseudo-key with no top-level param). That fails if a key set goes stale
against the schema.

gofmt clean · go test ./internal/mcp/ green
2026-09-03 17:55:51 +00:00
..
2026-03-26 01:52:36 +00:00