Commit Graph

9 Commits

Author SHA1 Message Date
freemo 4ecf446360 build(agents): open bash permissions to allow complex commands
Agents were failing when trying to run complex bash commands (curl with
pipes to python3, multi-command pipelines, etc.) because their bash
permissions were set to '"*": deny' with only specific simple patterns
allowed (e.g., "curl *": allow). Shell pipelines like:

  curl -s http://localhost:4096/session | python3 -c "import json..."

don't match any single allow pattern and get denied.

Changed 17 agent files from restrictive bash permissions to '"*": allow'.
This includes all agents that need to:
- Run curl pipelines with python3 for prompt_async session management
- Create Forgejo dependency links via REST API curl calls
- Execute complex git operations with pipes
- Run bash sleep for polling loops

Only 3 truly read-only analysis agents remain restricted:
ca-difficulty-evaluator, ca-implementation-reviewer, ca-issue-analyzer.
These don't need bash access at all.
2026-04-02 18:36:23 +00:00
freemo 9bbec0e698 build(agents): prompt_async for pool supervisors, session resume, bot signatures, cleanup agent
Four changes in one commit across 27 agent files:

1. POOL SUPERVISOR PROMPT_ASYNC: All 4 pool supervisors (issue-implementor,
   ca-continuous-pr-reviewer, ca-uat-tester, ca-bug-hunter) now dispatch
   their internal workers via the OpenCode Server's prompt_async endpoint
   instead of the Task tool. This eliminates the wait_for_all bottleneck
   at the supervisor level — workers run independently, and a 10-second
   polling loop detects completions and immediately refills vacant slots.
   Added curl/sleep bash permissions where needed. Each supervisor keeps
   N workers running at all times with zero idle slots.

2. SESSION RESUME INSTEAD OF CLEANUP: The product-builder and all 4 pool
   supervisors now RESUME existing sessions from a previous interrupted
   run instead of aborting them. Phase C.0 queries the server for sessions
   titled "[CA-AUTO] supervisor:*" and adopts any that are still active
   into the monitoring loop. Pool supervisors similarly adopt existing
   "[CA-AUTO] worker-*" sessions. This enables "continue where you left
   off" — restarting the product-builder reconnects to running supervisors
   and workers rather than duplicating them.

3. DEDICATED CLEANUP AGENT: New ca-session-cleanup.md primary agent for
   explicit fresh-start cleanup. Run this BEFORE the product-builder when
   you want to abort all previous sessions and start completely fresh. It
   finds all "[CA-AUTO]" sessions, aborts them, and deletes them. This is
   the ONLY way to kill old sessions — the product-builder never does it
   automatically.

4. BOT SIGNATURES: All 26 agents that post content to Forgejo now include
   a mandatory "Bot Signature" section requiring every comment, issue body,
   PR description, and review to end with:

   ---
   **Automated by CleverAgents Bot**
   Supervisor: <category> | Agent: <agent-name>

   24 agents have hardcoded categories. 2 shared agents (ca-new-issue-creator,
   ca-epic-planner) use a parameter-based category from their caller's prompt.
2026-04-02 14:01:43 -04:00
freemo eee51b7d54 build(agents): use prompt_async for fire-and-forget supervisor launch + bash sleep for real waiting
Two fundamental architectural changes that solve the "supervisor exits and
never gets relaunched" problem:

1. PROMPT_ASYNC LAUNCH: The product-builder no longer uses the Task tool to
   launch supervisors. The Task tool blocks until ALL parallel tasks return,
   meaning if one supervisor exits, the product-builder can't relaunch it
   until all 10 others also exit. Instead, supervisors are now launched via
   the OpenCode Server HTTP API's POST /session/:id/prompt_async endpoint,
   which returns 204 immediately (true fire-and-forget). The product-builder
   then enters a bash-driven monitoring loop that checks session status
   every 60 seconds via curl and relaunches any dead supervisor instantly
   — independently of whether the other 10 are still running.

   Requires: opencode started with --port 4096 (fixed known port).
   Added curl and sleep to product-builder's bash allow list.

