You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add cloudfall domains observe and the domains MCP tools (S-004-4, 14, 15, 16) #118
Builds part of spec S-004, docs/specs/004-domains-apply.md (feature issue #87): the acceptance criteria below. Each needs a test that names its id (test_s004_<k>_..., or a proves: S-004-4 comment line).
This is the cloudfall domains observe command, the unknown-Domain refusal for both commands, and their MCP tools.
S-004-4: domains apply nope and domains observe nope in a valid project with no Domain nope exit PRECONDITION with context code lifecycle_domain_missing, and neither the inventory render nor ansible-playbook runs
S-004-14: domains observe <d> reports vhost.present, vhost.sha256, certificate.notAfter, certbotTimer.enabled and certbotTimer.active as read on the proxy server, exits 0 when the vhost file is missing, and changes no file on the server or in the project
S-004-15: domains observe <d> reports receipt.matches: false once the vhost file was edited after the last receipt, true while it is unchanged, and receipt: null when no receipt exists
S-004-16: cloudfall mcp serve on a project lists a tool for domains apply and one for domains observe
Triage: implement, for the next release candidate.
The plan: build the criteria listed in the body, as docs/specs/004-domains-apply.md (S-004, approved in #100) says, each with a test that names its id. A departure from a criterion goes back as a question, never a quiet change. Build issues start in order: this one starts once every issue on its Depends on lines has closed. I'll link the PR here.
PR #142 adds cloudfall domains observe <d> (a read-only playbook on the proxy server: vhost presence and sha256, certificate expiry, certbot.timer state, and whether the vhost still matches the last receipt), the lifecycle_domain_missing refusal for both domain commands, and the domains_apply/domains_observe MCP tools (domains_apply keeps the yes gate). It marks spec 004 built.
Trade-off: nothing ran over SSH on a live Debian host (real openssl on a Let's Encrypt certificate, real systemctl states); tests use stand-in tools.
Released in v0.8.0rc7 (pre-release). uv tool install --prerelease allow cloudfall==0.8.0rc7
A plain install gets it with the next stable release.
If you filed this: react 👍 on this comment once it works for you, or reply if it doesn't.
Activity
migrate, which converges every server #87shipmill-romamo commentedon Oct 27, 2026
Triage: implement, for the next release candidate.
The plan: build the criteria listed in the body, as
docs/specs/004-domains-apply.md(S-004, approved in #100) says, each with a test that names its id. A departure from a criterion goes back as a question, never a quiet change. Build issues start in order: this one starts once every issue on itsDepends onlines has closed. I'll link the PR here.shipmill-romamo commentedon Oct 27, 2026
PR #142 adds
cloudfall domains observe <d>(a read-only playbook on the proxy server: vhost presence and sha256, certificate expiry,certbot.timerstate, and whether the vhost still matches the last receipt), thelifecycle_domain_missingrefusal for both domain commands, and thedomains_apply/domains_observeMCP tools (domains_applykeeps theyesgate). It marks spec 004built.Trade-off: nothing ran over SSH on a live Debian host (real
opensslon a Let's Encrypt certificate, realsystemctlstates); tests use stand-in tools.shipmill-romamo commentedon Oct 27, 2026
Released in v0.8.0rc7 (pre-release). uv tool install --prerelease allow cloudfall==0.8.0rc7
A plain install gets it with the next stable release.
If you filed this: react 👍 on this comment once it works for you, or reply if it doesn't.