`crimes@0.6.0` — Detector and scoring completion
Draft release notes for the GitHub Release tagged
v0.6.0. The body below is what should go in the Releases page when you cut the tag — that triggers.github/workflows/release.ymland publishes to npm via Trusted Publishing.
crimes@0.6.0 is the detector-and-scoring completion release.
Three product-surface releases in a row (0.3.0, 0.4.0, 0.5.0)
left two PRD-named milestones outstanding: M2 (the risk model — real
per-finding churn / test_gap / blast_radius) and the long tail
of named detectors in PRD.md §8. 0.6.0 closes both and adds the
full /docs/ Starlight site under crimes.sh/docs/.
Highlights:
- 18 new detector types, grouped into four categories:
- Architecture / dependency graph (4):
layer_violation,circular_dependency,deep_import,high_fan_in_fan_out. - IA completion (5):
orphaned_destination,parallel_destination,permission_ia_drift,action_label_drift,command_drift_docs_code_drift. - Frontend / UI agent-risk (6):
design_token_escape,accessible_interaction_risk,duplicate_component_shape,responsive_fragility,copy_ia_drift,visual_regression_review_hint(removed in 0.7.5 — its churn-based trigger was a poor proxy for “needs visual review”). - Duplication (3):
exact_duplicate_block,near_duplicate_block,duplicated_role_status_plan_check.
- Architecture / dependency graph (4):
- Per-finding scores — every
Finding.scoresnow carries realblast_radius,churn, andtest_gapvalues backed by the import graph, git history, and the test-file index. Theagent_riskscore rolls them into a single ordinal ranking. Seedocs/scoring.md. - Shape-aware
large_functionfor CLI registrars — thecli_command_registrarshape recognises Commander-styleregister*Command(program)wrappers and their.action(...)callbacks. Threshold raised from the domain default (60) to 200, severity capped atlow/medium. Fixes the dominant false- positive cluster fromcrimes@0.5.0self-scan. - Shape-aware
large_filefor test suites — the newtest_fileshape matches**/*.{test,spec}.[jt]sx?and__tests__/**, applies a 1500-line threshold (vs. 300 for domain code), and caps severity atlow/medium. Tunable viathresholds.largeFile.<shape>. Addresses the dogfood pattern of legitimately-large test files (e.g.reporter.test.tsat 910 lines) tripping the God File charge. todo_densityself-reference exemption — files whose source contains the literalTODO|FIXME|XXX|HACKtoken sequence (the detector source itself, or fixtures/tests of it) are now skipped. Stops the detector from flagging its own implementation. Prose that mentions one marker name in passing is unaffected.crimes hotspots <subdir>enclosing-repo lookup — runningcrimes hotspots packagesfrom a monorepo root no longer reports “not a git repo” and falls back to severity-only ranking. The command walks upward to find the enclosing repo, runsgit logthere with a pathspec scoped to the passed directory, and re-roots paths to the scan root.detectors.disablebreadcrumb —crimes scan/context/diffnow emit a one-line stderr notice whencrimes.config.jsonhas wholesale-disabled ≥ 3 detectors, steering teams toward per-findingcrimes ignorefor narrow exceptions. Suppressed when stdout is piped or--no-coloris set.- Full
/docssite at crimes.sh/docs/ — every existing markdown page indocs/is now routed undercrimes.sh/docs/via Astro + Starlight. The landing page atcrimes.sh/is unchanged — Astro’sbase: '/docs'keeps the two surfaces disjoint.
All additions are additive and backwards-compatible. No
schema_version bump, no required field changes, no new CLI commands
— every new capability surfaces through the existing command set.
Noise disclaimer for the new detectors
Section titled “Noise disclaimer for the new detectors”This release ships ~16 new detectors in one batch. The 0.4.0 lesson
was that noise erodes trust faster than missing detectors do, so each
new detector defaults to conservative confidence and low–medium
severity at threshold. Where a heuristic can be wrong, the finding
text uses hedged phrasing (“appears to”, “may”) rather than asserting
semantic truth.
If you upgrade and see findings you disagree with:
- Run
crimes explain <id>to read the per-detector rationale. - If the finding is a known-exception, file an issue at
github.com/ortomate/crimes/issues
with the JSON output —
0.7.0is the structured-testing milestone that re-tunes thresholds based on real-repo evidence. - Or suppress with
crimes ignore, which carries areasonfield and shows up inaudit-suppressions.
Post-upgrade: re-pin your baseline
Section titled “Post-upgrade: re-pin your baseline”If you run crimes baseline check --fail-on medium in CI, the new
detectors will surface findings that weren’t in your baseline (by
definition — they’re new). Two paths:
# Path A: re-snapshot the baseline so the new findings are accepted.crimes baseline savegit add .crimes/baseline.json && git commit -m "Re-pin baseline after crimes 0.6.0 upgrade"
# Path B: temporarily raise the gate so only `high` findings break CI# while you audit the new ones.crimes baseline check --fail-on highhigh-severity findings are reserved for circular_dependency at
≥ 3 files; every other new detector defaults to medium or lower.
What’s not in 0.6.0
Section titled “What’s not in 0.6.0”- No new CLI commands.
0.5.0was the product-surface release; every new 0.6.0 capability surfaces throughscan,context,hotspots,diff,explain,baseline, andinit. - No structured testing baseline. That’s
0.7.0. The 0.5.0 dogfood appendix in.planning/archive/0.6.0-detector-scoring-completion.md§20 is the starting point; the 0.7.0 milestone runs the same self-scan after 0.6.0 lands and feeds threshold tuning into 0.8.0+. - No fixture extension for every new detector. The bundled
fixture at
examples/messy-ts-appcontinues to exercise the pre-0.6.0 detector set; full coverage of all 18 new types is pulled into the 0.7.0 evidence-loop work.
What to read next
Section titled “What to read next”docs/scoring.md— the unifiedagent_riskformula plus per-score explanations.docs/json-schema.md— every newFinding.typevalue and thescores.blast_radius/scores.churn/scores.test_gapshape.docs/finding-types/structural.md/dependency.md/frontend.md/duplication.md— one page per detector category, with examples and remediation notes.docs/ci.md— baseline re-snapshot recommendation for teams upgrading from0.5.0.
Heading into 0.7.0
Section titled “Heading into 0.7.0”0.7.0 is the structured Claude + Codex testing + evidence-hook
milestone. The 0.5.0 dogfood appendix becomes a regression test:
re-run the self-scan after 0.6.0 lands, compare per-detector signal-
vs-noise, and feed the comparison into severity / confidence /
threshold tuning for 0.8.0+. No new product surface; the work is
empirical.