bug: TOML [agents.X] section name with dash crashes load-project.sh #862
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#862
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Problem
projects/disinto.tomlcurrently contains this workaround:Section keys in TOML can contain dashes (
[agents.dev-qwen2]is valid TOML), butlib/load-project.shchokes on them and was never updated.disinto hire-an-agent dev-qwen2 ...emits such a section, which then has to be manually disabled to keep the factory from crashing.Why it bites
hire-an-agentwith a dashed agent name (the natural naming convention:dev-qwen2,dev-qwen3,review-qwen) produces an unparseable TOML.[agents.*]sections being parseable. With the section disabled, the new agent's service block disappears on nextdisinto up, silently dropping the container.Fix
load-project.shhandle dashed section names. The parser is Python-based (tomllibor equivalent) — dashes are already legal per spec, so the issue is likely in how the emitted bash-var keys are derived (dashes → invalid shell identifiers). Normalize viatr 'a-z-' 'A-Z_'(same convention as #852, #834).hire-an-agentvalidate the agent name against whatload-project.sh/generators.shcan handle, and reject at hire-time with a clear error — don't write a TOML section that will crash downstream.DISABLEDblock inprojects/disinto.tomlonce the fix lands.Acceptance
[agents.dev-qwen2](or any dashed name) parses cleanly throughload-project.shagents-dev-qwen2service stanza without error# DISABLEDworkaround inprojects/disinto.tomlcan be removedAffected files
lib/load-project.sh— dash-to-underscore normalization for emitted keyslib/hire-agent.sh— pre-hire validationprojects/disinto.toml— remove workaround blockContext
Caught during same dev-qwen2 hiring debugging session that surfaced #856 (missing collaborator), #855 (missing FACTORY_REPO env), #847, and the entrypoint ordering bug filed alongside this one. All part of the "hire-a-new-agent silently fails in multiple ways" pattern.