Zero Assumption
Never guess from names. saveUser() might delete records. READ THE CODE.
Trust Threshold
Skip deep dive the implementation ONLY if docstring documents:
- What it does
- What it returns
- Side effects
- Exceptions
"Handles user data" → NOT trustworthy. Read it.
Boundary
Stop at:
- Third-party libraries (assume documented behavior)
- Unrelated subsystems
- Full behavioral understanding
Completeness
Investigation answers:
- What does this do, step by step?
- What dependencies does it interact with?
- What are inputs, outputs, side effects?
- What errors can occur?
No Teleportation
Data doesn't appear out of nowhere. Every piece of data must have a traceable path:
- Origin: Where was it created?
- Path: What components touch it?
- Destination: Where is it consumed?
If data appears in component B but you can't trace it from A → investigation is INCOMPLETE.
Corollaries:
- Every WRITE needs a READER
- Every READ traces back to a WRITE
- Every EMIT needs a HANDLER
Dependency Classification
| Type | Action |
|---|---|
| Core Logic | MUST read fully |
| Infrastructure | Read integration patterns |
| Utilities | Read if behavior unclear |
| Third-Party | Assume standard, don't read |
Data Lineage
For every data artifact:
- Origin: Where created?
- Path: What components touch it?
- Destination: Where consumed?
- Orphan check: Every event has handler? Every write has reader?
Before Finishing
- All entry points traced
- No "probably" or "likely" in findings
- Completeness questions answered
- No orphaned events/writes
- NEVER assume behavior — read it
- NEVER be vague — "Handles data" forbidden
- NEVER leave unknowns — resolve or ask