Changelog
Releases shipped to crates.io and Homebrew. Latest: v0.7.1.
v0.7.1
Latestv0.7.0
Features
- add AnalysisContext and ScanMode types5740e04
- add baseline fingerprint module with entity, multi-entity, file-level hashing82b99ee
- add baseline load/save/match with dedup and prunece58966
- add confidence scoring to N+1 detector with severity adjustment9631d1b
- add confidence_threshold to detector config overridesf90dc24
- add consumer pattern exemptions to N+1 detector (Phase 0.5)58efcc5
- add graph-aware delta detection — changed node mapping and impact walk1738e4c
- add merge-base LCA algorithm to pure Rust git implementation4eb010d
- add post-detection filter stage for baseline, config overrides, attributioncd40a1c
- analyze--no-auto-calibrate flag plumbingd5d7af4
- analyzeapply user FP/TP labels during postprocess6ef61d9
- analyzeauto-save StyleProfile on first analyze9ffaf61
- apply session persistence infrastructure from stash8b187ff
- cacheadd fingerprint-based auto-invalidationcb01e8b
- calibrateadd StyleProfile::function_count() accessor176a9a7
- claude-hookatomic_write with mode + symlink preservationc720ff0
- claude-hookdeny-response builder with score line + top-5 truncationf31e9bd
- claude-hookfull hook runtime (stdin → diff → deny)cf12cfe
- claude-hookgit-commit regex matcher with full test inventory4b758f8
- claude-hookinstall flowfe3f4cc
- claude-hookJSON mutators (insert, filter, cleanup) for settings.json041e016
- claude-hookread_settings_or_empty with size + type + JSON validation5d54a06
- claude-hookscaffold subcommand structure2460f5d
- claude-hooksettings_path resolver with CLAUDE_CONFIG_DIR + home crate9cb8b2a
- claude-hookuninstall flow with precise filter32f4a15
- cliremove clean command, add --force-reanalyze0cdab12
- cliwire up baseline command (update, add, prune)ea44303
- command-injectiondetect shell metacharacters in static-literal commands45105f3
- complete commit-aware analysis pipeline04b81e1
- configadd [per_file_ignores] table for path-glob to detector suppressions13fdb2a
- configadd Serialize derive to ProjectConfig and nested typesea92443
- detectorstop-10 slowest-detector summary in runner1b04715
- diffadd attribution-aware markdown formattercbc43cf
- diffadd hunk-level attribution parser for git diff -U07cf9eea
- diffauto-analyze when no cached findings existc63cfb2
- diffshow hint when findings exist but are filtered by attribution271f725
- diffwire hunk attribution + update formatters with --all/--changed flags2dfa7aa
- enable jemalloc as default allocator46c4975
- engineadd fingerprint to session cache01340ad
- enginewire baseline loading into filter stage3cce59e
- feedbackadd load_label_map() for finding_id → is_tp lookupa6217eb
- git/rawadd commit and tree parsersede36b4
- git/rawadd DEFLATE decompressor (RFC 1951)3ce80bb
- git/rawadd line-level blame algorithm7f330bf
- git/rawadd loose object reader3629558
- git/rawadd pack index v2 reader3424efe
- git/rawadd packfile reader with delta reconstructionebdee83
- git/rawadd RawRepo with discovery, refs, and object lookup43f7504
- git/rawadd SHA-1 implementation (RFC 3174)137ee98
- git/rawadd time-sorted revwalk1959684
- git/rawadd tree-to-tree diff with Myers blob difff72b75a
- git/rawfinalize public API surface in mod.rs28d0131
- git/rawscaffold module with error type and OIDaf99e92
- graphadd hand-rolled Tarjan SCC, dominators, and WeightedOverlay3934e8b
- graphadd NodeIndex newtype (replaces petgraph NodeIndex)693e3aa
- graphenable BFS vertex reordering at freeze time5525afd
- graphhand-roll string interner (replace lasso)d8102a9
- httpreplace ureq with hand-rolled HTTP/1.1 client over rustls5ee70e1
- logreplace tracing-subscriber with hand-rolled stderr subscriber80d454f
- modelsadd FindingStatus, Attribution, and Confidence enums506f45a
- mutual-recursionhonor repotoire:ignore suppression comments1f8908d
- ngramstateful cross-line tokenizer with multi-line string and block-comment awareness8b2242f
- parserslog tree-sitter ERROR nodes at debug levelbf5f218
- quantizereplace nalgebra with hand-rolled dense matrix + Householder QRa20a7de
- security/python-importsadd aliased-module import resolver0e0fa12
- securityapply Python aliased-module import resolution to eval/command/pickle/crypto detectorse34cdec
- securityapply Python from-import alias resolution to eval/command/pickle detectors3aadf2a
- telemetryenrich detector_feedback with language, title, reasonfcf4682
- tuireplace ratatui + crossterm with hand-rolled mini TUI frameworkf03e4ae
- wire filter stage into engine pipeline between postprocess and score8989f58
v0.6.0
Features
- add 4 bus factor detectors (single-owner, silo, orphaned, critical-path)eeca7b6
- add DOA-based ownership model and config for bus factor analysis1b7df5a
- integrate ownership model into reporting layer19d404e
- predictiveadd L3 quantized embedding scorer with cache and RelationalScorer enumbdf682e
- predictivewire L3 embedding scorer into analysis pipeline with background computation16a5ec7
- predictivewire L3 quantized embeddings into analysis pipeline47af2c2
- quantizeadd knn_search_rerank + benchmark both ADC and rerank recall09cba14
- quantizeadd TurboQuant benchmark harness (Task 5)71d7c15
- quantizeadd TurboQuant vector quantization module (Tasks 1-3)7212c79
- wire ownership model into pipeline and AnalysisContexta944bfa
v0.5.0
Features
- enhanced version output with build info, remove stale action.ymlb9cbe47
v0.4.0
Features
- --min-confidence flag and config option for confidence-gated output422cf87
- add --json-sidecar flag for CI actions (single analysis, two outputs)0cbe43a
- add 3 graph-primitives detectors (SPOF, bridge risk, mutual recursion)f454412
- add 5 Phase B GraphQuery methods + CodeGraph wiring88bac51
- add AnalysisContext, FileProvider shim, and new Detector trait methods35a51cc
- add AnalysisContext::test() constructor for unit tests747f9a5
- add API surface detection, downgrade security findings on API definitions5351e8f
- add bypass_postprocessor() trait method for per-detector GBDT bypass21f0e7b
- add co-change config support + Phase B integration teste486154
- add CoChangeMatrix with decay-weighted co-change computation5ce324d
- add CommunityMisplacementDetector (file vs Louvain community)0fd7fa2
- add compute_edge_fingerprint() to GraphStore for topology change detectionbc3674e
- add context enrichment to AnalysisContext (Tasks 6-10.5)f8b18a0
- add core diff logic with fuzzy finding matchingdf2beaf
- add DetectorContext — shared callers/callees maps, file contents, class hierarchy in precompute599ecf8
- add DetectorInit, RegisteredDetector trait, and registry infrastructureb79a6a6
- add DetectorScope enum and detector_scope() trait methoda6acce0
- add diff output formatters (text, JSON, SARIF)84e0dad
- add e2e validation script for self-analysis and real-world projects02f7eab
- add engine persistence (save/load) and rewire MCP to AnalysisEngine43e185f
- add export annotations to C/C++ parsers, complete C++ class method extraction1982e5f
- add file_extensions/content_requirements to 12 taint detectorsc324eec
- add file_extensions/content_requirements to all remaining detectors188a323
- add FileIndex with lazy pre-computed content6e473b6
- add get_all_edges() to GraphStore for determinism testingf81cd70
- add GraphPrimitives accessor methods to CodeGraph0ac4b54
- add GraphPrimitives struct with empty compute()0b0514c
- add GraphWide detector_scope() overrides for cross-file detectors1ae67a2
- add HiddenCouplingDetector (co-change without structural edge)304850d
- add NodeIndex-based GraphQuery API and migrate key consumers (Phase C)ec1f57a
- add PageRankDriftDetector (static vs weighted importance divergence)a9a556a
- add per-detector timing report to --timings flag651eaf7
- add persistent graph cache — bincode save/load with index rebuilde816b9f
- add Phase B fields to GraphPrimitives + weighted overlay stubc91b3cf
- add PrecomputedAnalysis alias and to_context() on GdPrecomputed2da4723
- add RegisteredDetector impl to 81 detectors and populate DETECTOR_FACTORIES5df3d61
- add remove_file_entities() for graph delta patching861349a
- add repotoire diff CLI command289f6ba
- add repotoire_diff MCP toolbe2b3db
- add shared AST fingerprinting utility for AI detectors2ade359
- add standalone detector runner with pure functions23a07de
- add TemporalBottleneckDetector (change-propagation critical paths)85995ca
- AIBoilerplateDetector uses tree-sitter AST fingerprinting for structural clustering574d940
- AIChurnDetector uses git2 for function-level churn analysis4a3261b
- AIDuplicateBlockDetector uses tree-sitter normalized AST for cross-file duplicate detection8eb0085
- AINamingPatternDetector analyzes variable names in function bodiesd635e32
- cacheadd cross-file value dependency tracking to incremental cache3e2f251
- CLI analyze uses persisted AnalysisSession for incremental re-analysis2e46373
- complete detector registry with all 100 detectors in DETECTOR_FACTORIES549764d
- confidence display in all 5 output formatse15cfaf
- confidence enrichment pipeline with content classifier and multi-detector signals4c82ae4
- create engine module with public API types and stage stubs57141ec
- detect callback function arguments as call edges in JS/TSa1a18b6
- detect exported functions/classes in all parsers via annotation781da9e
- emit synthetic Calls edges for decorated functions2a80236
- emit trait implementation Inherits edges in graph88d3266
- engineimplement AnalysisEngine with cold analysis path7910435
- engineimplement incremental analysis path with graph patching4ad9fb9
- extend ContentFlags from 2 to 16 categories77bcfe0
- extend GraphQuery trait with 10 primitive query methods0181791
- extract JS/TS decorator names into annotations20b3d9b
- extract Python decorator names into function/class annotationsd69efa9
- extract Rust #[attribute] into function/class annotations4aaed87
- extract shared cross-line user-input helper with tests63b2c6f
- file-level suppression (repotoire:ignore-file) and auto-suppress detector test fixtures9f5e370
- graph-verified semantic overlap for clone detection27e7094
- harden analysis pipeline with symlink/traversal/size protectionc39fc72
- implement 7 parser features (doc comments, annotations, React patterns)9b380b2
- implement 8 stage wrappers for analysis pipeline rewritef7b3c79
- implement all 6 graph primitive algorithms with rayon parallelism0ebfb21
- implement Builder/Frozen graph architecture (Phase A)9329ae8
- implement Dijkstra-based weighted betweenness centralityea57380
- implement GraphQuery primitive overrides for CodeGraph and Arc<CodeGraph>5767e48
- implement Louvain community detection algorithm6f37ba8
- implement weighted overlay graph builderc6df966
- implement weighted PageRank algorithm1cdf141
- improve CLI help text with examples and descriptions6b2f7bd
- integrate AnalysisSession into MCP server for incremental analysis269ebba
- mandatory default confidence on all findings by categoryad4265e
- mcpadd AI tool handlers (search_code, ask, generate_fix)149c100
- mcpadd analysis tool handlers (analyze, get_findings, get_hotspots)e38e80d
- mcpadd evolution tool handler (query_evolution -- 7 temporal query types)f6ee810
- mcpadd file tool handlers (get_file, get_architecture, list_detectors)65a61a6
- mcpadd graph tool handlers (query_graph, trace_dependencies, analyze_impact)b035add
- mcpadd parameter structs with schemars JSON Schema generationa79634a
- mcpimplement rmcp ServerHandler with 13 tools via tool_router509fec7
- mcpwire rmcp server with stdio + HTTP transports and CLI --http-port flagb444352
- ML classifier pipeline — GBDT model, 28 evidence-backed features, debt scoringd0c5f19
- multi-dimensional Rust type evaluation in LazyClass detectorf355354
- opt 22 security detectors into GBDT bypassd261a1c
- precision scoring harness for benchmark suitefdcc04c
- predictiveadd HierarchicalSurprisalDetector replacing flat surprisal55cfcfa
- predictiveadd L1 token scorer and L2 structural scorer84faea9
- predictiveadd L1.5 dependency-chain surprisal scorer6769332
- predictiveadd L3 relational scorer with per-edge-type node2vec797e93b
- predictiveadd L4 architectural module-level scorer2ca39d1
- predictiveadd module skeleton and compound scoring785ed50
- predictiveport node2vec + word2vec from repotoire-fastd13b2e6
- predictivewire up PredictiveCodingEngine orchestrating all 5 levelsf266e66
- rearchitect 8 top detectors with context-aware FP reduction1a98737
- refactor UnreachableCodeDetector — remove dead function overlap, scope-aware return detectione6448a6
- replace DeadCodeDetector pattern lists with graph flags and role-based gatingf7b6295
- replace LazyClass EXCLUDE_PATTERNS with role analysis and adaptive thresholds5211f76
- rewire CLI analyze to use AnalysisEngine via run_engine()d94d97f
- rewrite AIMissingTestsDetector with graph-based test reachability3f9c25f
- rewrite DeadStoreDetector with ValueStore-based analysis92bd41c
- rewrite watch mode to use AnalysisSession for incremental updates3cb169c
- role-aware ShotgunSurgery thresholds with ContextHMM utility detection85a0451
- seed model training pipeline — export-training flag, bootstrap labels, embedded GBDTa900686
- selective normalization in AST fingerprinting for clone detection72cbc97
- session persistence optimization and detector skip filtering292f01c
- size-adaptive similarity threshold for clone detection6d531bf
- skip single-assignment module-scope vars (effectively const)b238200
- upgrade top 8 detectors with context-based FP reduction4427532
- valuesadd language configs for all 9 supported languages4b5996c
- valuesadd SymbolicValue, LiteralValue, BinOp core types with guard railse209439
- valuesadd ValueStore with query API, Assignment, RawParseValues typese7a95e8
- valuesbuild ValueStore during graph construction with Variable nodes and propagatione1afd50
- valuescross-function propagation with cycle detection and depth limitsbd262b3
- valuesintegrate value extraction into parse phase, reuse tree-sitter treeb3a0060
- valuestable-driven extraction framework with Python config and node_to_symbolic511013b
- valuesthread ValueStore through pipeline to detectors via DetectorContext60df4c4
- wire CoChangeMatrix through git enrich → freeze pipelineca232c9
- wire ContextHMM + ThresholdResolver into AnalysisContext (Phase 0)9508730
- wire FileIndex into engine pipeline, call detect_ctx()4b707d1
- wire GraphPrimitives into GraphIndexes::build()600d6a2
- wire persistent graph cache into analyze pipeline — load on incremental, save after build29a11f6
- wire pipeline to Builder/Frozen CodeGraph flow (Phase B)d31706f
- wire ProjectType into scoring bonuses for framework-aware scoring33ef8f1