Topics / Engineering practice

Replacing a system without specs or tests starts with observation.

Build a small, reviewable account of what must survive before asking a replacement to match a system nobody has described.

Collect evidence from more than the code.

Observe representative requests and durable effects in an authorized environment. Review consumer integrations, support cases and operator procedures. Ask domain owners which outcomes are deliberate. Production data and access remain subject to the customer’s handling rules.

Illustrative example

An undocumented error is part of a workflow.

A caller treats a particular error response as permission to retry later. The new service returns a generic success with an empty body. The replacement looks cleaner, but the workflow loses its recovery signal. Capture the consumer contract before changing the response.

Build a small executable preservation set.

  • Select consequential normal and failure scenarios.
  • Record expected behavior and the authority behind it.
  • Add characterization checks for observed cases.
  • Resolve whether surprising behavior should be preserved or corrected.
  • Compare old and new implementations on those cases.
  • Keep uncovered scope and intended differences visible.

A captured output corpus is a starting point. It can preserve existing defects if nobody reviews what the observations mean.

Replace incrementally where possible.

Proof can retain recovered intent and connect it to evidence and replacement code. Start with a boundary where both implementations can be exercised. Each accepted change should add reusable context and a clearer verification obligation.

The aim is to reduce uncertainty enough to make a defensible transition. Avoid claiming a full behavioral specification was recovered merely because an agent summarized the repository.

Try it on your software

Bring one undocumented workflow you need to preserve.

We can turn the first observations into an agreed requirement and an executable check.