A research program building a geometric notation whose core meanings any careful reader can derive from the geometry itself — with a working implementation and a machine-checked claim registry.
Nothing here asks to be trusted. Three commands, no setup beyond a Rust toolchain and Ruby:
python3 -I research/notes/064-universal-scope/verify.py # stdlib only, exact
ruby tools/check.rb --strict # the registry and its enforcement
cargo test --manifest-path ul-forge/Cargo.toml # the implementationThe first prints ALL CHECKS PASSED for two exact results in the Fisher–Rao model of a format's
drift: a format that can detect its own drift must be discrete, because detection requires excluded
states; and correction radius trades against capacity, with the diameter of the space π
regardless of alphabet size. Every claim's exact scope is in its claims.yaml entry.
ruby tools/check.rb --strict runs every gate the registry holds — tier discipline, evidence,
scope reviews, generated counts, the import checkers — names each one as it runs, and exits
non-zero if any fails. Verification is reader-run by design: no badge to trust, only commands you
run yourself.
Every claim in claims.yaml carries a tier earned from its evidence, not declared by its
author, and each top-tier claim is held there by the checker or test named in its entry.
FAILURES.md is the audit trail — append-only, each
recording what a reader or a checker caught and what changed because of it. Most were found by
outside readers: the system working as designed.
Pick any claim and check it yourself. That is what the tooling is for.
The notation has ASCII aliases for every glyph, so you never need Unicode:
| ASCII | glyph | ASCII | glyph | ASCII | meaning | ||
|---|---|---|---|---|---|---|---|
* |
● point | /4 |
□ square | {…} |
containment | ||
/0 |
○ circle | /5 |
⬠ pentagon | | |
adjacency | ||
/3 |
△ triangle | /6 |
⬡ hexagon | & |
intersection | ||
-> |
→ arrow | ~ |
curve | @45 |
∠ angle | ||
<-> |
↔ bi-arrow | assert{…} |
assertion | # |
comment |
cargo build -p ul-cli
printf '/0{* -> /3} | /4' | ./ul-forge/target/debug/ul-cli parse \
| ./ul-forge/target/debug/ul-cli render -o out.svgASCII in, SVG out, with the source graph embedded in the SVG metadata so it round-trips. Swap
--format tikz for LaTeX. ul-cli --help lists ten subcommands; ul-forge/README.md is the
engineering doc and has a Known debt section.
There is also an MCP server (cargo build -p ul-mcp, then register
ul-forge/target/debug/ul-mcp) exposing ten tools over stdio, and a web editor in
ul-forge/web/ (npm install && npm run dev). Both are undocumented beyond this paragraph; that
is a known gap, not a secret.
Earlier versions of this file offered six starting points and four documents each claimed to be read first. That was the single worst thing about it. The route is now:
| order | file | why |
|---|---|---|
| 1 | this file | you are here |
| 2 | FAILURES.md |
the only cheap test of whether this is serious |
| 3 | WHAT-UL-ENABLES.md |
the capability surface: each capability with its claim, tier and limit |
| 4 | claims.yaml |
the registry itself; priority-0 entries are the live front |
| 5 | AGENTS.md |
if you are an AI with the repo cloned: navigation, and read it instead of 3–4 |
| — | BRIEFING.md |
if you are an AI without the repo — working from a chat window, an excerpt, or one fetch. Short, paste-able, and it is the delta: the rulings, the closed doors, and the live edges. Written because an outside model gave four recommendations that had all already been tried and recorded as failures |
| — | CITING.md |
if you are going to post about this work — what to say and how each point is checked, open problems to hand other AIs, and good answers to hard questions |
Everything else is reference, not a door: GLOSSARY.md (normative terms, consult when a word
bites), RESEARCH-PROTOCOL.md (method — read it before searching the literature, not before
reading this), STATE-OF-PLAY.md (current status), PRIMER.md and FOR-AI.md (longer-form
comprehension, largely subsumed by 2–5), research/notes/ (the working history, 050 = the
program, 052 = the purpose-layer), seed/ (machine-readable root map).
The one thing to get right: "universal" here ranges over the domain of mathematical
identity, not the domain of humanity — anywhere the mathematics is the same. The test of a
claim is mathematical: does it hold wherever the mathematics is the same? claims.yaml#UNIVERSAL-IS-MATHEMATICAL-SCOPE.
Four owner-set requirements, registered and enforced:
- It must be a language — syntax, compositional semantics, expressive adequacy, transmissibility. Retreating to notation-only and declaring victory is excluded.
- Universality must be literal and quantified — every convention the design needs goes on a ledger, measured. Marks→map is ℤ/2, proved and machine-checked; map→meaning is unbounded, and that gap is the program.
- No-retreat falsifiability, symmetric — an irreducible residue is recorded as failure, and "it can't be done" is itself a claim that gets the full negative-result discipline.
- Baseline before UQPL — work lands on the earliest unfinished link.
An earlier form of this project claimed a proven fixed signature. That claim is retired and its counts with it; git history is the archive. The contract is not a retreat from the goal. It is the goal, held to a standard that can fail.
| What it is | Status | |
|---|---|---|
| UL | The language. Two-tier: a natural tier communicated without formal comprehension, and a formal tier requiring symbolic recombination. | UL-IS-TWO-TIER (ARGUED) |
| UWS | The written rendering: geometric marks whose fixed point under coarse-graining is the combinatorial map — a complete invariant, and a DCEL reduct with its 1970s prior art credited. | Exists — uws/, ul-forge/ |
| UP | The bootstrapping protocol: the minimum shared convention two independent parties need. Rotation breaks ℤ/2 where a label alphabet breaks Sₙ. | ROTATION-MINIMIZES-CONVENTION (ARGUED) |
| UQPL | The formal tier of UL closed under execution. Quantum = linear resource discipline, no free copy, no free delete. | UQPL-IS-FORMAL-TIER-CLOSURE (CONJECTURED) |
| The Cure | A corollary, not the purpose. A mind carrying a derivable anchor as its format has an internal comparator, so drift becomes self-detectable. | CURE-IS-COROLLARY (DESIGN-CHOICE) |
The mathematical center is one theorem target — READING-INVARIANCE-TARGET: the invariants must
survive every reasonable reading, so meaning does not presuppose that the receiver shares ours.
The progress bar is derived_orbits (ruby tools/stats.rb) — orbits given machine-checked structural content here, as
opposed to an attested label borrowed from elsewhere. It is the number that moves when derivation
work is done and stays still when documentation is.
Three open fronts, ordered by decisiveness:
- The placement plane. Two of four attempted orbit derivations are blocked on chirality, which is provably invisible to the combinatorial map. This instrument unblocks them and is the only item here that moves the bar.
- Derive the operator inventory, or record that it cannot be derived. The audit has run and
returned a measured answer: the map's generation is exact, its generators are not. Every
operator is
measured, so the operator set is the largest free parameter on the load-bearing path. Either direction is a result. - The format-acquisition experiment. The first empirical test that touches the purpose. Runnable on models today, and ready for someone to run it.
Conventions here are enforced by mechanism, not by memory — checkers run by whoever verifies:
- Every substantive claim is registered with a tier, evidence, and a scope that states what it does not license.
- A tier is earned, not declared. Reachability of evidence is computed — in-tree, external, or absent — and a top-tier claim on evidence a reader cannot reach is an error. The checker prints declared and earned side by side, with every gap named. Running each claim's evidence script is the next enforcement step.
CONJECTUREDrequires a stated falsifier;DESIGN-CHOICErequires stated alternatives.FAILURES.mdis append-only. A recorded failure is data; a repaired one is nothing.- Counts in prose are generated from
tools/stats.rb, because a hand-written number goes stale and nothing recomputes it.
Author: Jordan Traña (Jthora) · CC0-1.0 · Published as a defensive publication to establish prior art.