288 lines
11 KiB
PowerShell
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."
|
|
}
|
|
)
|