pons — after the pons asinorum (Euclid I.5, the "bridge of asses"), the historical test that separates real understanding from rote. A lightweight, multi-language static scanner that flags the small set of mistakes mathematicians and computing experts spot on sight but ordinary coders miss — dead work, self-contradiction, and missing escape hatches — and reports each finding with an honest label for how strong the evidence is.
Design companion to
panic-attack: panic-attack is
breadth (49 languages, security/panic weak points, line-level patterns
relational reasoning); pons is depth (a few languages, parse trees + real
dataflow + typestate, waste/contradiction smells). See
ADR-0004.
Planning complete; implementation not started. This repository currently contains the ratified v0.1.0 plan, written so that implementation agents can execute it without re-opening any design question.
Read in this order:
-
The kickoff document — mission, the two species, the decidability wall, the four evidence tiers, the starter catalogue.
-
ADR-0001 — substrate decision (tree-sitter native + Rust). Decided; do not re-spike.
-
ADR-0002 — T1 language (Python) and the complete CFG + dataflow design.
-
ADR-0003 — T2 protocol spec format (TOML) and typestate semantics.
-
ADR-0004 — positioning relative to panic-attack.
-
PLAN.adoc — the milestone-by-milestone implementation plan with acceptance gates and appendices (dataflow equations, query guidance, JSON schema, SARIF mapping, dependency pins).
Never dress a heuristic up as a proof. Every finding carries an evidence
class (HEURISTIC / DATAFLOW / PROTOCOL / SPECULATIVE), and
SPECULATIVE findings are visually demoted in every output format. Every
rule ships with a negative corpus that falsifies it; a rule that fires on its
own negative corpus is demoted or removed, enforced in CI.