# CommitBrief 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.

Released June 20, 2026

Canonical URL: https://commitbrief.com/changelog/v1.8.0/

---

## Added

- **Signal control: baseline + inline suppression (ADR-0027).** Two new ways to
  cut repeat noise without hiding findings from review:
  - **Baseline** — `commitbrief --update-baseline` records 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 with `review.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` (or
    `commitbrief-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-on` and no longer appears in `--json findings[]` (unlike the
    display-only `--min-severity`). Neither is silent: additive optional
    `meta.baselined` / `meta.suppressed` counts appear in `--json` (the schema
    stays v1) and a one-line `N baselined · M suppressed` footer prints to stderr.

- **`.pre-commit-hooks.yaml` — pre-commit framework integration.** Add
  CommitBrief to any repo's `.pre-commit-config.yaml` in one entry. Two hook
  ids: `commitbrief` (`language: golang`, the framework builds and pins it for
  you — no separate install) and `commitbrief-system` (`language: system`, uses
  an already-installed `commitbrief` on `PATH`). Distinct from the existing
  git-native `install-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-sleep` and `unseeded-random`:
  - **`brittle-selector`** (JS/TS) — position-based UI/test selectors:
    `:nth-child`, absolute XPath, `.eq(<n>)` / `.nth(<n>)`, trailing `[n]`
    predicates. Stable `data-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-flaky` or
  `review.flaky: false`. Localized (en/tr).