Commit Graph

47 Commits

Author SHA1 Message Date
freemo 3470d3c061 chore(agents): improve ca-test-infra-improver — prevent massive duplicate issue creation
Reviewed and APPROVED. Closes #1802.
2026-04-05 21:09:53 +00:00
freemo 6a458e0dbb chore(agents): add mandatory labels to supervisor tracking issue creation
Reviewed and APPROVED. Closes #3070.
2026-04-05 21:08:29 +00:00
freemo bd5238f705 fix(agents): add critical safeguards to issue-implementor PR-first priority logic
Adds comprehensive bug prevention safeguards to the issue-implementor agent
definition to prevent critical failure where PR priority gate logic was not
correctly implemented, resulting in 37 PRs being incorrectly skipped.

Changes made:
- Added explicit warnings never to use `limit` parameter when fetching PRs
- Added comprehensive logging during PR analysis with progress indicators
- Added mandatory verification that total analyzed PRs equals total fetched
- Added PR-first rule enforcement logging showing when issue work blocked/allowed  
- Added error detection for violations of absolute PR priority rule
- Added historical bug documentation section with prevention measures

This ensures future instances will:
- Always fetch ALL open PRs (never use sampling/limits)
- Log verification counts during analysis
- Explicitly enforce the absolute PR-first priority rule
- Detect and report any violations of the priority rule

The bug caused the supervisor to incorrectly conclude "no PRs need work" 
when 37 out of 50 open PRs actually required automated attention, violating
the fundamental PR-FIRST rule that blocks all issue work until every PR
has an active worker.

ISSUES CLOSED: #3377
2026-04-05 15:50:37 -04:00
freemo 88cfc33ab2 Fix critical coordination bugs in implementation pool supervisor
- Fix session adoption logic with correct title patterns for both
  worker-issue-impl and worker-pr-fix sessions
- Add PR worker adoption to coordinate orphaned PR fix workers
- Enhance worker verification with comprehensive status checking,
  retry logic, and proper error handling
- Add defensive programming with worker count enforcement and 
  state validation to prevent coordination drift
- Improve JSON parsing with safe error handling throughout
- Add periodic maintenance cycle (every 5 iterations) for
  worker state validation and limit enforcement

These fixes resolve the core issue where the implementation pool
supervisor was not properly coordinating 40+ existing workers,
causing worker count to exceed the designed limit of 32.
2026-04-05 19:17:35 +00:00
freemo 1bd0c7999d fix(agents): Fix worker management, PR priority, and bot approval requirements
Fixed three critical issues in the CleverAgents autonomous system:

1. Worker Management: Enhanced issue-implementor health signaling to report
   detailed worker listings with session IDs and status. Added worker
   verification after dispatch to ensure workers actually start. Improved
   idle detection with aggressive work discovery when capacity is available.

2. PR Priority: Fixed PR work detection to include orphaned PRs from
   completed issues. Added absolute PR priority enforcement that blocks
   all issue work when any PR needs attention. Fixed worker dispatch
   prompts to clearly indicate operation mode (pr-fix vs issue-impl).

3. Bot Approval Requirements: Implemented single approval merging for bot
   PRs. Bot PRs (containing 'Automated by CleverAgents Bot') now merge
   with 1 approval while human PRs still require 2 per CONTRIBUTING.md.
   Updated branch protection to required_approvals: 1 with logic in agents
   to enforce the distinction. Added detection for approved-but-stuck PRs.

These changes ensure the system operates at maximum efficiency with proper
parallelism while maintaining quality gates through CI and code review.
2026-04-05 14:20:40 -04:00
freemo 642eb276a8 chore(agents): add mandatory labels to supervisor tracking issue creation
Add label requirements to all 16 supervisor launch prompts in
product-builder.md so that any tracking issues created by supervisors
include the required Type/Automation, State/In Progress, and
Priority/Medium labels from creation.

This eliminates the persistent label compliance gap reported by the
system watchdog, where supervisor-created tracking issues consistently
missed required State/ and Priority/ labels.

ISSUES CLOSED: #3070
2026-04-05 17:54:12 +00:00
freemo f945e15572 fix(agents): Fix issue-implementor supervisor to properly manage N parallel workers
The issue-implementor supervisor was defining but not using its worker dispatch
logic, causing it to run only 1 worker at a time instead of the configured N
parallel workers. This fix implements proper pool supervision:

- Implement sliding window dispatch pattern to maintain N active workers
- Use curl with prompt_async for asynchronous worker launches
- Track PR workers and issue workers separately with proper monitoring
- Add explicit worker count reporting in health signals (X/Y format)
- Integrate PR priority gate - no new issues until all PRs have workers
- Fix session monitoring and cleanup for completed/failed workers
- Update product-builder heartbeat to show worker pool status

The supervisor now continuously fills empty worker slots for maximum throughput,
properly managing up to CA_MAX_PARALLEL_WORKERS parallel workers as designed.

