Feature · Regression Intelligence

Did the constraint set get better or worse?

Ṛta compares your current constraints against a saved baseline and tells you exactly what changed: what is new, what got resolved, what changed meaning, and what stayed the same.

In plain words

What does "regression" mean?

A regression is a change that makes things worse. Ṛta saves a snapshot of your constraint quality (a baseline), then on every later change it compares the new results to that snapshot. New problems are regressions; fixed problems are resolutions.

Four states, each meaningful:

  • NEW: a finding that did not exist in the baseline.
  • RESOLVED: a baseline finding that is gone.
  • CHANGED: severity, evidence or value moved.
  • UNCHANGED: same finding, same identity.
Semantic, not line-based. Two engineers formatting the same file produce different line numbers but the same findings. Ṛta diffs meaning, so a pure reformat shows zero regressions.
$ rta check v2.sdc --baseline base.json Readiness diff vs baseline: RESOLVED SDC-008 input delay ≥ clock period NEW SDC-151 reset tree unconstrained UNCHANGED SDC-030 missing output delay readiness: REVIEW_REQUIRED (was READY) - 1 regression

Real-world example

The merge that silently broke coverage

A merge brings in a "cleanup" that removes an old input delay line. The SDC still validates, but an input port is now unconstrained, coverage dropped and nobody noticed because the file "looked fine".

With Ṛta: the baseline comparison flags the new finding immediately and blocks the merge in CI.
Same command, two jobs: --save-baseline today, --baseline in CI.
# today - establish the baseline rta check your_block.sdc --save-baseline base.json # in CI - compare every change rta check your_block.sdc --baseline base.json \ --gate STRICT # exit 1 if any NEW finding appears

Quality trend, visible

Watch findings resolve over time instead of re-reading the same list each week.

Merge protection

Regressions fail the pipeline, so quality can only go up.

Structured identity

Findings are keyed by meaning, so diffs stay stable across refactors.

Try it

Guard your next change

Baseline workflow
$ rta check your_block.sdc --save-baseline base.json # today
$ rta check your_block.sdc --baseline base.json --gate STRICT # in CI