This file is a routing index, not a guidance document. All design rules
live in spec/. Use the tables below to figure out which spec to read for
the task you're working on, then go read that spec. If a rule isn't in a
spec, it's not a rule — propose a spec change first.
- spec/README.md — index of all active specs and their
status (
ACCEPTED,REFERENCE,DRAFT). - spec/SPEC_0000_SPEC_GUIDELINES.md — how specs themselves work; what the statuses mean; how to propose a new spec.
- CONTRIBUTING.md — local setup and
cargo xtaskCLI usage. - spec/SPEC_0033_DEVELOPMENT_PROCESS.md — operational workflow, triage proof requirements, upstream-first fix policy, and MSL-backed validation expectations.
| If you are touching... | Read these specs |
|---|---|
| Compiler pipeline / any IR / any phase | SPEC_0007 — IR stage contracts, structural-lowering scope; row catalog in SPEC_0040 |
| Valid-by-construction IR aggregates and proofs | SPEC_0036 — construction rules; row catalog in SPEC_0043 |
| Proof harnesses, trusted-base checkers, reference semantics | SPEC_0037: verification architecture, checker discipline, and the proof ladder; witness precedent in SPEC_0039 |
| Range-preserving array/tensor/stencil IR | SPEC_0032 — compact domains, scalar views, Map/AffineStencil ownership |
| Crate dependencies, foundation types, re-exports, single-source helpers | SPEC_0029 — boundary rules; ownership catalog in SPEC_0041 |
| eFMI/GALEC export targets | SPEC_0034 — GAL-NNN rules; language traps and decisions in SPEC_0042 |
| Modelica semantics (any MLS-affecting change) | SPEC_0022 (use its section index) |
Name lookup, scopes, DefId |
SPEC_0001, SPEC_0002 |
| Diagnostics, spans, error codes, tracing | SPEC_0008 |
Tool config (rumoca-tool-*) |
SPEC_0018 |
| Function length, nesting, file size, deterministic collections, code-size policy | SPEC_0021 |
| Development workflow, bug triage, root-cause proof, upstream-first fixes | SPEC_0033; trace-evidence rows in SPEC_0050 |
| Opening a PR (branch naming, workflow, metrics, verification commands, MSL gates, done criteria) | SPEC_0025 |
- Active specs (
ACCEPTED/REFERENCE) are mandatory. Archived specs are historical context only. - A
REFERENCEannex (SPEC_0040–SPEC_0044,SPEC_0047,SPEC_0049, orSPEC_0050) holds the lookup catalog for its parent spec. Its rows are normative by reference from the parent section that links them; read the parent first, then the catalog row it cites. - If you cannot find the spec for what you're about to change, stop and ask before coding — the rule either exists somewhere you haven't looked or it needs to be written.
- Do not duplicate spec content in
AGENTS.md, code comments, or other pointer documents. One source of truth per rule.