diff --git a/findings/00-strategy.md b/findings/00-strategy.md index 624657c..ec01265 100644 --- a/findings/00-strategy.md +++ b/findings/00-strategy.md @@ -81,3 +81,17 @@ battle-load path · allocator. Breadth first — these anchor the wider map. - Reimplementation is a long arc; the value gate is the *understanding* (goal 1), which stands on its own. _Strategy set 2026-09-07. Direction: broad understanding → functional reimplementation (not byte-matching)._ + +## Phase 2 — decided 2026-09-07 +- **Two repos.** This repo = evidence + planning (private, binary-derived). **`alex/sots-engine`** = + the from-scratch engine source, **public-capable from day one**: clean-room (own code only; no game + data, decompiles, saves), MIT, C++17/CMake, assets external via `$SOTS_DATA_DIR`. Tracking for both + stays here. Binary facts cross over only via `ghidra/addresses.json` → `tools/gen_addresses.py` → + `sots-engine/include/generated/sots_addresses.h`. +- **Straight to the C++ shim** (no Python prototype): a proxy `binkw32.dll` (MinGW i686 on CT111, + MinHook) with per-hook `off|trace|compare|replace` modes; compare runs original + ours on a + snapshot and diffs; deterministic saves are the strongest equivalence oracle. The shim is the + engine's first frontend (`src/shim/`); a standalone `src/app/` comes when enough engine exists. +- **Slow accrual:** scaffold only what each milestone needs. Order: M0 bootstrap → M1 flat-KV config + loader → M2 id manifests → M3 Mars brace-block parser → M4 gobio VFS → serializers/RNG → turn pipeline. +- **Battle-load bug is parked** (not on the critical path); resume recipe in the backlog.