feat(pine): wire the Pine 3-container stack into the orchestrator
Register "pine" as a manifest-driven stack (like netbird) across every lifecycle site so install/stop/start/restart/uninstall/crash-recovery treat the launcher + two Wyoming engines as one app: - stacks.rs: pine_stack_app_ids() + install_pine_stack() (orchestrator-first, adopt existing, else bail — no hardcoded fallback) - install.rs: dispatch package_id == "pine" to the stack installer - app_ops.rs: canonical stack-member table + owning_package STACKS - dependencies.rs: startup_order + needs_archy_net - config.rs: all_container_names - crash_recovery.rs: auto-start members + a StackRecoverySpec (anchor pine-whisper) so a genuinely-installed stack self-heals but orphan debris does not crash-loop - docker_packages.rs: exclude the engines from the apps list Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
1730d02003
commit
8791ef60f5
@@ -50,6 +50,7 @@ pub fn stack_member_app_ids(package_id: &str) -> &'static [&'static str] {
|
||||
&["archy-btcpay-db", "archy-nbxplorer", "btcpay-server"]
|
||||
}
|
||||
"netbird" => &["netbird-server", "netbird-dashboard", "netbird"],
|
||||
"pine" => &["pine-whisper", "pine-piper", "pine"],
|
||||
// The legacy umbrella id maps to the split stack (the orchestrator's
|
||||
// umbrella alias handles this too; listing it here keeps the RPC
|
||||
// layer's fan-out explicit).
|
||||
@@ -75,7 +76,14 @@ pub fn address_caching_dependents(package_id: &str) -> &'static [&'static str] {
|
||||
/// `app_id` is a member (RPC ops on "mempool" hold the "mempool" lock while
|
||||
/// they drive archy-mempool-web), otherwise the app itself.
|
||||
fn owning_package(app_id: &str) -> &str {
|
||||
const STACKS: &[&str] = &["immich", "indeedhub", "btcpay-server", "netbird", "mempool"];
|
||||
const STACKS: &[&str] = &[
|
||||
"immich",
|
||||
"indeedhub",
|
||||
"btcpay-server",
|
||||
"netbird",
|
||||
"mempool",
|
||||
"pine",
|
||||
];
|
||||
for stack in STACKS {
|
||||
if stack_member_app_ids(stack).contains(&app_id) {
|
||||
return stack;
|
||||
|
||||
Reference in New Issue
Block a user