Skip to content

Commit 2690929

Browse files
docs(reports): deposit 2026-06-06 hypatia alert-classification report (#293)
Deposits the previously-untracked hypatia alert-classification report (counts as-of 2026-06-06) for the audit trail. Part of the 2026-07-01 completion-plan Phase 0 (local-checkout reconciliation). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent f0950de commit 2690929

1 file changed

Lines changed: 146 additions & 0 deletions

File tree

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
<!-- SPDX-License-Identifier: MPL-2.0 -->
2+
<!-- SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> -->
3+
<!-- Deposited report: Hypatia alert classification for echidna, 2026-06-06 -->
4+
5+
# Hypatia Alert Classification Report
6+
7+
Repository: `hyperpolymath/echidna`
8+
9+
Date: 2026-06-06
10+
11+
This deposited report classifies the non-Dependabot code-scanning state seen in
12+
`echidna`. It separates scanner/reporting debris from real repository work, and
13+
it records which work should be handled by existing systems, extended systems,
14+
or human/specialist review.
15+
16+
## Open Alert Count
17+
18+
GitHub code scanning showed 249 open alerts.
19+
20+
| Bucket | Count | Classification | Route |
21+
| --- | ---: | --- | --- |
22+
| Hypatia `code_scanning_alerts/CSA001` self-echo | 27 | Reporting debris | Standards/Hypatia SARIF fix, then clear stale alerts |
23+
| Structural stale refs: `SD022`, `SD007` | 28 | Lifecycle hygiene | PR-only documentation/state cleanup |
24+
| Workflow and Scorecard control-plane hygiene | 51 | CI/security control | Existing PR machinery, conservative batching |
25+
| ReScript migration findings | 73 | Language migration | Batch by subsystem, PR-only |
26+
| Runtime crash/availability code safety | 45 | Source risk | Context-aware PRs, no blind rewrites |
27+
| FFI/proof/memory-safety findings | 22 | High-risk source/proof boundary | Specialist review, proof route, report-only by default |
28+
| Environment/report-only findings | 3 | Control-plane topology | Observe, model, and route manually |
29+
30+
## Findings Expected To Dissolve
31+
32+
The 27 `code_scanning_alerts/CSA001` alerts are not source work in `echidna`.
33+
They should dissolve after:
34+
35+
1. the standards reusable SARIF converter stops uploading `code_scanning_alerts`
36+
meta-findings;
37+
2. the next authoritative Hypatia run uploads an empty or reduced Hypatia SARIF
38+
result set for that rule family;
39+
3. stale GitHub code-scanning alerts clear or are dismissed with rationale.
40+
41+
Related issue: <https://github.com/hyperpolymath/standards/issues/378>
42+
43+
## Real Work Buckets
44+
45+
### Workflow and Scorecard Hygiene
46+
47+
These are mostly easy or existing-system work. They include missing
48+
`timeout-minutes`, Scorecard token-permission issues, and specific workflow
49+
audit findings such as CodeQL language coverage and secret-action gates.
50+
51+
Recommended handling:
52+
53+
- set proportional timeouts, not a universal 10-minute value;
54+
- let Scorecard/CodeQL work already in flight finish before duplicating work;
55+
- use PR-only mode;
56+
- verify workflows with focused CI.
57+
58+
Related issue: <https://github.com/hyperpolymath/echidna/issues/241>
59+
60+
### ReScript Migration
61+
62+
The 73 migration findings should be treated as one language-migration campaign,
63+
not 73 isolated defects.
64+
65+
Recommended handling:
66+
67+
- group by API and subtree;
68+
- preserve deliberate externals and FFI bindings with local rationale;
69+
- batch migration work by subsystem;
70+
- avoid whole-tree automatic rewrites without build verification.
71+
72+
Related issue: <https://github.com/hyperpolymath/echidna/issues/240>
73+
74+
### Structural Drift
75+
76+
The 28 structural findings are stale references in docs and machine-readable
77+
state. They are low-risk when the canonical replacement path is known.
78+
79+
Recommended handling:
80+
81+
- map each old path to a current path or tombstone;
82+
- keep machine-readable state parseable;
83+
- update references in PR-only mode.
84+
85+
Related issue: <https://github.com/hyperpolymath/echidna/issues/242>
86+
87+
### Runtime Code Safety
88+
89+
The unwrap, expect, panic, and lock-unwrap findings are plausible source-risk
90+
signals. Some may be test-only or invariant-protected; others need proper error
91+
propagation.
92+
93+
Recommended handling:
94+
95+
- separate tests and fixtures from production paths;
96+
- replace production panics with typed errors only where behavior is preserved;
97+
- avoid replacing `unwrap()` with default values that could corrupt prover
98+
state.
99+
100+
Related issue: <https://github.com/hyperpolymath/echidna/issues/239>
101+
102+
### FFI, Memory, And Proof Boundary
103+
104+
The unsafe block, raw pointer, `mem_forget`, Zig pointer cast, and Agda
105+
postulate findings are high-risk. They should not be auto-fixed from pattern
106+
matching alone.
107+
108+
Recommended handling:
109+
110+
- route to echidnabot or proof review;
111+
- require focused tests or proof obligations;
112+
- use report-only unless a proven recipe exists.
113+
114+
Related issue: <https://github.com/hyperpolymath/echidna/issues/239>
115+
116+
## Summary By Action Class
117+
118+
| Action class | Count | Notes |
119+
| --- | ---: | --- |
120+
| Dissolve as stale/reporting debris | 27 | Self-echo SARIF artifacts |
121+
| Trivial/easy existing-system PR work | 79 | Workflow/Scorecard plus structural docs/state |
122+
| Readily accommodated by extended system | 118 | ReScript migration plus runtime code-safety with context |
123+
| High risk, specialist review only | 22 | FFI/proof/memory boundary |
124+
| Report-only environment topology | 3 | Needs environment self-modeling |
125+
126+
## Ordering
127+
128+
The safe order is:
129+
130+
1. Fix the self-echo reporting path and clear stale alert debris.
131+
2. Let relevant in-flight GitHub Actions, CodeQL, Scorecard, and Dependabot
132+
work finish when it covers the same class.
133+
3. Apply workflow and structural hygiene PRs.
134+
4. Run the ReScript migration campaign by subsystem.
135+
5. Triage runtime code-safety paths.
136+
6. Hold FFI/proof/memory-safety items for specialist review.
137+
138+
Doing this out of order can create more work than it removes. For example,
139+
rewriting source before clearing stale SARIF debris makes alert counts look
140+
worse, and blind workflow timeout edits can break formal or live-prover jobs.
141+
142+
## Portfolio Note
143+
144+
For `Git in the Time of NeSy Agency`, this report is an example of repository
145+
portfolio triage: the useful unit is not a raw alert, but a classified work
146+
order with route, cost, risk, and expected class-collapse.

0 commit comments

Comments
 (0)