Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PoCX Doctor

CI Release License: MIT

A graphical sample-based health checker for PoCX plot files. Spot-checks a .pocx plot in seconds — orders of magnitude faster than a full verifier sweep — and shows the result as a colour-coded grid so you can see at a glance whether a plot is healthy, partially written, or corrupted.

Single file Batch
Single file view Batch view

What it does

A full plot verifier hashes every nonce on disk. That's correct but slow: verifying a multi-terabyte plot can take hours. pocx_doctor does something different — it picks a representative grid of sample positions across the plot (nonces × scoops), hashes only those, and checks whether each sample matches what the plot file claims. If samples agree with the canonical hash, the plot is almost certainly fine; if a region disagrees, you see exactly which part is bad.

Concretely:

  • Statistical sampling: a 64×48 grid (3 072 cells) over the nonce/scoop plane. Each cell gets 1–4 probes depending on thoroughness.
  • Pinned canary probes: the first and last nonces are always probed so early-write and late-write corruption is caught reliably.
  • Tail-magic detection: reads the resume marker to learn how far plotting actually got, so paused / aborted plots are reported correctly instead of flagged as broken.
  • SIMD-accelerated hashing: auto-detects SSE2 / AVX / AVX2 / AVX512 at startup.
  • Single or batch mode: one file, or every .pocx in a folder.
  • HTML + JSON reports: shareable per-plot summary including the bad-probe list and address metadata.

Quick start

Download a release

Pre-built binaries for Windows, macOS (Intel + Apple Silicon) and Linux (x86_64 + ARM64) are on the Releases page.

  • Windows: unzip and double-click pocx_doctor.exe.
  • Linux / macOS: untar and run ./pocx_doctor.

Using it

  1. Open a plot — drag a .pocx file onto the window, or click Open plot.
  2. Pick a thoroughness:
    • Quick — 1 probe per cell (~3k probes). Seconds. Recommended first pass.
    • Normal — 2 probes per cell. Catches more localized defects.
    • Deep — 4 probes per cell. Use when Quick flagged something and you want stronger confidence.
  3. Hit Verify. The grid fills in as probes complete:
    • 🟩 green — probe matched
    • 🟥 red — probe failed (corruption, bad sector, or unwritten tail)
    • ⬜ grey — not probed yet
  4. Read the result. The summary shows pass / fail counts, the bad-probe list, and a health verdict.
  5. Export a report (optional) — Save report writes a JSON file and a standalone HTML viewer next to the plot.

Batch mode

Switch to Batch in the header and pick a folder — pocx_doctor queues every .pocx inside, runs them sequentially, and shows per-file status (pending / running / done / failed). Use this for nightly health sweeps over a whole rig.

Building from source

Prerequisites

  • Rust stable (1.75+)
  • Linux only — GUI dev libraries:
    sudo apt-get install -y libgl1-mesa-dev libxcb-render0-dev \
        libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev \
        libssl-dev libfontconfig1-dev libgtk-3-dev

Build & run

git clone https://github.com/PoC-Consortium/pocx_doctor.git
cd pocx_doctor
cargo run --release

Cutting a release

Releases are tag-driven. From a clean main branch:

# bump version in Cargo.toml first, commit, then:
git tag v0.9.0
git push origin v0.9.0

The Release workflow builds binaries for Windows / macOS / Linux (x86_64 + ARM64), uploads .zip / .tar.gz archives with SHA-256 sums, and creates a draft GitHub release. Review the artifacts, edit the notes, then publish manually.

Development

cargo fmt --all
cargo clippy --all-targets -- -D warnings
cargo test --release

CI runs the same checks on every push and PR (see .github/workflows/ci.yml).

Troubleshooting

  • Windows: no console output on crash. The release binary uses the Windows subsystem (no console window). Panics are written to %TEMP%\pocx_doctor_panic.log and worker progress to %TEMP%\pocx_doctor_worker.log.
  • Direct I/O is off by default. Sample reads are 64-byte scoops which aren't sector-aligned, so FILE_FLAG_NO_BUFFERING would fail every read on Windows. The page-cache impact for scattered reads is negligible.
  • A plot shows a fully red bottom block. That's the unwritten tail of a paused/aborted plot — not corruption. Resume plotting to fill it in.

License

Released under the MIT License. See LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages