02
reverse engineering
also taking a living system apart
Recover a spec from a finished thing: behaviour, data, edges. Not copying pixels — extracting a testable contract.
What is reverse engineering?
Reverse engineering is recovering what the software actually does when the docs are missing or untrustworthy. The output is examples, a state machine, a data shape — not a review.
Why does reverse engineering matter when vibe coding?
Everyone says “make it like X.” Fed only that sentence, the model does a skin. Reverse engineering turns “like X” into clauses: what the button does on an empty list, where a failed payment returns, whether changing an id in the URL leaks a row.
How do you do reverse engineering?
Pick a living product. List 8–12 user actions as input → visible result. Screenshot if you can. Lock those actions with characterization tests or a checklist. Only then let the model rebuild, inside that fence — not from a homepage screenshot and vibes.
How do you ask a model for reverse engineering?
Reverse-engineer (product). Do not copy the look. List user actions as input → result. Output a behaviour list and the data objects. Wait for my OK before writing code.
What goes wrong with reverse engineering?
Treating reverse engineering as “summarise the repo.” A summary is not a contract. Without failing examples, the next turn drifts.