refactor(power-orchestrator): move to tools/ + drive build/deploy via Fallout (#191) - #232
Merged
ChrisonSimtian merged 1 commit intoJun 30, 2026
Conversation
… Fallout (#191) PowerOrchestrator lived under stacks/ but was never a converge-able stack (no stack.yaml) — it's a .NET service deployed as a systemd unit ON nuc-01, not a Proxmox guest. And it shipped a hand-cranked install.sh outside the repo's Fallout build. - git mv stacks/PowerOrchestrator → tools/PowerOrchestrator (new tools/ seam, clean for the eventual subrepo extraction). - Add Fallout targets in build/Build.cs: CompilePowerOrchestrator → TestPowerOrchestrator (what CI runs) → PublishPowerOrchestrator → DeployPowerOrchestrator. Fallout owns build/test/publish (native dotnet). - install.sh → deploy.sh: stripped of dotnet publish (Fallout does it); now pure "copy onto node + systemd" sugar that the Deploy target shells out to. Refuses to run without a Fallout-produced publish/ rather than building. - CI: .github/workflows/power-orchestrator-ci.yml runs ./build.sh TestPowerOrchestrator on PRs touching the tool (mirrors validate-shapes feeds). - Fix path references (README, .service comment, monitoring otel-collector comment, build/README target table). .fallout/build.schema.json regenerated with the 4 new targets. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Why
PowerOrchestrator lived under
stacks/but was never a converge-able stack (nostack.yaml). It's a .NET service deployed as a systemd unit on the nuc-01 node — not a Proxmox guest — so the engine'sconvergecan never provision it. It also shipped a hand-crankedinstall.shthat sat outside the repo's Fallout build entirely.This addresses both: (1) wrong home, (2) off-pipeline installer.
What
git mv stacks/PowerOrchestrator → tools/PowerOrchestrator— history-preserving. Newtools/seam; clean for the eventual subrepo extraction.Fallout owns build/test/publish (native
dotnet) via new targets inbuild/Build.cs:CompilePowerOrchestratordotnet buildthe solutionTestPowerOrchestratorPublishPowerOrchestratorpublish/DeployPowerOrchestratordeploy/deploy.shinstall.sh→deploy.sh— stripped ofdotnet publish(Fallout does that now); pure copy-onto-node + systemd "deploy sugar" theDeploytarget invokes. Refuses to run without a Fallout-producedpublish/rather than building.CI:
.github/workflows/power-orchestrator-ci.ymlruns./build.sh TestPowerOrchestratoron PRs touching the tool (mirrorsvalidate-shapesfeed setup).Path-reference fixes (README,
.servicecomment, monitoring otel-collector comment,build/READMEtarget table)..fallout/build.schema.jsonregenerated with the 4 new targets.Why a build target, not a converge stack
The engine only converges Proxmox guests (LXC/VM) and UniFi networks. PowerOrchestrator is a systemd unit running on the host — no guest to converge — so a dedicated build target is the right fit, not new engine surgery. Documented in
build/Build.cs+build/README.md.Verification
Run locally through Fallout:
./build.sh TestPowerOrchestrator→ compile + 19/19 tests pass./build.sh PublishPowerOrchestrator→ 110 MB self-contained binary inpublish/(gitignored)No build artifacts staged; no lingering
stacks/PowerOrchestratorreferences.🤖 Generated with Claude Code