Skip to content

History

Revisions

  • #668: SourceId collapse — annotate historical sketch, document identity-keyed config refs

    Test User committed Jun 7, 2026
    0ef2965
  • 664: RefFrameKind removed (required FrameUid is the taxonomy); FrameUidC/FrameUidIndexR/FrameEpochC + Bevy doc IO on Frame-Tree-ECS-Native; frame-doc feature edges on Dependency-Graph

    Test User committed Jun 7, 2026
    5511c19
  • Dependency-Graph: add astrodyn_frame_doc (issue #663 exchange schema; gateway optional via frame-doc feature)

    Test User committed Jun 7, 2026
    86d0eb0
  • 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>

    Test User committed Jun 5, 2026
    0a3e5c3
  • 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>

    Test User committed Jun 5, 2026
    9a53a83
  • 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>

    Test User committed Jun 5, 2026
    53b8ea5
  • 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>

    Test User committed Jun 5, 2026
    79e656a
  • 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>

    Test User committed Jun 5, 2026
    c727ddd
  • 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>

    Test User committed Jun 5, 2026
    698ac98
  • 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>

    Test User committed Jun 5, 2026
    2bdd4b9
  • 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>

    Test User committed Jun 5, 2026
    de4ed12
  • 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>

    Test User committed Jun 5, 2026
    c5d0a9e
  • Correct drifted code snippets on the Bevy-Adapter page Audited the moved snippets against current astrodyn_bevy source. Structural content (7 AstrodynSet variants, set ordering, the 21 system names, AstrodynPlugin, the C-suffix/planet-phantom convention) was accurate; the detailed Rust was early-design fiction that had drifted. Fixed: - Component wrappers now wrap the typed siblings actually in src/components/state.rs (TranslationalStateTyped<PlanetInertial<P>>, RotationalStateTyped<SelfRef>, …); dropped the bogus `(T, PhantomData<P>)` shape — the phantom rides inside the typed. - gravity_computation_system / integration_system: replaced fictional signatures that called astrodyn_gravity::compute_all_gravity / astrodyn_dynamics::integrate_step (which also violated the three-layer rule) with the real shape — generic <P: Planet>, *C components, delegating to the gateway astrodyn::run_gravity_stage / astrodyn::integrate_body. The integration skeleton is marked simplified and points to the source file. - Multi-stage integration: removed the non-existent IntegrationState resource / IntegrationMethod enum; documented the real mechanism (IntegratorTypeC component, IntegrationDtR resource, GaussJacksonStateC / LsodeStateC multistep state). - Spawn guidance: corrected the "no bundle struct" claim — PlanetBundle<P> / SunBundle are Bundles; bodies spawn via VehicleConfig::spawn_bevy. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    Test User committed May 30, 2026
    f1283fd
  • Split Bevy/ECS material out of Strategy into a Bevy-Adapter page Strategy is now engine-neutral end to end; all Bevy/ECS specifics live on a new Bevy-Adapter page documenting astrodyn_bevy as one host of the astrodyn pipeline. New page (Bevy-Adapter.md): "Why Bevy for the reference adapter", the JEOD->ECS mapping, Bevy component wrappers, the FixedUpdate/AstrodynSet schedule, and AstrodynPlugin composition — moved verbatim from Strategy with host-framing intro. Strategy.md (section numbers kept stable; ECS-titled sections repurposed): - Drop §1 "Why Bevy?" (moved). - §2 "ECS Architecture Mapping" -> "From JEOD's Architecture to the Pipeline": engine-neutral decomposition (managers->stage functions, hierarchies->focused types, pointer trees->arena trees, dispatch->enums, call order->PIPELINE_ORDER); ECS realization pointed to the adapter page. - §3.8 "Bevy Components" -> "Host storage" pointer. - §4 "System Pipeline" -> "Pipeline Stages": engine-neutral stage list + order, with Bevy/runner realizations linked out. - §5 "Plugin Architecture" -> "Workspace Structure and Layering": crate map and three-layer rule stay; plugin composition replaced with a host-wiring pointer. Fixed stale #portability-goal anchor -> #engine-independence. Home.md: add Bevy-Adapter to the nav. Integration-Groups.md: repoint the Strategy §4 link to the new §4 + the adapter's execution-schedule section. All cross-page anchors verified. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    Test User committed May 30, 2026
    f8657a8
  • Strip implementation-phase framing from the wiki Remove the phased-development narrative so the docs present astrodyn as a finished engine-agnostic library rather than an in-progress phased port: - Delete Strategy.md §8 "Implementation Phases" (~340 lines), renumber the remaining sections (9->8, 10->9) and the TOC; no external page linked the old anchors. - Drop forward-looking phase framing ("across phases", "bite in Phase 8+") and "phase history" link blurbs (Home, Architecture, Capability-Matrix). - Rewrite inline "Phase N" provenance breadcrumbs to plain wording across Type-System, Numerical-Differences, Audit-Findings, Audit-2026-05, Frame-Tree-ECS-Native, and JEOD-Capability-Matrix. Preserved non-roadmap uses: the `Phase::` Rust enum, Apollo's "12-phase mass tree", "ephemeris phase", and the self-contained perf-study/design work-stage labels (Phase A/B/C/D). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    Test User committed May 30, 2026
    8d21c71
  • Reframe Strategy/Architecture around engine independence Present astrodyn as an engine-agnostic physics library: the physics has zero sim-framework dependence, and Bevy ECS (astrodyn_bevy) and the arena runner (astrodyn_runner) are two interchangeable drivers among possible hosts. Name the JEOD↔Trick physics coupling explicitly as the mistake being avoided, and demote the prior "Bevy is the production target / chosen runtime / single source of truth" framing to "one driver layered on top of astrodyn". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    Test User committed May 30, 2026
    0c50d26
  • Add 6 pages migrated from CLAUDE.md Promotes the wiki stubs staged in PR #592 (`claude-md-lean` branch) onto the live wiki. Each page captures detail that previously lived in `CLAUDE.md` but doesn't need to be in an AI agent's context on every interaction: extract_* regen workflows, the full JEOD→ECS class crosswalk, the CI job matrix, etc. - Architecture — three-layer rule, runner-vs-bevy split, enforcement - CI — full job matrix, per-crate test commands - Common-Pitfalls — full catalog of subtle gotchas - Environment — JEOD_HOME / extract_* / NESC / kernels - JEOD-ECS-Mapping — pipeline → AstrodynSet + DynBody → components - JEOD-Invariant-Workflow — catalog process + negative-test convention `CLAUDE.md` links to each of these. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    Test User committed May 19, 2026
    72ec291
  • Migrate JEOD source/verification content from CLAUDE.md to wiki CLAUDE.md was trimming back to rules/conventions only; this PR receives the migrated content per the wiki-for-non-crate-docs convention (reaffirmed 2026-05-14). - New page: JEOD-Source-Data — directory tree of ../jeod, hot files, what numerical test vectors are extractable, the three parsability tiers of Modified_data Python files, and the per-crate extract_* binary catalog. Material formerly in CLAUDE.md "JEOD Source Navigation" and "JEOD Verification Data". - Tier3-Regeneration expanded with: the explicit `docker run` invocation (formerly in CLAUDE.md), the log_state_ASCII.csv column layout, and the Trick DRAscii silent-variable-drop pitfall callout. Removes the "see CLAUDE.md for the explicit invocation" cross- reference now that the page is self-contained. - Home.md: link to JEOD-Source-Data added under "Architecture and contributor docs"; Tier3-Regeneration description expanded to note it now includes the explicit Docker invocation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    Test User committed May 14, 2026
    858b1a4
  • Remove stale 'mirrors docs/AUDIT_2026-05.md' note The in-repo copy has been deleted (per the non-Rust-crate docs-in-wiki convention reaffirmed 2026-05-14); this page is now the sole copy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    Test User committed May 14, 2026
    bb22d31
  • Retire audit finding M-09; non-crate docs convention is wiki-first Annotated M-09 as closed wontfix per the project convention that non-Rust-crate docs (architecture notes, contributor primers, audit reports, design discussions) live in the wiki, not docs/. Convention reaffirmed in conversation 2026-05-14; #501 closed wontfix. M-10 (per-crate README stubs) remains valid — those are Rust-crate docs surfaced on crates.io and the convention does not apply. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    Test User committed May 14, 2026
    46821b6
  • Add Audit-2026-05 page (comprehensive findings audit) Mirrors docs/AUDIT_2026-05.md in the repo. Companion tracker: #487. Distinguishes from the existing Audit-Findings page (capability gaps derived from the JEOD coverage matrix) — this audit is a comprehensive review across architecture, type-system rigor, error handling, JEOD invariants, testing, performance, dependencies, and CI. 5 High + 12 Medium findings filed as sub-issues (#488–#503, #508) under label audit-2026-05. Includes a 10-item risk register, a 12-item strengths-worth-preserving inventory, and a 1.0-readiness roadmap. Linked from Home.md under "Pre-release audit" alongside the capability audit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    Test User committed May 14, 2026
    6a17a3d
  • Cross-link Earth-Moon investigation page to filed issues #464, #465, #466

    Test User committed May 11, 2026
    1967c9c
  • Add Earth–Moon Performance Investigation page First-cut perf report from the #447 toolkit (landed in PR #462). Captures Phase A baselines (perf-runner + criterion + pprof flamegraphs + tier3 wall-clock), Phase B per-phase drilldown, Phase C candidate inventory (C1..C8 with ROI estimates). Target: halve the tier3 earth_moon_clem runtime — 17 min → ≤8.5 min, 83 µs/step → ≤40 µs/step. Top-3 candidates: C5 (per-step Epoch cache), C1+C2 (flat-storage SH coefficients + Gottlieb helpers), C3 (hoist vector3_transform out of the kernel). Cumulative bit-identical estimate is 20-35% step-time reduction; reaching the 2× target needs either C8 (RK4 sub-stage reuse, bit-identity-risky) or an algorithmic change to the Gottlieb recursion.

    Test User committed May 11, 2026
    419750e
  • Re-anchor wiki to 7619f2f and prune resolved audit items Refresh the audit anchor from 0f9213e (May 8) to 7619f2f (May 10) and align numbers and PR references with the current tree. Audit-Findings: drop the strikethrough closed entries (B1.1, B1.2, B1.8, B1.9, B2.3) from the bucket-1 / bucket-2 sections; keep a brief closure summary at the top so the historical record is preserved without bloat. Bucket 1 is now 6 open items, bucket 2 is 3 open items. Strategy: invariant catalog stats (118 -> 287 rows, 10 -> 19 sections, 86 -> ~460 source tag sites with the current enforced/partial/structural/ deferred/n/a breakdown). Add the post-0f9213e workstreams to the Post-Phase-8 list: parity follow-ons (#414/#406/#415/#416), typed-gateway discontinuation (#397/#398/#410), gateway-only physics deps (#390/#404), include_bytes! data bundling (#144/#403), and mass-tree wildcard typing / typed body_mass (#396/#417, #408/#409). Type-System: bump last-updated date and extend the Follow-on PRs trail through #417, calling out #397 (untyped construction discontinuation), #398/#410 (round-trip property tests), #408/#409 (typed body_mass) and #396/#417 (KinematicNodeState.trans). JEOD-Capability-Matrix: anchor + invariant row count + tier3/parity function totals (~337 -> ~378; 215/122/30 -> 196/141/41); call out the reinstated dyncomp_run6 parity wrapper (#416) on RUN_6B. JEOD-Sim-Coverage / Home: anchor refresh.

    @claude claude committed May 10, 2026
    0163b26
  • Revert "Restore dev-dep edges in dependency graph mermaid" This reverts commit 29ee6496e5e80964d5d2ac613c23137413e8a204.

    Test User committed May 9, 2026
    c871296
  • Restore dev-dep edges in dependency graph mermaid The previous regeneration dropped the dashed dev-dep edges. They're the load-bearing channel by which physics crates' own Tier 2 / Tier 3 tests reach JEOD fixture loaders in astrodyn_verif_jeod, and they're the only place the back-edge invariant (verif crate as dev-dep on each physics crate) is visually documented. Solid = regular dep, dashed |dev| = [dev-dependencies] entry.

    @spencer702 spencer702 committed May 9, 2026
    29ee649
  • Regenerate dependency graph after verif gateway-only switch `astrodyn_verif_jeod` and `astrodyn_verif_parity` now depend on `astrodyn` and only `astrodyn` for physics — same gateway-only contract that already applied to `astrodyn_runner` and `astrodyn_bevy`. The "verification crates may reach around the gateway" exception is gone; the bypass-check CI lint now scans both verif crates. The diagram drops every dashed-arrow direct-physics edge from the verif crates and replaces them with a single `→ astrodyn` edge each. Dev-dep edges from physics crates back to `astrodyn_verif_jeod` (for its JEOD fixture parsers) remain — those support owner-crate unit / Tier 2 / Tier 3 tests that live in each crate's own `tests/`.

    @spencer702 spencer702 committed May 9, 2026
    c584dad
  • Regenerate dependency graph after astrodyn_runner / astrodyn_bevy gateway-only switch `astrodyn_runner` now depends on `astrodyn` and only `astrodyn`; the 7 direct physics deps and 2 dev-deps are gone. `astrodyn_bevy`'s 2 physics dev-deps are gone as well. Both consumers are now structurally gated by `scripts/check_no_bypass_deps.sh` in CI. Also corrects a stale `astrodyn_interactions ⇢ astrodyn_dynamics` entry (it has always been a regular dep, not dev) and modernises the regenerate snippet to match the listing above.

    @spencer702 spencer702 committed May 9, 2026
    20580a7
  • Refresh wiki for astrodyn rebrand and re-anchor against current HEAD Sweep of all 13 wiki pages after the workspace rename (`bevy_jeod` → `astrodyn` / `astrodyn_*`, `JeodPlugin` / `JeodSet` → `AstrodynPlugin` / `AstrodynSet`) and the 90+ follow-up PRs that landed since the original audit anchor (`587e2e7`, April 2026). **Mechanical** - Crate-name renames: `jeod_<x>` → `astrodyn_<x>` for every workspace member, plus `bevy_jeod` (root crate) → `astrodyn_bevy` (Bevy adapter) / `astrodyn` (gateway) per context. - URL renames: `simnaut/bevy_jeod` → `simnaut/astrodyn`. - Type renames: `JeodPlugin` / `JeodSet` → `AstrodynPlugin` / `AstrodynSet` (#392). - Test-path corrections: `crates/astrodyn_runner/tests/tier3_*.rs` → `crates/astrodyn_verif_jeod/tests/tier3_*.rs` after the #387 fixture redistribution; parity siblings under `crates/astrodyn_verif_parity/tests/`. **Re-anchored to `0f9213e` (May 8, 2026)** - `Home.md` headers updated; landing-page bullets refreshed; added pointers for Dependency-Graph, Frame-Tree-ECS-Native (now landed), and Variable-Server (design-only). - `Audit-Findings.md`: marked B1.1 (#198), B1.2 (#199), B1.8 (#205), B1.9 (#206), B2.3 (#210) closed inline; summary table now shows open / closed split (5 of 51 closed). - `JEOD-Capability-Matrix.md` + `JEOD-Sim-Coverage.md`: re-anchored; ~10 SIM rows promoted from "not covered" to "covered" or "partial" (SIM_ref_attach, SIM_removable_body_action, SIM_ground_contact, RUN_attach_to_ref_frame, SIM_lvlh_init); SIM_verif_attach_detach test list expanded; mission-benchmark paths corrected (BCH.01/03/05/06/07); coverage totals recomputed. - `Type-System.md`: example paths corrected; added `SelfPlanet` and the Vehicle/Planet phantom (Act 5) subsection from #332/#343/#344; `<SelfRef>` / `<SelfPlanet>` discipline + lint (TS.01 / #356) documented; §5.1 cheat sheet promotes wired diagnostics (#303/#306/#332/#343/#344/#353); §6 expands bypass-constructor ban (#388); Quat::new snippet fixed. - `Strategy.md`: rewrote three-layer description and dep-graph prose to put `astrodyn` (root gateway) → `astrodyn_bevy` adapter + parallel `astrodyn_runner` harness; rewrote §4 schedule against the 7-variant `AstrodynSet`; updated frame-tree component description; added "Post-Phase-8 ongoing work" subsection enumerating #387/#392/#362/#268/#263/#280/#360/#389/#395/#388/ #390/#399/#400/#401. - `Frame-Tree-ECS-Native.md`: status banner — migration is complete (#280, #263); PRs 1–5 marked LANDED in §13; appendix workstreams flagged with their landing PRs (#308 mass-tree, attach paths, #357/#358/#363 simplifications, #350 CoM offset). - `Variable-Server.md`: status banner — design-only, not implemented; preserved as the contract a future implementation should hold itself to. - `Tier3-Regeneration.md`: tier3 paths corrected; added `bevy_parity_*` superset note pointing at #389. - `Numerical-Differences.md`: tier3 paths corrected; closed-issue references reworded (#13/#27/#114). - `Integration-Groups.md`, `Dependency-Graph.md`, `Earth-Lighting-Validation.md`: targeted path/URL fixes; technical content already current. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    @spencer702 spencer702 committed May 9, 2026
    6ccd6d3
  • Add workspace dependency graph page

    @spencer702 spencer702 committed May 7, 2026
    7b64c2a