Skip to content

A wave that changed

llms.txtlists every page for an agent
Optional: hand this page to your coding agentThe steps work by hand too.
Show the whole prompt
Read https://intentius.io/terragucci/tutorial/changed-wave/.
In the terragucci clone with the example booted, run `just example change destroy` and `just example change module-bump` and summarize both plan notes. Then stop and print the page's merge and approve commands for me. Do not run them.
Never apply, approve (a pull request review or `terragucci approve`), override a policy denial (`terragucci override`), use `--mode apply`, or merge; never touch `.chant/allowed_signers` or `chant/lifecycle`.

An approval covers the plans you read and no others.

  1. Open the destroy change and merge it, so wave 4 waits:

    Terminal window
    just example change destroy
    just example merge destroy
  2. Approve wave 4, as on the previous page:

    Terminal window
    just example approve
  3. Before you run the wave’s job again, change the shared module, so every root in wave 4 plans again:

    Terminal window
    just example change module-bump
    just example merge module-bump
$ just example approve

  Approved  wave-4, signed as terragucci-admin
$ just example change module-bump
[example] pushed change/module-bump at c2b8832e
[example] run 12 for c2b8832e (pull_request): success (http://localhost:3300/terragucci-admin/example/actions/runs/12/jobs/1/attempt/1)
[example] run 13 for c2b8832e (push): success (http://localhost:3300/terragucci-admin/example/actions/runs/13/jobs/0/attempt/1)

  Pull request  http://localhost:3300/terragucci-admin/example/pulls/5 (the plan note is in its conversation)
  Plan          http://localhost:3300/terragucci-admin/example/actions/runs/12/jobs/1/attempt/1 (success)
  Check         http://localhost:3300/terragucci-admin/example/actions/runs/13/jobs/0/attempt/1 (success)
$ just example merge module-bump
[example] merged change/module-bump into main

  Merged    pull request 5 into main
  Pipeline  http://localhost:3300/terragucci-admin/example/actions/runs/14/jobs/0/attempt/1 (failure)
  wave 4 changed after it was approved, so nothing in it was applied. approved: jcs1-sha256:284d6a4f3175db20ea6eb2e9a490ac387afaee4a1dc209077125cebe842f8b28; planned now: jcs1-sha256:707339809ec53a67c42f4f1668a345e618adf3c87d3e3f73f8409ba2ddae52d5. Read the new plan, then approve it: terragucci approve wave-4 --plan jcs1-sha256:707339809ec53a67c42f4f1668a345e618adf3c87d3e3f73f8409ba2ddae52d5 --sign
  wave 4 of 4: approved by terragucci-admin, but these roots planned differently since: envs/prod/email, envs/prod/orders, envs/prod/payments, envs/prod/search, envs/staging/email, envs/staging/orders, envs/staging/payments, envs/staging/search

The wave’s plans now differ from the approved ones, so it applies nothing:

You see Where
the job fails with exit code 4 the wave’s job
the approved digest beside the new one, and each root whose plan moved the job’s log
Wave 4's apply job in Forgejo, refusing: the approved digest beside the planned one, and the eight roots that planned differentlyWave 4's apply job in Forgejo, refusing: the approved digest beside the planned one, and the eight roots that planned differently

npx terragucci respond wave-refused --approved <approved report> --current <current report> --wave 4 prints what changed; Fix a refused wave describes the reports.

If the new plan is Do
what you meant approve the new digest and run the job again
not what you meant revert the change

Had the job run between steps 2 and 3, wave 4 would have applied the destroy under your approval. The module bump’s wave 4 would then wait for its own approval instead of refusing.

Tutorial step 5 of 11.

terragucci

These docs count page views and clicks with PostHog. They set no cookies, store nothing in your browser, and send nothing when your browser asks not to be tracked.