Frame RFCs

Index of Frame RFCs. The RFC process is documented in STYLE.md. New RFCs should follow that style guide.

RFC numbering is monotonically increasing. Skipped numbers correspond to drafts that were never written, RFC slots reserved for an idea that was then absorbed into another RFC, or pre-public exploratory work that wasn’t promoted to a numbered RFC. Skipped numbers are not re-used.

# Title Status Cross-refs
0001–0005 (unassigned) numbering reserved; no documents
0006 Self Interface Call — @@:self.iface() Implemented (with revisions) foundational
0007 (unassigned) numbering reserved; no document
0008 Extended pop$ Transition Syntax Implemented foundational
0009 Static States — Compile-Time-Known Identity Draft (parking lot)  
0010 Interpolation-Aware String Scanning via Frame Automata Draft  
0011 System Base Classes Implemented  
0012 Persist Stress Testing Amendment shipped (Phases A–B + D); Phase C deferred superseded in part by 0016.1 for the @@[save]/@@[load] form
0013 Annotation Syntax — @@[...] Wave 1 + Wave 2 shipped; Wave 3 open foundational for 0014, 0015, 0016
0014 @@[main] — Module-Level Primary System Wave 1 shipped  
0015 Factory-Only System Construction Shipped in 4.1.0 partially superseded by 0017 (init mechanism); see 0016.1 for save/load form
0016 Selective Domain Persist Draft — deferred; not shipped partially superseded by 0016.1 (the @@[no_persist] form shipped; @@[persist_fields] still deferred)
0016.1 Amendment — @@[no_persist] codegen Shipped (2026-05-15) amends 0012; companion to deferred 0016
0017 Init Decouple — bare ctor + factory split Accepted; shipped companion to 0015, 0018
0018 Re-entrant interface dispatch from lifecycle handlers Resolved (crash); superseded in part by 0019 construction-context push fix survives; lifecycle-semantics passages quote pre-0019
0019 Uniform $> / <$ dispatch (cascade removed) Accepted (2026-05-12); shipped supersedes in part 0018; breaking change in 4.2.0
0020 Runtime Reference Architecture Authoritative (normative); aligned with 0019 companion to 0015, 0017, 0018, 0019, 0021
0021 Runtime Performance Optimizations Draft (parking lot) companion to 0020
0022 Cross-file @@import directive Superseded by 0024 historical
0022.1 @@import semantics on Java/C#/Go Superseded by 0024 historical
0023 (unassigned) numbering reserved; no document
0024 Remove @@import — host-language imports via Oceans Model Accepted; shipped in 4.2.0 supersedes 0022, 0022.1; breaking change; analysis half amended by 0040 (emission removal stands)
0025 Quality remediation — structured errors + typed compartment payload Accepted; shipped (Rust target) in 4.2.0 companion to 0026, 0027
0025.1 Typed lifecycle args — close the stringify gap in the typed-payload contract Accepted (2026-05-21); shipped in 4.2.1 amends 0025; resolves FRAMEC_BUGS #34
0026 Oceans Model as calculus — pre-backend normalization, preservation theorem, formal grammar Draft (Exploration) companion to 0025, 0027; no execution commitment
0027 In-tree snapshot tests per backend (insta) Accepted; shipped in 4.2.0 companion to 0025, 0026
0028 In-process framec API Draft (Forward-looking) replaces roadmap #171
0029 Fuzz infrastructure status + deferred-work catalog Draft (Status report + forward-looking) replaces roadmap #172; resolved by 0031 for CI integration
0030 Fuzz infra catch-up plan — multi-RFC corpus migration Accepted (execution committed 2026-05-18) execution companion to 0029
0031 Post-release process — RC validation, CI gates, drift detection Accepted (Process) resolves CI questions in 0029; supersedes ad-hoc release process
0032 Remove @@codegen { ... } — auto-inference is the path Accepted; shipped in 4.2.0 extends 0013; same trajectory as 0024; breaking change
0033 Idiomatic Rust output — borrowed parameters, lint-clean preamble, expression-form state-var initializers Draft builds on 0019, 0025
0034 In-process compile checks for every backend’s snapshot fixtures Draft builds on 0027, 0033
0035 Dogfooding inventory — existing FSMs, migration candidates, and single-state test corpus Draft builds on 0027, 0033, 0034
0036 No-allocation dispatch for no_std / interrupt / hot-path use Draft builds on 0020, 0021, 0025; lifts + prioritizes 0021 item 1
0037 Reserved identifier namespace — the __ prefix (validator E115) Accepted builds on 0025 / 0025.1; resolves the #40 residual edge
0038 Deferred dispatch — @@[cast] interface methods, addressing, bring-your-own executor Draft builds on 0020, 0025; companion to 0036, 0026
0039 Parser as composed Frame state machines Accepted builds on 0035
0040 Re-introduce @@import as analysis-only cross-file resolution Draft amends 0024 (analysis half only); builds on 0012, 0015
0041 Web persistence — storage-bound save/load for browser targets (@@[web_persist]) Draft builds on 0012, 0015, 0016

Other documents in this directory

  • STYLE.md — RFC style guide. New RFCs should follow this format.
  • frc-future.md — informal scratch of ideas that haven’t been numbered yet.

Status taxonomy

  • Draft — proposed; not implemented; design open for revision.
  • Accepted — design approved; implementation may or may not be in progress.
  • Shipped — implementation landed in a released framec version. CHANGELOG entry exists.
  • Implemented — older RFCs that predate the Accepted/Shipped distinction; treat as shipped.
  • Authoritative — the RFC is the normative reference for some aspect of the system (e.g., RFC-0020 for the runtime kernel).
  • Resolved — bug-class RFC where the immediate fix shipped.
  • Superseded by N — the RFC is preserved for history; N contains the current contract.
  • Draft (Exploration) — research-grade; no execution commitment.
  • Draft (Forward-looking) — design captured; pending a prioritization decision.
  • Status report — captures current state of a subsystem without committing to changes.

Cross-reference invariants

When one RFC supersedes another, the relationship is recorded bidirectionally:

  • The superseded RFC’s status line names the superseding RFC.
  • The superseding RFC’s header lists what it supersedes.

When checking the index, both directions should agree. The [0022] / [0022.1] / [0024] cluster and the [0018] / [0019] cluster are the current cases of this pattern.