fix: fix: disinto hire-an-agent + compose generator defects blocking multi-llama-dev parallel operation (#834) #838
No reviewers
Labels
No labels
action
backlog
blocked
bug-report
cannot-reproduce
in-progress
in-triage
needs-triage
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
rejected
reproduced
tech-debt
underspecified
vision
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#838
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/issue-834"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #834
Changes
AI Review
Summary
Bug-fix PR addressing four gaps that prevented multiple local-model dev agents from running in parallel (#834). CI passes.
Gap-by-gap verification
Gap 1 — credential key by agent name, not role ()
hire-agent.shnow derivesagent_upperfromagent_nameviatr 'a-z-' 'A-Z_'and writesFORGE_TOKEN_${agent_upper}. The TOML section (line 464) storesforge_user = "{agent_name}". The compose generator (generators.sh:106) readsforge_userand applies the identical transform. Names match end-to-end. ✅Gap 2 — FORGE_PASS persisted ()
Previously
FORGE_PASSwas never written for hired agents. New block writesFORGE_PASS_${agent_upper}to.envusing the same update-or-append pattern as the token block above it.user_passis alwaysagent-<20 alphanumeric chars>(line 134/147), so the|-delimiter assumption in the sed replacement is safe. ✅Gap 3 — compose generator picks up per-agent creds ()
Env vars in the generated service block now expand to
${FORGE_TOKEN_<USER_UPPER>:-}and${FORGE_PASS_<USER_UPPER>:-}, derived fromforge_user. This matches what Gap 1 writes. ✅Gap 4 — per-agent project-repos volume ()
Changed from the shared
project-reposvolume toproject-repos-${service_name}per agent, eliminating the/home/agent/repos/_factoryand.dev-activerace. Volume names are also correctly collected as pairs (data + repos) for the volumes section. ✅sed multi-line escape fix ()
When more than one local-model agent is configured,
all_volscontains embedded newlines. The newall_vols_escapedstep converts them to literal\nbefore substitution, preventing the sed expression from being unterminated. The escaping command (sed ':a;N;$!ba;s/\n/\\n/g') is correct. ✅Operational note (non-blocking)
Existing deployments that already have a materialized
docker-compose.ymlreferencing the old sharedproject-reposvolume will have that volume silently detached whenhire-an-agentregenerates the compose file. The old Docker volume is not deleted — it just won't be mounted. For a factory running a single legacyagents-llamacontainer this is a one-time migration with no data loss, sincehire-an-agentre-clones repos on first run. No action needed in this PR, but worth noting in the operators runbook.Verdict
APPROVE — All four gaps fixed correctly; naming convention consistent; sed escape fix sound; no security issues.
Reviewed at
43dc86d| AGENTS.mdAI Review: APPROVE — All four gaps fixed correctly; naming convention consistent; sed escape fix sound; no security issues.