Friction (hit repeatedly in the dogfooding loop)
After editing/adding an artifact, the question an agent (or human) actually has is "did my change introduce any new diagnostics?" — not "what are all 257 warnings in the repo?". Today there's no way to ask that:
rivet validate prints the full set (257 warnings here); you must --format json | jq/grep for your artifact to tell if you added anything. I hit this twice — most recently checking whether a new REQ added an allowed-values warning.
--explain <ID> is great but needs you to already know the id, and only covers one artifact — it can't answer "did my edit add a warning anywhere (e.g. a backlink/coverage rule firing on a different artifact)?".
--baseline <name> is a named, cumulative baseline (different concept); --track-convergence is retry-loop detection; rivet impact --since is artifact-change impact, not diagnostics. None give "diagnostics introduced relative to a git ref".
Suggested fix
A diagnostics-diff against a git ref:
rivet validate --new-since <ref> # show ONLY diagnostics absent at <ref> (default origin/main or HEAD)
Implementation: validate at <ref> (or read a cached baseline), validate now, set-difference the diagnostics by (rule, artifact_id, message). Exit non-zero only if the new set is non-empty (a natural CI gate: "this PR must not add diagnostics"). This is the same diff-vs-base shape as the schema-version-bump gate (#485/PR #487) and would make the edit→verify loop — and "no new warnings" CI gating — a one-liner instead of a jq pipeline.
Found in the hourly dogfooding loop. Related: --explain (#?, single-artifact), --baseline (named baseline).
Friction (hit repeatedly in the dogfooding loop)
After editing/adding an artifact, the question an agent (or human) actually has is "did my change introduce any new diagnostics?" — not "what are all 257 warnings in the repo?". Today there's no way to ask that:
rivet validateprints the full set (257 warnings here); you must--format json | jq/grep for your artifact to tell if you added anything. I hit this twice — most recently checking whether a new REQ added anallowed-valueswarning.--explain <ID>is great but needs you to already know the id, and only covers one artifact — it can't answer "did my edit add a warning anywhere (e.g. a backlink/coverage rule firing on a different artifact)?".--baseline <name>is a named, cumulative baseline (different concept);--track-convergenceis retry-loop detection;rivet impact --sinceis artifact-change impact, not diagnostics. None give "diagnostics introduced relative to a git ref".Suggested fix
A diagnostics-diff against a git ref:
Implementation: validate at
<ref>(or read a cached baseline), validate now, set-difference the diagnostics by (rule, artifact_id, message). Exit non-zero only if the new set is non-empty (a natural CI gate: "this PR must not add diagnostics"). This is the same diff-vs-base shape as the schema-version-bump gate (#485/PR #487) and would make the edit→verify loop — and "no new warnings" CI gating — a one-liner instead of a jq pipeline.Found in the hourly dogfooding loop. Related:
--explain(#?, single-artifact),--baseline(named baseline).