scaffold RE campaign: board, backlog, findings template, verify tree

This commit is contained in:
alex 2026-09-07 14:40:44 -04:00
parent a80cbbc6de
commit 9ad30bffce
13 changed files with 103 additions and 1 deletions

View file

@ -25,3 +25,21 @@ system-maintainer POV in **trikilli** → `services/re-lab.md`. This repo is eve
Game binaries come from the owner's own GOG/Steam copy. RE is for personal
interoperability, bug-fixing, and preservation. Binaries themselves are **not** committed
here (see `.gitignore`) — they live on the lab's Samba share `/srv/re-lab/samples`.
## Campaign (how this repo is run)
A 4-agent crew (defined in `~/.claude/agents/re-*.md`) runs the exploration:
**re-quartermaster** (backlog + board) → **re-analyst** (maps via ReVa) →
**re-verifier** (proves vs real data; old-vs-new differential once reimpl starts) →
**re-scribe** (files the note, links it, commits).
- `campaign/board.md` — live status board (start here).
- `campaign/backlog.md` — prioritized target queue.
- `campaign/open-questions.md` — unresolved threads.
- `findings/_template.md` — the record format every finding follows.
- `findings/{objects,control-flow,subsystems}/` — the growing engine map.
- `verify/{parsers,traces,harness,results}/` — validation: struct parsers now, golden-trace
replay + shim compare-mode for reimplementation.
- `ghidra/` — exported scripts + datatype archives.
Approach & north star: `findings/00-strategy.md`. Binary facts: `findings/01-fingerprint.md`.

19
campaign/backlog.md Normal file
View file

@ -0,0 +1,19 @@
# Backlog (prioritized)
Object model + control flow are mapped concurrently. Priority favors targets that unblock the
most other work. Groomed by **re-quartermaster**.
## Now
1. **RTTI class inventory** — pull the full class/vftable list from ReVa; this seeds the real
object-model target names (currently placeholders on the board).
2. **empire/player object** — the root of the game state; cross-ref the save-editor structs.
3. **entry → main loop** — establish the control-flow spine in parallel with the object model.
## Next
4. star system / fleet / ship / tech-tree objects (fan-out once class names are known).
5. D3D9 device init → present loop (renderer anchor).
6. save load/write path (ties object model to on-disk format; feeds verify/ parsers).
## Later
7. battle-load path (primary bug) — needs the object model + main loop mapped first.
8. .gob/DDS/model asset parsers (interop tools).

17
campaign/board.md Normal file
View file

@ -0,0 +1,17 @@
# Campaign board
Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
`verified` requires re-verifier evidence. Maintained by **re-quartermaster**.
| Target | Type | Status | Conf | Coverage | Updated | Notes |
|---|---|---|---|---|---|---|
| _RTTI class inventory_ | meta | backlog | — | — | 2026-09-07 | pull full class/vftable list from ReVa; seeds object-model rows |
| entry point @0x925794 | control-flow | backlog | — | 0% | 2026-09-07 | WinMain → init → main loop |
| main loop / tick dispatch | control-flow | backlog | — | 0% | 2026-09-07 | how subsystems are pumped each frame/turn |
| D3D9 device init | subsystem | backlog | — | 0% | 2026-09-07 | Direct3DCreate9 → CreateDevice; renderer anchor |
| empire/player object | object | backlog | — | 0% | 2026-09-07 | cross-ref save-editor structs |
| star system object | object | backlog | — | 0% | 2026-09-07 | cross-ref save-editor structs |
| fleet / ship object | object | backlog | — | 0% | 2026-09-07 | cross-ref save-editor structs |
| tech tree object | object | backlog | — | 0% | 2026-09-07 | cross-ref save-editor structs |
| battle-load path | subsystem | backlog | — | 0% | 2026-09-07 | primary bug (many-core slowdown); LAA already on |
| .gob format | subsystem | mapped | high | 100% | 2026-09-07 | renamed uncompressed ZIP (community-known); parser target for verify/ |

View file

@ -0,0 +1,12 @@
# Open questions
Each links to the finding that raised it. Promoted to backlog or closed by **re-quartermaster**.
- **Compiler archive mismatch** — imports say MSVCR100/MSVCP100 (VS2010), but Ghidra applied
`windows_vs12_32` datatypes (closest available). Confirm the exact toolchain from the PE Rich
header; decide which datatype archive best fits. (from [[01-fingerprint]])
- **Battle-load root cause** — inferred as single-threaded engine + core-count-sensitive code;
must be confirmed by a `ForceSingleCore=0` vs `=1` diff once the main loop is mapped.
(from [[00-strategy]])
- **Save-editor struct coverage** — community editors cover players/tech/systems; fleet/combat
state coverage may be partial. Treat as strong hints, verify each field against real saves.

30
findings/_template.md Normal file
View file

@ -0,0 +1,30 @@
# <Target name> <!-- class | function | subsystem -->
- **Type:** class | function | subsystem
- **Address / RVA:** 0x........ (ImageBase 0x00400000)
- **RTTI / vftable:** <demangled name, or n/a>
- **Status:** backlog | in-progress | mapped | verified | blocked
- **Confidence:** low | med | high
- **Owner / date:** <agent> · YYYY-MM-DD
## Purpose
<what it is / does, one tight paragraph>
## Structure <!-- fields for a class, signature for a function -->
```c
// offsets/sizes/types a reimplementer could use directly
```
## Decompilation notes
<the key insight, not a raw dump; call out non-obvious logic>
## Cross-refs
- Callers: <fn@rva ...>
- Callees: <fn@rva ...>
- Related: [[other-finding]]
## Verification
<mode + evidence: parser/harness path, verify/results/ entry, verdict. Filled by re-verifier.>
## Open questions
- <linked to campaign/open-questions.md>

View file

@ -0,0 +1 @@
# placeholder — populated during the campaign

View file

@ -0,0 +1 @@
# placeholder — populated during the campaign

View file

@ -0,0 +1 @@
# placeholder — populated during the campaign

View file

@ -1 +0,0 @@
# traces/ — placeholder, populate as work lands

1
verify/harness/.keep.md Normal file
View file

@ -0,0 +1 @@
# placeholder — populated during the campaign

1
verify/parsers/.keep.md Normal file
View file

@ -0,0 +1 @@
# placeholder — populated during the campaign

1
verify/results/.keep.md Normal file
View file

@ -0,0 +1 @@
# placeholder — populated during the campaign

1
verify/traces/.keep.md Normal file
View file

@ -0,0 +1 @@
# placeholder — populated during the campaign