# Modernise legacy code with characterisation tests — acceptance checklist

Record evidence for every checked item. Unchecked or untested is not a pass. This checklist does not execute an integration or authorise external actions.

## Required inputs

- [ ] Readable legacy sources and a caller-defined modernized/ output directory.

- [ ] A target stack supported by the profile, representative fixtures and an agreed behaviour contract.

## Output checks

- [ ] Each red test fails for the intended behavioural reason.

- [ ] Legacy files remain unchanged unless a separate change was agreed.

- [ ] Old/new comparisons use the same fixtures and record mismatches.

- [ ] Compile/test exit statuses and unresolved pending cases are retained.

## Deliverables

- [ ] Legacy behaviour catalogue

- [ ] Characterisation fixtures and tests

- [ ] Dual-run comparison

- [ ] Intentional-change and pending-case ledger

## Evidence and decision

Evidence links: [fill in]
Untested paths: [fill in]
Unresolved findings: [fill in]
Reviewer: [fill in]
Decision and scope: [fill in]

## Boundaries

- The test-engineer profile is for legacy modernisation and assumes the supplied directory layout and supported test framework. It grants edit and Bash tools; directory rules alone do not enforce containment.

- Do not discard someone else’s implementation to satisfy test-first instructions. Preserve existing work, agree intentional behaviour changes and isolate any live-database harness.

Workflow: https://undominated.ai/workflows/#modernise-with-characterisation-tests
