* refactor(daemon): retire the generic no-reply rule — ordinary agents always post one comment (MUL-5442)
Owner decision (MUL-5442, 2026-08-06): the no-reply / silent-exit
behavior is squad-leader-only by design. Mechanically it always was —
computeCommentAgentTriggers routes agent-authored comments only via
explicit @mentions (the sole implicit wake is the squad-leader path), so
loop prevention lives in the Mentions discipline, and the generic rule
only suppressed one terminal noise comment on an already-enqueued run
while giving every ordinary agent a legal silent-exit path that risks
silently dropped results.
- prompt.go: delete the per-turn agent-trigger warning block entirely
(−728B per agent-triggered turn; supersedes #6484's compression).
- runtime_config_sections.go: delete the Reply-mode reply-warranted
bullet and step 5's conditional pointer; the reply bullets become
unconditional (−472B one-time in the brief). Squad-leader no_action
bullets and the Mentions section are untouched.
- reply_instructions.go: 'If you decide to reply, post it' → 'Post your
reply' (−16B per Reply turn); the leader's no_action block states its
own exception.
- Tests: retired pins are converted to negative guards with ledger
comments (brief and per-turn both must NOT carry the retired
apparatus); attribution, member-leak, and no-MUST-respond guards stay.
Co-authored-by: multica-agent <[email protected]>
* fix(daemon): scope the reply imperative with the leader's no_action carve-out, close the pin-ledger gaps (MUL-5442)
Review catches by Elon on #6493, both accepted:
1. The leader's only silent path was contradicted later in the same
prompt: the no_action rule said EXIT without commenting, then the
cookbook and the brief's mandatory bullet said post unconditionally.
Both now branch on squad leadership — agent configuration, never
per-run state, so each agent's brief stays byte-identical across
turns and issues (cache-safe): leaders get 'Unless your outcome is
no_action, post your reply…' in the cookbook and 'Unless your outcome
is no_action (Squad leader rule above), posting your reply as a
comment is mandatory' in the brief; ordinary agents keep the
unconditional wording byte-for-byte. New tests render the COMPLETE
leader prompt and leader brief and assert the carve-out is present
AND the unconditional capital-P imperative is absent — the scope
relation, not two isolated Contains.
2. The retirement ledger named five brief pins but guarded only two,
and the per-turn 'If you decide to reply' had no guard. Added the
four missing negative guards in ordinary-agent scope (the leader's
'DO NOT post any comment' matches none of them) plus a leader-leak
guard on the ordinary brief.
Co-authored-by: multica-agent <[email protected]>
* fix(daemon): scope the multi-thread fan-out under the leader's no_action carve-out (MUL-5442)
Ports the per-turn half of #6493 review rounds 2-3 into the slimmed PR
(the brief role-independence refactor moves to its own sub-issue/PR per
owner decision): BuildMultiThreadCommentReplyInstructions takes the
leader flag, and the leader lead sentence scopes the ENTIRE fan-out
block — every later obligation sits under the 'Otherwise' — with
index-order test guards. Ordinary fan-out output is byte-unchanged.
Also repairs a truncated TestFreshSessionMayHelp from the earlier
rebase conflict resolution (missing closing braces).
Co-authored-by: multica-agent <[email protected]>
* docs: correct the taskIsSquadLeader comment — leadership is a per-task role (MUL-5442)
Review nit on #6493: the helper's comment still claimed leadership is
'agent configuration, never per-run state' — the disproven premise that
drove the earlier review rounds. State the per-task-role fact and point
at MUL-5811 for the role-independence work.
Co-authored-by: multica-agent <[email protected]>
---------
Co-authored-by: Bohan-J <[email protected]>
Co-authored-by: multica-agent <[email protected]>
* fix(daemon): suppress git console windows on Windows
Apply the same HideConsoleWindow pattern used for agent processes
(PR #1474) to all git commands spawned by the daemon's repo-cache,
execenv, and GC packages. Each exec.Command now calls
util.HideConsoleWindow(cmd) which sets CREATE_NEW_CONSOLE + HideWindow
so grandchildren inherit a hidden console instead of flashing visible
console windows.
Closes#2357
Co-Authored-By: Claude Opus 4 (1M context) <[email protected]>
* refactor: use EnsureHiddenConsole at daemon startup
Replace per-site HideConsoleWindow(cmd) calls with a single
EnsureHiddenConsole() invoked once at daemon startup. The daemon
now owns a hidden console that every child process (git, cmd /c
mklink, etc.) inherits automatically, eliminating the need for
per-call SysProcAttr configuration.
This also covers the previously missed exec.Command in
codex_home_link_windows.go (cmd /c mklink) which never had a
HideConsoleWindow call.
Signed-off-by: kagura-agent <[email protected]>
---------
Signed-off-by: kagura-agent <[email protected]>
Co-authored-by: Claude Opus 4 (1M context) <[email protected]>
Agents now decide which repo to use based on issue context and check out
repos on demand via `multica repo checkout <url>`. Workspace repos are
cached locally as bare clones for fast worktree creation.
Key changes:
- Add repocache package for bare clone management (clone, fetch, worktree)
- Add `multica repo checkout` CLI command that talks to local daemon
- Add POST /repo/checkout endpoint on daemon health server
- Pass workspace repos metadata through register + task claim responses
- Remove pre-created worktrees from execenv (workdir starts empty)
- Update CLAUDE.md template to instruct agents to use `multica repo checkout`
- Pass MULTICA_DAEMON_PORT, WORKSPACE_ID, AGENT_NAME, TASK_ID env vars to agent
Replace raw fmt/log calls with structured slog logger (Go) and
console-based logger (TypeScript). Add request logging middleware.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Introduce the `execenv` package that creates isolated working directories
for each agent task. Supports git worktree mode (code tasks) and plain
directory mode (non-code tasks), with `.agent_context/issue_context.md`
injected into the workdir for Claude Code to discover.
Key changes:
- New `server/internal/daemon/execenv/` package (Prepare/Cleanup)
- `runTask()` now creates isolated env instead of using shared reposRoot
- Prompt updated to reference `.agent_context/` files
- Add `WorkspacesRoot` config (default ~/multica_workspaces)
- Add `KeepEnvAfterTask` config for debugging
- Default agent timeout increased from 20min to 2h
- `CompleteTask` now forwards branch name to server
Co-Authored-By: Claude Opus 4.6 <[email protected]>