- Rename acquire_cron_lock → acquire_run_lock in lib/formula-session.sh and all five *-run.sh call sites - Update all *-run.sh file headers: "Cron wrapper" → "Polling-loop wrapper" - Rewrite docs/updating-factory.md: replace crontab check with pgrep, replace "Crontab empty after restart" section with polling-loop equivalent - Update docs/EVAL-MCP-SERVER.md to reflect polling-loop reality - Update lib/guard.sh, lib/AGENTS.md, lib/ci-setup.sh comments - Update formulas/*.toml comments (cron → polling loop) - Update dev/dev-poll.sh usage comment - Update tests/smoke-init.sh to handle compose vs bare-metal scheduling - Update .woodpecker/agent-smoke.sh comments - Update site HTML: architecture.html, quickstart.html, index.html - Clarify _install_cron_impl is bare-metal only (compose uses polling loop) - Keep site/collect-engagement.sh and site/collect-metrics.sh cron refs (genuinely cron-driven on the website host, separate from factory loop) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
22 lines
773 B
Bash
22 lines
773 B
Bash
#!/usr/bin/env bash
|
|
# guard.sh — Active-state guard for polling-loop entry points
|
|
#
|
|
# Each agent checks for a state file before running. If the file
|
|
# doesn't exist, the agent logs a skip and exits cleanly.
|
|
#
|
|
# State files live in $FACTORY_ROOT/state/:
|
|
# .dev-active, .reviewer-active, .planner-active, etc.
|
|
#
|
|
# Presence = permission to run. Absence = skip (factory off by default).
|
|
|
|
# check_active <agent_name>
|
|
# Exit 0 (skip) if the state file is absent.
|
|
check_active() {
|
|
local agent_name="$1"
|
|
local state_file="${FACTORY_ROOT}/state/.${agent_name}-active"
|
|
if [ ! -f "$state_file" ]; then
|
|
echo "[check_active] SKIP: state file state/.${agent_name}-active not found — agent disabled" >&2
|
|
log "${agent_name} not active — skipping"
|
|
exit 0
|
|
fi
|
|
}
|