Summary
A per-file idris2 --find-ipkg --check census of all 379 .idr files under src/,
with each failure attributed to own-defect vs import-inherited:
|
count |
| clean |
233 |
| failing — own defect |
91 |
| failing — inherited from an import only |
52 |
| unattributable |
0 |
| stalls (do not terminate) |
3 |
Of the 91 own-defect files, 47 are parse failures.
Dominant error classes among own defects:
- 31 —
Couldn't parse declaration
- 16 —
Couldn't parse any alternatives
- 8 —
When unifying
- 2 —
Keyword 'public' is not a valid start to a declaration
- singletons:
ffi_resource_new_handle is already defined, ffi_lru_new is already defined, Name Proven.SafeCron.minuteBounds is private, Multiple solutions found in search of, levelorder is not total, isTemplateSafe is not total, Expected 'where'
Concentration: Proven (20), Proven.FFI (13), then 2 each in SafeTOML, SafeHtml,
SafeHeader, SafeCookie, SafeContentType, SafeArgs.
⚠ These are authoring defects, not sweep damage
The parse-failure cluster looks at first glance like it could be substitution damage. It
is not. Sampling src/Proven/FFI/Buffer.idr:
ffi_buffer_write buf data = ...
data is a reserved keyword in Idris2. That file is clean vs HEAD — no sweep has
touched it. This appears to be the dominant sub-class of the parse failures, and it means
remediation is ordinary source fixing, not a revert.
Why this was invisible
The package build stopped at module 1 of 300 (non-terminating elaboration) and was
cancelled at the CI timeout, so no diagnostic was ever emitted for any of these files.
The whole set was behind a VOID gate.
Data
.claude/forensics/proven-idr-file-census-2026-08-27.txt — rc|elapsed|file|firstError, 379 rows
.claude/forensics/proven-idr-defect-attribution-2026-08-27.txt — OWN|IMPORT|NOLOC per failing file
Census taken against the working tree; 375/379 files identical to HEAD c83c7bf3.
Summary
A per-file
idris2 --find-ipkg --checkcensus of all 379.idrfiles undersrc/,with each failure attributed to own-defect vs import-inherited:
Of the 91 own-defect files, 47 are parse failures.
Dominant error classes among own defects:
Couldn't parse declarationCouldn't parse any alternativesWhen unifyingKeyword 'public' is not a valid start to a declarationffi_resource_new_handle is already defined,ffi_lru_new is already defined,Name Proven.SafeCron.minuteBounds is private,Multiple solutions found in search of,levelorder is not total,isTemplateSafe is not total,Expected 'where'Concentration:
Proven(20),Proven.FFI(13), then 2 each in SafeTOML, SafeHtml,SafeHeader, SafeCookie, SafeContentType, SafeArgs.
⚠ These are authoring defects, not sweep damage
The parse-failure cluster looks at first glance like it could be substitution damage. It
is not. Sampling
src/Proven/FFI/Buffer.idr:datais a reserved keyword in Idris2. That file is clean vs HEAD — no sweep hastouched it. This appears to be the dominant sub-class of the parse failures, and it means
remediation is ordinary source fixing, not a revert.
Why this was invisible
The package build stopped at module 1 of 300 (non-terminating elaboration) and was
cancelled at the CI timeout, so no diagnostic was ever emitted for any of these files.
The whole set was behind a VOID gate.
Data
.claude/forensics/proven-idr-file-census-2026-08-27.txt—rc|elapsed|file|firstError, 379 rows.claude/forensics/proven-idr-defect-attribution-2026-08-27.txt—OWN|IMPORT|NOLOCper failing fileCensus taken against the working tree; 375/379 files identical to HEAD
c83c7bf3.