UOR-R4 Charter

Adopted 19 October 2026 by the owner (Casey), at checkpoint 1 of the repository renormalization; replaces the stacked directions formerly in AGENTS.md and D0–D41.

Old text moves byte-identical to archive/. Bracketed ids are sources.

1. Mission

Build the UOR-R4 Geometric Language Model: a fast language model that is not a transformer. It predicts text with geometry (prime addresses, zeta phases, E8/H4/icosian rotations, SpiralCore/FBS routing) and exact memory, on an ordinary laptop or in a browser. Conversation with durable memory first, then coding and reasoning, on one model [AGENTS:mode, D19, AGENTS:both-lines]. Pre-alpha; no capability is established.

The owner's rule: "USE GEOMETRY. THAT IS THE END OF IT. NEVER USE ANYTHING ELSE." [OWNER:0]

The owner's goal behind every ban (18 Oct, verbatim): "my goal with all of these bans is to ban expensive operations and to always optimize for what is best for the project goal... fast local ai that can train fast and run fast and reach almost frontier level capability ... we have so many mechanisms, at this point we just need to stitch the right ones together and optimize all of the things that aren't, which will likely be found in the details" [OWNER:26, D37]. When unclear, choose what trains and serves fastest locally on the geometric path, and write it down [D37:why-bans]. The lead metric is tokens per second (decode, and context separately); a small quality gap is acceptable [OWNER:5].

2. Products

  1. Model: the geometric model, exported as one D11 integer/table artifact; built in crates/uor-r4-discrete, served by crates/uor-r4-integer [AGENTS:ownership].
  2. Web client: the Studio at /studio on the mdBook site, running the integer model locally in the browser as WASM [renorm decision 7, D36].
  3. Desktop client: a Tauri app sharing the web UI, the native integer model with D19 memory, offline, on M1-class laptops; spec only [renorm decision 8].
  4. Legacy crates are repaired, not archived: uor-r4-graph-compiler, uor-r4-graph-certify, uor-r4-api, uor-r4-proof-model and the root crate are repaired to build on the current core; repairing restores the build only, and their mechanisms (r4g1-graph, native-geometric) stay PARKED. [D36, owner 19 Oct]