ISSUES CLOSED: #1
2026-04-05 16:50:47 +00:00
freemo 67b48ee817 feat!: restructure PR workflow to keep implementors accountable through merge
BREAKING CHANGE: This completely changes how PRs are handled in the system.
Implementors now own their work from creation through merge, and reviewers
focus solely on code quality assessment.

Major changes:
- issue-implementor: Adds absolute PR prioritization - no new issues until
  all PRs have workers. Dispatches workers in two modes: 'pr-fix' for
  existing PRs and 'issue-impl' for new issues.

- ca-issue-worker: Now operates in dual mode. In 'pr-fix' mode, handles
  review feedback, CI fixes, and merging. In 'issue-impl' mode, no longer
  exits after PR creation - monitors the PR until merged.

- ca-continuous-pr-reviewer: Simplified to ONLY dispatch code reviewers.
  Removed all fix, merge, and lifecycle management. Uses dynamic review
  focus areas to catch different types of issues.

- ca-pr-self-reviewer: Removed ALL capabilities beyond code review. No
  longer fixes issues, merges PRs, or manages issue states. Provides
  actionable feedback using rotating focus areas.

- ca-pr-checker: Clarified that it should only be invoked by ca-issue-worker,
  not by reviewers.

Benefits:
- No PR backlogs (absolute priority over new issues)
- Full accountability (creator owns through merge)
- Better reviews (focused on quality, not mechanics)
- Context preservation (no handoffs between agents)
- Cleaner history (amendments instead of fix commits)

This ensures implementors are accountable for their work while reviewers
provide high-quality, focused code reviews without operational overhead.
2026-04-05 16:10:01 +00:00
freemo a887712473 fix(agents): reduce health signal spam, add story point estimation, and improve supervisor monitoring
- Health Signal Frequency: Fixed spam from ca-test-infra-improver, ca-bug-hunter,
  and ca-uat-tester by changing health signals from every 2-10 cycles to every
  60 cycles (~10 min intervals)

- Story Point Assignment: Added automatic story point estimation to ca-project-owner
  and ca-human-liaison during issue verification based on subtask count and
  complexity (XS:1, S:2, M:3, L:5, XL:8, XXL:13)

- Deep Supervisor Inspection: Enhanced product-builder to check pool supervisors
  every 5 heartbeats for actual worker activity, detecting zombie supervisors that
  are running but not dispatching workers

- Watchdog Integration: Added watchdog alert monitoring to product-builder that
  checks for critical alerts every 3 heartbeats and takes action based on severity

- Alert Format Standardization: Updated ca-system-watchdog to use structured
  key-value alert format for easier parsing by product-builder

Fixes issues with excessive Forgejo API usage, missing story point assignments
during triage, and improves overall system reliability through better monitoring.
2026-04-05 15:32:04 +00:00
freemo cce207a7bb fix: improve agent coordination with PR prioritization and unified status tracking
This commit addresses two critical issues in the CleverAgents autonomous system:

1. Pull Request Bottleneck:
   - Added PR prioritization gate to issue-implementor that checks for open PRs before taking new issues
   - Implementation pool now pauses new issue work when PRs need attention (failing CI, awaiting review, stale)
   - Re-checks PR status every 5 cycles to ensure PRs don't accumulate
   - Posts clear status updates explaining why new work is paused

2. Status Issue Proliferation:
   - Product-builder now creates ONE canonical session state issue: '[Automated] CleverAgents Build Session - <date>'
   - All 16 supervisors receive the session state issue number and post ALL status updates there
   - Removed separate tracking issue creation from ca-uat-tester and other agents
   - Standardized health signal format across all agents for consistent monitoring

The standardized health signal format enables system-watchdog to:
- Detect zombie supervisors from a single issue
- Monitor active workers per pool
- Track work progress across all agents
- Identify stuck or inactive agents

Modified agents:
- issue-implementor: Added PR prioritization gate
- product-builder: Single session state issue management
- All pool supervisors: Updated to use session state issue
- All agents: Standardized health signal format

