We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Renumber requirements contiguously (draft-review renumber) Old -> new mapping: 101->101 relative state between any two frames 103->102 deterministic composition 105->103 state-preserving restructure 201->201 one pinned convention set 301->301 earliest-possible misuse detection; never silent 303->302 unresolved references detectable, never silently resolved 304->303 structural and semantic integrity by construction 401->401 stable frame identity 403->402 recoverable relationships 501->501 semantically sufficient, extensible classification 601->601 lossless round-trip 603->602 consumer independence 605->603 boundary-crossing state metadata: epoch and origin 701->701 multi-source composition is sound 703->702 runtime-definable frames 704->703 lossless, guarantee-preserving static<->runtime correspondence 906->801 common-case simplicity (group 9xx -> 8xx; groups now 1-8) Cross-references updated; the ex-RFS-904 label in design guidance dropped (this commit message is the historical record). IDs freeze on acceptance per Specification conventions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Consolidate frame spec to 17 requirements; commit history is the changelog Removed (owned elsewhere): RFS-202 (JEOD_INV RF.04 owns canonical-rotation consistency; the dual-canonicity nuance — matrix-canonical RNP/IAU writers vs quaternion-canonical typed path — moved to Common-Pitfalls), RFS-907 (CLAUDE.md Fail-Loudly diagnostic pattern owns message quality). Reclassified as design guidance: RFS-904 (hot-path cost) moved to the design-freedoms section per review — a constraint on where checks live, not a fundamental need. Merged (no normative content lost): 102->101 full kinematics is part of the relative-state need 104->103 one deterministic-composition row (single parent, unique path, bit-identical equivalent decompositions; #562 rationale kept) 302->301 checked reinterpretation is the operational definition of 301's runtime half 305->304 classification-contradicts-state is one more reject condition 402->401 cross-boundary agreement is what 'stable identity' means 502->501 classification extensibility as a closing clause 604->601 replay is lossless round-trip of an ordered sequence 203->605 epoch + origin are sibling boundary-crossing state metadata 404,702->701 one 'multi-source composition is sound' row (no aliasing, no impersonation, explicit cross-source declaration) 705->704 extension soundness is the other face of correspondence Also removed the dated 'Current gaps' snapshot section (duplicates #659) and the in-page change log (the wiki commit history is the changelog — Specification.md conventions updated accordingly). Remaining 17: 101 103 105 / 201 / 301 303 304 / 401 403 / 501 / 601 603 605 / 701 703 704 / 906. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remove RFS-901/902: instantiations of project-level architecture rules Review feedback: engine independence and storage-agnostic algebra are implications of the higher-level architecture (CLAUDE.md non-negotiables, check_no_bypass_deps.sh, bevy_parity), not frame-system needs. Added to 'Not restated here' as candidates for a future astrodyn-level architecture spec; the frame-level determinism need they gestured at stays pinned by RFS-104. Group 9xx retitled Performance and usability. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
RFS-605: simplify to integrated / derived / injected state Review feedback: classify the state, not the frame. The triad replaces the environmental/dynamic frame vocabulary (whose carve-outs existed precisely because origin is per-write, not per-frame) and the definitions section now defines the three origins directly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remove RFS-602: mechanism, not need Self-describing exchange is a design device; the needs it serves are covered by RFS-201 (pinned conventions), RFS-301 (never silent), and RFS-603 (consumer independence). Preserved as recommended design guidance under design freedoms. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
RFS-303: state needs, drop the two-tier mechanism Review feedback: the two-tier severity split was design leakage. Rewritten to the two irreducible needs — resolution misses observable as data (companion to RFS-401), and no silent resolution to a wrong frame or default. Call-site severity policy is left to design. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Spec is a draft under review: remove rules owned elsewhere, drop ceremony Remove RFS-903 (f64) and RFS-905 (no-unsafe) — enforced by workspace lints/compiler — and replace the 8xx withdrawal stub with a compact 'Not restated here' section covering both rule families. Mark the spec Draft (conventions bind on acceptance), collapse the change log to the initial draft entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Withdraw RFS-801..803: motivated entirely by JEOD-fidelity obligation The JEOD parity / staged-semantics / invariant-traceability requirements are captured and enforced elsewhere (CLAUDE.md non-negotiables, Tier 3 CI, JEOD_INV catalog + invariant_coverage.rs). Group 8xx collapses to a withdrawal stub (IDs reserved per Specification conventions); RFS-802's eager-vs-lazy-evaluation conclusion is preserved non-normatively under design freedoms. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add Specification section + reference frame system requirements spec New Specification parent page (requirements-level docs, design-free) and Spec-Reference-Frame-Requirements: 31 shall-requirements (RFS-101..907) with rationale, verification approach, and trace links, distilled from issue #659 and the June 2026 design exploration. Home.md gains a Specifications index section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>