Tutorial: make one resilient edit#

In a few minutes, you will make a small edit that survives harmless whitespace drift, confirm the result, and undo it. This uses the CLI. The same core is available from Python and MCP.

1. Install and create a file#

uv add intact
mkdir -p /tmp/tact-tutorial && cd /tmp/tact-tutorial
printf 'DEBUG = True\nTIMEOUT = 30\n' > config.py

2. Read before you edit#

uv run tact read config.py

The result includes a SHA-256 for the bytes it read. You can supply that hash later as an advisory --sha check, but the important first habit is simpler: read the current file before proposing an edit.

3. Simulate harmless drift#

Suppose a formatter or another author removes one space after you read the file:

sed -i 's/DEBUG = True/DEBUG=True/' config.py

A byte-exact editor looking for DEBUG = True would now refuse the change. Tact can identify the same line under its whitespace-tolerant rungs, while still reporting what happened.

4. Edit and inspect the result#

uv run tact edit config.py --old 'DEBUG = True' --new 'DEBUG = False'
cat config.py

The command should report a non-EXACT match and the file should contain DEBUG=False. If there were two plausible matches, it would refuse and ask you to provide --near LINE rather than choose one for you.

5. Undo the write#

uv run tact undo config.py
cat config.py

Undo restores the pre-edit state, including the simulated spacing. It journals the state it replaces, so repeating undo can restore the edit.

Next steps#

  • How-to guide for patches, anchors, delta reads, and MCP setup.

  • Reference for command shapes, --json, exit codes, and library mappings.

  • Explanation for the ladder and its deliberate refusal boundaries.