Skip to content

treaty rc12: why, observe, secrets, import, deploy, rollback, restart, data migrate on treaty - #9

Merged
romamo merged 3 commits into
mainfrom
treaty-rc12
Oct 2, 2026
Merged

romamo merged 3 commits into
mainfrom
treaty-rc12

Conversation

@romamo

@romamo romamo commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator

treaty 1.0.0rc12, and the nine commands it unblocked. Stacked on #8 (base treaty-cli-phase3) → #7 → #6.

Changes

  • treaty rc12 (df3f2e5): playbook run streams the Ansible log to stderr as plain text in any format again (stream="always", #173), so a timer's journal or CI log keeps it; the log tail in a failure's context is treaty.External (#174). The drift report keeps its declared order on the failure path (#181): its strict xfail is now a regular test
  • why (c5969bb): moves with --format html (#179); render_why_document draws the page from the answer's JSON, which is what a treaty renderer receives. treaty offers a custom format on every command (#209), so other commands render their data as a page of JSON
  • Eight commands (5292b3b): observe, secrets render, import render, import render-api, deploy, rollback, restart, data migrate. Their camelCase keys go through the Payload adapter, which may now carry effect (#183). A command with a plan and a result shape answers one object, absent keys null. sops runs through ctx.run, the Render API through ctx.http (so --proxy applies), and observe through a ctx.run playbook runner
  • Exit codes: observe 91 INCOMPLETE (was 1) with the run in data; failures that were exit 2 are 4 PRECONDITION with the old code in error.context.code. import render declared PERMISSION_DENIED, which it raised undeclared (found by its read-only test); helpers' reachable codes are declared on health, operator list and add
  • An optional key is null when absent (was {}), so inventory show writes data.ansible: null for a project

Left on argparse: changelog (phase 5), operator run (#175), dashboard serve (phase 4). 30 commands now run on treaty.

treaty issues filed

#209 (a custom format on one command only), #210 (declare a mutating command idempotent), #211 (audit rule for raised-but-undeclared exit codes)

Checks

  • uv run pytest: 457 passed (FORCE_COLOR unset); ruff, mypy clean
  • treaty audit --strict: engine clean but advice; cloudfall one warning (#210, observe's retryable INCOMPLETE) and advice
  • playbook run with stderr to a file keeps the play log
  • restart and rollback plans on the example project; observe against its TEST-NET hosts exits 91 with the run in data
  • Nothing was run against real servers

🤖 Generated with Claude Code

romamo and others added 3 commits October 2, 2026 01:51
rc12 lands the treaty issues the port filed. playbook run streams the
Ansible log to stderr as plain text in any format (stream="always",
treaty #173), so a timer's journal or a CI log keeps it, and the log tail
in a failure's context is treaty.External (#174). The drift report keeps
its declared order on the failure path (#181), so its strict xfail
becomes a regression test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
treaty rc12 lets an app register a format outside its enum (#179), so
why moves with its page: render_why_document draws it from the answer's
JSON, which is what a treaty renderer receives. treaty offers a custom
format on every command (#209), so the others render their data as a
page of JSON.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ate on treaty

treaty rc12 lets an output adapter carry effect on a command that writes
(#183), so the eight commands with camelCase keys move with their exact
data. A Payload subclass for a writing command lists effect, and a
command with a plan and a result shape answers one object whose keys
absent from this answer are null. sops runs through ctx.run and the
Render API through ctx.http; observe passes a ctx.run playbook runner.

Declares PERMISSION_DENIED on import render, which raised it undeclared
(found by its read-only test, treaty #211), and NOT_FOUND or
ENGINE_STEP_FAILED where a helper can raise them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@romamo
romamo changed the base branch from treaty-cli-phase3 to main October 2, 2026 07:57
@romamo
romamo merged commit 8e1d6fe into main Oct 2, 2026
1 check passed
@romamo
romamo deleted the treaty-rc12 branch October 2, 2026 07:58
@shipmill-romamo shipmill-romamo Bot added this to the 0.6.0 milestone Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant