Skip to content

Commit 1982b3d

Browse files
committed
chore: M5 CI/Workflow Sweep - final synchronisation
1 parent ccd4027 commit 1982b3d

52 files changed

Lines changed: 2036 additions & 748 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

QUICKSTART-MAINTAINER.adoc

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
// SPDX-License-Identifier: PMPL-1.0-or-later
22
// Template: QUICKSTART-MAINTAINER.adoc — packaging, deploying, and maintaining
3-
// Replace panic-attacker, {{PACKAGE_NAME}}, {{DEPS}} with actuals
4-
= panic-attacker — Quick Start for Platform Maintainers
3+
// Replace panic-attacker, panic-attack, rustc, cargo, mold, pkg-config with actuals
4+
= panic-attack — Quick Start for Platform Maintainers
55
:toc:
66
:toclevels: 2
77

88
== Overview
99

10-
This guide covers packaging, deploying, and maintaining panic-attacker for
10+
This guide covers packaging, deploying, and maintaining panic-attack for
1111
distribution on your platform.
1212

1313
== Runtime Dependencies
1414

15-
{{DEPS}}
15+
rustc, cargo, mold, pkg-config
1616

1717
== Build from Source
1818

1919
[source,bash]
2020
----
21-
git clone https://github.com/hyperpolymath/panic-attacker.git
22-
cd panic-attacker
21+
git clone https://github.com/hyperpolymath/panic-attack.git
22+
cd panic-attack
2323
just build-release
2424
----
2525

26-
Output: `{{BUILD_OUTPUT_PATH}}`
26+
Output: `target/release/panic-attack`
2727

2828
== Packaging
2929

@@ -46,7 +46,7 @@ nix build
4646
[source,bash]
4747
----
4848
just stapeln-export # Generates Containerfile
49-
podman build -t panic-attacker .
49+
podman build -t panic-attack .
5050
----
5151

5252
=== Manual Package
@@ -65,10 +65,10 @@ Files installed:
6565
| `$PREFIX/bin/`
6666
| Executables
6767

68-
| `$PREFIX/share/{{PACKAGE_NAME}}/`
68+
| `$PREFIX/share/panic-attack/`
6969
| Data files, assets
7070

71-
| `$PREFIX/share/doc/{{PACKAGE_NAME}}/`
71+
| `$PREFIX/share/doc/panic-attack/`
7272
| Documentation
7373

7474
| `$PREFIX/share/applications/`
@@ -80,9 +80,9 @@ Files installed:
8080

8181
== Configuration
8282

83-
Default config location: `$XDG_CONFIG_HOME/{{PACKAGE_NAME}}/config.toml`
83+
Default config location: `$XDG_CONFIG_HOME/panic-attack/config.toml`
8484

85-
Fallback: `$HOME/.config/{{PACKAGE_NAME}}/config.toml`
85+
Fallback: `$HOME/.config/panic-attack/config.toml`
8686

8787
== Health Checks
8888

@@ -102,13 +102,13 @@ just build-release
102102
just install --prefix=/usr/local
103103
----
104104

105-
Or via OPSM: `opsm update {{PACKAGE_NAME}}`
105+
Or via OPSM: `opsm update panic-attack`
106106

107107
== Security Notes
108108

109109
* License: PMPL-1.0-or-later (Palimpsest License)
110110
* All dependencies SHA-pinned
111-
* `panic-attacker` scan results: link:INSTALL-SECURITY-REPORT.adoc[]
111+
* `panic-attack` scan results: link:INSTALL-SECURITY-REPORT.adoc[]
112112
* OpenSSF Scorecard: see badge in README
113113

114114
== Multi-Instance Deployment
@@ -117,8 +117,8 @@ For deploying multiple instances (e.g., different users or tenants):
117117

118118
[source,bash]
119119
----
120-
just install --prefix=/opt/{{PACKAGE_NAME}}-instance1 --config=/etc/{{PACKAGE_NAME}}/instance1.toml
121-
just install --prefix=/opt/{{PACKAGE_NAME}}-instance2 --config=/etc/{{PACKAGE_NAME}}/instance2.toml
120+
just install --prefix=/opt/panic-attack-instance1 --config=/etc/panic-attack/instance1.toml
121+
just install --prefix=/opt/panic-attack-instance2 --config=/etc/panic-attack/instance2.toml
122122
----
123123

124124
Each instance has isolated config, data, and logs.

ROADMAP.adoc

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,50 @@ Identified as an estate-wide gap in the 2026-04-05 KRL-stack CRG blitz audit.
129129
* [x] Detect Elixir test suites without `ExUnitProperties` or StreamData for property-based testing — PA025
130130
* [ ] Emit `mutation_gap` weak-point for any module with >80% line coverage but zero mutation score (requires runtime coverage data — deferred)
131131

