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_0032_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-transformation scope |
| 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 |
| 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_0032 |
| 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. - 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.