Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
362 commits
Select commit Hold shift + click to select a range
313d4a1
feat: add corpus summary, growth, and coverage commands (spec §10, §4…
noahgift Feb 8, 2026
c392c6a
feat: add corpus regressions, heatmap, and dashboard commands (spec §…
noahgift Feb 8, 2026
0ee364c
feat: add corpus search, sparkline, and top commands
noahgift Feb 8, 2026
2ff34af
feat: add corpus categories, dimensions, and dupes commands (spec §11…
noahgift Feb 8, 2026
f53302d
feat: add corpus converged, benchmark, and errors commands (spec §5.2…
noahgift Feb 8, 2026
909753c
feat: add corpus sample, completeness, and gate commands (spec §5.2, …
noahgift Feb 8, 2026
e46b964
feat: add corpus outliers, matrix, timeline commands — 35 subcommands…
noahgift Feb 8, 2026
3acb4e8
feat: add corpus drift, slow, tags commands — 38 subcommands total
noahgift Feb 8, 2026
4aa7bcc
feat: add corpus health, compare, density commands — 41 subcommands t…
noahgift Feb 8, 2026
4cf3b05
feat: add corpus perf, citl, streak commands — 44 subcommands total
noahgift Feb 8, 2026
863be9d
feat: add corpus weight, format, budget commands — 47 subcommands total
noahgift Feb 8, 2026
9d0e1be
feat: add corpus entropy, todo, scatter commands — 50 subcommands total
noahgift Feb 8, 2026
0242f55
feat: add corpus grade-dist, pivot, corr commands — 53 subcommands total
noahgift Feb 8, 2026
d18d046
feat: add corpus schema, history-chart, flaky commands — 56 subcomman…
noahgift Feb 8, 2026
25eef3e
feat: add corpus profile, gaps, summary-json commands — 59 subcommand…
noahgift Feb 8, 2026
c3dcb78
feat: add corpus audit, tier-detail, id-range commands — 62 subcomman…
noahgift Feb 8, 2026
6895766
feat: add corpus tiers, fail-map, score-range commands — 65 subcomman…
noahgift Feb 8, 2026
4f2de35
feat: add corpus topk, format-cmp, stability commands — 68 subcommand…
noahgift Feb 8, 2026
96e0199
feat: add corpus version, rate, dist commands — 71 subcommands total
noahgift Feb 8, 2026
1068ff7
feat: add decision tracing for Tarantula fault localization (§11.10.1…
noahgift Feb 8, 2026
1d37b03
feat: add CITL pattern store for error→decision→fix mapping (§11.10.2…
noahgift Feb 8, 2026
eaca0a1
feat: add graph-aware corpus prioritization (§11.10.3) — 80 subcommands
noahgift Feb 9, 2026
c4a659a
feat: add weak supervision & error deduplication (§11.10.4) — 83 subc…
noahgift Feb 9, 2026
34db264
feat: add multi-corpus convergence dashboard (§11.10.5) — 86 subcommands
noahgift Feb 9, 2026
1425f04
feat: add OIP-driven corpus generation (§11.9) — 89 subcommands
noahgift Feb 9, 2026
f525345
feat: add formal schema enforcement (§11.8) — 92 subcommands
noahgift Feb 9, 2026
cd971cb
feat: add dataset export & HF publish readiness (§10.3) — 95 subcommands
noahgift Feb 9, 2026
965e146
feat: add CITL lint pipeline & Jidoka regression detection (§5.2/§5.3…
noahgift Feb 9, 2026
8a9d036
feat: add domain-specific corpus categories (§11.11) — 101 subcommands
noahgift Feb 9, 2026
907c6a0
feat: add tier-weighted aggregate scoring (§4.3) — 104 subcommands
noahgift Feb 9, 2026
aac2d66
feat: add quality gate configuration (§9) — 107 subcommands
noahgift Feb 9, 2026
97ab879
feat: expand corpus to 970 entries — B-530, M-220, D-220
noahgift Feb 9, 2026
9505e8b
feat: corpus expansion wave 24-26 — 1040 entries (B-570, M-240, D-230)
noahgift Feb 9, 2026
63aa53d
feat: corpus expansion Round 2 — 1120 entries (B-620, M-260, D-240)
noahgift Feb 9, 2026
77ec704
feat: corpus expansion Round 3 — 1160 entries (B-650, M-270, D-240)
noahgift Feb 9, 2026
47243eb
feat: corpus expansion to 14,307 entries — 97.5/100 A+ score
noahgift Feb 9, 2026
0c7dc86
release: v6.61.0 — 2 P0 transpiler fixes, 14,712 corpus entries, tran…
noahgift Feb 10, 2026
ec62507
chore: add .pmat/ to rash .gitignore
noahgift Feb 10, 2026
ea7b885
feat: 3 P0 transpiler fixes + corpus Rounds 21-23 (95 entries)
noahgift Feb 10, 2026
c69bb38
feat: P0 else-if chain fix + corpus Round 24 (15 entries)
noahgift Feb 10, 2026
bb42ede
feat: P0 range pattern + match implicit return fixes + corpus Round 2…
noahgift Feb 10, 2026
cfdd88b
feat: corpus Round 26 (19 entries) — algorithms + range patterns
noahgift Feb 10, 2026
457733a
feat: corpus Round 27 (25 entries) — algorithms, recursion, bit manip…
noahgift Feb 10, 2026
fb4e38f
feat: corpus Round 28 (17 entries) — number theory, validation, dispatch
noahgift Feb 10, 2026
52c2d03
feat: corpus Round 29 (16 entries) — number theory, sequences, pairing
noahgift Feb 10, 2026
3e601bd
fix: issue #133 pipe-in-condition parser + BashStmt::Negated + corpus…
noahgift Feb 10, 2026
a83008f
feat: corpus Round 31 (25 bash + 3 makefile + 3 dockerfile = 31 entries)
noahgift Feb 10, 2026
328b0b3
fix: lexer panic on bare heredoc operator `<<` at end of input
noahgift Feb 10, 2026
425ddf3
feat: corpus Round 32 (21 bash + 3 makefile + 3 dockerfile = 27 entries)
noahgift Feb 10, 2026
892d263
feat: corpus Round 33 (25 bash + 3 makefile + 3 dockerfile = 31 entries)
noahgift Feb 10, 2026
337b9d4
fix: expand array variables in for-in loops to decomposed elements
noahgift Feb 10, 2026
4342baf
feat: corpus Round 34 (22 bash + 3 makefile + 3 dockerfile = 28 entries)
noahgift Feb 10, 2026
0a57795
feat: corpus Round 35 (25 bash + 3 makefile + 3 dockerfile = 31 entries)
noahgift Feb 10, 2026
8db4b20
feat: corpus Round 36 (25 bash + 3 makefile + 3 dockerfile = 31 entries)
noahgift Feb 10, 2026
d472e35
fix: support dynamic array indexing with runtime variable indices
noahgift Feb 10, 2026
ab94074
feat: corpus Round 37 (25 bash + 3 makefile + 3 dockerfile = 31 entries)
noahgift Feb 10, 2026
9c45f36
fix: eliminate all 80 corpus failures (97.0 → 97.5 A+, 0 failures)
noahgift Feb 10, 2026
cd9aa19
feat: variable shadowing in loops + pathological corpus (20 entries)
noahgift Feb 10, 2026
cd81d58
release: v6.62.0 — variable shadowing, 15,106 corpus entries
noahgift Feb 10, 2026
28d05fd
feat: boolean constant folding + test context fix + corpus Round 38 (…
noahgift Feb 11, 2026
a497c34
feat: corpus Rounds 39-42 (48 entries) — pipes, math, boolean, arrays…
noahgift Feb 11, 2026
e1a3fc1
feat: corpus Rounds 43-54 (65 entries) — recursion, bit ops, nested l…
noahgift Feb 11, 2026
24408a7
feat: corpus Rounds 55-62 (40 entries) — state machines, algorithms, …
noahgift Feb 11, 2026
35e451b
feat: corpus Rounds 63-66 (21 entries) — deep calls, 6-param funcs, f…
noahgift Feb 11, 2026
614d644
feat: corpus Rounds 67-82 (78 entries) — nested match, mutual recursi…
noahgift Feb 11, 2026
3d0a0dc
feat: corpus Rounds 83-86 (16 entries) — algorithms, number theory, c…
noahgift Feb 11, 2026
1109a02
feat: corpus Round 87-90 (20 entries) — strings, tuples, structs, bre…
noahgift Feb 11, 2026
93bb7e0
feat: corpus Round 91-98 (39 entries) — struct+fn, pipelines, state m…
noahgift Feb 11, 2026
f38100e
feat: corpus Round 99-106 (37 entries) — extreme algorithms, deep rec…
noahgift Feb 11, 2026
3a4a072
feat: corpus Round 107-110 (15 entries) — 4-fn pipelines, twin primes…
noahgift Feb 11, 2026
4b18f83
feat: corpus Round 107-114 (30 entries) — prime factors, Goldbach, ha…
noahgift Feb 11, 2026
fc92fa5
feat: corpus Round 115-118 (14 entries) — 6-fn programs, triple nesti…
noahgift Feb 11, 2026
deeaf24
feat: corpus Round 119-122 (12 entries) — struct state machines, conv…
noahgift Feb 11, 2026
4ba7a45
feat: corpus Rounds 123-150 (47 entries) — multi-return, deep nesting…
noahgift Feb 11, 2026
0d5257d
feat: corpus Rounds 151-200 (52 entries) — extreme patterns, 15-fn pr…
noahgift Feb 11, 2026
5c8b2ba
feat: corpus Rounds 201-220 (19 entries) — traits, generics, Option, …
noahgift Feb 11, 2026
9dce1ec
feat: corpus Rounds 221-240 (15 entries) — impl methods, closures, Ve…
noahgift Feb 11, 2026
86b91d5
feat: corpus Rounds 241-260 (15 entries) — wheel sieve, complex numbe…
noahgift Feb 11, 2026
6639917
feat: corpus Rounds 261-280 (14 entries) — Mobius function, happy num…
noahgift Feb 11, 2026
73f047f
feat: corpus Rounds 281-300 (13 entries) — bubble sort, 9-field struc…
noahgift Feb 11, 2026
a91de57
feat: corpus Rounds 301-320 (14 entries) — shadowing, 12-arm match, n…
noahgift Feb 11, 2026
1859e69
feat: corpus Rounds 321-340 (14 entries) — Josephus, Stern-Brocot, Ho…
noahgift Feb 11, 2026
9f5c6ac
feat: corpus Rounds 341-360 (12 entries) — Smith numbers, Stirling, b…
noahgift Feb 11, 2026
4891fbf
feat: corpus Rounds 361-420 (60 entries) — matrix, graph, crypto, sor…
noahgift Feb 11, 2026
57f96a1
feat: corpus Rounds 421-460 (38 entries) — geometry, physics, game th…
noahgift Feb 11, 2026
930f1ec
feat: corpus Rounds 461-500 (19 entries) — extreme: 10fn math, deep m…
noahgift Feb 11, 2026
3c2a608
feat: corpus Rounds 501-540 (18 entries) — extreme nesting, matrix po…
noahgift Feb 11, 2026
7747e0f
feat: corpus Rounds 541-580 (18 entries) — ultra extreme: 15fn tower,…
noahgift Feb 11, 2026
89e5d7c
feat: corpus Rounds 581-620 (19 entries) — pathological: 20fn, NFA, M…
noahgift Feb 11, 2026
f7e7ecb
feat: corpus Rounds 621-660 (19 entries) — nuclear: Euler problems, g…
noahgift Feb 11, 2026
d3c2a49
feat: corpus Rounds 661-700 (19 entries) — Kadane, knapsack, edit dis…
noahgift Feb 11, 2026
43ee1db
feat: corpus Rounds 701-740 (19 entries) — 12-arm match, stack VM, Fl…
noahgift Feb 11, 2026
1f0c988
feat: corpus Rounds 741-820 (40 entries) — Ackermann, quaternion, Bez…
noahgift Feb 11, 2026
31c02c1
feat: corpus Rounds 821-900 (40 entries) — compiler sim, graph colori…
noahgift Feb 11, 2026
e807ab7
feat: corpus Rounds 901-980 (40 entries) — Church encoding, neural ne…
noahgift Feb 11, 2026
9f35ccf
feat: corpus Rounds 981-1060 (39 entries) — Raft, Paxos, MVCC, MESI, …
noahgift Feb 11, 2026
f27e905
feat: corpus Rounds 1061-1100 (20 entries) — quantum sim, blockchain,…
noahgift Feb 11, 2026
9c75a7b
feat: corpus Rounds 1101-1140 (20 entries) — MLFQ, gradient descent, …
noahgift Feb 11, 2026
c107695
feat: corpus Rounds 1141-1260 (60 entries) — interpreter design, comp…
noahgift Feb 11, 2026
6ac7ed6
feat: corpus Rounds 1261-1340 (40 entries) — networking protocols, cr…
noahgift Feb 11, 2026
8c52746
feat: corpus Rounds 1341-1420 (40 entries) — OS internals, database i…
noahgift Feb 11, 2026
846b56b
feat: corpus Rounds 1421-1500 (38 entries) — distributed systems, PLT…
noahgift Feb 11, 2026
614d328
feat: corpus Rounds 1501-1540 (18 entries) — machine learning fundame…
noahgift Feb 11, 2026
a189f83
feat: corpus Rounds 1541-1620 (20 entries) — signal processing, contr…
noahgift Feb 11, 2026
99198ab
feat: corpus Rounds 1621-1940 (80 entries) — graphics, physics, autom…
noahgift Feb 11, 2026
7d352b4
feat: corpus Rounds 1941-2100 (40 entries) — game theory, optimizatio…
noahgift Feb 11, 2026
8375760
feat: corpus Rounds 2101-2180 (20 entries) — networking, databases, M…
noahgift Feb 11, 2026
ad11d7f
feat: corpus Rounds 2181-2260 (20 entries) — recursion, number theory…
noahgift Feb 11, 2026
a7ac54b
feat: corpus Round 2261-2340 (20 entries) — extreme patterns, number …
noahgift Feb 11, 2026
124bd0e
feat: corpus Round 2341-2420 (20 entries) — arithmetic, number theory…
noahgift Feb 11, 2026
bcceea0
fix: update B1 containment test threshold from absolute to percentage…
noahgift Feb 11, 2026
135a64c
feat: corpus Rounds 2421-2740 (80 entries) — state machines, number t…
noahgift Feb 11, 2026
cf1f542
feat: corpus Rounds 2741-3060 (80 entries) — number theory, geometry,…
noahgift Feb 11, 2026
d351111
feat: corpus Rounds 3061-3380 (80 entries) — optimization, match patt…
noahgift Feb 11, 2026
a18f08b
feat: corpus Rounds 3381-3540 (40 entries) — combinatorics, bit manip…
noahgift Feb 11, 2026
3584aa2
feat: corpus Round 3541-3620 (20 entries) — automata theory, pattern …
noahgift Feb 11, 2026
8e139d0
feat: corpus Rounds 3621-3800 (60 entries) — probability, text analys…
noahgift Feb 11, 2026
4747e24
feat: corpus Rounds 3801-4120 (80 entries) — DP, graph, crypto, numer…
noahgift Feb 11, 2026
b481157
feat: corpus Rounds 4121-4440 (80 entries) — automata, info theory, g…
noahgift Feb 11, 2026
82a15bc
release: v6.63.0 — corpus expansion, transpiler improvements, linter …
noahgift Feb 13, 2026
ab861c7
docs: update book for v6.63.0 release
noahgift Feb 13, 2026
935c751
feat: corpus expansion 204 — 60 git-history-driven gap coverage entries
noahgift Feb 14, 2026
8d010b5
fix(GH-134): Makefile $ false positive and eval subcommand false posi…
noahgift Feb 14, 2026
a0b9c78
test: add mutation-killing tests for Dockerfile schema validation (BH…
noahgift Feb 14, 2026
1f92787
test: enhance Genchi Genbutsu test with determinism verification
noahgift Feb 14, 2026
3362cf0
docs: add corpus entry authoring SOP to CorpusEntry::new (Five Whys c…
noahgift Feb 14, 2026
a92fa63
test: add cross-shell agreement mutation-killing tests (BH-MUT-0007)
noahgift Feb 14, 2026
3ab3f6a
test: add schema enforcement mutation-killing tests (BH-MUT-0009 to B…
noahgift Feb 14, 2026
477569f
test: add mutation-killing tests for unquoted expansion and make var …
noahgift Feb 14, 2026
fb35b09
test: add || eval separator mutation-killing test (BH-MUT-0015)
noahgift Feb 14, 2026
396f787
test: add metamorphic relation MR-2/MR-3/MR-4 mutation-killing tests …
noahgift Feb 14, 2026
1944d67
test: add behavioral and determinism mutation-killing tests (BH-MUT-0…
noahgift Feb 14, 2026
0edbcd1
test: add per-format lint dispatch mutation-killing tests (BH-MUT-0019)
noahgift Feb 14, 2026
8895495
feat: complete COMPLY Phase 1 — 104 unit tests, 21 CLI integration tests
noahgift Feb 14, 2026
7d1ea74
fix: resolve COMPLY violations in shell scripts (dogfooding)
noahgift Feb 14, 2026
a478c87
fix: COMPLY-005 quote tracker handles escaped quotes and $() subshells
noahgift Feb 14, 2026
c210e68
feat: harden COMPLY-004 with SEC004-SEC007 security patterns
noahgift Feb 14, 2026
10c07ce
feat: expand COMPLY-001 bashism detection with 8 new patterns
noahgift Feb 14, 2026
d2f6c45
feat: expand COMPLY-006 ShellCheck detection from 2 to 8 patterns
noahgift Feb 14, 2026
3503249
feat: expand COMPLY-008 Dockerfile detection, add rust-toolchain.toml
noahgift Feb 14, 2026
41e5ea5
feat: expand COMPLY-007 Makefile safety from 1 to 5 patterns
noahgift Feb 14, 2026
7620631
feat: wire up comply CI integration — --failures-only, --min-score, c…
noahgift Feb 14, 2026
5c7f908
feat: add inline suppression comments — # comply:disable=COMPLY-001
noahgift Feb 14, 2026
18f63e0
fix: purify project scripts — dogfood comply score 86→99/100 (Grade A+)
noahgift Feb 14, 2026
6bdee8a
feat: add comply rules subcommand + Makefile suppression (100/100 dog…
noahgift Feb 14, 2026
cad8455
feat: expand COMPLY-002 determinism (3→8) and COMPLY-003 idempotency …
noahgift Feb 14, 2026
4605bae
feat: add gradual type system for shell purification (Layer 1)
noahgift Feb 14, 2026
fb6fc5d
fix: tighten gradual type compatibility — String→Integer now warns
noahgift Feb 14, 2026
2a88230
fix: improve type system — real spans, path guards, StringInArithmeti…
noahgift Feb 14, 2026
193db92
fix: type system polish — strict implies check, bool literals, guard …
noahgift Feb 14, 2026
6b0157a
fix: parse declare/readonly name=value + type mismatch from declare -i
noahgift Feb 14, 2026
007dc4b
fix: keyword-as-argument parsing + POSIX codegen improvements
noahgift Feb 14, 2026
66ecdbd
fix: preserve glob patterns in purified output
noahgift Feb 14, 2026
b73d8ff
fix: proper nested indentation in purified bash output
noahgift Feb 14, 2026
7fc72b0
fix: name=value argument parsing + URL/port token splitting
noahgift Feb 14, 2026
7520aca
fix: remove broken mkdir permission check, keep -p idempotency
noahgift Feb 14, 2026
5e1deb6
fix: compound conditions in if/while ([ c1 ] && [ c2 ])
noahgift Feb 14, 2026
1f0fc47
fix: special variable lexing ($#, $?, $!) + $# vs ${#VAR} disambiguation
noahgift Feb 14, 2026
84cc084
fix: support multi-statement case arms separated by single semicolons
noahgift Feb 14, 2026
8cb9bf3
fix: preserve elif branches in purified bash output
noahgift Feb 14, 2026
3d2027a
feat: support subshell (cmd1; cmd2) syntax in bash parser
noahgift Feb 14, 2026
d537240
fix: rm -rf no longer gets duplicate -f, local -i/-r flags handled
noahgift Feb 14, 2026
f433ea6
fix: handle $VARIABLE as command name in parser
noahgift Feb 14, 2026
ac822fa
feat: world-class parse error diagnostics with source context
noahgift Feb 14, 2026
6f6599d
fix: parse env prefix assignments (IFS= read), compound conditions (&…
noahgift Feb 14, 2026
6cbfa3f
fix: heredoc in loop bodies — don't consume trailing newline after de…
noahgift Feb 14, 2026
86c3cfe
fix: case patterns with dots/globs and bracket char classes in expres…
noahgift Feb 14, 2026
42082d5
fix: allow @ in identifiers and bare words for email addresses
noahgift Feb 14, 2026
35eac44
fix: assignment-as-condition in if/while (pid=$(cmd))
noahgift Feb 14, 2026
ccc18c5
fix: pipe-into-compound, compound redirects, background &, base#val a…
noahgift Feb 14, 2026
5357a70
fix: subshell conditions, (( ))&&, =~ regex, POSIX char classes, ext …
noahgift Feb 14, 2026
242b155
fix: -v test op, semicolons, env prefix, =~ bracket depth, &> in cond…
noahgift Feb 14, 2026
4e03c41
fix: $'...' ANSI-C quoting, heredoc on done, -L and 12 more test ops
noahgift Feb 14, 2026
d1ff7a6
fix: compound test conditions (-a/-o in [ ], &&/|| in [[ ]]) for stan…
noahgift Feb 15, 2026
edba710
feat: add expected_output to CorpusResult for B2 failure diagnostics
noahgift Feb 15, 2026
21a2459
feat: corpus diagnose-b2 with result caching (50ms vs 5min)
noahgift Feb 15, 2026
8bb796e
fix: B2 exact match 84.8%→94.4% (+0.8pts), add corpus fix-b2 subcommand
noahgift Feb 15, 2026
12c29e4
fix: B2 exact match 94.4%→97.2%, B1 95.3%→97.2%, score 97.7→98.4/100 A+
noahgift Feb 15, 2026
42e6381
feat: corpus fix-b2 --apply (native Rust), score 98.4→99.1/100 A+
noahgift Feb 15, 2026
61a1a03
feat: makefile bash fallback, B1+B2 100%, score 99.1→99.2/100 A+
noahgift Feb 15, 2026
5e608fe
release: v6.64.0 — COMPLY system, gradual types, 30+ parser fixes, 99…
noahgift Feb 15, 2026
96232e5
refactor: Replace cloned math/truncate_str with batuta-common delegat…
noahgift Feb 20, 2026
f6a33b0
chore: Switch batuta-common to crates.io v0.1.0 (Refs #159)
noahgift Feb 21, 2026
143bd2f
fix: auto-fix clippy warnings across lib, tests, examples, and benches
noahgift Feb 21, 2026
d50538d
fix: resolve pmat comply findings (CB-126, CB-127, CB-500, CB-503, MSRV)
noahgift Feb 21, 2026
3f068a8
refactor: reduce complexity in codegen.rs and logic.rs (CB-200, CB-030)
noahgift Feb 21, 2026
e1ec485
fix: resolve 15 broken internal markdown links (CB-900)
noahgift Feb 21, 2026
3a8827b
chore: rustfmt formatting, remove redundant disallowed-methods from c…
noahgift Feb 21, 2026
1629603
refactor: reduce complexity in rollback.rs and ir/tests.rs (CB-200)
noahgift Feb 21, 2026
8aaabed
fix(CB-081): Reduce prod transitive deps from 291 to 150
noahgift Feb 22, 2026
637880c
refactor(CB-200): reduce TDG grade violations from 294 to 14
noahgift Feb 22, 2026
3c76ad0
refactor(CB-200): achieve full TDG grade A compliance (14 → 0 violati…
noahgift Feb 22, 2026
0e0d26e
chore: update aprender + trueno deps for stack drift fix (Refs #1)
noahgift Feb 22, 2026
fee4051
refactor: decompose monolithic commands.rs into 62 focused modules (1…
noahgift Feb 22, 2026
01af46f
chore: delete 20 unused _logic.rs files, split dockerfile_commands.rs
noahgift Feb 22, 2026
533bcac
refactor: split installer_commands.rs (1,513→4 files, all under 430 l…
noahgift Feb 22, 2026
3200027
fix: update integration tests to match single-quoted transpiler output
noahgift Feb 22, 2026
dda265a
refactor: move inline tests to command_tests.rs, split score_commands.rs
noahgift Feb 22, 2026
9be35bb
refactor: reduce purifier complexity, add 15 coverage tests
noahgift Feb 22, 2026
f18b781
refactor: split command_tests.rs (3,915 lines) into 5 focused modules
noahgift Feb 22, 2026
cd93103
refactor: split logic.rs (3,404 lines) into 5 focused submodules
noahgift Feb 22, 2026
a60ae56
refactor: split ir/mod.rs (3,177 lines) into 8 focused submodules
noahgift Feb 23, 2026
360ba3b
refactor: split parser.rs (8,332 lines) into 6 focused submodules
noahgift Feb 23, 2026
e5c0298
refactor: split purify.rs (3,294 lines) into 8 focused submodules
noahgift Feb 23, 2026
1cd4308
refactor: split purification.rs (2,793 lines) into 6 focused submodules
noahgift Feb 23, 2026
d180834
refactor: reduce check_mr5_subsumption complexity in runner.rs
noahgift Feb 23, 2026
e011822
refactor: reduce lexer.rs complexity with 16 extracted helpers
noahgift Feb 23, 2026
169aa3b
refactor: reduce posix.rs complexity with extracted emitter helpers
noahgift Feb 23, 2026
3e5d9fb
refactor: reduce dockerfile.rs complexity with builder helpers
noahgift Feb 23, 2026
914d0cd
refactor: reduce audit.rs complexity with delegated audit functions
noahgift Feb 23, 2026
b57e850
refactor: reduce generators.rs complexity with 15 extracted helpers
noahgift Feb 23, 2026
8bc6cbb
refactor: reduce semantic.rs complexity with 9 extracted helpers
noahgift Feb 23, 2026
0ea612e
refactor: reduce codegen.rs and formatter.rs complexity
noahgift Feb 23, 2026
73e17fd
refactor: reduce oracle.rs and type_check.rs complexity
noahgift Feb 23, 2026
5768fa6
refactor: reduce complexity in 6 core modules
noahgift Feb 23, 2026
50f1dad
refactor: reduce complexity across 21 linter rule files
noahgift Feb 23, 2026
278daaa
refactor: reduce complexity across 20 remaining modules
noahgift Feb 23, 2026
10d6a3f
refactor: split large test files into directory modules
noahgift Feb 23, 2026
0d782b4
refactor: reduce complexity in 4 remaining files
noahgift Feb 23, 2026
9321052
refactor: eliminate all 938 clippy warnings across codebase
noahgift Feb 23, 2026
6c74847
feat: implement 60 SC1xxx + SC2058 ShellCheck rules with UTF-8 safety
noahgift Feb 24, 2026
f2a139a
fix: resolve 2 proptest failures (keyword filtering)
noahgift Feb 24, 2026
9c461e7
test: add coverage for convert_file_to_project and REPL help topics
noahgift Feb 24, 2026
74d735b
fix: exclude SEC001/REL001 from corpus lint scoring
noahgift Feb 24, 2026
55d10f8
fix: rewrite SC1028 to avoid false positives on command substitution
noahgift Feb 24, 2026
a893a88
fix: wire 20 orphan coverage test files as modules (+829 tests)
noahgift Feb 24, 2026
1a6a00e
fix: add SC1028/SC2105 to corpus lint exclusions (D-lint 100%)
noahgift Feb 24, 2026
386821b
fix: wire 18 more orphan test files as modules (+512 tests)
noahgift Feb 24, 2026
0870832
fix: wire 7 remaining orphan test files as modules (+281 tests)
noahgift Feb 24, 2026
9306f80
feat: add adversarial training data generator for shell safety classi…
noahgift Feb 25, 2026
5e096d8
feat: add v2.2 production training pipeline spec (SSC-023..027)
noahgift Feb 25, 2026
4ee1b28
docs: add dual-format strategy (APR + SafeTensors) to SSC spec Sectio…
noahgift Feb 25, 2026
ec12f79
chore: add quality infrastructure for SQI A- compliance
noahgift Feb 26, 2026
afff780
chore: add formal verification specs, benchmarks, and cross-platform CI
noahgift Feb 26, 2026
37de976
chore: add security audit, linting configs, and README improvements
noahgift Feb 26, 2026
e23b64e
chore: add docs.rs metadata, release automation, workspace config, an…
noahgift Feb 26, 2026
491f3a8
chore: add MSRV documentation, dev profile optimization, and verifica…
noahgift Feb 26, 2026
47e2bea
chore: add mutation testing config, coverage targets, and doc tests
noahgift Feb 26, 2026
969eb1b
chore: add feature flags for modular builds
noahgift Feb 26, 2026
fe26ad4
fix: remove orphan package sections from workspace Cargo.toml
noahgift Feb 26, 2026
9aa1aeb
refactor(CB-200): extract dispatch_command from execute_command
noahgift Feb 26, 2026
de8eccb
fix: suppress false positives on embedded awk/sed/perl programs (#137)
noahgift Feb 26, 2026
bd87505
fix(CB-950): quote truthy YAML strings to prevent implicit boolean co…
noahgift Feb 26, 2026
250a796
test: add 71 coverage tests targeting bench, quality gates, and corpu…
noahgift Feb 26, 2026
e537def
test: add load_full() coverage test for corpus registry
noahgift Feb 26, 2026
f7189ce
test: add coverage tests for help topics, installer conversion (+49 t…
noahgift Feb 26, 2026
5d20d36
feat: improve SQI score — remove book output, add bench target, kani …
noahgift Feb 26, 2026
251f925
refactor: split registry.rs into directory module for repository hygiene
noahgift Feb 26, 2026
508b616
refactor: improve SQI score via CI/CD, dead code removal, clippy fixe…
noahgift Feb 26, 2026
651cdcf
chore(deps): Update rstest requirement from 0.25 to 0.26
dependabot[bot] Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# cargo-audit configuration
# See: https://github.com/rustsec/rustsec/tree/main/cargo-audit

[advisories]
# Advisory database configuration
ignore = []
# Treat unmaintained crates as warnings, not errors
informational_warnings = ["unmaintained"]

[output]
# Output format
deny = ["yanked"]
39 changes: 8 additions & 31 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,34 +1,11 @@
# Cargo configuration for Rash project
# Static Analysis: Testing Spec Section 9
#
# Philosophy: Incremental improvement with pragmatic defaults
# - Start with warnings, promote to errors after codebase cleanup
# - Focus on safety/security critical lints first
# bashrs build configuration
# See: https://doc.rust-lang.org/cargo/reference/config.html

[target.'cfg(all())']
rustflags = [
# PHASE 1: Critical safety lints (currently WARN, will become DENY after cleanup)
# These catch the most dangerous patterns
"-W", "clippy::unwrap_used", # TODO: Convert to -D after fixing
"-W", "clippy::expect_used", # TODO: Convert to -D after fixing
"-W", "clippy::panic", # TODO: Convert to -D after fixing
"-W", "clippy::indexing_slicing", # TODO: Convert to -D after fixing

# PHASE 2: Development hygiene (WARN level)
"-W", "clippy::todo", # Track TODO markers
"-W", "clippy::unimplemented", # Track unimplemented code
"-W", "clippy::dbg_macro", # No dbg!() in committed code

# PHASE 3: Quality lints (WARN level - informational)
# Note: pedantic/nursery disabled by default - too noisy (745 warnings!)
# "-W", "clippy::pedantic", # Enable manually: cargo clippy -- -W clippy::pedantic
# "-W", "clippy::nursery", # Enable manually: cargo clippy -- -W clippy::nursery
"-W", "clippy::cargo", # Cargo-related lints
]
[build]
incremental = true

[alias]
# Convenience aliases for common commands
xclippy = "clippy --all-targets --all-features -- -D warnings"
xtest = "test --all-features"
xbuild = "build --all-features"
xcheck = "check --all-features"
t = "test"
c = "check"
b = "build --release"
cl = "clippy --all-targets -- -D warnings"
6 changes: 6 additions & 0 deletions .clippy.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# Allow useless comparisons in test code (usize >= 0)
# These are defensive assertions that don't harm anything
# TODO: Clean up these assertions properly in next release

# Disallowed methods - belt-and-suspenders with clippy::unwrap_used lint
disallowed-methods = [
{ path = "std::option::Option::unwrap", reason = "Use .expect() or ? operator" },
{ path = "std::result::Result::unwrap", reason = "Use .expect() or ? operator" },
]
44 changes: 44 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Nextest configuration for bashrs
# Optimized for fast coverage runs

[store]
# Store test binaries separately for faster incremental builds
dir = "target/nextest"

[profile.default]
# Default profile for regular test runs
retries = 0
slow-timeout = { period = "60s", terminate-after = 2 }
fail-fast = false
test-threads = "num-cpus"

[profile.coverage]
# Optimized for coverage runs with instrumentation
retries = 0
slow-timeout = { period = "60s", terminate-after = 2 }
fail-fast = false
# Use all CPUs for maximum parallelism
test-threads = "num-cpus"
# Skip slow property tests during coverage
status-level = "pass"

[[profile.coverage.overrides]]
# E2E tests are slow under instrumentation
filter = 'test(/e2e_pipeline/)'
slow-timeout = { period = "120s", terminate-after = 2 }

[[profile.coverage.overrides]]
# Bug hunting tests are comprehensive
filter = 'test(/bug_hunting/)'
slow-timeout = { period = "90s", terminate-after = 2 }

[[profile.coverage.overrides]]
# Property tests need more time under instrumentation
filter = 'test(/property/)'
slow-timeout = { period = "90s", terminate-after = 2 }

[profile.ci]
# CI profile - balanced speed and thoroughness
retries = 1
slow-timeout = { period = "120s", terminate-after = 2 }
fail-fast = false
38 changes: 38 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
version: 2
updates:
# Rust dependencies
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "03:00"
open-pull-requests-limit: 10
labels:
- "dependencies"
- "rust"
commit-message:
prefix: "chore"
include: "scope"
# Group minor and patch updates
groups:
development-dependencies:
dependency-type: "development"
update-types:
- "minor"
- "patch"
production-dependencies:
dependency-type: "production"
update-types:
- "patch"

# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "ci"
74 changes: 74 additions & 0 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Benchmarks

on:
workflow_dispatch:
inputs:
reason:
description: 'Reason for running benchmarks'
required: false
default: 'Manual benchmark run'

pull_request:
paths:
- 'rash/src/**/*.rs'
- 'rash/benches/**/*.rs'
- 'Cargo.toml'
- 'Cargo.lock'

schedule:
- cron: '0 2 * * 0' # Every Sunday at 2 AM UTC

env:
CARGO_TERM_COLOR: always

jobs:
benchmark:
name: Run Benchmarks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2

- name: Run all benchmarks
run: |
echo "Running criterion benchmarks..."
cargo bench --workspace --no-fail-fast 2>&1 | tee benchmark-output.txt
continue-on-error: true
timeout-minutes: 15

- name: Upload criterion results
if: always()
uses: actions/upload-artifact@v4
with:
name: criterion-results-${{ github.sha }}
path: target/criterion/
retention-days: 90

- name: Upload benchmark output
if: always()
uses: actions/upload-artifact@v4
with:
name: benchmark-output-${{ github.sha }}
path: benchmark-output.txt
retention-days: 30

- name: Comment on PR (if applicable)
if: github.event_name == 'pull_request' && always()
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
let output = '';
try {
output = fs.readFileSync('benchmark-output.txt', 'utf8');
} catch (e) {
output = 'No benchmark output generated';
}
const truncated = output.length > 5000 ? output.substring(0, 5000) + '\n...(truncated)' : output;
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.name,
body: `## Benchmark Results\n\n\`\`\`\n${truncated}\n\`\`\`\n\n---\n*Benchmarks on commit ${context.sha.substring(0, 7)}*`
});
Loading
Loading