feat(code-review): integrate fallow structural pre-pass for /gsd-code-review (#3424)

* feat(code-review): add optional fallow structural pre-pass

* fix(ci): sync lockfile for fallow optional binaries

* fix(test): make fallow integration tests cross-platform

* fix(review): require executable fallow binary paths

* docs(review): clarify structural findings usage and size guard

* fix(fallow): preserve line:0, prefer node_modules/.bin, sync SDK twin (H1, M2, N1 from #3424 review)

* fix(workflow): harden fallow pre-pass — exit check, timeout, atomic write, size-guard order (B1, H2-H4, M1, M3 from #3424 review)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(deps): pin fallow floor to ^2.70.0 matching lockfile (H7 from #3424 review)

* fix(config): enum-validate fallow.scope/profile + group code_quality.* contiguously (H5, N3 from #3424 review)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(fallow): label mcp gate reserved, version-pin install, expand context schema (B3, H8, M4, M8, L1 from #3424 review)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test(fallow): replace source-grep with behavioral tests, expand fixtures, fail-loud tmpdir (B4, H6, L2, L3, M5, M6, N2 from #3424 review)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(workflow): escape closing structural_findings tag in JSON payload (CR #3424 inline finding)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-05-13 21:19:47 -04:00
committed by GitHub
parent 1e091d2bcb
commit 75d5ca5875
20 changed files with 1131 additions and 2 deletions

146
package-lock.json generated
View File

@@ -22,6 +22,9 @@
},
"engines": {
"node": ">=22.0.0"
},
"optionalDependencies": {
"fallow": "^2.70.0"
}
},
"node_modules/@anthropic-ai/claude-agent-sdk": {
@@ -205,6 +208,110 @@
"node": ">=18"
}
},
"node_modules/@fallow-cli/darwin-arm64": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/@fallow-cli/darwin-arm64/-/darwin-arm64-2.70.0.tgz",
"integrity": "sha512-qxNnT18gxlVwq1PqGF4ZPRaziSXYrglB6f3gplpDdbN977ayYAIMlsurL/+ZSOdg6p4Q53NE6ea9GgG4rGrVMQ==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@fallow-cli/darwin-x64": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/@fallow-cli/darwin-x64/-/darwin-x64-2.70.0.tgz",
"integrity": "sha512-9zn2HocNIdugLSj4lrkLjIDkRyXroewAwJDGTJctYfFnjZfW8RkK6wXQUDQhH5ZNU3gRRX5e+rGkibndKQZAWw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@fallow-cli/linux-arm64-gnu": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/@fallow-cli/linux-arm64-gnu/-/linux-arm64-gnu-2.70.0.tgz",
"integrity": "sha512-M6OT7LK++P6NUh+mU8RwtHk4JbIB+/bI98h3Wwe1NzeVTnaSNpAd0wS/pM/VJk4XiWEyJEMnbk2/iHdLq3k0Dw==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@fallow-cli/linux-arm64-musl": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/@fallow-cli/linux-arm64-musl/-/linux-arm64-musl-2.70.0.tgz",
"integrity": "sha512-GbQt6ydIFZc0IW9yqzAKoj7MZtCGODiVsLfI2hknsMZQ2siEHNC8KLscuJwClYdUG8owPj5z/zjpRpY2ep4G7Q==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@fallow-cli/linux-x64-gnu": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/@fallow-cli/linux-x64-gnu/-/linux-x64-gnu-2.70.0.tgz",
"integrity": "sha512-LYz8vjgMLy7ohfgw+/ZQoMoZs59xkRMCxrr3qJ29MT+w3+XyQXbal2z+ockGNq+KlHkqviyoXjctVSenpHljEA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@fallow-cli/linux-x64-musl": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/@fallow-cli/linux-x64-musl/-/linux-x64-musl-2.70.0.tgz",
"integrity": "sha512-yQSvXnKJW8cVSgcI61j4GVULk3o269ipzkQWXVemdc5YQlu6MZFEb15vCBpPtbrmyLNn/t0URLvF6u2UrNux9A==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@fallow-cli/win32-arm64-msvc": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/@fallow-cli/win32-arm64-msvc/-/win32-arm64-msvc-2.70.0.tgz",
"integrity": "sha512-KFCV0tq5QSlP2pOuXFhNGCHUM9uybsObqnr1t3KDZwSF/afOB3KNTqbAm0cG5AQN9nixTNbwmCheYkdcP9J1AA==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@fallow-cli/win32-x64-msvc": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/@fallow-cli/win32-x64-msvc/-/win32-x64-msvc-2.70.0.tgz",
"integrity": "sha512-479acpOWbtdDQ7T+YMsKbc6uPWPEOIKXfejdrCqlpv1UOehcagUTP0bS0vmCbXsfFsIAbn9HHNAljvLkrWqGqA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@hono/node-server": {
"version": "1.19.14",
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz",
@@ -632,6 +739,16 @@
"node": ">= 0.8"
}
},
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"license": "Apache-2.0",
"optional": true,
"engines": {
"node": ">=8"
}
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -805,6 +922,35 @@
"express": ">= 4.11"
}
},
"node_modules/fallow": {
"version": "2.70.0",
"resolved": "https://registry.npmjs.org/fallow/-/fallow-2.70.0.tgz",
"integrity": "sha512-AXUkSV2AgmtuvgLGf8e5DIigpBm0VHJp1b6fvkjnr15hrGoKhqEzb0KDSzuuZvTaoGuZrb2vLTN2rp5eUd6D/w==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"dependencies": {
"detect-libc": "2.1.2"
},
"bin": {
"fallow": "bin/fallow",
"fallow-lsp": "bin/fallow-lsp",
"fallow-mcp": "bin/fallow-mcp"
},
"engines": {
"node": ">=16"
},
"optionalDependencies": {
"@fallow-cli/darwin-arm64": "2.70.0",
"@fallow-cli/darwin-x64": "2.70.0",
"@fallow-cli/linux-arm64-gnu": "2.70.0",
"@fallow-cli/linux-arm64-musl": "2.70.0",
"@fallow-cli/linux-x64-gnu": "2.70.0",
"@fallow-cli/linux-x64-musl": "2.70.0",
"@fallow-cli/win32-arm64-msvc": "2.70.0",
"@fallow-cli/win32-x64-msvc": "2.70.0"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",