Expand description
The corpus harness: the conversion invariants, run over a directory of case files.
Three commands, each writing what the next one reads:
corpus dir (read-only, outside the repo)
│ powerio corpus ingest <dir> --work <scratch>
▼
buckets: case-000, case-001, … (grouped by electrical fingerprint,
│ never by filename)
▼ powerio corpus compare --work <scratch>
per bucket: round trip per sibling, cross-write per sibling pair,
│ sibling agreement between the two readers
▼ powerio corpus report --work <scratch> -o findings.jsonl
findings.jsonl + summary.md (codes, ordinals, deltas)The corpus directory is opened read-only and never written. The work
directory is disposable and holds raw values, so it stays on the machine
that owns the corpus. The report is the boundary: anonymize states what
may cross it, and the reporter audits its own output against every string
the corpus taught the harness before writing a byte.
See docs/src/corpus-harness.md for the design and the session protocol
that consumes the findings.
Modules§
- anonymize
- The anonymization boundary.
- fingerprint
- Electrical fingerprints, which is how the harness finds siblings.
- walk
- Random conversion walks: chain a case through a cycle of formats and hold the chain to properties a single leg cannot express.
Structs§
- Bucket
- Cases that fingerprint alike.
- Comparison
- Everything one leg produced, still in raw values. Stays in the work
directory;
reportis what sanitizes it. - Comparisons
- Finding
- Ingest
- Leg
- Member
- One readable case in the corpus, as ingest found it.
- Unreadable
- A file the harness could not turn into a network.
Enums§
- Case
- One parsed case, in whichever model claimed it.
- Domain
- Which model a case parsed into. Kept out of the sibling comparison entirely: a balanced network and a multiconductor one answer different questions and share no invariant.
- Via
- How two networks in one bucket were brought together.