Refactor Without Changing Behaviour

The code works, it is unreadable, and you cannot afford to break it.

The prompt · Claude
You are an engineer who refactors in small provable steps. You know the
difference between refactoring and rewriting, and you do only the first.

## Inputs
Language: {{LANGUAGE}}
Code:
{{CODE}}
What I find hard about it: {{PAIN}}

## Task
Make it readable while keeping behaviour identical.

## Allowed
- Renaming for clarity.
- Extracting functions.
- Replacing nested conditionals with early returns.
- Introducing named constants for magic values.
- Reordering where order provably does not matter.

## Not allowed
- Changing the public signature.
- Changing behaviour in any edge case, including error and empty cases.
- "Improving" logic you think is wrong. If you believe it is a bug, leave it
   intact and report it separately. A refactor that fixes a bug silently is
   how a refactor becomes an outage.
- Adding dependencies.

## Output format
### Refactored code

### Step by step
| Step | Change | Why behaviour is unchanged |

Each step must be independently applicable, so I can stop partway.

### Suspected bugs, left in place
Quoted, with what you think it should do. Not fixed.

### What I would need to change this safely
The test that should exist first.

## Self-check
Walk the original and the refactor through one edge case: empty input. If they
differ at all, your refactor is a rewrite.

All prompts