Odin/scripts/idunn-deployment-targets.ps1
2026-08-24 20:40:19 +02:00

288 lines
11 KiB
PowerShell

$repoRoot = Split-Path -Parent $PSScriptRoot
$IdunnDeploymentSharedActuators = @(
"$repoRoot\scripts\deploy-yggdrasil-source-app.ps1"
)
$IdunnDeploymentTargets = @(
[pscustomobject]@{
Id = "odin"
Repo = "Odin"
LocalPath = "E:\Projects\Odin"
Host = "starfire"
Service = "odin-coordinator"
Status = "runtime-enforced"
Health = "daemon-published-rudp:odin.cultnet-rudp-provider-health"
Deploy = $null
Restart = "$repoRoot\scripts\restart-odin.ps1"
Aliases = @("$repoRoot\scripts\restart-odin.cmd")
Reason = "Central Idunn keeps Odin's all-seer/rendezvous daemon alive; Odin owns Verse discovery while Idunn owns lifecycle actuation."
},
[pscustomobject]@{
Id = "idunn"
Repo = "Odin"
LocalPath = "E:\Projects\Odin"
Host = "starfire"
Service = "idunn swarm supervisor"
Status = "runtime-enforced"
Health = $null
Deploy = $null
Restart = $null
Aliases = @()
Reason = "start-idunn-local.ps1 is the bootstrap for Idunn itself; it is not a deploy/restart actuator over another daemon."
},
[pscustomobject]@{
Id = "hermodr"
Repo = "Odin"
LocalPath = "E:\Projects\Odin"
Host = "starfire"
Service = "Hermodr browser lowering"
Status = "runtime-enforced"
Health = "daemon-published-rudp:hermodr.cultnet-rudp-browser-lowering-health"
Deploy = $null
Restart = "$repoRoot\scripts\restart-hermodr.ps1"
Aliases = @()
Reason = "Idunn keeps Hermodr's browser lowering alive; Hermodr publishes its own RUDP health while Odin remains the CultMesh discovery authority."
},
[pscustomobject]@{
Id = "stonks"
Repo = "Stonks"
LocalPath = "E:\Projects\Stonks"
Host = "starfire"
Service = "stonks daemon"
Status = "runtime-enforced"
Health = "daemon-published-rudp:stonks.cultnet-rudp-market-health"
Deploy = $null
Restart = "$repoRoot\scripts\restart-stonks.cmd"
Aliases = @()
Reason = "Stonks publishes market/provider state and daemon health through CultMesh/CultNet; local restart is an Idunn actuator only."
},
[pscustomobject]@{
Id = "weksa"
Repo = "weksa"
LocalPath = "E:\Projects\weksa"
Host = "starfire"
Service = "weksa daemon"
Status = "runtime-enforced"
Health = "daemon-published-rudp:weksa.cultnet-rudp-provider-health"
Deploy = $null
Restart = "$repoRoot\scripts\restart-weksa.cmd"
Aliases = @()
Reason = "Weksa provider state and health are daemon-owned CultMesh/CultNet records; local restart is an Idunn actuator only."
},
[pscustomobject]@{
Id = "starfire-muninn"
Repo = "Odin"
LocalPath = "E:\Projects\Odin"
Host = "starfire"
Service = "muninn serve --host starfire"
Status = "runtime-enforced"
Health = "daemon-published-rudp:muninn.cultnet-rudp-local-telemetry-and-quest-access"
Deploy = $null
Restart = "$repoRoot\scripts\restart-starfire-muninn.ps1"
Aliases = @("$repoRoot\scripts\restart-starfire-muninn.cmd")
Reason = "Central Idunn keeps Starfire-local Muninn alive for Quest access and local telemetry surfaces."
},
[pscustomobject]@{
Id = "raven-muninn"
Repo = "Odin"
LocalPath = "E:\Projects\Odin"
Host = "raven"
Service = "muninn serve --host raven"
Status = "runtime-enforced"
Health = "daemon-published-rudp:muninn.cultnet-rudp-remote-telemetry-health"
Deploy = $null
Restart = "$repoRoot\scripts\restart-muninn.ps1"
Aliases = @("$repoRoot\scripts\restart-muninn.cmd")
Reason = "Central Idunn keeps Raven Muninn's remote telemetry posture alive without activating A/V capture as part of keepalive."
},
[pscustomobject]@{
Id = "nightwing-muninn"
Repo = "Odin"
LocalPath = "E:\Projects\Odin"
Host = "nightwing"
Service = "muninn serve --host nightwing"
Status = "runtime-enforced"
Health = "daemon-published-rudp:muninn.cultnet-rudp-remote-telemetry-and-move-hid"
Deploy = $null
Restart = "$repoRoot\scripts\restart-nightwing-muninn.ps1"
Aliases = @("$repoRoot\scripts\restart-nightwing-muninn.cmd")
Reason = "Central Idunn reaches Nightwing over SSH and keeps the host-local Muninn Move HID daemon alive."
},
[pscustomobject]@{
Id = "vili"
Repo = "Vili"
LocalPath = "E:\Projects\Vili"
Host = "raven"
Service = "GameCult\\Vili"
Status = "runtime-enforced"
Health = "daemon-published-rudp:vili.cultnet-rudp-animation-health"
Deploy = $null
Restart = "$repoRoot\scripts\restart-vili.cmd"
Aliases = @("$repoRoot\scripts\restart-vili.ps1")
Reason = "Central Idunn keeps Raven Vili's typed motion daemon alive; command requests and health are CultMesh/CultNet-owned."
},
[pscustomobject]@{
Id = "raven-sleipnir"
Repo = "Odin"
LocalPath = "E:\Projects\Odin"
Host = "raven"
Service = "sleipnir --host raven"
Status = "runtime-enforced"
Health = "daemon-published-rudp:sleipnir.cultnet-rudp-input-mirror-health"
Deploy = "$repoRoot\scripts\deploy-raven-sleipnir.ps1"
Restart = "$repoRoot\scripts\restart-raven-sleipnir.ps1"
Aliases = @()
Reason = "Central Idunn reaches Raven over SSH and keeps Sleipnir's hidden scheduled task alive while Sleipnir publishes daemon-owned RUDP health."
},
[pscustomobject]@{
Id = "yggdrasil-voidbot"
Repo = "VoidBot"
LocalPath = "/srv/build/VoidBot"
Host = "yggdrasil"
Service = "voidbot.service"
Status = "enforced"
Health = "daemon-published-rudp:voidbot.cultnet-rudp-stack-health"
Deploy = "sudo -n /usr/local/libexec/idunn-yggdrasil deploy voidbot"
Restart = "sudo -n /usr/local/libexec/idunn-yggdrasil restart voidbot"
Aliases = @()
UpstreamRemote = "origin"
UpstreamBranch = "main"
RolloutStrategy = "restart-after-verified-build"
StateMigration = "daemon-owned-noop"
ZeroDowntime = "restart-required"
Reason = "Yggdrasil-local Idunn deploys upstream VoidBot releases through the narrow root-owned manifest; local checkouts have no deployment authority."
},
[pscustomobject]@{
Id = "yggdrasil-bifrost"
Repo = "Bifrost"
LocalPath = "E:\Projects\Bifrost"
Host = "yggdrasil"
Service = "bifrost.service"
Status = "blocked"
Health = $null
Deploy = $null
Restart = $null
Aliases = @()
Reason = "Committed Bifrost HEAD currently expects UserAccounts.HeimdallAccountId, but Yggdrasil's production database lacks that column and EF reports no pending migration. Idunn must not enforce Bifrost freshness until the Bifrost schema migration path is fixed."
},
[pscustomobject]@{
Id = "yggdrasil-streampixels"
Repo = "StreamPixels"
LocalPath = "E:\Projects\StreamPixels"
Host = "yggdrasil"
Service = "streampixels-service/streampixels-web"
Status = "enforced"
Health = "daemon-published-rudp:streampixels.cultnet-rudp-service-health"
Deploy = "$repoRoot\scripts\deploy-yggdrasil-streampixels.cmd"
Restart = $null
Aliases = @("$repoRoot\scripts\deploy-yggdrasil-streampixels.ps1")
UpstreamRemote = "origin"
UpstreamBranch = "main"
RolloutStrategy = "restart-after-verified-build"
StateMigration = "daemon-owned-noop"
ZeroDowntime = "restart-required"
Reason = "Idunn packages upstream origin/main for StreamPixels, runs the existing ops deploy/check scripts, and verifies the remote manifest."
},
[pscustomobject]@{
Id = "yggdrasil-heimdall"
Repo = "Heimdall"
LocalPath = "E:\Projects\Heimdall"
Host = "yggdrasil"
Service = "heimdall.service"
Status = "enforced"
Health = "daemon-published-rudp:heimdall.cultnet-rudp-provider-health"
Deploy = "$repoRoot\scripts\deploy-yggdrasil-heimdall.cmd"
Restart = $null
Aliases = @("$repoRoot\scripts\deploy-yggdrasil-heimdall.ps1")
UpstreamRemote = "origin"
UpstreamBranch = "main"
RolloutStrategy = "restart-after-verified-build"
StateMigration = "daemon-owned-noop"
ZeroDowntime = "restart-required"
Reason = "Idunn packages upstream origin/main for Heimdall, runs the existing ops deploy/check scripts, and verifies the remote manifest."
},
[pscustomobject]@{
Id = "yggdrasil-repixelizer"
Repo = "repixelizer"
LocalPath = "E:\Projects\repixelizer"
Host = "yggdrasil"
Service = "repixelizer-gui.service"
Status = "enforced"
Health = "daemon-published-rudp:repixelizer.cultnet-rudp-service-health"
Deploy = "$repoRoot\scripts\deploy-yggdrasil-repixelizer.cmd"
Restart = $null
Aliases = @("$repoRoot\scripts\deploy-yggdrasil-repixelizer.ps1")
UpstreamRemote = "origin"
UpstreamBranch = "main"
RolloutStrategy = "restart-after-verified-build"
StateMigration = "daemon-owned-noop"
ZeroDowntime = "restart-required"
Reason = "Idunn packages upstream origin/main for repixelizer, runs the existing ops deploy/check scripts, and verifies the remote manifest."
},
[pscustomobject]@{
Id = "github-pages-gamecult-site"
Repo = "gamecult-site"
LocalPath = "E:\Projects\gamecult-site"
Host = "github-pages"
Service = "gamecult.org/www"
Status = "external-owned"
Health = $null
Deploy = $null
Restart = $null
Aliases = @()
Reason = "GitHub Actions/Pages owns deployment freshness; Idunn should ingest workflow/deployment status before claiming automatic deploy authority."
},
[pscustomobject]@{
Id = "eve-ipad-evecanvas"
Repo = "Eve"
LocalPath = "E:\Projects\Eve"
Host = "eve-ipad"
Service = "org.gamecult.evecanvas"
Status = "blocked"
Health = $null
Deploy = $null
Restart = $null
Aliases = @()
Reason = "Jailbroken iPad native app deployment exists only as an operator runbook; no safe noninteractive Idunn deploy command yet."
},
[pscustomobject]@{
Id = "periwinkle-eve-android"
Repo = "Eve"
LocalPath = "E:\Projects\Eve"
Host = "periwinkle"
Service = "Eve Android proof APK"
Status = "blocked"
Health = $null
Deploy = $null
Restart = $null
Aliases = @()
Reason = "Android USB install requires on-device approval; Idunn must not claim automatic deploy authority until that boundary is solved."
},
[pscustomobject]@{
Id = "nightwing-eve-dashboard"
Repo = "Mimir"
LocalPath = "E:\Projects\Mimir"
Host = "nightwing"
Service = "nightwing-eve-dashboard.service"
Status = "archived"
Health = $null
Deploy = $null
Restart = $null
Aliases = @("$repoRoot\scripts\restart-nightwing-eve-dashboard.cmd")
Reason = "Nightwing Eve dashboard's old HTTP/WebSocket broker is archived. Rebuild it only as typed CultMesh/Odin state publication plus renderer lowering before restoring Idunn lifecycle authority."
},
[pscustomobject]@{
Id = "nightwing-eve-browser-reference"
Repo = "Eve"
LocalPath = "E:\Projects\Eve"
Host = "nightwing"
Service = "nightwing-eve-browser-reference.service"
Status = "runtime-enforced"
Health = "daemon-published-rudp:nightwing.cultnet-rudp-browser-reference-health"
Deploy = $null
Restart = "$repoRoot\scripts\restart-nightwing-eve-browser-reference.ps1"
Aliases = @("$repoRoot\scripts\restart-nightwing-eve-browser-reference.cmd")
Reason = "Nightwing Eve browser reference publishes daemon-owned boundary witnesses and RUDP health; systemd restart is an Idunn actuator only."
}
)