strategy: phase 2 decisions (two repos, c++ shim, accrual order)

This commit is contained in:
alex 2026-09-07 17:10:21 -04:00
parent 2d298b1e98
commit d76f0fd491

View file

@ -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.