From 7d728a786744411a475badc20289c827bf8f3eae Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 16 Apr 2026 11:10:06 +0000 Subject: [PATCH 1/2] fix: disinto up silently destroys profile-gated services (#845) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TOML-driven agent services (emitted by `_generate_local_model_services` for every `[agents.X]` entry) carried `profiles: ["agents-"]`. With `docker compose up -d --remove-orphans` and no `COMPOSE_PROFILES` set, compose treated the hired agent container as an orphan and removed it on every subsequent `disinto up` — silently killing dev-qwen and any other TOML-declared local-model agent. The profile gate was vestigial: the `[agents.X]` TOML entry is already the activation gate — its presence is what drives emission of the service block in the first place (#846). Drop the profile from emitted services so they land in the default profile and survive `disinto up`. Also update the "To start the agent, run" hint in `hire-an-agent` from `docker compose --profile … up -d …` to `disinto up`, matching the new activation model. Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/generators.sh | 6 +++++- lib/hire-agent.sh | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/generators.sh b/lib/generators.sh index af08aa2..c205594 100644 --- a/lib/generators.sh +++ b/lib/generators.sh @@ -155,7 +155,11 @@ _generate_local_model_services() { condition: service_started networks: - disinto-net - profiles: ["agents-${service_name}"] + # No profiles: the [agents.${service_name}] TOML entry is the activation + # gate — its presence is what drove emission of this block in the first + # place. Profile-gating the service caused 'disinto up' (without + # COMPOSE_PROFILES set) to treat the container as an orphan and remove it, + # silently killing the hired agent (#845). EOF has_services=true diff --git a/lib/hire-agent.sh b/lib/hire-agent.sh index 2bbea63..994103a 100644 --- a/lib/hire-agent.sh +++ b/lib/hire-agent.sh @@ -544,7 +544,7 @@ p.write_text(text) echo " Model: ${model}" echo "" echo " To start the agent, run:" - echo " docker compose --profile ${service_name} up -d ${service_name}" + echo " disinto up" fi echo "" From 802a548783854880fa461217fc7298378faee2f3 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 16 Apr 2026 11:10:06 +0000 Subject: [PATCH 2/2] fix: disinto up silently destroys profile-gated services (#845) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TOML-driven agent services (emitted by `_generate_local_model_services` for every `[agents.X]` entry) carried `profiles: ["agents-"]`. With `docker compose up -d --remove-orphans` and no `COMPOSE_PROFILES` set, compose treated the hired agent container as an orphan and removed it on every subsequent `disinto up` — silently killing dev-qwen and any other TOML-declared local-model agent. The profile gate was vestigial: the `[agents.X]` TOML entry is already the activation gate — its presence is what drives emission of the service block in the first place (#846). Drop the profile from emitted services so they land in the default profile and survive `disinto up`. Also update the "To start the agent, run" hint in `hire-an-agent` from `docker compose --profile … up -d …` to `disinto up`, matching the new activation model. Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/generators.sh | 8 +++++++- lib/hire-agent.sh | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/generators.sh b/lib/generators.sh index af08aa2..1e97ebe 100644 --- a/lib/generators.sh +++ b/lib/generators.sh @@ -102,6 +102,13 @@ _generate_local_model_services() { # so we key the env-var lookup by forge_user (which hire-agent.sh # writes as the Forgejo username). Apply the same tr 'a-z-' 'A-Z_' # convention as hire-agent.sh Gap 1 so the names match. + # + # NOTE (#845): the emitted block has NO `profiles:` key. The + # [agents.] TOML entry is already the activation gate — + # its presence is what drives emission here. Profile-gating + # the service caused `disinto up` (without COMPOSE_PROFILES) + # to treat the hired container as an orphan and silently + # remove it via --remove-orphans. local user_upper user_upper=$(echo "$forge_user" | tr 'a-z-' 'A-Z_') cat >> "$temp_file" <