Skip to content

Commit c6dec85

Browse files
Merge branch 'main' into chore/gui-feature-gate-msrv
2 parents 7afaab1 + 600f6fc commit c6dec85

1 file changed

Lines changed: 25 additions & 5 deletions

File tree

FUTURE-IMPROVEMENTS.md

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,28 @@
33
# Future Improvements: Insights from Scanning the Eclexia Compiler Toolchain
44

55
**Date:** 2026-02-08
6+
**Audit refreshed:** 2026-05-26 (4 of 10 items shipped; status block at top)
67
**Author:** Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
7-
**Context:** panic-attack v1.0.0, scanning Eclexia (10 crates, ~20,000 lines of Rust)
8+
**Context:** panic-attack v1.0.0 at time of scan; current v2.5.0
9+
10+
---
11+
12+
## Status at 2026-05-26
13+
14+
| # | Improvement | Status | Evidence |
15+
|---|-------------|--------|----------|
16+
| 1 | Test Code Exclusion | **Shipped** | `Analyzer::strip_cfg_test_modules_rs``src/assail/analyzer.rs:923-934`. Applied globally before pattern counting; CLAUDE.md confirms cfg(test) skip behaviour. |
17+
| 2 | Framework Detection Accuracy | **Shipped** | `Analyzer::detect_frameworks``src/assail/analyzer.rs:4993`. Dependency-aware classification supersedes the heuristic-only path that misfired on Eclexia. |
18+
| 3 | Safe Unwrap Variant Distinction | **Shipped** | `safe_unwrap_calls` field on `ProgramStatistics` (`src/types.rs:518`) and `FileStatistics` (`src/types.rs:451`). Counted but excluded from PA006 (PanicPath) per CLAUDE.md. |
19+
| 4 | Language-Specific Severity Calibration | Outstanding | No "Hardened" or "Clean" severity tier in `src/types.rs`. Still gated on items 1 + 3 being trustworthy, which they now are. |
20+
| 5 | Workspace-Level Consolidated Reporting | Outstanding | No Cargo workspace mode in `src/main.rs`. `mass-panic` covers cross-repo but not single-workspace aggregation. |
21+
| 6 | Differential Scanning | **Shipped** | `Commands::Diff``src/main.rs:483`; logic in `src/report/diff.rs`. Listed in ROADMAP v2.2.0 as `[x]`. |
22+
| 7 | Allocation Site Context and Classification | Outstanding | No `AllocationCategory` enum in `src/types.rs`. Site counts still raw. |
23+
| 8 | Resource Dimension Awareness for DSLs | Outstanding | Long-term; no plugin-extension surface yet. |
24+
| 9 | Pattern Detection for Safe Error Handling | Outstanding | No "error handling maturity" metric. |
25+
| 10 | Configurable Severity Thresholds for CI | Outstanding | No `[thresholds]` parser; no `panic-attack.toml` consumer. Now unblocked because 1, 2, 3 are accurate. |
26+
27+
**Net:** 4/10 shipped (1, 2, 3, 6). Items 4 and 10 are now genuinely unblocked because their stated dependencies (1, 2, 3) have landed; the original "depends on" notes are still accurate but no longer blocking. Items 5, 7, 8, 9 remain as written.
828

929
---
1030

@@ -70,7 +90,7 @@ The following observations were made during the Eclexia scan session:
7090

7191
### 1. Test Code Exclusion
7292

73-
**Priority:** HIGH
93+
**Priority:** HIGH**Status: SHIPPED** (`Analyzer::strip_cfg_test_modules_rs`, `src/assail/analyzer.rs:923-934`)
7494

7595
**Problem:** panic-attack counts `unwrap()` and `panic!()` calls inside
7696
`#[cfg(test)]` modules, `#[test]` functions, and files in `tests/`
@@ -95,7 +115,7 @@ well-tested Rust codebases.
95115

96116
### 2. Framework Detection Accuracy
97117

98-
**Priority:** HIGH
118+
**Priority:** HIGH**Status: SHIPPED** (`Analyzer::detect_frameworks`, `src/assail/analyzer.rs:4993`)
99119

100120
**Problem:** panic-attack reports "WebServer" as the detected framework for
101121
pure compiler crates with zero I/O operations. This is a misdetection that
@@ -123,7 +143,7 @@ the overall report.
123143

124144
### 3. Safe Unwrap Variant Distinction
125145

126-
**Priority:** HIGH
146+
**Priority:** HIGH**Status: SHIPPED** (`safe_unwrap_calls` field on `ProgramStatistics`/`FileStatistics`, `src/types.rs:451,518`)
127147

128148
**Problem:** The Rust analyzer counts `.unwrap_or(value)`,
129149
`.unwrap_or_default()`, and `.unwrap_or_else(|| ...)` toward the
@@ -205,7 +225,7 @@ represent the majority of non-trivial Rust codebases.
205225

206226
### 6. Differential Scanning (Before/After Comparison)
207227

208-
**Priority:** MEDIUM
228+
**Priority:** MEDIUM**Status: SHIPPED** (`Commands::Diff`, `src/main.rs:483`; logic in `src/report/diff.rs`)
209229

210230
**Problem:** There is no way to compare two scans to show what improved or
211231
regressed between them. This limits the tool's usefulness in CI pipelines,

0 commit comments

Comments
 (0)