132+
== v2.5.5 -- 007 False Positive Reduction
133+
134+
Based on the 007 repository analysis (2026-04-15), this milestone targets
135+
specific false positive patterns that currently inflate weak-point counts.
136+
137+
=== `comment_analysis` — Distinguish code from documentation
138+
139+
Panic-attack currently flags comments that mention "unsafe" or document
140+
security aspects, leading to false positives in security tests.
141+
142+
* [ ] Parse Rust/JS/Python/Julia comment syntax to exclude from unsafe detection
143+
* [ ] Add `// panic-attack: accepted` comment parser for explicit suppression
144+
* [ ] Create comment-only weak-point category for documentation review
145+
* [ ] Improve Zig comment parsing to reduce build.zig false positives
146+
147+
=== `test_context` — Test vs production code distinction
148+
149+
Test files should not be held to the same safety standards as production code,
150+
but panic-attack currently applies uniform rules.
151+
152+
* [ ] Detect test modules (`#[cfg(test)]`, `test "..."`, `ExUnit.Case`) across languages
153+
* [ ] Suppress PanicPath findings in test-only code (unwrap/expect acceptable in tests)
154+
* [ ] Add test/production context to weak-point metadata
155+
* [ ] Create test-specific suppression patterns for HTTP URLs and other test data
156+
157+
=== `ffi_refinement` — Better FFI boundary detection
158+
159+
Current FFI detection flags build system files and legitimate ABI boundaries.
160+
161+
* [ ] Distinguish `@import("std")` from `@cImport` in Zig analyzer
162+
* [ ] Recognize build.zig as build-system context, not FFI usage
163+
* [ ] Cross-reference with `audits/audit-ffi-unsafe.md` for pre-approved boundaries
164+
* [ ] Add FFI category subtyping (BuildSystem, RuntimeABI, TestMock)
165+
166+
=== `jit_context` — JIT compilation awareness
167+
168+
JIT compilation inherently requires unsafe code for function pointer manipulation,
169+
but panic-attack flags these as generic UnsafeCode findings.
170+
171+
* [ ] Detect Cranelift/LLVM JIT compilation contexts
172+
* [ ] Add JIT-specific unsafe suppression for transmute patterns
173+
* [ ] Document JIT safety invariants in weak-point metadata
174+
* [ ] Create JIT category for specialized analysis
175+
132176
== v3.0.0 -- Distributed Scanning
133177

134178
* [x] Assemblyline batch scanning with rayon parallelism

benches/scan_bench.rs

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,24 @@ use panic_attack::types::Language;
1111
/// Benchmark language detection from file extension
1212
fn bench_language_detect(c: &mut Criterion) {
1313
let extensions = vec![
14-
"main.rs", "lib.rs", "app.py", "index.js", "server.ex",
15-
"types.idr", "Main.hs", "config.ncl", "build.zig", "test.gleam",
16-
"script.sh", "model.jl", "style.css", "unknown.xyz",
17-
"Component.res", "parser.ml", "proof.lean", "rules.lgt",
14+
"main.rs",
15+
"lib.rs",
16+
"app.py",
17+
"index.js",
18+
"server.ex",
19+
"types.idr",
20+
"Main.hs",
21+
"config.ncl",
22+
"build.zig",
23+
"test.gleam",
24+
"script.sh",
25+
"model.jl",
26+
"style.css",
27+
"unknown.xyz",
28+
"Component.res",
29+
"parser.ml",
30+
"proof.lean",
31+
"rules.lgt",
1832
];
1933

2034
c.bench_function("language_detect_18_files", |b| {
@@ -29,10 +43,18 @@ fn bench_language_detect(c: &mut Criterion) {
2943
/// Benchmark language family classification
3044
fn bench_language_family(c: &mut Criterion) {
3145
let languages = vec![
32-
Language::Rust, Language::Elixir, Language::Gleam,
33-
Language::ReScript, Language::Idris, Language::Zig,
34-
Language::Haskell, Language::Python, Language::JavaScript,
35-
Language::Shell, Language::Julia, Language::Nickel,
46+
Language::Rust,
47+
Language::Elixir,
48+
Language::Gleam,
49+
Language::ReScript,
50+
Language::Idris,
51+
Language::Zig,
52+
Language::Haskell,
53+
Language::Python,
54+
Language::JavaScript,
55+
Language::Shell,
56+
Language::Julia,
57+
Language::Nickel,
3658
];
3759

3860
c.bench_function("language_family_12_langs", |b| {

0 commit comments

Comments
 (0)