ecs: std/ecs with one Store per group type, and std/transform (ECS slice 1) #89
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Umbrella for ECS slice 1 of ECS.md section 13 plus
std/transform(section 11). It needs nothing from the compiler (no seed impact in any step);examples/ecs-probe-2builds the form. The design record stays the specification. Too large for one PR (a package, a scheduler with a native gate, and a second package), so it is split into the steps below; this issue closes when the last one has landed.Goal
std/ecs(data layer and schedule with a sequential runner) andstd/transform(decomposed transforms and their propagation over the hierarchy), each green on its own, with a native program that steps a world and prints the same bytes in the VM and natively.Steps (dependency order; a step's PR says
Refs #89, notCloses #89)std/ecsdata layer:Entity,Entities,Column,Store,Parent,depthOrder, the fourqueryarities,Events,ComponentKeyas a hand-written string; unit tests and the conformance programecs-data. Ready.std/ecsschedule:System<World>with declared reads/writes,Stage(Input,Fixed,Update,Late, user stages),Schedule<World>with the sequential runner, the diagnostic for two systems of one stage that write the same key, the fixed-step accumulator overDuration(std/time); the gate of this slice:tests/conformance/ecs-schedule.trbsteps a world through a schedule for several frames, VM and native byte for byte. Issue filed when it starts; waits on 1 merged.std/transform(depends onstd/linearandstd/ecs):Transform2/Transform3as decomposed transformations (translation, rotation asAngle/Quaternion, scale) with composition, inverse,interpolated(toward:by:)andtoMatrix3/toMatrix4;GlobalTransform2/GlobalTransform3as their own components (ECS.md section 15 q7); the propagation system overdepthOrder, generic over the stores it reads and writes. Over the scalar the waystd/linearis (Floatdefault,Fixedworks). Issue filed when it starts; waits on 1 merged, independent of 2.Slices 2 to 4 of the design record (#90) wait on this issue; slices 5 to 9 are #91 and #92.
Decisions (refinement)
std/ecsknows nothing of positions orstd/linear(it depends onstd/core,std/collections, andstd/timefrom step 2);std/transformis its own package and owns the arithmetic whilestd/ecsowns the order.Worldinstd/ecs(section 15 q3); the conformance programs declare their own, as the probe does.Acceptance criteria (of the whole)
Entity,Column,Store,Events,System/Stage/Schedule,Parent, the fourqueryarities (steps 1 and 2)ecs-datain step 1,ecs-schedulein step 2, both tier B)std/transform(step 3)Dependencies
None known. Verified against
main(bc504c24) on 2026-10-24: ECS.md section 12 gaps 1, 3, 4, 5 and 11 are closed, which is all slice 1 uses.Moved from the planning lists of the docs; the design record stays the specification.
[loop:torbscript] intake: in scope (author orion, label loop), source ECS.md slice 1, not a duplicate, no collision with a design record. Needs nothing from the compiler per the issue (no seed impact), but is large; refine splits it. A native byte-for-byte gate against the interpreter runs in forge CI. next: refine, waiting (ready buffer full: #4, #163, #164, #223 are ready) until 2026-10-10T04:00:00Z
[loop:torbscript] claim refine by session:loop-torbscript-20261024 until 2026-10-24T02:15:21Z
std/ecsdata layer: entities, columns, stores, queries, hierarchy, events (step 1 of #89) #453std/ecsdata layer: entities, columns, stores, queries, hierarchy, events (step 1 of #89) #453[loop:torbscript] refine: too large for one PR (a package, a scheduler with a native gate, a second package), so #89 is now the umbrella with a three-step checklist and its body rewritten (criteria kept, grouped by step). Step 1 filed as #453 (
std/ecsdata layer,ready); steps 2 (schedule and theecs-schedulenative gate) and 3 (std/transform) get their issues when they start, per the contract. #89 stays withoutready. No owner question: every product choice is decided in ECS.md section 15. No seed impact. Worker usage: one refine worker, sonnet, about 0.4M tokens. next: waiting (steps in #453, then 2 and 3 in order)