Skip to content

0.15.0

Choose a tag to compare

@SanderMuller SanderMuller released this 25 Jul 09:48
Immutable release. Only release title and notes can be modified.

A new advisory payload-parity check plus a set of graph-build performance improvements. No breaking changes — every new behaviour is advisory or output-invariant, and the new config keys default to sensible values.

Added

  • Payload-parity detection. A new advisory lane flags a model field added to $fillable/$casts/casts() that is not mirrored into a resource which already mirrors the model's other fields — the exact shape behind a payload field silently going missing from an API response. It is advisory only: it never feeds the risk level, --fail-on, or richter:affected-tests, only the report's findings list. Tunable via the payload_parity config (enabled, mirror_threshold, ignore) and suppressible for one run with --no-payload-parity.
  • Parallel graph build. Every command that builds the graph now runs Brain's route-anchored analysis and richter's own source-tracers concurrently — the tracers run in a child artisan process — instead of sequentially, shortening a cold build on a multi-core machine. The merged graph is identical to the serial build (edge order included); any child-process failure transparently falls back to the serial build, and --profile forces serial so the phase split stays measurable. Controlled by the new parallel config key (default on).

Fixed

  • richter:affected-tests now fails closed on git-quoted untracked paths. An untracked file whose pathname git quotes (non-ASCII or special characters) is unquoted before the fail-closed check, so it can no longer slip past and yield a falsely-narrow test selection.

Internal

  • Faster repeated fingerprinting. The graph cache's content fingerprint reuses a file's hash across repeated builds within one process (e.g. a long-lived MCP session re-checking a mostly-unchanged tree) when the file's stat signature — inode, size, mtime, and ctime — is unchanged and not racily-recent, skipping the re-read. The fingerprint value stays byte-identical to hashing every file: staleness is still designed out, not heuristically hoped out.
  • Fewer entry-point traces. The entry-point tracer skips a method whose body contains none of the AST nodes Brain's MethodTracer draws an edge from, cutting redundant per-method traces with no change to the graph.
  • Suite: 796 tests / 1,858 assertions, including a byte-identical parallel-vs-serial build gate, fingerprint transparency + change-detection tests, and adversarial coverage of the worker payload validation.

Full Changelog: v0.14.0...v0.15.0