CERBERUS

> Three heads. One machine. Zero pretending.

A DOS-native tool that detects, diagnoses, and benchmarks vintage PC hardware — and then cross-checks the three heads against each other.

Where things stand: All five subsystems (detect, diagnose, benchmark, consistency engine, thermal stability tracker) are code-complete and have passed a 7-round adversarial quality gate. Awaiting real-hardware validation on a 486 / 386 / 8088 matrix before the v0.2.0 tag ships. 98 host-side unit tests green. Binary is 74,948 bytes.

CERBERUS is named after the three-headed dog of Greek myth that guarded the gates of the underworld. Each head is one of the three analysis domains:

The three heads share a common body of timing, display, and reporting infrastructure. Their results feed a consistency engine that flags disagreements — this is the project’s reason to exist.

The consistency engine

Most DOS diagnostic tools tell you what your hardware says it is. CERBERUS tells you when what your hardware says it is disagrees with how it behaves.

Seven rules in force today:

Every rule documents what it catches AND what it structurally cannot. A rule that only catches asymmetric failures says so explicitly. Opacity is the anti-pattern.

Output

CERBERUS writes a machine-parseable INI file with every detected property, diagnostic verdict, benchmark result, and consistency-rule outcome. Each row carries a confidence indicator — HIGH when the probe is authoritative, MEDIUM when inferred, LOW when emulated or guessed. Running inside DOSBox-X automatically caps all confidence at MEDIUM because emulated hardware isn’t ground truth.

Two signatures land in every INI:

Target hardware

Floor 8088 + 256KB + MDA
Common 286 / 386 + CGA/EGA
Ceiling 486 + VGA + VLB/PCI
RAM 256KB min
OS MS-DOS 3.3+
License MIT

8088 support is a hard requirement, not an aspiration. Anything that breaks it is out.

Technical

Platform MS-DOS (real mode)
Model Medium (far code, near data)
EXE 74,948 bytes
DGROUP 45.6 / 64 KB
Toolchain OpenWatcom 2.0 + NASM
Host tests 98 assertions

121 seed entries across five identification databases (CPU 34, FPU 14, video 28, audio 24, BIOS 21). Every DB is a human-editable CSV with a Python build script that generates the C lookup tables. If CERBERUS can’t identify your chip, the raw probe data gets captured to CERBERUS.UNK and the summary tells you how to submit a GitHub issue that grows the database.

Hardware-identity hash vs counterfeit detection

The dual-signature scheme is designed so that when two runs of the same machine produce different run_signature values under the same signature, CERBERUS has evidence that the hardware’s behavior changed even though its claimed identity didn’t. That’s the fingerprint of a remarked CPU, a thermal fault, a BIOS setting change, or some other shift in actual behavior without a corresponding change in reported identity.

During the 7-round adversarial quality gate, a systemic bug was caught across twelve files: stack-local sprintf buffers were passed to the result-table builder, which stores the pointer without copying. After each function returned, the hash was being computed over dangling stack bytes. Hardware signatures varied run-to-run on the same machine — exactly the opposite of the design contract. Fix was a cross-codebase sweep promoting every site to file-scope static storage with documented lifetime contracts. The bug had been invisible to CI because host tests only checked verdict, never display. Test suite now includes coverage for the display-string-readback case too.

Download

There is no public release yet. The v0.2.0 tag ships after Task 1.10 — real-hardware validation on 486 / 386 / 8088 class machines — completes. Watch the releases page or the build log.

Links