@@ -56,26 +56,27 @@ The Rust CLI is a functional interactive shell with these features:
5656| Extended | 55 | Advanced features |
5757| Integration | 35 | End-to-end |
5858| Integration (extra) | 10 | Edge cases |
59+ | Lean4 proptest correspondence | 16 | Property-based Lean validation |
5960| Parameter expansion | 67 | Variable/parameter tests |
6061| Property correspondence | 15 | Property-based Lean validation |
6162| Property | 28 | General property tests |
6263| Security | 15 | Injection, traversal, validation |
6364| Doctests | 52 | Inline examples |
64- | ** Total passing** | ** 525 ** | ** 0 failures** |
65- | Ignored (stress) | 15 | Run manually with ` --ignored ` |
65+ | ** Total passing** | ** 541 ** | ** 0 failures** |
66+ | Ignored (stress+1 ) | 14 | Run manually with ` --ignored ` |
6667
6768### Codebase Metrics
6869
6970- 15,720 lines of Rust across 30 source files
7071- ~ 200+ formal theorems across 6 proof systems
71- - 41 proof holes across 17 proof files (28 gaps, 3 axioms, 10 structural)
72+ - 31 proof holes across 17 proof files (26 gaps, 3 axioms, 2 structural)
7273
7374## Critical Issues
7475
7576### Critical Priority
7677
77781 . ** No mechanized Lean -> Rust correspondence** — testing only, ~ 85% confidence
78- 2 . ** 28 real proof gaps** across 17 files (plus 3 axioms, 10 structural — see ` docs/PROOF_HOLES_AUDIT.md ` )
79+ 2 . ** 26 real proof gaps** across 17 files (plus 3 axioms, 2 structural — see ` docs/PROOF_HOLES_AUDIT.md ` )
79803 . ** NOT production-ready** — research prototype only
8081
8182### High Priority
@@ -113,6 +114,18 @@ The Rust CLI is a functional interactive shell with these features:
113114- ** Redo bug** : ` record_operation() ` cleared redo stack, breaking multi-step redo. Added ` record_redo_operation() ` in ` state.rs `
114115- ** Glob POSIX compliance** : ` expand_glob ` now uses ` require_literal_leading_dot: true ` (hidden files not matched by ` * ` )
115116- ** 4 doctest fixes** : Missing imports, PATH-dependent assertions
117+ - ** Append redirection truncation** : ` >> ` used ` File::create() ` (truncates!) instead of ` OpenOptions::append() ` in ` external.rs `
118+ - ** ` 2> ` tokenization** : ` file2>out ` incorrectly split as ` file [2>] out ` instead of ` file2 [>] out ` — now only treats ` 2> ` as error redirect when ` 2 ` starts a new token
119+ - ** Logical operator precedence** : ` a && b || c ` parsed as ` a && (b || c) ` — fixed to left-to-right ` (a && b) || c ` via ` rposition `
120+ - ** Shift overflow panic** : ` $((1 << 64)) ` panicked — now returns error for shift counts >= 64
121+ - ** Path traversal** : ` resolve_path("../../etc/passwd") ` could escape sandbox — now normalizes ` .. ` components and clamps to root
122+ - ** Version mismatch** : ` main.rs ` reported version 1.0.0 and "256 proofs" — fixed to 0.9.0 and "200+ theorems"
123+
124+ ### Dead Code Removed
125+ - ` QuotedWord::with_quote_type() ` — never called (parser.rs)
126+ - ` RedirectSetup::get_file() ` — never called (redirection.rs)
127+ - ` JobTable::get_job_mut() ` — never called (job.rs)
128+ - ` JobTable::cleanup_done_jobs() ` — never called (job.rs)
116129
117130### Documentation Fixes
118131- Downgraded version from 1.0.0 to 0.9.0 (honest)
@@ -207,20 +220,21 @@ vsh::parser::expand_variables(&input, &state);
207220
208221### Immediate Priorities
209222
210- 1 . ** Close 28 proof gaps** (prioritized in ` docs/PROOF_HOLES_AUDIT.md ` )
211- 2 . ** Remove dead code ** : ` lean_ffi.rs ` , ` daemon_client.rs `
212- 3 . ** Fix git author ** on future commits (currently ` Test <test@example.com> ` )
223+ 1 . ** Close remaining 31 proof gaps** (prioritized in ` docs/PROOF_HOLES_AUDIT.md ` )
224+ 2 . ** Fix git author ** on future commits (currently ` Test <test@example.com> ` )
225+ 3 . ** Rewrite ` docs/POSIX_COMPLIANCE.md ` ** — severely outdated (see POSIX audit notes below )
213226
214227### This Week
215228
2162291 . Set up Echidna property-based validation pipeline
2172302 . Begin mechanized Lean -> Rust correspondence (even partial)
218- 3 . Audit Sonnet's mega-commit for correctness beyond test files
231+ 3 . Implement ` 2>&1 ` fd duplication (currently a TODO no-op in ` external.rs ` )
219232
220233### This Month
221234
2222351 . Achieve 95%+ correspondence confidence via property testing
223- 2 . Complete POSIX compliance for implemented features
236+ 2 . Implement control structures (` if ` /` then ` /` else ` /` fi ` , ` while ` /` for ` , ` case ` )
237+ 3 . Implement ` echo ` builtin and word splitting (` $IFS ` )
2242383 . Begin Idris2 extraction path for v2.0
225239
226240### What NOT to Do
@@ -271,8 +285,28 @@ PMPL-1.0-or-later (Palimpsest License)
271285
272286---
273287
274- ** Last Updated** : 2026-02-12 (Opus honest audit and fixes)
288+ ## POSIX Compliance Audit Notes (2026-02-12)
289+
290+ ` docs/POSIX_COMPLIANCE.md ` is ** severely outdated** — it claims nothing beyond filesystem
291+ syscalls is implemented, but the shell actually has: command parsing with full AST, pipelines,
292+ redirections (7 of 8 types), variables with parameter expansion, glob/brace expansion,
293+ command/process substitution, arithmetic expansion, quote processing, job control basics,
294+ test/[ /[[ builtins, logical operators, and here documents. Milestones 1-8 from the roadmap
295+ are substantially complete.
296+
297+ ** Most critical missing POSIX features** (ranked by impact):
298+ 1 . Control structures (if/then/else/fi, while/for, case) — blocks all script execution
299+ 2 . Functions — no func() { ... } syntax
300+ 3 . echo builtin — delegates to external /usr/bin/echo
301+ 4 . 2>&1 fd duplication — falls back to Stdio::inherit() (TODO in external.rs:382)
302+ 5 . Word splitting ($IFS) — unquoted variable expansions not split
303+ 6 . Tilde expansion — only works for ~ / in cd command
304+ 7 . read builtin, set/unset/readonly, source/., eval, semicolons as separators
305+
306+ ---
307+
308+ ** Last Updated** : 2026-02-12 (Opus source audit, bug fixes, dead code removal)
275309** Version** : 0.9.0
276310** Status** : Advanced research prototype — NOT production-ready
277- ** Tests** : 525 passing, 0 failures, 15 ignored
311+ ** Tests** : 541 passing, 0 failures, 14 ignored
278312** Completion** : ~ 65%
0 commit comments