v1.8.0
Signal control to cut repeat noise — a user-private baseline that accepts a brownfield repo's existing findings so you only see new ones, and inline `// commitbrief-ignore` suppression with a visible reason — both true removals that are reported, never silent. Plus a `.pre-commit-hooks.yaml` for one-line pre-commit framework adoption, and three new flaky-test rules: brittle selectors, over-mocking, and wall-clock-dependent assertions.
Added
-
Signal control: baseline + inline suppression (ADR-0027). Two new ways to cut repeat noise without hiding findings from review:
- Baseline —
commitbrief --update-baselinerecords the current findings in a user-private.commitbrief/baseline.json(gitignored, never committed); subsequent runs show only new findings. It’s local convenience only — it never propagates, so CI and the next reviewer still see everything (a teammate can’t bake a bug into a shared baseline). Skip it for a run with--no-baseline; turn it off withreview.baseline: false. Findings are fingerprinted by file + severity + title (not line number, so a baselined finding survives code drift). - Inline suppression — a
// commitbrief-ignore: reason(orcommitbrief-ignore[high]: reason) comment on a finding’s line drops that finding, with the reason visible in the diff the reviewer reads. - Both are true removals — a removed finding no longer counts toward
--fail-onand no longer appears in--json findings[](unlike the display-only--min-severity). Neither is silent: additive optionalmeta.baselined/meta.suppressedcounts appear in--json(the schema stays v1) and a one-lineN baselined · M suppressedfooter prints to stderr.
- Baseline —
-
.pre-commit-hooks.yaml— pre-commit framework integration. Add CommitBrief to any repo’s.pre-commit-config.yamlin one entry. Two hook ids:commitbrief(language: golang, the framework builds and pins it for you — no separate install) andcommitbrief-system(language: system, uses an already-installedcommitbriefonPATH). Distinct from the existing git-nativeinstall-hook. -
Flaky-test detector: three new rules (ADR-0022). The deterministic, provider-free pre-pass now flags three more high-precision anti-patterns in changed test files, alongside
hard-sleepandunseeded-random:brittle-selector(JS/TS) — position-based UI/test selectors::nth-child, absolute XPath,.eq(<n>)/.nth(<n>), trailing[n]predicates. Stabledata-testid/role/text selectors are not flagged.over-mock— a test piling on an excessive number of mock setups (file-scoped, per test function), a signal the test is brittle.time-dependency— an assertion coupled to the wall clock (time.Now()/Date.now()/new Date()…) without an injected clock. All three are on by default for API providers; skip with--no-flakyorreview.flaky: false. Localized (en/tr).