write-testing
Implement tests
Tests fail their job in three quiet ways: the test that passes even when the code under test is
commented out (pure ceremony), the test that reaches into internals and shatters on a
behavior-preserving refactor (the test broke, not the code), and the test that bundles six
unrelated assertions so a failure says "something broke" without saying what. All three are
net-negative — they cost maintenance and catch nothing. This guide adds the testing discipline on
top of the base implement-task rules. These are conventions the review packet inspects — nothing
enforces them at edit time.
This guide is for tests as the deliverable in their own right. Tests written as part of a feature
or fix ride inside those guides; a test that already fails non-deterministically belongs to
fix-flaky-test.
Before you start, open references/task-template.md and copy it
into your task file — it is the session frame for this work; fill it in as you go (don't reconstruct
the structure from memory). It scaffolds the coverage gap, the test-case table keyed by behavior, the
placement table, the flip evidence, and the self-review. The task packet itself uses the kit's task
template.