2. BASH SLEEP FOR GENUINE WAITING: All 11 supervisors now use the Bash
   tool with "sleep N" (and explicit timeout > sleep duration) for real
   blocking waits between polling cycles. Previously, pseudocode "wait N
   minutes" was interpreted by the LLM as "I'm done, return to caller" —
   causing supervisors to exit after their first idle cycle. The bash sleep
   call genuinely blocks the agent for the specified duration, then the
   agent resumes its loop. Every supervisor has a prominent instruction
   block explaining this mechanism and warning against returning to caller.

   All idle break/exit conditions removed across all 11 supervisors.
   Supervisors now loop forever: poll Forgejo → do work → bash sleep → repeat.

Changes across 12 agent definitions:

- product-builder: Phase C.2 rewritten to use curl + prompt_async.
  Phase C.3 rewritten as bash sleep + curl monitoring loop (checks every
  60s, relaunches dead supervisors, checks convergence every 10 min).
  Phase C.4 simplified to cleanup only.

- All 11 supervisors: Added "CRITICAL: Bash Sleep" instruction block.
  Replaced all pseudocode "wait N" with bash("sleep N", timeout=N*1.5).
  Removed all idle break/exit conditions — agents now sleep and re-poll
  instead of exiting.
2026-04-02 13:19:51 -04:00
freemo 52bfb1658a build(agents): remove all retry limits — agents never give up
Every finite retry cap in the agent system has been replaced with infinite
retry + diagnostic logging. The system now self-corrects indefinitely
rather than giving up and leaving work incomplete.

Changes across 9 agent definitions:

- ca-pr-self-reviewer: Merge retry changed from `for attempt in 1..3` to
  `WHILE True` with exponential backoff (10s → 5 min cap). Only exits
  the retry loop on success or merge conflict (which requires implementor
  rebase, not more retries).

- ca-continuous-pr-reviewer: Removed the `attempts >= 5` give-up block
  that posted "manual intervention required" and stopped retrying. PRs
  are now retried indefinitely with a diagnostic comment every 10 attempts.

- issue-implementor: Removed the "2 retries then permanently failed"
  budget. Failed issues are always re-queued. Every 3 consecutive failures
  posts a diagnostic comment on the Forgejo issue and resets the approach
  (clears prior attempt context to break out of repeating failure patterns).
  Removed the `skipped` list entirely — no issue is ever skipped.

- product-builder: Forgejo API retry changed from "3 times then halt" to
  "indefinitely with exponential backoff, cap 5 min." Only halts on auth
  revocation (HTTP 401/403). Worker failure docs updated to reflect the
  issue-implementor's infinite retry policy.

- ca-pr-checker, ca-timeline-updater, ca-spec-updater,
  ca-project-bootstrapper, ca-docs-writer: Git push conflict retry changed
  from "up to 3 times" to "indefinitely with rebase." Added reclone
  fallback: after every 5 consecutive push failures, the clone is deleted
  and recreated fresh to recover from corrupted git state.

NOT changed (already correct):
- ca-subtask-loop: 3-retry transient error classification is a heuristic
  for deciding when to escalate model tier. The loop itself already says
  "NEVER give up" and runs indefinitely at opus tier.
- ca-human-liaison: Already says "Never exit voluntarily."
2026-04-02 16:43:22 +00:00
CleverAgents 3db9113bac build(agents): replace rounds-based orchestration with continuous watchdog model
The product-builder was acting as a workflow orchestrator that ran
supervisors in sequential "rounds" (launch all → wait for ALL to finish →
check convergence → re-launch). This caused three problems:

1. Supervisors were treated as batch jobs, not services — they ran once
   and exited, leaving gaps in coverage between rounds.
2. The product-builder blocked on wait_for_all(), meaning if one supervisor
   ran for hours, all others were dead during that time.
