* fix(#1012): invoke fallow with its real CLI and wire the report normalizer
The /gsd-code-review structural pre-pass invoked fallow with flags no published
fallow version accepts (--json, --profile, --stdin-files), so it failed on every
run and degraded silently per REQ-FALLOW-02 — the feature never delivered on any
fallow version. Three compounding defects:
1. Invalid flags. Real fallow audit uses --format json (not --json), -q/--quiet,
--changed-since/--base for changed-files scoping (no file-list input), and
--max-crap for thresholds. There is no --profile or --stdin-files.
2. Exit-code handling. fallow audit exits 1 when it FINDS issues (verdict=fail),
0 when clean. The pre-pass treated any non-zero exit as a crash and discarded
the output — i.e. it threw away exactly the findings it exists to surface.
Success is now decided by whether a valid fallow JSON report was produced,
not by the exit code.
3. Schema mismatch. normalizeFallowReport parsed a fictional top-level schema
(unusedExports/duplicates/circularDependencies) fallow never shipped, and was
dead code (the workflow embedded raw JSON; its tests asserted the fictional
schema, one even calling a non-existent runFallowAudit and passing vacuously).
Fixes: align the invocation to fallow's documented agent-facing pattern; map the
profile preset (minimal/standard/strict) to --max-crap (50/30/15); scope phase
runs via --changed-since with a repo-scope fallback; rewrite the normalizer to
fallow's real schema (dead_code.unused_exports/unused_files/circular_dependencies
+ duplication.clone_groups) and wire it into the workflow so the reviewer
receives normalized findings; replace the fictional-schema fixtures and tests
with real-schema ones and delete the vacuous runFallowAudit test.
Closes#1012
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(#1012): backfill changeset PR number to 1044
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>