Repository navigation
treaty rc10: engine on ctx.run, migrate --build fix, nine cloudfall commands on treaty - #6
Merged
Merged
Conversation
treaty rc10 closes the issues that kept the engine on subprocess: ctx.run streams a child's output (#61) and gives children a UTF-8 locale Ansible accepts (#62). playbook run and artifact build now start their children through ctx.run, so --timeout and Ctrl-C stop the process group and secrets are redacted from the play log. The play log streams to stderr at a terminal and under -v; elsewhere a failed run carries the log's tail in error.context.output. A git step past its limit is treaty's TIMEOUT (exit 10). Both commands declare their program and minimum version, so doctor checks ansible-playbook and git. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Since the engine moved to treaty (PR #4) its answer is an envelope with the build under data, but build_release_artifact returned the envelope itself, so migrate found no release id and every build step failed. The new test runs the real engine command against a local repository. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first step of moving the cloudfall CLI off argparse. cloudfall.app holds a treaty App with config validate, inventory show, operations list/show/decisions, operator list/show, audit and services status; cli.main sends a command line there when app.resolves claims it and to argparse otherwise, so root --help still lists every command. data keeps the keys argparse wrote, status included: each answer is a Payload whose schema comes from the command's output shape in the operating contract, which now marks the commands treaty runs and describes their envelope. audit's drift and unknown verdicts exit 83 and 84 with the report in data. Paths resolve against the project without os.chdir, and --inventory with --project is a declared Excludes rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A drift or unknown audit returns its report through Exit(data=...), and treaty 1.0.0rc10 re-sorts an output adapter's arrays on that path. The strict xfail fails the suite once treaty keeps the declared order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 1, 2026
Merged
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves
cloudfall-engineonto treaty 1.0.0rc10's process handling, fixes a regression from #4, and starts moving thecloudfallCLI to treaty (phases 0 and 1 of the migration plan).Changes
playbook runandartifact buildstart Ansible and git throughctx.run, so--timeoutand Ctrl-C stop the whole process group and secrets are redacted from the play log.doctorchecks ansible-playbook 2.21 and git 2.24. The play log streams at a terminal; off a terminal it needs-v, and a failed run keeps the log's tail inerror.context.outputmigrate --buildand the MCPbuild_artifacttool read the release from the engine's treaty envelope. Since feat!: cloudfall-engine runs on treaty #4 every build step failed with "artifact builder returned no release id". The new test runs the real engineconfig validate,inventory show,operations list/show/decisions,operator list/show,audit,services statusrun incloudfall.app.cli.mainroutes a command line there whenapp.resolvesclaims it, else to argparse, so root--helpand every other command are unchangedBreaking, for callers of the nine commands
data.statusreplaces the top-levelstatus; otherdatakeys are unchanged; failures are on stdoutauditdrift 83 (was 1), unknown 84 (was 3), with the report indata; 79 project, 80 config or evidence, 85 inventory, 86 record, 5 not found, 2 bad input. The old snake_case code is inerror.context.code--output jsonafter one of these commands is refused (treaty's--outputis a file path)atlas-fleet's Taskfile only reads exit status; its project gives the same validate, inventory, audit (drift, same report), services status and operator list results through the new commands.
treaty issues filed
#173, #174, #175 (planning); #179 (
why --format htmlwaits on it), #180 (audit false positive), #181 (drift report order)Checks
uv run pytest: 455 passed, 1 xfailed (run withFORCE_COLORunset; one existing argparse help test fails underFORCE_COLOR=3)treaty audit cloudfall_engine.cli:app: no warnings;treaty audit cloudfall.app:app: only the two #180 false positives🤖 Generated with Claude Code