Skip to content

Commit 6767196

Browse files
fix(cicd-squabbler-mcp): review follow-ups — copyright line, diagnose shape tolerance (#81)
## Summary Two confirmed findings from the multi-angle review of the Push #2 change set, applied to the just-merged `cicd-squabbler-mcp` cartridge (#80): the README gains the estate copyright line (every merged sibling ci-cd README carries it on line 2 — SPDX alone lacks attribution), and `squabble_diagnose` now accepts both the documented bare `{checks}` shape and the `{gate:{checks}}` wrapper callers generalise from `squabble_fight` by analogy (previously an opaque 400; the `squabble-app` backend tolerates both as of cicd-squabbler#14). One cartridge, one PR. ## Schema-validation note - [ ] This PR adds or modifies one or more `cartridge.json` manifests. - [x] This PR does not touch any `cartridge.json`. (`README.adoc` + `mod.js` only; the manifest is untouched, so the strict gate's baseline is unaffected. `schemas/PINNED-SHA` untouched.) ## Refs - Review + backend counterpart: hyperpolymath/cicd-squabbler#14 (same review sweep; backend shape tolerance landed there) - Original cartridge: #80 - Note for the owner: commits from this environment are **unsigned** — needs owner signing per CONTRIBUTING. --- _Generated by [Claude Code](https://claude.ai/code/session_01SUURnQUnzTXYftzWFs5pfZ)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 77a2edb commit 6767196

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

cartridges/domains/ci-cd/cicd-squabbler-mcp/README.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// SPDX-License-Identifier: CC-BY-SA-4.0
2+
// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
23
= cicd-squabbler-mcp
34

45
CI/CD gate-fighter cartridge — makes

cartridges/domains/ci-cd/cicd-squabbler-mcp/mod.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,13 @@ export async function handleTool(toolName, args) {
4444
return post("/api/v1/fight", payload);
4545
}
4646
case "squabble_diagnose": {
47-
const { checks } = args ?? {};
47+
// Accept both the documented bare shape ({checks}) and the
48+
// gate-wrapped shape ({gate:{checks}}) callers generalise from
49+
// squabble_fight by analogy — the backend tolerates both too.
50+
const checks = args?.checks ?? args?.gate?.checks;
4851
if (!Array.isArray(checks)) {
49-
return { status: 400, data: { error: "checks (array) is required" } };
52+
return { status: 400, data: { error: "checks (array) is required — pass {checks:[...]} or {gate:{checks:[...]}}" } };
5053
}
51-
// The backend takes the Gate object directly.
5254
return post("/api/v1/diagnose", { checks });
5355
}
5456
default:

0 commit comments

Comments
 (0)