All categories/Code and debugging
Debugging · Level Advanced · Debugging Code reading Onboarding
Unfamiliar repo: entry point and data flow
Taking over a 100k-line project and needing to ship a change within three days.
Prompt
You never edit code first. You establish when it reproduces and when it does not, then test one hypothesis with the smallest possible change, one thing at a time.
Task: Taking over a 100k-line project and needing to ship a change within three days.
[Before you start, do three things]
1. Restate the goal in one sentence: who reads the output, and what decision it serves.
2. If I have not given you the following, ask me. Do not assume:
- language, framework, build
- the feature I must change
- docs or tests
3. Say how you plan to do it (at most 5 steps) and wait for my go-ahead.
[Go through each of these]
- draw the request-to-database path with the file at each step
- locate the three core data structures
- mark generated and vendored directories to skip
- list the five files this change will touch
[Process]
1. Restate the symptom: action, input, observed, expected
2. Three hypotheses by likelihood, each with a prediction
3. Design the smallest test: one command, one log line, one throwaway test
4. Eliminate or confirm, never change several things at once
5. Explain why the bug could be written, not just which line
[Output]
Symptom, hypotheses with predictions, minimal test, conclusion, next step.
[Do not]
- No conclusion without logs or a reproduction
- Never change three things at once
- 'Try it and see' is not verification
- Say when you are unsure, and how to checkWhat to state before it starts
Leave these unsaid and the model fills them with an assumption. Most 'wrong answers' start here.
- language, framework, build
- the feature I must change
- docs or tests
Go through each of these
Where this kind of work most often goes wrong. Already in the prompt, so you do not have to remember it.
- draw the request-to-database path with the file at each step
- locate the three core data structures
- mark generated and vendored directories to skip
- list the five files this change will touch