3. Coordination flowed through the product-builder (passing data between
   supervisors) instead of through Forgejo.

The new model treats the product-builder as a process supervisor (like
systemd). Its only jobs are: launch all 11 supervisors in a single
parallel batch, keep them alive (re-launch on exit), and periodically
check convergence by querying Forgejo. It never coordinates between
supervisors — they self-coordinate exclusively through Forgejo issues,
PRs, and comments.

Changes across 11 agent definitions:

- product-builder: Replaced Phase C.2/C.3 rounds loop with watchdog
  loop (wait_for_any + re-launch). Added mandatory pre-flight checklist
  and post-dispatch validation requiring all 11 supervisors. Removed
  all "round" variables and batch-wait semantics.

- issue-implementor: Added 60-minute idle polling loop after queue
  drains — polls Forgejo for new issues every 60s before exiting,
  allowing it to pick up UAT bugs and human-created issues.

- ca-continuous-pr-reviewer: Increased idle exit from 50 polls (~25 min)
  to 300 polls (~150 min).

- ca-backlog-groomer: Increased from 30 cycles/5 clean to 200 cycles/
  20 clean before exit.

- ca-bug-hunter: Increased idle tolerance from 5 waits (~5 min) to 60
  waits (~60 min).

- ca-uat-tester: Increased idle tolerance from 5 waits (~5 min) to 60
  waits (~60 min).

- ca-architecture-guard, ca-spec-updater, ca-docs-writer,
  ca-timeline-updater: Converted from one-shot agents to continuous
  services with monitoring loops that re-check for new code/changes
  at 10-30 minute intervals and exit after 100-300 minutes idle.

- ca-agent-evolver: Clarified idle exit timing (~150 min).
2026-04-02 16:37:58 +00:00
freemo a0f3999362 build(agents): restructure for async pool supervision, PR merge lifecycle, and human interaction
Overhauls the agent orchestration architecture to solve three systemic issues:

1. PARALLELISM: Replaces the N-instances-per-stream-type model with a
   pool-supervisor pattern. Product-builder now launches ONE supervisor per
   stream type, each managing N workers internally. Eliminates batch-and-wait
   tail latency where 15 finished agents waited for 1 slow one. UAT tester
   and bug hunter gain dual-mode operation (pool supervisor + worker) with
   self-dispatch for parallel batches of narrow-scope workers.

2. PR MERGE LIFECYCLE: Fixes PRs being reviewed but never merged. PR self-
   reviewer now uses force_merge (no approval count required), checks CI
   status before merge, uses merge_when_checks_succeed for pending CI, and
   retries 3x on failure. Continuous PR reviewer converted to pool supervisor
   dispatching N parallel reviews, with approved-but-unmerged tracking and
   5-attempt merge retry budget. Stale threshold increased from 5 to 25 min.

3. HUMAN INTERACTION: New ca-human-liaison agent continuously monitors
   Forgejo for developer activity (comments, issues, reviews), responds
   with context-aware replies, triages new issues with full authority,
   decomposes epics into child issues, fills epic/legendary gaps, and
   coordinates spec changes through human-approved PR workflow.

Additionally adds ca-agent-evolver for self-improvement: analyzes agent
performance patterns and proposes targeted modifications to agent
definitions via PRs with 'needs feedback' label (human must approve).

Backlog groomer gains epic/legendary completeness analysis (passes 9-10)
to proactively create missing child issues for parent tickets with gaps.

All agent permission cross-references verified consistent.
2026-04-02 16:12:17 +00:00
freemo 0db70b9514 build: further expanded opencode agents for better parallelism and better isolation between agents environments 2026-04-02 03:55:43 -04:00
freemo ec83213294 build: Modified opencode agents to be more aggressive in being parallel 2026-04-02 03:06:32 -04:00
freemo d344989387 build: submited opencode agent files 2026-04-02 02:07:23 -04:00