|
AWK Minifier
Conservative AWK source minification
|
Accepted
AI-assisted implementation makes it inexpensive to generate code and tests quickly. That speed can invert the desired reasoning order: implementation choices become accidental requirements, and tests then preserve those choices without anyone first articulating the intended contract.
The source project family increasingly uses a different sequence: document the interface and reasoning first, write tests that express the intended behavior second, and implement only after those two artifacts agree about the contract.
This is not a prohibition on exploration. Small experiments may be useful to learn whether an approach is feasible. Exploratory code should not silently become architecture merely because it already exists.
For consequential new behavior or architecture, development SHOULD follow this sequence:
For small bug fixes whose intended contract is already documented, steps may be compressed, but documentation and tests should still be corrected when the bug reveals that either was incomplete or wrong.
Exploratory spikes MAY precede documentation when they are needed to discover feasibility. Such code should be treated as disposable evidence until the decision is recorded.
Implementation-first development was rejected as the default because it makes current code disproportionately influential over future reasoning. Test-first without prior contract documentation was rejected as incomplete because tests can precisely encode the wrong abstraction. Requiring a new ADR for every code change was rejected as bureaucratic and counterproductive.
Some changes begin more slowly because intent is written before code. Later review and maintenance gain a clearer chain of reasoning, and AI-assisted iteration has stronger boundaries within which to operate.
This formalizes a development sequence used in recent work across the Bash project family and complements the ADR/documentation model described in Wesley Dean's writing on AI-assisted development.