3. Technical constraints

  1. Geometry only. Every mechanism, training signal and fix comes from the project's geometry; keep R4/S3, Hopf and paired-H4/icosian roles distinct (E8 = H4 ⊕ φH4, fixed). Flock reads use local rules (~7 nearest neighbours), not a dense teacher. Why: the bet is that geometry replaces expensive dense operations. [OWNER:0, OWNER:6, D20, D32:hamming-one-factor, AGENTS:typed-geometry, AGENTS:e8-shorthand]
  2. No squashing functions. No softmax, log-softmax, cross-entropy (implicit softmax), softplus, sigmoid, tanh, GELU or normalized exponential, anywhere: runtime, losses, gradients, sampling, teachers, surrogates, comparators, including renamed or table forms. Why: they are expensive and hide a dense global normalization. [D23, D25, OWNER:1, HR:no-squash]
  3. No matmul. No dense matrix multiplication or GEMM anywhere: training, evaluation, instruments, serving and tooling, including wrappers and hand loops. A geometric feed-forward block (Hamilton gate and projections) is allowed; a dense MLP is not. Why: matmul is the cost the project exists to remove. [D25:no-matmul-anywhere, D30, OWNER:2, OWNER:14, HR:no-matmul]
  4. Presence counts. Banned code may not exist in any compiled or loaded module or vendor path; NVRTC is banned; CUDA is prebuilt by nvcc. Ahead-of-time nvcc kernel builds run on the GPU pod (authorized by D30); the laptop runs CPU-only builds and static checks. The ratchets uor-harness ratchet d23|d25 only go down. Why: code that is present eventually runs. [D29, R5, OWNER:no-nvrtc, HR:banned-module]
  5. Research compute is GPU-only. Training, evaluation, qualification, and model and parity reference execution run on the GPU; a host fallback is a defect to fix with a kernel. Spend GPU only where a run can change a decision. Why: host runs gave wrong timing and wrong evidence, and the GPU is where the speed is. [D24, OWNER:4, OWNER:20, HR:gpu-only]
  6. Serving is integer, on the user's device. The exported artifact has no float, transcendental, multiplier or integer-divide instruction (D11 R1–R5); the frozen runtime does no steady-state allocation, and a dense model disguised as lookup tables is excluded. Serving it on client devices (CPU, browser WASM, Apple silicon), including measuring tokens/s and energy, is the product and is allowed; D24 does not apply, and D36's browser-as-CPU clause is replaced. Panel scoring, qualification and milestone evaluation of an exported artifact remain GPU research compute (§3.5); only product serving, and measuring its tokens/s and energy, run on client devices. Why: the product is fast local AI on ordinary hardware. [D11, D36, D39:float-horizon, HR:serving-integer, AGENTS:frozen-tla; owner 19 Oct]
  7. Float only offline, with an export gap. Float forward, gradients and optimizers are legal offline, in a separately scanned module, never in the discrete crate. Every float candidate reports its export gap on the same evaluator; a gap above the two-seed noise band disqualifies it. The D32 discrete path stays active; its qualification uses exact arithmetic. Why: float trains faster; only the integer artifact ships. [D37, D39:export-gap, R13, HR:float-offline, KIMI:d37]
  8. Zeta exception. Float is allowed on the complex plane for zeta-zero parts, prime log-phases and the C4→R4/C8→R8 phase maps; everything downstream is discrete. Why: zeta phases are complex numbers by nature, and the bans target expensive operations, not geometry. [D32:zeta-exception]
  9. Efficiency is measured. Report sparse access, bytes/token, bounded candidates, multiplier-free kernels and exact memory together, naming D5-a (residency) or D5-b (per-token sparsity, the end state). Why: unmeasured efficiency is not efficiency. [I1-I5, D5, D38]
  10. No neural comparisons (comparators, controls, teachers, graders) until the owner says the model works end to end; panels are graded deterministically. Sole exception: D41's one-time distill-d1 donor pass, on its binding conditions: the student consumes hard targets only (no logits, probabilities or distributions), the donor never executes in student preparation, training, evaluation, serving, grading or any panel, a generation receipt is bound at generation, and a typed D40 owner release is required at dispatch. Why: a neural comparator would hide a dense model behind the geometry, against geometry only. [D28, OWNER:memory-no-transformer, D41]
  11. Rust first, building on the uor-foundation crates; Python only where Rust cannot; no ad-hoc scripts. Why: one fast, checked language keeps training and serving on the same geometric path. [D27, OWNER:20, HR:rust-default]
  12. Exact identity stays separate from geometric address; one shared vector writer serves input, carry and output; every artifact binds its data, seed, config, parameters and format. Why: one representation avoids translation costs, and exact identity cannot be recovered from a geometric address. [POLICY:shared-vectors, AGENTS:shared-vector, AGENTS:artifact-determinism]
  13. Hygiene: Result errors at library boundaries; no unwrap/expect/panic on recoverable paths; keep forbid(unsafe_code) in portable runtime and format crates; no committed binaries, corpora or secrets; never read or print API keys. Why: hygiene keeps the repository small and fast to clone, and keeps keys out of it. [AGENTS:errors, HR:no-artifacts, HR:no-credentials, AGENTS:no-keys]

4. Evidence

  1. A negative closes a configuration, never a mechanism. Mechanism statuses are ACTIVE (on the model path), READY (built and tested, not yet trained in) and PARKED (failed or broke a rule; reopen conditions listed). There is no terminal status. Stopping a mechanism needs the owner. [D22, D12, D2, POLICY:gates-promote, renorm decision 5]
  2. Instrument first. Classify a failing check as instrument or mechanism before calling anything; an instrument defect is a fix, never a negative. No target is set from a vacuous instrument; no single number rules out a line. [D31, R12, R14, D39:gcap]
  3. Power. Decisive runs use ≥ 2 seeds or ≥ 200 fresh rows, with bars no narrower than measured noise, the mechanism trained in, and a fresh transfer number with every development gain. [D22:power, D22:transfer, D17]
  4. Controls and progress. Compare against lawful non-neural baselines (count tables). After three results on a line that do not move its headline, write a pivot note: stop, or one decisive run. [D21, D6, D9, POLICY:progress-control]
  5. Pre-register only where it decides spend. A one-page sheet (bar, noise, controls, seeds, cost, what each outcome decides) with a non-author FIT review is required only before GPU training or evaluation, and before any run a milestone claim rests on. A fresh-context subagent counts as non-author. Builds, finite kernel tests and host checks need no sheet. Archived float sheets return only as new sheets with a fresh FIT. [R4, D37:archived-sheets, AGENTS:mech-briefs; owner 19 Oct]
  6. Claims. "Measured X on Y against Z"; label proof, measurement, hypothesis; NOT_RUN is not PASS; tests are not trained capability. [HR:claims, POLICY:evidence, AGENTS:invariant-formal, PROTO:status-vocab]
  7. Preserve. Nothing is deleted: negatives, unique source and other labs' work go to the archive byte-identical. [R6, HR:archive]
  8. M1 closing bar. Bar (d) is replaced, for M1: integer top-1 through the D11 export, on each of two seeds, beats both the unigram table (1,226/14,287) and the T2 successor table (6,300/14,287) on the same DEV panel, with tokens/s reported. BPB returns as a later milestone bar once a lawful likelihood exists. Bars (a), (b), (c) and (e) are unchanged. [D39, owner 19 Oct]

