Skip to content

v1.5.2 — eight audit findings closed, the ordinary run hardened

Choose a tag to compare

@null0xxx null0xxx released this 25 Jul 21:43
· 69 commits to main since this release

Eight confirmed security findings of the nineteen-finding v1.5.1 audit are closed — everything that damages an ordinary, non-attacked run:

  • S7 — the semgrep SECURITY floor had silently never fired (--config auto × --metrics off are mutually exclusive). Now p/default, with a real-binary integration test and a hard-asserting sast-floor CI lane. Requires network per scan; offline degrades silently to judgment-only; vendored ruleset open.
  • S3 — the reviewed tree equals the executed tree: the ["."] headless default dropped every tracked modification; and changes outside scope_paths (e.g. deleting the covering test) were invisible to all six lenses. Pathspec normalization + capture_full/change_paths + one blocking HIGH per out-of-scope file (gated, residue-excluded, no-delete fix text).
  • S4 — a critic's judgment is validated where it is produced: raw-critic schema validation before persistence (never persist a failure) + dimension_dissent_defects, so a dissent without a blocking defect can never merge as a clean lens.
  • S5 — critic artifacts are pass-stamped; a stale CLEAN artifact can no longer read as a fresh lens.
  • S10 — stage order is folded at OUTPUT before final_status; a tree mutated after verification cannot print a stale green.
  • S9 + S18timeout_s is a real bound (grace-bounded drain + named-unit cgroup teardown) and a timed-out suite is never green.
  • S14 + E3revert_red (a constant with no producer) is out of the critic packet; V7 un-narrowed to name the deterministic floor.

Honestly NOT closed here: S1/S2/S8/S11/S12/S13 land in v1.5.3; S15/S16/S17 in v1.5.4. The new pass-stamps are a currency marker, not authenticity (attacked S5/S10 halves close with v1.5.3 R1/R2). S6 is not fully closed by this program — python3 -S (v1.5.3) closes only the auto-exec half; full closure needs a plugin-integrity mechanism (a design problem, not a patch). See the CHANGELOG for the full honest list.

make ci EXIT 0 · 1327 → 1460 tests · scripts/verdict.py never opened.