You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adopt the pack-spec 4.20.0 returns_result_set key in the catalog-entry schema, so plugin authors can declare it.
returns_result_set — boolean, default true, on the per-tool granularity block. Declares whether the tool returns a result set at all.
Why
scope_filtering: none means two different things, and this repo's own schema description says both:
"none: tool has no concept of scope (data is naturally unscoped, or the plugin punts entirely)."
Only the second is the failure mode DD-333 refuses. The first — no result set to scope — is a different claim the verdict table cannot express, so it refuses tools the contract was never written about.
Ratified in stallari-harness ADR-0042 § Amendment 2026-08-21 (0f1aced2). Normative definition and the version bump land upstream in Groupthink-dev/stallari-pack-spec#20.
Blocked by
Groupthink-dev/stallari-pack-spec#20 — pack-spec 4.20.0 defines the key. Adopting it here first would ship a schema ahead of its own specification.
Scope
Write set:
schemas/catalog-entry.schema.json — add returns_result_set to the granularity block. The block is additionalProperties: false, so this edit is what makes the key declarable at all.
scripts/catalog-entry.schema.test.js — cases for present-true, present-false, and absent.
scripts/build-catalog.js — only if it needs to carry the key through; check before assuming it does.
Acceptance criteria
schemas/catalog-entry.schema.json accepts returns_result_set as a boolean on the granularity block, and it is not added to that block's required array.
A catalog entry that omits the key still validates, and every existing plugin JSON in plugins/tools/ validates unchanged — 59 files, 20 of which carry a granularity block.
A catalog entry declaring returns_result_set: false validates.
A non-boolean value is rejected.
scripts/catalog-entry.schema.test.js covers 1–4, and the existing suite stays green.
The non_conformance_rationale derivation in build-catalog.js is untouched. The new key is not a non-conformance signal — see DD-338 Phase B.1.b — HA/tailscale/syncthing catalog flips #20 for why conflating the two would mislabel a shape fact as a diligence failure.
Evidence
Measured at da20179: 59 JSON files under plugins/tools/, 20 carrying a granularity block, 19 declaring at least one scope_filtering: "none", 243 such declarations in total, 78 of them in cloudflare-blade-mcp.json. All of them keep their current verdict — the default is true.
What to build
Adopt the pack-spec 4.20.0
returns_result_setkey in the catalog-entry schema, so plugin authors can declare it.returns_result_set— boolean, defaulttrue, on the per-toolgranularityblock. Declares whether the tool returns a result set at all.Why
scope_filtering: nonemeans two different things, and this repo's own schema description says both:Only the second is the failure mode DD-333 refuses. The first — no result set to scope — is a different claim the verdict table cannot express, so it refuses tools the contract was never written about.
Ratified in
stallari-harnessADR-0042 § Amendment 2026-08-21 (0f1aced2). Normative definition and the version bump land upstream in Groupthink-dev/stallari-pack-spec#20.Blocked by
Scope
Write set:
schemas/catalog-entry.schema.json— addreturns_result_setto thegranularityblock. The block isadditionalProperties: false, so this edit is what makes the key declarable at all.scripts/catalog-entry.schema.test.js— cases for present-true, present-false, and absent.scripts/build-catalog.js— only if it needs to carry the key through; check before assuming it does.Acceptance criteria
schemas/catalog-entry.schema.jsonacceptsreturns_result_setas a boolean on thegranularityblock, and it is not added to that block'srequiredarray.plugins/tools/validates unchanged — 59 files, 20 of which carry agranularityblock.returns_result_set: falsevalidates.scripts/catalog-entry.schema.test.jscovers 1–4, and the existing suite stays green.non_conformance_rationalederivation inbuild-catalog.jsis untouched. The new key is not a non-conformance signal — see DD-338 Phase B.1.b — HA/tailscale/syncthing catalog flips #20 for why conflating the two would mislabel a shape fact as a diligence failure.Evidence
Measured at
da20179: 59 JSON files underplugins/tools/, 20 carrying agranularityblock, 19 declaring at least onescope_filtering: "none", 243 such declarations in total, 78 of them incloudflare-blade-mcp.json. All of them keep their current verdict — the default istrue.Refs Groupthink-dev/stallari-harness#1026, Groupthink-dev/stallari-harness#1027, Groupthink-dev/stallari-pack-spec#20.