Code can show an Agent what is currently implemented, but it may not explain why a particular approach was chosen or why a feature was deferred. Recording those reasons in idea, PRD, spec, design, decision, and plan documents from the start, and linking the documents together, gives the Agent access to the original reasoning during later reviews, debugging, or feature work. This reduces the need to infer intent from the code’s structure.
For example, an Agent taking over the login module three weeks later can identify the authentication library from the code, but may not learn why enterprise SSO was initially deferred. Preserving that reason in the documents makes it less likely to mistake a temporary constraint for a lasting product principle. Using one name for the same concept across documents and code also reduces missed information caused by different names when searching the chain.
Maintaining consistency requires distinguishing current requirements from historical decisions. If the project later decides to support enterprise SSO, a new decision document can record why the choice changed and identify the earlier decision it replaces. The old document keeps its original reasoning, is marked as archived or superseded, and links to the new decision. This preserves the history of the change while making the current decision identifiable.
This approach adds ongoing work to check code against documentation. When requirements and implementation change, the relevant descriptions, decision statuses, and replacement links need maintenance. Without that work, old documents can mislead the next Agent. As the main effort shifts to verifying whether outputs meet requirements, documents can provide acceptance criteria, but those criteria also need to be checked for continued validity.