--- name: test-discipline description: Design assertions that prove the actual contract and fail on realistic regressions domain: quality confidence: high source: current regression tests and retained quality incident lessons --- ## Context Use this skill whenever a change affects an API, public interface, workflow contract, generated artifact, or user-observable behavior. A passing status-only test is not evidence that the intended artifact or contract is correct. ## Patterns - Update tests in the same change as an API, signature, export, or public-interface change. - Make assertions name and inspect the offending artifact, output, or configuration field—not just an exit code or broad success status. - Mutation-test critical gates by changing the real source or emitted artifact and proving the assertion turns red. - Exercise every caller path for a changed parser, normalizer, or helper; isolated unit coverage can miss the integration path that invokes it differently. - Reproduce working-tree-only failures locally when the contract depends on index, filesystem, line-ending, or generated-output state. - Keep expected inventory arrays synchronized with the files they enumerate. ## Examples A workflow-compilation test mutates the source workflow, compiles it, and inspects the emitted safe-output contract. A repair-script test constructs the actual index/blob/worktree state that the repair routine must handle instead of a simplified fixture. ## Anti-Patterns - Calling a test sufficient because it observes only a successful process exit - Mutating a hand-built fixture instead of the source or artifact protected by the gate - Testing a helper while omitting production callers - Treating a local checkout defect as something CI alone can validate