feat(agents): PR Approver + install + observability + bridge /role routing #27
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!27
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/swarm-approver-install"
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
Final wave of the FluidPop autonomous swarm scaffolding. Builds on PRs #25 + #26. After this PR + ADR-017 acceptance,
install-swarm.shactivates the loop.What's in it
PR Approver (
roles/pr-approver.sh,Type=simple,Restart=always, 60s poll):do-not-merge,agent:wip, bot-author anomaly, not-mergeable, CI failure/pending, governance-path hold,ready-for-reviewlabel,auto/branchinfra/forgejo/auto-merge.shper PR; reaps PIDs; exit-code-to-action mappingInstall / observability:
install-swarm.sh— idempotent bootstrap. Pre-flight verifies tokens,loginctl enable-linger, creates state dirs, installs.git/hooks/pre-commitsymlink (backs up existing), symlinks units, daemon-reload, starts in dependency order, announces via Telegram.--restart-bridgeto pick up/roleroutinguninstall-swarm.sh— reverse-order stop+disable, restores prior pre-commit hook from.bak, preserves state dirs for forensicsswarm-status.sh— text dashboard for SSH triage (per-role unit state + circuit + recent failures)reset-circuit.sh <role|all>— manual circuit resetlog-rotate.sh+.timer(03:30 daily) — zstdstream.jsonl> 24h, delete dirs > 7ddigest.sh+.timer(09:00 BRT) — 24h activity summary → TelegramlowSecurity hook:
hooks/pre-commit-block-paths.sh— refuses commits byswarm@pop.cooptouching ADR-017 off-limits paths. ADRs conditional onStatus: Accepted. Best-effort Telegram alarm on block. No-op for human authors.Bridge extension (
infra/ops/telegram-claude-bridge.sh):/operator <msg>,/opener <msg>,/dispatcher <msg>,/approver <msg>route to role inbox/swarm statusreturns dashboard inline/swarm pause|resume|reset <role|all>writes circuit state or invokes resetHelper (
infra/ops/notify-telegram.sh):--role <name>flag prepends[swarm:<role>]after priority prefixValidation
bash -ngreen on all 11 new.shsystemd-analyze --user verifygreen on 5 new.service/.timerchmod +xappliedNotes
This PR does NOT activate the swarm.
install-swarm.shis run explicitly in Stage 4 after Marcos approves ADR-017 via Telegram (approve PR 24).Depends on PR #25 (merged) and PR #26 (merged).
CI green (head
749f0dac90), auto-approving