nigig-org/crates/apps/nigig-traffic/docs/ADR/003-no-ecs-no-simd.md
andodeki ac8f8aa002
Some checks failed
repo hygiene / hygiene (push) Has been cancelled
PDF engine / engine (push) Has been cancelled
PDF engine / makepad-integration (push) Has been cancelled
PDF engine / fuzz (push) Has been cancelled
nigig-build (CAD) / supply-chain (push) Has been cancelled
nigig-build (CAD) / cad-module (push) Has been cancelled
nigig-build (CAD) / full-crate-check (push) Has been cancelled
nigig-build (CAD) / cad-engine-coverage (push) Has been cancelled
nigig-build (CAD) / doc-workspace-coverage (push) Has been cancelled
nigig-build (CAD) / cad-widget-coverage (push) Has been cancelled
traffic / gates (push) Has been cancelled
traffic / nigig-traffic (push) Has been cancelled
traffic / supply-chain (push) Has been cancelled
doc-engine / engine (push) Has been cancelled
doc-engine / coverage (push) Has been cancelled
doc-engine / consumer (push) Has been cancelled
email / gates (push) Has been cancelled
email / email-domain (push) Has been cancelled
email / nigig-email (push) Has been cancelled
email / supply-chain (push) Has been cancelled
nigig-map / test (push) Has been cancelled
sms / gates (push) Has been cancelled
sms / robius-sms (push) Has been cancelled
sms / android (push) Has been cancelled
sms / nigig-sms (push) Has been cancelled
sms / supply-chain (push) Has been cancelled
spreadsheet / engine-coverage (push) Has been cancelled
spreadsheet / ui-controller-coverage (push) Has been cancelled
p2p-intel / engine (push) Has been cancelled
p2p-intel / notifications (push) Has been cancelled
p2p-intel / coverage (push) Has been cancelled
p2p-intel / makepad-app (push) Has been cancelled
p2p-intel / exchange-tab (push) Has been cancelled
Payment domain, storage, platform and UI / isolated-payment-tests (push) Has been cancelled
Payment domain, storage, platform and UI / payment-ui-tests (push) Has been cancelled
chore: sync full working tree to gitdab
Whole-tree sync: cad-core/cad-ui split sources, nigig-build
construction_frame migration, pdf port progress, mpesa/pay/uikit/doc
updates, workspace members/profiles/lock, CI workflows and reviews.
See individual file history for details.
2026-09-12 07:15:24 +03:00

1 KiB
Raw Permalink Blame History

ADR 003: No ECS, no SoA, no hand-written SIMD at this scale

Status: accepted (Phases 68, grounded in docs/PERF_BASELINE.md).

Context

Measured tick cost is ~1525µs median (debug) over ~40 entities against a 16,600µs frame budget. The costs are latency-shaped (lookups, one small allocation, branches over dozens of items), never compute-shaped.

Decision

  • No ECS/archetype storage, no SoA migration, no SIMD intrinsics.
  • Optimizations stay at the lookup/allocation/branch level (index caches, squared compares, buffer discipline).
  • Reopen thresholds (any one reopens the question, with a fresh profile): simultaneous movers > 16 (spatial index first, SoA with it), tick p50

    1,000µs sustained on target hardware, or entity counts > 1,000.

Consequences

  • LaneBox/BayBox stay AoS; nearest_hazard_* stays a linear scan; each carries a comment naming the threshold that would change it.
  • Contributors proposing intrinsics or an ECS must attach a profile showing the current shape is insufficient.