feat(agents): Resolver Dispatcher + ephemeral per-issue Resolver #26
No reviewers
Labels
No labels
adr
agent:blocked-ci
agent:blocked-human
agent:blocked-resolver
agent:done
agent:in-progress
agent:no-touch
agent:pinged
agent:pr-open
agent:queued
agent:wip
area:board
area:funding
area:infra
area:phy
area:poplink
area:rtl
area:software
area:supply-chain
area:verification
ci-failed
ci-timeout
docs
do-not-merge
human-approved
needs-human-approval
needs-rebase
needs-triage
phase:1
ready-for-review
review:findings
review:pass
risk:tripwire
swarm:quarantined
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Fluid/fluidpop-v1!26
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/swarm-resolver-dispatcher-on-25"
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?
Summary
Second wave of the swarm scaffolding. Builds on PR #25 (lib + Operator + Opener). Lands the long-running dispatcher and the ephemeral per-issue resolver it spawns.
What it does
resolver-dispatcher.sh—Type=simple,Restart=always, 5-min poll loop:<!-- agent:pr -->marker commentagent:queued→agent:in-progress+ posts claim marker BEFORE creating the worktreegit worktree add -b auto/issue-<N>-<runid> origin/mainunder/var/lib/fluidpop-worktrees/(root created by PR #27'sinstall-swarm.sh)FluidPop Swarm <swarm@pop.coop>(per ADR-017)$MAX_CONCURRENT_RESOLVERS(default 2)git worktree pruneon startup catches orphansresolver.sh— ephemeral one-shot, invoked by dispatcher (not by systemd):<!-- agent:heartbeat run=… ts=… -->every 5 min on source issue (Operator uses staleness to detect dead resolvers)sandbox_claudeenvelope with cgroup caps (MemoryMax=8G, CPUQuota=400%, TasksMax=512)scan_escalationparsesstream.jsonlfor any tool call touching ADR-017 off-limits paths → quarantines + Telegramhigh<!-- agent:pr -->marker on source issueresolver.mdprompt — hard constraints (1 PR per issue, ≤600 LOC, off-limits paths, no--no-verify, no AI attribution); step-by-step commands; explicit blocker-handling protocol.Validation
bash -ngreen on both.shsystemd-analyze --user verifygreen on the.serviceNotes
This PR does NOT activate the dispatcher — install/start happens in PR #27.
Depends on PR #25 (merged) for
lib/*.CI green (head
b0fa96f872), auto-approving