These changes ensure PRs get merged quickly and reduce issue tracker noise.
2026-04-05 14:54:22 +00:00
freemo 03e5403374 chore(agents): add auto-rebase on conflict to PR reviewer pool
Agent evolver identified a systematic pattern:
- Pattern: Dead-end conflict handling in PR reviewer
- Evidence: When the reviewer detects merge conflicts, it posts a comment
  saying 'implementor needs to rebase' and marks the PR as done. But the
  issue worker has already exited after PR creation — nobody acts on the
  rebase request. This created a dead end where 11+ approved PRs were
  abandoned due to conflicts (PRs #1219, #1236, #1247, #1248, #1220,
  #1237, #1238, #1246, #1252, #1269).
- Fix: When the reviewer reports a conflict, the pool supervisor (which
  has full bash permissions and maintains a clone) now attempts to rebase
  the PR branch onto latest master itself. If the rebase succeeds, the
  PR is re-queued for merge. If it fails, the PR is abandoned with a
  clear comment explaining manual intervention is needed.

This change requires human approval before taking effect.
2026-04-05 07:53:08 +00:00
freemo af9c672d1c chore(agents): improve ca-test-infra-improver — prevent massive duplicate issue creation
Approved proposal: #1802
Pattern: prompt_improvement — duplicate issue explosion
Evidence: Agent created 48+ TEST-INFRA issues with massive duplication across
sessions: 6 about dependency caching, 7 about matrix builds, 5 about parallelize
CI jobs, 3 about redundant setup elimination, 7 about clone failures.
Fix: Replace vague 3-line dedup guidance with rigorous 5-step mandatory dedup
procedure including keyword search, cross-area search, closed issue search,
auditable dedup proof in issue body, and conservative filing policy.

ISSUES CLOSED: #1802
2026-04-05 06:48:30 +00:00
freemo 329799a29e chore(agents): improve agent efficiency, scope control, and PR/issue lifecycle
Tiered worker allocation: implementors get full N workers, PR reviewers
N//2, and discovery agents (UAT, bug hunter, test-infra) N//4 to prevent
issue creation from outpacing implementation throughput.

Dead PR cleanup: PR reviewer now auto-closes stale, superseded,
unmergeable, and orphaned PRs every 5 cycles.

Post-merge issue closure: PR reviewer and self-reviewer now verify that
linked issues actually close after merge, removing satisfied dependency
links that block closure. Backlog groomer scans last 24h of merged PRs
and repairs open PR dependency health (reversed links, stale deps).

Closed-item guards: agents no longer wastefully modify closed issues/PRs.
Human liaison still responds to new human comments on closed items but
efficiently without re-triage. Backlog groomer prioritizes open items
first. System watchdog detects and flags closed-item interaction waste.

Scope control: non-critical findings from UAT testers and bug hunters now
route to backlog (no milestone + Priority/Backlog) instead of inflating
active milestones. Epic planner and issue creator skip converging
milestones. Project owner monitors and alerts on scope creep.
2026-04-05 00:37:25 -04:00
freemo 72e0db2592 chore(ci): capture nox output as CI artifacts and teach agents to read them
All 8 nox-running CI jobs in .forgejo/workflows/ci.yml now capture
stdout+stderr to build/nox-<job>-output.log via `2>&1 | tee` and upload
the log as a named Forgejo artifact (if: always(), retention-days: 30).
Artifact names follow the pattern ci-logs-<job>:
  ci-logs-lint, ci-logs-typecheck, ci-logs-security, ci-logs-quality,
  ci-logs-unit-tests, ci-logs-integration-tests, ci-logs-e2e-tests,
  ci-logs-coverage

Seven agent definitions updated with a CI Log Artifacts section:
  ca-pr-checker.md: artifact table + curl download instructions; Step 2
    now downloads the relevant artifact before dispatching fix subagents.
  ca-lint-fixer.md, ca-typecheck-fixer.md, ca-unit-test-runner.md,
  ca-integration-test-runner.md, ca-coverage-checker.md,
  ca-pr-self-reviewer.md: each receives a section explaining which
    artifact corresponds to its domain and how to use it.

Design notes:
- tee (not redirect) preserves output in CI job logs AND captures to file
- if: always() ensures artifacts are available even when the job fails
- Multi-session jobs (lint, security) use tee -a to append to one file
- Existing coverage-reports artifact preserved alongside ci-logs-coverage

ISSUES CLOSED: #2750
2026-04-04 19:58:49 +00:00
freemo 2c736373cc fix(agents): use correct IssueMeta schema for Forgejo dependency API
The Forgejo blocks/dependencies REST API requires the IssueMeta schema
with owner, repo, and index fields — not the undocumented dependency_id
field that was previously used. All 10 curl examples across 6 agent
definitions were using {"dependency_id": N} which returns a 404
IsErrRepoNotExist error. Updated to the correct format:
{"owner": "<owner>", "repo": "<repo>", "index": N}

Files updated:
- ca-new-issue-creator.md (2 occurrences)
- ca-pr-api-creator.md (1 occurrence)
- ca-state-reconciler.md (1 occurrence)
- ca-project-owner.md (1 occurrence)
- ca-backlog-groomer.md (2 occurrences)
- ca-epic-planner.md (3 occurrences)

ISSUES CLOSED: #2750
2026-04-04 17:30:45 +00:00
freemo 77427bd7d3 chore(agents): add deep session introspection to system watchdog
Enhance the system watchdog with OpenCode Server API session introspection
to read actual supervisor conversations, tool calls, and todo lists.

Upgrade Audit 6 (Zombie Detection) to use message-based analysis instead
of only checking Forgejo activity — reads last 5 messages from each
supervisor session to detect sleep-only patterns, error loops, and
identical repeated tool calls.

Add Audit 11 (Quick Session Spot-Check) running every 5-minute cycle:
scans the 3 most recently active sessions for critical policy violations
including force_merge usage, direct pushes to master, and type:ignore
suppressions in written code.

Add Audit 12 (Deep Session Introspection) running every 30 minutes:
full analysis of all 16 supervisor sessions reading last 10 messages
and todo lists. Detects misbehavior patterns, progress stalls via todo
list analysis, conversation health metrics (error rates, sleep ratios),
context exhaustion signals, and cross-agent conflicts (multiple agents
touching the same PR or issue).

Update action dispatch to handle new finding types: force_merge_detected,
direct_push_to_master, stuck_supervisor, looping_supervisor, high_error_rate,
context_exhaustion, and cross_agent_pr_conflict.
2026-04-03 18:13:19 +00:00
freemo 8c13e63c75 chore(agents): add system watchdog, remove force_merge, fix 9 systemic agent issues
Add ca-system-watchdog (16th supervisor) for continuous system health
monitoring with quality gate auditing, zombie detection, ticket state
reconciliation, and priority enforcement. Add ca-quality-enforcer and
ca-state-reconciler as one-off fix agents dispatched by the watchdog.

Critical fix: remove all force_merge: true usage from ca-pr-self-reviewer
which was bypassing branch protection and allowing PRs to merge with
failing CI. Replace with strict CI-gating merge logic that respects
branch protection rules per CONTRIBUTING.md.

Update product-builder to launch 16 supervisors, strengthen anti-return
language with explicit context hygiene, add tracking ticket lifecycle
management (one open at a time, closed on completion).

Update ca-project-bootstrapper with strict branch protection config
requiring status-check CI context, 2 approvals, and dismiss stale reviews.
Fix label set to match CONTRIBUTING.md exactly.

Update issue-implementor with priority gate enforcing lowest-milestone-first
and critical-bugs-first ordering. Update ca-backlog-groomer with closed
issue state reconciliation, PAT for REST API dependency operations, and
health signaling. Update ca-spec-updater with proactive full-scan mode.

Add health signaling and context self-management to 7 continuous
supervisors to prevent zombie sessions from context exhaustion.

Strengthen state label transitions in ca-pr-self-reviewer, ca-pr-api-creator,
ca-issue-state-updater, and ca-backlog-groomer to ensure closed issues
always have correct terminal state labels.

Add Forgejo PAT and REST API curl templates for dependency link creation
to ca-backlog-groomer and ca-project-owner since the MCP does not support
dependency manipulation.
2026-04-03 14:01:41 -04:00
freemo dd363e2a45 docs(agents): clarify product-builder execution model and prevent implementation confusion
Added critical warning block and step-by-step checklist to product-builder.md
to ensure the agent always follows the correct workflow:

1. Launch 15 supervisors via curl to http://localhost:4096/session/:id/prompt_async
2. Monitor them with bash sleep loop (60 seconds between checks)
3. Re-launch any that exit

Key changes:
- ⚠️ Critical execution model warning at top (what to do / what NOT to do)
- 📊 Execution flow diagram showing all phases
-  Step-by-step Phase C checklist (C.1: Pre-flight, C.2: Launch, C.3: Monitor)
- 🔒 Clearer permission blocks with explicit bans on implementation agents
- 📝 Comments explaining why supervisors use curl not Task tool

This prevents the product-builder from trying to implement issues directly,
which is the supervisors' job. Product-builder is a process supervisor (like
systemd), not a worker.
2026-04-03 13:38:33 -04:00
freemo 8866c58bd4 fix(agents): prevent backlog groomer from closing PRs as duplicates of their tracking issues
Agent evolver identified a critical systematic pattern:
- Pattern: The backlog groomer was closing PRs as 'duplicates' of their
  linked tracking issues. A PR containing 'Closes #N' was being treated
  as a duplicate of issue #N, when it is actually the implementation
  delivery vehicle for that issue.