5. Workflow

  1. The owner decides this charter, §3, holds, spending caps, milestone bars and exceptions like D41. Training, M2 and Stage B stay HELD until released; a FIT releases nothing [AGENTS:holds-oct12, D37]. One typed owner release per pre-registered sheet covers all its arms, seeds and pre-registered stop rules. Casey types every release personally, with UOR_LAB unset; labs stage the commands [D40, R15; owner 19 Oct]. A pending owner question means wait; Casey's words beat written acceptance text; record directions verbatim the same day [OWNER:9, OWNER:10, OWNER:11].
  2. Coordination. GitHub main is the single source of truth [PROTO:github-authority]. The owner plus one PM seat: Kimi, with a cover lab named by the owner when Kimi is offline. The PM sequences work and keeps NOW.md (with the roster) and operating notes that may not contradict this charter. The D14 council is retired [OWNER:21, OWNER:28, OWNER:32, R7, R9, R11, D14; owner 19 Oct]. Subagents never make critical decisions: a change to a bar, status, constraint or spend is a decision card to the PM or owner; subagents review, test adversarially and research [OWNER:26].
  3. Labs self-direct from NOW.md: pick work, post a one-line intent note, claim the branch, continue unless redirected [D39:self-direction, R1]. Set UOR_LAB; the harness is the shared view with automatic presence and no manual heartbeat cadence; claims record the charter version, with no adopt_policy hold. Discretionary harness features freeze until a model beats both count tables (§4.8); mandated D27 ports continue [AGENTS:uor-lab, R3, PROTO:cadence, PROTO:versioned-authority; owner 19 Oct]. Outsiders skip the harness; a maintainer runs gates [OUT:no-harness].
  4. Compute: pods only through scripts/pod/uor-pod; Vast.ai default, Runpod emergency backup; at most 4 pods and $8/h across all labs; lease what you use; never touch another session's GPU or files; never cancel a healthy run for a self-set budget; save results off the pod. Choosing Runpod by hand needs --owner-approved (D26). [D26, D26:caps, AGENTS:gpu-pods, AGENTS:budgets, PROTO:expired-lease, OWNER:17]
  5. Delivery: short branch in your own worktree → PR → exact-head review (self-review allowed, fresh context) → checks at that head, posted → merge queue, which serializes itself with no PM call per entry → verify on fresh main → delete branch and worktree → uor-hygiene --apply. Merge forward, never force. Queued is not merged; partial work says "References #N". [AGENTS:delivery, R2, R8, R10, R-queue, AGENTS:merge-forward, HR:delivery]
  6. Records: one notebook page per research line (docs/research/notebook/<line>.md), one row per result: date, what ran, number, bar, verdict, artifact link. A dated evidence folder is kept only when a run seals artifacts. docs/integration/NOW.md plus the notebooks replace current-state.md as the running record. STATUS and ROADMAP change only with state, never as receipt logs. Results go to iCloud/HF with checksums; keep 30–70 GB free. [AGENTS:cadence-oct9, C:cadence, AGENTS:storage; owner 19 Oct]
  7. Lessons: pitfalls live in uor-harness mistakes, not here. [AGENTS:pitfalls]
  8. Approved sequences (D34, D39 item 4, D41 item 3) live in NOW.md and bind until the owner changes them.

6. Retired

History only (see the DECISIONS.md index): superseded D0, D0-b, D1, D3, D7, D8, D10, D13, D15, D16, D25 (bans live on in §3), D32 item 1, D33, D35 and the dated AGENTS, session-goal, POLICY, KIMI and CODEX blocks; finished one-offs; the expired D18 window. Retired by the owner on 19 Oct: the D14 council and R9's fixed roster (Q5); the 5-, 20- and 30-minute cadence and PM-called queue entries (Q7); per-PR dated records (Q4); the adopt_policy hold.

Changing this charter

Only the owner changes this charter. Changes are recorded as dated entries in docs/rules/changes.md.