canontra-0.3.0.0: CHANGELOG.md
# Changelog
All notable changes to `canontra` are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to the [Haskell Package Versioning Policy (PVP)](https://pvp.haskell.org/)
and [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.3.0.0] - 2026-10-28
### Deep Algebraic Equivalence, $\alpha$-Invariance & CSR-Native CIA 2.0 Milestone
The v0.3.0 release delivers deep algebraic equivalence, scope-aware bound lexical $\alpha$-canonicalization, CFG dominator-tree / Reverse Post-Order (RPO) canonicalization, deepened structural type contract ($F_T$) lattices with de Bruijn generic type parameter normalization, and CSR-native multi-file PR batch Change Impact Analysis (`canontra impact --pr-base`).
#### Added
- **Scope-Aware Bound Lexical $\alpha$-Canonicalization (`Canontra.Normalize.Alpha`)**:
- Deterministic de Bruijn lexical binder renaming (`@v<depth>.<ordinal>`) across local variable assignments, `for`-loop binders, comprehension generators, lambda parameters, `try/except` exception variables, and `with`-context manager bindings in both $F_1$ (Normalized AST) and $F_{DF}$ (SSA Data-Flow Graph).
- Strict separation of bound local variables from public API contract boundaries: exported function names, class/interface/trait names, public parameter names, and imported module symbols remain untouched so $F_2$ and $F_3$ preserve exact public interface sensitivity.
- **Commutative & Associative Algebraic Canonicalization (`Canontra.Normalize.Algebraic`)**:
- Provably pure expression predicate (`isProvablyPureExpr`) guarding algebraic rewrites against side-effecting calls (`ExprCall`, `ExprAwait`, `ExprYield`, `ExprWalrus`) and string literal `+` concatenation.
- Associative flattening and lexicographical operand sorting (`hashExprB`) for pure commutative operators (`OpAdd`, `OpMult`, `OpBitAnd`, `OpBitOr`, `OpBitXor`, `OpEq`, `OpNotEq`).
- Relational dual canonicalization (`b > a` $\to$ `a < b`, `b >= a` $\to$ `a <= b`) and unordered collection literal canonicalization (`ExprSet` element sorting and pure `ExprDict` key sorting).
- **CFG Dominator-Tree & Reverse Post-Order Canonicalization (`Canontra.Analysis.CFGCanonical`)**:
- AST-level and CFG-level branch condition inversion normalization (`if (!c) { B } else { A }` $\to$ `if (c) { A } else { B }`, `if (a != b) { B } else { A }` $\to$ `if (a == b) { A } else { B }`) and early-exit guard-clause lifting.
- Unconditional termination pruning (dropping unreachable dead statements after `return`, `raise`, `break`, `continue`) and trampoline block elimination.
- Deterministic Reverse Post-Order (RPO) basic block relabeling (`0 .. k-1`) sorting conditional outgoing edges canonically (`CondTrue` before `CondFalse`) prior to $F_{CF}$ hashing.
- **Deepened Structural Type Contract ($F_T$) Lattice (`Canontra.Analysis.TypeContract` & `Canontra.Fingerprint.TypeContract`)**:
- Recursive Algebraic Normal Form (ANF) flattening, deduplication, and sorting for arbitrarily nested `TypeUnion` and `TypeIntersection` expressions (`(A | B) | (C | A)` $\to$ `A | B | C`).
- Positional de Bruijn generic type parameter normalization (`[T, U]` / `<T, U>` $\to$ `α0`, `α1`) with preserved upper-bound constraints across Python PEP 695, TypeScript, Go, and Rust interfaces, traits, structs, and type aliases.
- Structural record literal (`{ a: number; b: string }`) field sorting in `TypeRecord` parsing and binary serialization.
- **CSR-Native Multi-File PR Batch Change Impact Analysis (`Canontra.Analysis.BatchImpact` & `Canontra.Analysis.Impact`)**:
- Rewrote single-file and multi-file caller reachability over unboxed `CSRGraph.backwardReachabilityCone` (`computeImpactSliceCSR`, `traverseInvertedCallersCSR`), achieving $< 50\,\mu\text{s}$ slice latency on 500-node / 2,000-edge call graphs.
- Added `Canontra.Analysis.BatchImpact` (`computeBatchImpactSlice`, `computeBatchImpactSliceCSR`, `generateTestCommand`) for joint PR changeset partitioning into Level 1 (Trivia), Level 2 (Internal Logic), and Level 3 (Interface/Dependency) files.
- Extended `canontra impact --pr-base <git-ref>` CLI subcommand with runnable polyglot test runner invocations (`pytest`, `jest`, `go test`, `cargo test`).
- **Exhaustive Metamorphic Verification & Benchmarks**:
- Expanded the automated test suite to over 750 passing tests with 0 failures and 0 compiler warnings under `stack test --pedantic`.
- Added RQ16 (Bound $\alpha$-renaming invariance & throughput) and RQ17 (Algebraic commutativity & CSR Batch CIA latency) to `bench/Bench.hs`.
## [0.2.0.0] - 2026-10-09
### Hardened Performance, Precision & Soundness Milestone
The v0.2.0 release delivers major performance optimizations, zero-copy caching, multi-core work-stealing parallelism, modern grammar conformance across polyglot ecosystems, zero-trust platform hardening, and an exhaustive empirical benchmark evaluation.
#### Added
- **Unboxed Compressed Sparse Row (CSR) Graph Engine (`Canontra.Analysis.CSRGraph`)**:
- Contiguous unboxed `Vector Word32` / `Vector Word16` representations (`csrRowOffsets`, `csrColIndices`, `csrEdgeFlags`) reducing whole-repository graph memory footprints by over 70%.
- Linear-time Tarjan Strongly Connected Component (SCC) cycle collapse and canonical topological condensation DAG synthesis computed directly over unboxed vectors.
- $O(\log(\text{deg}(u)))$ binary-search edge queries (`csrHasEdge`), linear-time graph transposition (`transposeCSR`), and forward/backward reachability cone masks.
- Integration with `WholeRepoGraph`: replaced boxed `Map Symbol (Set Symbol)` representations with high-performance unboxed CSR call graphs (`toCSRCallGraph`) and data-flow graphs (`toCSRDataFlowGraph`).
- **CNTR\x06 Zero-Copy Memory-Mapped Slab Cache (`Canontra.Cache.SlabV6`)**:
- 64-byte fixed-width cache records (`CacheRecordV6`) aligned precisely to CPU cache lines with pure `Storable` serialization.
- 256-way L1 Radix Jump Table (`0x0020 - 0x081F`) enabling 1-cycle CPU fast-path indexing for warm file lookups.
- Zero-copy memory-mapped verification via `openSlabCache`, `lookupSlabCacheWarm`, and pure `lookupSlabBinaryBS`, achieving sub-microsecond warm lookups (< 500 ns per file).
- Whole-repository binary CSR graph persistence (`saveRepoGraphsSlab` / `loadRepoGraphsSlab`) replacing textual cache serialization.
- Isolated 4KB page IEEE 802.3 CRC-32C bit-rot recovery (`salvageSlabCacheFile`, `readSlabCacheFileResilient`), dropping only damaged pages while salvaging intact cache entries.
- **Hardware SIMD FastScan & Lock-Free Work-Stealing Parallelism (`Canontra.Canonical.SIMDScan` & `Canontra.Repository.Parallel`)**:
- 256-bit SIMD FastScan kernel (`scanSourceSIMD`, `fastCanonicalizeSIMD`, `isPureAsciiUnixSIMD`) evaluating 32 bytes per cycle via 4x 64-bit SWAR vector lanes for non-ASCII bytes, Windows CRLF line endings, string quotes, and comment delimiters with zero C-FFI.
- Chase-Lev lock-free work-stealing parallel scheduler (`ChaseLevDeque`, `parProcessWorkStealing`) with dynamic circular buffer growth, LIFO worker pops, FIFO remote steals, and deterministic stream reassembly.
- Sustained multi-core ingestion throughput reaching $\ge 100,000$ LOC/s on multi-core benchmark runners.
- Localized reachability-cone incremental graph hot-updates (`spliceCSREdges`, `reachabilityConeUnion`, `incrementalUpdateWholeRepoGraphs`) executing in under 10 ms without rebuilding whole-repository graphs.
- **Polyglot Grammar Conformance & Modern Language Support**:
- **Python 3.12**: PEP 701 nested f-strings with arbitrary quote reuse and inline comments, PEP 695 generic type parameter syntax (`type Alias[T] = ...`, `def func[T, **P]()`, `class Store[K, V]`), single-expression generator arguments, and comprehensive PEP 572 walrus operator `:=` scope hoisting across list, dict, set, and generator comprehensions into enclosing function scopes and `DFG` reaching definitions.
- **TypeScript 5.2 / JavaScript**: Explicit resource management (`using` and `await using`) with CFG synthesis of synthetic disposal exit blocks (`Symbol.dispose`) and exceptional cleanup edges (`CondException "*"`), alongside context-aware two-token lookahead regex vs division operator disambiguation following curly braces `}`.
- **Go 1.21+**: Builtins (`min`, `max`, `clear`), tilde constraint sets (`~T`) with commutative union normalization (`~int | ~float64 == ~float64 | ~int`), and structural type cyclic struct recursion breaker emitting `TypeRecVar 0`.
- **Rust 2021**: Generic Associated Types (GATs) lifetime normalization (`'a` $\to$ `'0`), trait associated types, and raw identifier syntax interning (`r#type`, `r#match` interned to bit-identical `SymbolId` in `SwissTable`).
- **Zero-Trust Security, Resilient I/O & Platform Hardening**:
- Windows Antivirus/Indexer Atomic Swap Resiliency: Exponential backoff with monotonic jitter (`atomicSwapWithRetry`, `atomicSwapWithRetry_`) across all cache writers (`SlabV6`, `PagedCache`, `MerkleCache`) eliminating transient Windows Defender / SearchIndexer file sharing violations.
- Cross-Volume Symlink Loop Breaker: Composite `FileNodeIdentity` (`fniVolumeID`, `fniFileID`) tracking in `Canontra.Security.Path` preventing infinite circular traversal across NTFS junctions, mounted volumes, and POSIX symlinks.
- Case-Folding Path Collation: Cross-platform deterministic Unicode-aware path collation ensuring bit-identical Merkle roots ($F_R$) across case-sensitive Linux ext4 and case-insensitive Windows NTFS file systems.
- Hard resource ceiling enforcement: 50 MB file size limit, 64-level directory recursion limit, and AST depth protection.
- **Exhaustive Metamorphic Mutation & Soundness Verification Suite**:
- Over 160 new automated test cases across unit, metamorphic property, and mutation suites, bringing the project total to 618 passing tests with 0 failures under GHC 9.6.6 with `-Wall -Werror --pedantic`.
- Multi-language metamorphic property suites verifying algebraic invariance of $F_1$, $F_2$, $F_3$, $F_4$, $F_T$, and $F_R$ under semantics-preserving trivia transformations and strict divergence under semantic perturbations.
- **v0.2.0 Empirical Benchmarking Harness & 15-Repository Evaluation**:
- Expanded tasty-bench microbenchmark harness (`bench/Bench.hs`) with RQ13 (unboxed CSR graph algorithms), RQ14 (`CNTR\x06` zero-copy slab cache), and RQ15 (hardware SIMD FastScan & work-stealing scheduler) across 135 total benchmarks.
- End-to-end multi-language empirical evaluation across 15 real-world repositories (Flask, Gin, Ripgrep, Deno Core, Prometheus, Hugo, Rich, Click, Requests, Marshmallow, Chalk, Express, Jinja2, Bottle, Toml) documenting cold-cache and warm-cache latencies, memory footprint, and whole-repository graph synthesis.
- Comprehensive documentation updates across [BENCHMARKS.md](BENCHMARKS.md), [REAL_WORLD_BENCHMARKS.md](REAL_WORLD_BENCHMARKS.md), and [benchmarkReport.md](benchmarkReport.md).
## [0.1.0.0] - 2026-09-22
### Production Release - Multi-Tier Polyglot Program Identity & Semantic Graph Engine
The milestone production release transitions Canontra from exploratory research tracks into a hardened, high-throughput static analysis runtime, build cache adapter, and production CLI tool for CI/CD fabrics, monorepo systems, and local developer workflows.
#### Added
- **Unified 9-Tier Identity Manifest**:
- Full single-file orthogonal tiers: $F_0$ (Source Bytes), $F_1$ (Normalized AST), $F_2$ (Public Declarations), $F_3$ (Module Dependencies), $F_{CG}$ (Call Graph), $F_{CF}$ (Control Flow), $F_{DF}$ (Data Flow), $F_T$ (Structural Type Contracts), and $F_4$ (Composite Cryptographic Identity).
- Whole-repository projections: $F_R$ (Incremental Merkle Root), $F_{WCG}$ (Inter-Module Call Graph), $F_{WDF}$ (Whole-Repo Data Flow), and $F_{W4}$ (Composite Workspace Identity).
- **Production CLI Subcommand Suite**:
- `fp`: Multi-tier fingerprint generation for files and directories.
- `compare`: Semantic equivalence verification proving invariance under formatting, comments, or refactorings.
- `diff`: Fine-grained structural and AST diff diagnostics between revisions.
- `graph`: Visualization and export of call graphs, CFGs, DFGs, and whole-repository dependency networks.
- `impact`: Slicing and change impact analysis for files and specific symbols.
- `slice`: Forward and backward program slicing based on dominance-frontier def-use chains.
- `repo`: Repository-wide Merkle DAG generation and workspace analysis.
- `watch`: Real-time file system watcher and in-memory incremental Merkle DAG daemon.
- `cache`: Paged radix cache management, statistics, and integrity verification.
- `export`: Export graphs to OASIS SARIF v2.1.0, Graphviz DOT, and Mermaid diagram formats.
- `verify`: Determinism and metamorphic mutation verification testing.
- **UNIX Stream Interoperability & Formats**:
- Stdin/stdout stream piping support via `-` indicator.
- Machine-readable outputs: pretty-printed JSON, line-delimited JSONL, SARIF v2.1.0, and formatted terminal tables.
- Strict POSIX exit codes: `0` (Identical/Success), `1` (Different), `2` (CLI/Syntax Error), `3` (IO/Filesystem Error), `4` (Integrity Failure).
- **Shell Autocompletion & Native Installers**:
- Built-in completion generators for Bash, Zsh, Fish, and PowerShell (`canontra completions <shell>`).
- Cross-platform zero-dependency standalone installation scripts (`install.sh` for POSIX, `install.ps1` for Windows).
- **Testing & Verification**:
- Over 450 comprehensive test cases spanning property-based QuickCheck tests, metamorphic mutation verification, and cross-platform invariance with 0 failures under `-Wall -Werror`.
## [0.0.9-alpha] - 2026-09-18
### Whole-Repository Synthesis, Change Impact Analysis & Paged Radix Cache
#### Added
- **Whole-Repository Semantic Synthesis**:
- Cross-module call graph synthesis ($F_{WCG}$) and inter-procedural SSA data flow analysis ($F_{WDF}$).
- Module import resolution across relative paths and package hierarchies.
- **Semantic Change Impact Analysis (CIA)**:
- Symbol-level dependency tracking to calculate the minimal downstream test and build invalidation set.
- Forward and backward slicing over semantic graph representations.
- **Memory-Mapped Paged Radix Cache (`CNTR\x05`)**:
- 4KB page-aligned memory layout with atomic flush guarantees.
- Sub-microsecond warm-cache lookup latency ($2.70\,\mu\text{s}$ over 1,000 files).
- IEEE 802.3 32-bit CRC checksum integrity validation per page.
- **In-Memory Watch Daemon**:
- `canontra watch` background engine with OS-native file change detection and incremental DAG updates in $< 25\,\text{ms}$.
- **Structural Type Contract Tier ($F_T$)**:
- Structural subtyping and interface contract hashing across Python protocols, TypeScript interfaces, Go interfaces, and Rust traits.
## [0.0.8-alpha] - 2026-09-14
### Hardened Semantic Precision & Polyglot Grammar Conformance
#### Added
- **`HybridIndentStack` Engine**:
- Replaced fixed-width 7-level indentation bitmasks with an unboxed hybrid register-heap stack supporting arbitrary indentation nesting depth.
- **Polyglot Grammar Edge-Case Conformance**:
- Python: PEP 634 pattern matching (`match/case`), walrus operator (`:=`) scope hoisting, and nested multi-expression f-strings.
- TypeScript / JavaScript: Automatic Semicolon Insertion (ASI) rules, regular expression vs. division operator disambiguation state machine, and JSX fragment handling.
- Go: Parameterized generic type parameters (`[T any]`), type constraints, and factored import/type blocks.
- Rust: Macro token tree matching, trait object bounds, and lifetime annotations.
- **Graph Soundness Hardening**:
- Sound short-circuit evaluation paths in basic block CFG construction.
- Dominance-frontier calculation for SSA Data-Flow Graphs.
## [0.0.7-alpha] - 2026-09-10
### Nanosecond Systems Engineering & Memory Layouts
#### Added
- **Eytzinger Radix Cache Layout (`CNTR\x03`)**:
- Breadth-First Search (BFS) array ordering for binary search acceleration, fitting search paths directly within CPU L1/L2 cache lines.
- 64-bit FastPath hash filter eliminating string comparison on non-matching entries.
- **Flat Linear Arena AST (`LinearAST`)**:
- Flattened pointerless vector storage for AST nodes, eliminating heap pointer chasing and reducing memory fragmentation.
- **SwissTable Symbol Interning**:
- SIMD-accelerated 16-way control-byte probing for sub-35ns string deduplication and symbol interning.
- **Hierarchical Incremental Merkle DAG**:
- Fast single-leaf delta propagation for repository root hash ($F_R$) calculation in $< 1\,\mu\text{s}$.
## [0.0.6-alpha] - 2026-09-06
### Hardware-Speed Latency Annihilation & Fused Streaming
#### Added
- **SWAR 64-Bit Fast Scanner**:
- SIMD-within-a-register algorithm processing 8 bytes per iteration for instant ASCII validation, UTF-8 checking, and CRLF (`\r\n` $\to$ `\n`) newline normalization.
- **Fused Direct-to-Hash Streaming**:
- Fused canonical binary serialization directly into SHA-256 state contexts, bypassing intermediate `ByteString` buffer allocation.
- **Fixed-Width Binary Cache (`CNTR\x02`)**:
- Replaced legacy JSON cache serialization with a compact binary disk format achieving $80.7\,\text{ns}$ record decoding.
## [0.0.5-alpha] - 2026-09-02
### Direct-to-IR Parsing Architecture
#### Changed
- Migrated parsing frontend from third-party concrete syntax tree (CST) wrappers to direct-to-IR recursive descent parsers using `flatparse`.
- Slashed parsing latency by $85\%$, achieving sub-millisecond parsing across standard production modules with zero C-FFI runtime overhead.
## [0.0.4-alpha] - 2026-08-28
### High-Throughput Optimization & Pipeline Fusion
#### Added
- **Fused Single-Pass Traversal**:
- Combined AST desugaring, scope resolution, and graph construction into a unified pass.
- **Unboxed Vector Allocations**:
- Employed unboxed contiguous vectors for graph edges and symbol identifiers, driving garbage collection pauses to $< 0.2\%$.
- **Parallel Work Scheduler**:
- Multi-core chunked processing using Haskell's lightweight green threads (`async`), achieving $> 1,200,000$ LOC/s aggregate throughput.
## [0.0.3-alpha] - 2026-08-22
### Polyglot Expansion & Deep Semantic Graphs
#### Added
- **Three Polyglot Frontends**:
- Full ingestion for JavaScript / TypeScript (`.js`, `.jsx`, `.ts`, `.tsx`), Go (`.go`), and Rust (`.rs`).
- **Deep Semantic Graph Extractors**:
- Control Flow Graph ($F_{CF}$) tracking basic block branching and loop headers.
- Data Flow Graph ($F_{DF}$) tracking reaching definitions and def-use chains.
- **Mathematical Invariance Hardening**:
- IEEE-754 floating-point canonicalization (canonical NaN representation and sign bit normalization).
- Unicode NFC normalization for all identifier strings.
- Tarjan's Strongly Connected Components (SCC) algorithm for call graph recursion cycle handling.
## [0.0.2-alpha] - 2026-08-15
### Modern Python 3.8+ & Zero-Span Ingestion
#### Added
- **Zero-Span AST Representation**:
- Stripped all source location spans (line/column metadata) from internal nodes to guarantee that purely positional movements do not leak into structural hashes.
- **Modern Python Grammar Coverage**:
- Full support for assignment expressions (`:=`), positional-only parameters (`/`), type hints, async/await coroutines, generators, and structural pattern matching.
- **Lexical Scope & Call Graphs**:
- Scope tree resolution and intra-module static call graph generation ($F_{CG}$).
- Fine-grained structural diffing separating cosmetic whitespace from algorithmic changes.
## [0.0.1-alpha] - 2026-08-08
### Initial Proof of Concept & Mathematical Foundations
#### Added
- **Pure-Haskell Deterministic Pipeline**:
- Initial proof of concept demonstrating deterministic program identity implemented in 100% pure Haskell with zero runtime dependencies.
- **Orthogonal Multi-Tier Fingerprinting**:
- Defined the initial 5-tier cryptographic hierarchy:
- $F_0$: Raw source text byte digest (SHA-256).
- $F_1$: Normalized Abstract Syntax Tree digest invariant under comments, whitespace, and docstrings.
- $F_2$: Public declaration signature digest for exported API surfaces.
- $F_3$: Dependency and import topology digest.
- $F_4$: Composite single-file program digest.
- $F_R$: Deterministic repository Merkle tree digest.
- **Python 3 Ingestion**:
- Parsing, AST normalization, dead statement removal, and canonical serialization for Python modules.
- **Command-Line Interface**:
- Basic CLI for single-file and directory fingerprint computation and semantic comparison.