2.4 KiB
2.4 KiB
Function Map
The function map is the canonical ledger for reverse-engineering progress. It should be updated even when the understanding is partial, because partial structure is still useful if it is explicit about confidence.
The handbook index in docs/README.md should stay high-level. Per-pass function additions and
renames belong here and in the derived export artifacts, not in the README. High-level control-loop
and subsystem flow belongs in docs/control-loop-atlas.md, with this file staying function-centric.
Canonical Schema
The committed CSV header is:
address,size,name,subsystem,calling_convention,prototype_status,source_tool,confidence,notes,verified_against
Field meanings:
address: virtual address in the canonical 1.06 executablesize: best current size in bytes; leave blank if unknownname: current best function namesubsystem: coarse ownership bucket such asstartup,bootstrap,support,render,audio,ui,map,save,networkcalling_convention:cdecl,stdcall,thiscall,fastcall, orunknownprototype_status:unknown,inferred, orconfirmedsource_tool: primary tool or source behind the current rowconfidence: integer from1to5notes: short justification, ambiguity, or follow-upverified_against: hash, runtime trace, second tool, or other corroboration
Update Rules
- New rows must always include
address,name,subsystem,source_tool, andconfidence. - If a rename is speculative, state that directly in
notes. - When two tools disagree on function boundaries, preserve the ambiguity in
notesinstead of hiding it. - Prefer one row per concrete function, not per guessed feature.
Starter Subsystems
Use these buckets until the map needs finer structure:
startupbootstrapshellsupportuirenderaudioinputnetworkfilesystemresourcemapscenariosavesimulationunknown
Verification Sources
Examples for verified_against:
sha256:01b0... + objdumpghidra + rizinghidra + string xrefruntime trace under winedbg
Exit Criteria For The Milestone
The first function-mapping milestone is complete when the repo has:
- a stable starter map for the canonical binary
- named anchors for startup and a few obvious subsystem gateways
- enough notes and exports that a future session can continue without rediscovery