- Evidence: At least 12 PRs were incorrectly closed (#1219, #1236, #1247,
  #1269, #1267, #953, #1198, #1220, #1237, #1238, #1246, #1248) — all
  with the same 'Duplicate Detected' comment pattern from groomer-1.
- Fix: Added explicit instructions to skip PRs during duplicate detection,
  added a guard in the analysis loop pseudocode, and added a rule in the
  Important Rules section.

This change requires human approval before taking effect.

ISSUES CLOSED: #2180
2026-04-03 07:09:23 +00:00
freemo bbfa5bef01 Merge pull request 'chore(agents): add open PR awareness to UAT tester duplicate avoidance' (#1446) from improvement/uat-tester-check-open-prs into master 2026-04-03 04:13:10 +00:00
freemo 51fcd13220 Merge pull request 'chore(agents): add pre-PR rebase step to issue worker to prevent stale conflicts' (#1407) from improvement/issue-worker-rebase-before-pr into master 2026-04-03 04:10:46 +00:00
freemo f6ba8fee56 chore(agents): add pre-PR rebase step to issue worker
Agent evolver identified a systematic pattern:
- Pattern: PR stale/conflict cascade
- Evidence: 11+ PRs were approved but closed without merge due to
  conflicts. PRs #1248, #1247, #1237, #1236, #1220, #1219, #1238,
  #1246, #1269 were all bulk-closed as stale. Reviewer notes on
  #1248, #1220, #1219, #1252 explicitly mention 'merge blocked by
  conflicts'. With 16 parallel workers, master moves fast and branches
  created minutes earlier are already behind by the time PRs are created.
- Fix: Add a rebase-onto-latest-master step (Phase 3, Step 3.0) in
  ca-issue-worker before committing and creating the PR. This ensures
  the branch is current when the PR is opened, dramatically reducing
  the chance of merge conflicts when the reviewer processes it.

This change requires human approval before taking effect.
2026-04-03 03:57:52 +00:00
freemo 81319b575a Merge pull request 'fix(agents): add two-phase claim protocol to prevent duplicate PR reviews' (#1326) from improvement/pr-reviewer-double-claim-prevention into master 2026-04-03 03:41:30 +00:00
freemo 9c7876a913 chore(agents): add open PR awareness to UAT tester duplicate avoidance
Agent evolver identified a systematic pattern:
- Pattern: UAT tester filing bugs for features already being implemented
- Evidence: 25+ UAT bugs filed for TUI MainScreen features (#1329-#1355)
  that already had open implementation PRs (#1219, #1236, #1237, #1238,
  #1246, #1247, #1248, etc.). The tester reported 'missing sidebar',
  'missing tab bar', 'missing escape navigation' etc. while PRs
  implementing these exact features were open and under review.
- Fix: Add step 4 to duplicate avoidance requiring the tester to check
  for open PRs before filing 'missing feature' bugs.

This change requires human approval before taking effect.
2026-04-03 03:38:48 +00:00
freemo 28ddfe3873 Merge pull request 'chore(agents): add finding validation requirements to bug hunter' (#1445)
chore(agents): add finding validation requirements to bug hunter

Adds mandatory finding validation checklist to ca-bug-hunter agent prompt
to reduce false-positive and speculative issue filings.

Reviewed-by: ca-pr-self-reviewer
2026-04-03 03:35:47 +00:00
freemo a538713134 refactor(agents): enforce strict curl-only permissions for all supervisors
BREAKING CHANGE: Supervisors can no longer use Task tool to launch workers

Major refactor of the permission model for product-builder and all 15
continuous supervisors to enforce strict separation: supervisors MUST use
curl/prompt_async via bash to launch workers, and CANNOT use the Task tool.

Key Changes:

1. Product-Builder Permissions (product-builder.md):
   - Removed ALL Task permissions for supervisors (previously had 17)
   - Kept Task permissions ONLY for 7 one-shot agents:
     ca-project-bootstrapper, ca-ref-reader, ca-issue-finder,
     ca-session-persister, ca-product-verifier, ca-milestone-reviewer,
     ca-final-reporter
   - Restricted bash to: echo, curl, sleep, jq only
   - Removed Phase B (Architecture) and Phase C.1 (Planning)
   - Updated to launch 15 supervisors (up from 13)

2. New Continuous Supervisors:
   - ca-architect: Converted from one-shot to continuous supervisor
     Monitors for spec needs, new milestones, ambiguities
   - ca-epic-planner: Converted from one-shot to continuous supervisor
     Monitors for milestones without issues, incomplete epics

3. All 15 Supervisors - Standardized Permissions:
   - Removed ALL Task permissions for launching workers
   - Workers MUST be launched via curl to OpenCode Server prompt_async API
   - Added 'jq *' for JSON parsing (replacing python3)
   - Restricted bash to specific commands only (deny all, allow specific)
   - Git commands restricted to specific operations (clone*, fetch*, etc.)
   - Directory operations (cd, mkdir, rm -rf) only where needed

4. Supervisor-Specific Updates:
   - issue-implementor: Removed ca-issue-worker task permission
   - ca-continuous-pr-reviewer: Added git + directory ops, removed worker tasks
   - ca-uat-tester: Added read-only file/git commands, removed self-dispatch
   - ca-bug-hunter: Restricted git to read-only, removed self-dispatch
   - ca-test-infra-improver: Added read-only commands, removed self-dispatch
   - ca-human-liaison: Removed ca-epic-planner/ca-architect task permissions
   - ca-agent-evolver: Added git + directory operations
   - ca-architecture-guard: Added read-only + git clone operations
   - ca-spec-updater: Added git + directory operations
   - ca-backlog-groomer: Removed ca-epic-planner task permission
   - ca-docs-writer: Added git + directory operations
   - ca-timeline-updater: Added git + directory operations
   - ca-project-owner: Minimal permissions (curl, jq, sleep only)

Impact:
- Proper separation of concerns: supervisors orchestrate, workers execute
- No possibility of supervisors blocking on Task tool calls
- True fire-and-forget worker launching via prompt_async
- Consistent permission model across all 15 supervisors
- Maximum parallelism with proper isolation

Architecture now enforces: Product-builder → 15 supervisors → N workers
All launched via curl/prompt_async, NO Task tool for supervisors.
2026-04-03 02:33:00 +00:00
freemo 921c13f410 fix(agents): restore server mode + prompt_async supervisor launch from 9bbec0e6
Restores the working OpenCode server mode + curl-based async supervisor
launch functionality from commit 9bbec0e6 (2026-04-02) and updates it for
the current 13-supervisor architecture.

Changes applied to 7 agent files (938 insertions, 221 deletions):

1. product-builder.md: Restored from 9bbec0e6 and updated for 13 supervisors
   - Full bash permissions for curl/sleep
   - Server URL: http://localhost:4096
   - Launch via POST /session + POST /session/:id/prompt_async
   - Session resume (adopts existing [CA-AUTO] sessions)
   - Added ca-test-infra-improver and ca-project-owner to launch sequence
   - Updated concurrent worker calculations (~5N + ~8 singletons)

2. issue-implementor.md: Restored curl-based worker dispatch
   - 10-second polling loop with bash sleep
   - Worker sessions via prompt_async
   - Session resume for existing workers

3. ca-continuous-pr-reviewer.md: Restored curl dispatch pattern
4. ca-uat-tester.md: Restored curl pool mode
5. ca-bug-hunter.md: Restored curl pool mode
6. ca-test-infra-improver.md: Added self-dispatch permission
7. ca-session-cleanup.md: Restored utility agent

Architecture: 5 pool supervisors (N workers each) + 8 singleton supervisors
= 13 total supervisors running async via prompt_async.

Replaces the broken prompt_async implementation from commit 074c472e that
removed supervisors from task permissions without working server launch.

To use: Start OpenCode with --port 4096, then launch product-builder.

Refs: commit 9bbec0e6 (working version), commit 074c472e (broken version)
2026-04-02 20:56:06 -04:00
freemo 629154488e Merge pull request 'chore(agents): consolidate UAT supervisor progress reports into comments' (#1545) from improvement/uat-tester-consolidate-progress-reports into master 2026-04-02 23:02:59 +00:00
freemo 074c472e36 build(agents): restructure product-builder as supervisor launcher, force prompt_async everywhere
The product-builder was ignoring prompt_async instructions and implementing
tickets directly because its identity was "autonomous product builder that
handles everything." The LLM absorbed this framing and defaulted to doing
the work itself rather than launching supervisors.

Root cause fix — two structural changes applied to product-builder AND all
5 pool supervisors:

1. IDENTITY REFRAME: The product-builder is now explicitly a "Supervisor
   Launcher and Monitor" — not a "product builder." The opening section
   states: "YOUR ONLY JOB: Launch 13 supervisor sessions via bash curl
   and keep them alive." A prominent DO NOT list prohibits implementing
   issues, creating PRs, writing code, or doing any work a supervisor
   handles. The file was compressed from 975 to 312 lines — prerequisites
   are brief, the supervisor launch is the first major section, and the
   monitoring loop is the primary content.

2. WORKER AGENTS REMOVED FROM TASK PERMISSIONS: Every pool supervisor had
   its worker agent in the task permissions, giving the LLM the choice to
   use the Task tool instead of prompt_async. Now removed:
   - issue-implementor: removed ca-issue-worker
   - ca-continuous-pr-reviewer: removed ca-pr-self-reviewer, ca-pr-checker
   - ca-uat-tester: removed ca-uat-tester (self-dispatch)
   - ca-bug-hunter: removed ca-bug-hunter (self-dispatch)
   - ca-test-infra-improver: removed ca-test-infra-improver (self-dispatch)

   Each supervisor now has a prominent framing block at the top: "YOU ARE A
   POOL SUPERVISOR. You dispatch workers via bash curl prompt_async. Worker
   agents have been REMOVED from your task permissions."

   Non-worker task permissions preserved (ca-ref-reader, ca-spec-reader,
   ca-new-issue-creator, etc.) for legitimate one-shot subagent calls.
2026-04-02 18:50:22 -04:00
freemo 50357e435c chore(agents): consolidate UAT supervisor progress reports into comments
Approved proposal: #1483
Pattern: workflow_fix — UAT supervisor creates 13+ separate issues for
progress reports instead of posting comments on a single tracking issue.
Evidence: 13 separate [UAT-SUPERVISOR] Progress Report issues created in
65 minutes during v3.7.0 session, polluting the issue tracker.
Fix: Create ONE tracking issue at startup, post all progress as comments.
Also reduces report frequency from every 2 cycles to every 10 cycles.

ISSUES CLOSED: #1483
2026-04-02 20:49:02 +00:00
freemo 5eb272b50f fix(agents): add two-phase claim protocol to prevent duplicate PR reviews
Agent evolver identified a systematic pattern:
- Pattern: Multiple reviewer pool instances claiming the same PR within
  seconds of each other, leading to duplicate reviews and wasted resources.
- Evidence: PRs #1219, #1236, #1247, #1198 were all double-claimed by
  pr-reviewer-5 and pr-reviewer-4 within 28-64 seconds of each other.
  The existing 'check before claiming' protocol has a race window that
  is too small when multiple pools dispatch simultaneously.
- Fix: Added a two-phase claim protocol — after posting a claim comment,
  wait 5 seconds and re-check for competing claims. Ties are broken by
  lexicographic comparison of claim tokens.

This change requires human approval before taking effect.
2026-04-02 19:28:14 +00:00
freemo d2322b3206 build(agents): add test infrastructure improver and project owner agents (13 supervisors)
Adds two new agent types to the autonomous system, bringing the total
from 11 to 13 supervisors launched by the product-builder via prompt_async.

New agents:

1. ca-test-infra-improver (12th supervisor — pool with N workers):
   Dual-mode agent following the ca-bug-hunter pattern. In pool mode,
   dispatches N parallel workers via prompt_async to analyze 8 aspects
   of the testing infrastructure: CI execution time, coverage gaps, test
   architecture (BDD quality), flaky tests, CI pipeline optimization,
   test data quality, missing test levels (Behave/Robot/ASV per
   CONTRIBUTING.md), and dependency security. Workers file actionable
   Type/Testing or Type/Task issues. Hard constraint: never disables
   or weakens existing checks — only proposes additions and optimizations.
   Uses Gemini 2.5 Pro for large context. Follows all established patterns
   (clone isolation, bash sleep, prompt_async dispatch, session resume,
   bot signature).

2. ca-project-owner (13th supervisor — singleton, no pool):
   Acts as autonomous project owner. Continuously triages State/Unverified
   issues following CONTRIBUTING.md's 6-step triage process. Assigns
   MoSCoW labels (Must Have / Should Have / Could Have) based on the
   specification and milestone goals. Makes strategic priority decisions.
   Tags specific developers with questions in Forgejo comments (discovers
   expertise from git history and Forgejo assignments). Periodically
   re-evaluates MoSCoW labels as the project evolves. Follows up on
   unanswered questions after 48 hours. Single instance, not a pool —
   one project owner is sufficient. Uses Opus for nuanced strategic
   judgment. Launched via prompt_async like all other supervisors.

Modified files:

- product-builder.md: Updated from 11 to 13 supervisors in all locations
  (architecture table, Phase C.2 launch list with entries #12 and #13,
  validation count, checkpoint text, self-coordinate table). Added
  test-infra-pool to pool supervisors list and project-owner to singletons.

- ca-human-liaison.md: Clarified MoSCoW responsibility split — the liaison
  only adjusts MoSCoW labels when relaying explicit human feedback. The
  ca-project-owner handles autonomous MoSCoW assignment.
2026-04-02 15:19:53 -04:00
freemo 7e38aad929 build(agents): force prompt_async by removing supervisors from task permissions
The product-builder was ignoring the prompt_async instructions and falling
back to the Task tool for launching supervisors. It was also only launching
a few supervisors instead of all 11 because the pseudocode was too abstract.

Root cause: All 11 supervisor agents were listed in the task permissions,
so the LLM had a choice between Task (familiar, simpler) and bash curl
(correct but unfamiliar). It chose Task every time.

Fix — three changes:

1. REMOVED all 11 supervisor agents from task permissions. The product-
   builder physically cannot invoke them via the Task tool anymore. Only
   one-shot agents remain in task permissions (ca-epic-planner,
   ca-session-persister, ca-product-verifier, ca-ref-reader, etc.).

2. REWROTE Phase C.2 as concrete curl command templates instead of
   abstract pseudocode. The agent now has the exact curl pattern to
   copy-paste for each supervisor, with clear variable placeholders.
   Added a mandatory validation step: wc -l the tracking file and
   confirm exactly 11 entries before proceeding.

3. ADDED aggressive warnings at three levels:
   - Top of file: bold mandatory notice about prompt_async
   - Phase C.2: large boxed warning block prohibiting the Task tool
   - Coordination rules: explicit statement that supervisors are
     removed from task permissions
   - Monitoring loop: reminder to use bash curl for re-launches
2026-04-02 18:52:09 +00:00
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 3e9de4ca21 build(agents): enforce CONTRIBUTING.md label, milestone, and dependency compliance
Issues and PRs created by agents were missing required labels, milestones,
and Forgejo dependency links per CONTRIBUTING.md. This commit adds explicit
API call instructions and a continuous compliance audit to fix the gaps.

Changes across 6 agent definitions:

- ca-new-issue-creator: Added curl bash permission. Added explicit
  post-creation compliance steps: set labels (State/Unverified, Type/*,
  Priority/*) via forgejo_add_issue_labels, set milestone via
  forgejo_update_issue, create parent Epic dependency link via REST API
  (POST /issues/{child}/blocks with parent Epic number — correct direction:
  child blocks parent). Added compliance verification step.

- ca-epic-planner: Added curl bash permission. Added post-creation API
  call checklists for both Epics (labels, Legendary link) and child issues
  (labels, milestone, Epic dependency link, inter-issue dependency links).
  Added compliance verification step.

- ca-backlog-groomer: Added curl and sleep bash permissions. Expanded
  Pass 4 (Label Quality) to auto-fix missing labels (State, Type, Priority)
  and milestones via Forgejo API. Added PR label/milestone compliance
  checking. Added new Pass 9 (Dependency Link Compliance) to auto-fix
  missing parent Epic links, PR-to-issue links, and wrong dependency
  direction. Added new Pass 10 (Issue Body Compliance) to flag missing
  Metadata, Subtasks, and Definition of Done sections.

- ca-pr-api-creator: Added curl bash permission. Replaced vague "add
  dependency" instruction with explicit REST API curl call for creating
  PR-blocks-issue dependency link. Added post-creation compliance
  verification step.

- ca-agent-evolver: Added Priority/Backlog label and milestone assignment
  to proposal issues.

- ca-spec-updater: Added Priority/Backlog label and milestone assignment
  to proposal issues.
2026-04-02 18:28:08 +00:00
freemo 270160eca9 build(agents): add proposal issue gate before spec and agent-definition PRs
Both the spec-updater and agent-evolver previously skipped straight to
creating PRs with 'needs feedback' for proposed changes. The user needs
a two-step human-approval workflow:

Step 1: Agent creates a PROPOSAL ISSUE with 'needs feedback' label
  describing what it wants to change and why. No branch, no code changes.
Step 2: Human reviews the issue and approves it (by removing 'needs
  feedback', adding 'State/Verified', or commenting with approval).
Step 3: Agent detects approval, normalizes labels, creates branch + PR
  (also with 'needs feedback') implementing the approved change.
Step 4: Human reviews the PR and merges it.

Changes across 3 agent definitions:

- ca-agent-evolver: Step 4 split into proposal issue creation (Step 4)
  and approved-proposal implementation (Step 5). Added pending_proposals
  and pending_prs state tracking. Approval detected via 3 signals:
  label removal, State/Verified addition, or human approval comment.

- ca-spec-updater: Removed the minor/major classification and the
  "commit directly to master" path. ALL spec changes now go through
  proposal issues first (Step 6a creates issue, Step 7 monitors for
  approval). Added pending_spec_proposals and rejected_proposals state.
  Approval check runs every cycle before checking for new merged PRs.

- ca-human-liaison: Added Step 4 guard — issues with 'needs feedback'
  label are NOT auto-verified. The liaison acknowledges them with a
  comment but does not change state labels. Only issues WITHOUT 'needs
  feedback' proceed to the normal auto-verify flow (now Step 5).
2026-04-02 14:19:56 -04:00
freemo b1a8289d57 chore(agents): add finding validation requirements to bug hunter
Agent evolver identified a systematic pattern:
- Pattern: Bug hunter filing speculative/false-positive issues
- Evidence: Issue #1408 filed a TLS/SSL bug caused by the agent using
  the wrong hostname (git.cleveragents.com vs git.cleverthis.com).
  Issue #1412 filed a vague 'review concurrency' audit request without
  reading any actual code. These waste groomer and implementor time.
- Fix: Add mandatory validation checklist before filing any issue,
  requiring concrete code evidence and prohibiting speculative findings.

This change requires human approval before taking effect.
2026-04-02 18:13: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 79403188f6 build(agents): add stale supervisor cleanup at startup to prevent duplicates
When the product-builder is interrupted mid-run (Ctrl+C, crash, timeout),
supervisor sessions launched via prompt_async survive independently on the
OpenCode server. Restarting the product-builder without cleanup creates
duplicate supervisors — 22 agents competing for the same work, causing
duplicate PR reviews, conflicting git pushes, and wasted resources.

Added Phase C.0 (runs before planning or launching) that:
1. Queries GET /session for all server sessions
2. Filters for sessions with titles starting with "[CA-AUTO] supervisor:"
3. Aborts any that are still active via POST /session/:id/abort
4. Deletes the stale sessions via DELETE /session/:id
5. Cleans up the /tmp/ca-supervisor-sessions.env tracking file
6. Logs the cleanup count to the session state issue

Also changed the supervisor session title convention from
"supervisor: <name>" to "[CA-AUTO] supervisor: <name>" to reliably
distinguish product-builder-managed sessions from user-created ones.
2026-04-02 14:01:36 -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 c937abdc09 build: Fixed opencode agents so they dont accidentally delete PR body 2026-04-02 03:09:55 -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