Commit Graph

1788 Commits

Author SHA1 Message Date
freemo db7e044b18 refactor: complete tier selector architecture migration for all agents
BREAKING CHANGE: Removed all tier-specific agents in favor of model-agnostic versions

Key changes:
- Create model-agnostic agents:
  - behave-tester.md (replaces 4 tier-specific versions)
  - robot-tester.md (replaces 4 tier-specific versions)
  - coverage-improver.md (replaces coverage-checker with escalation)
- Convert existing agents to support escalation:
  - lint-fixer.md (now model-agnostic)
  - test-fixer.md (now model-agnostic)
  - integration-test-runner.md (now model-agnostic)
- Update tier selectors to support all new agents
- Update quality-gate-escalator to handle all quality fixers
- Update subtask-loop to use quality-gate-escalator for all quality gates
- Empty redundant tier-specific agents for deletion:
  - All implementer-{tier}.md files
  - All behave-tester-{tier}.md files
  - All robot-tester-{tier}.md files
  - coverage-checker.md (replaced by coverage-improver.md)

Benefits:
- Eliminates ~90% code duplication
- All agents now support full 4-tier escalation (haiku→codex→sonnet→opus)
- Consistent escalation behavior across all agent types
- Single source of truth for each agent's logic
- Significant cost savings by defaulting to haiku for all quality gates

The system now uses tier selectors (tier-haiku, tier-codex, tier-sonnet, 
tier-opus) that set the model and invoke model-agnostic worker agents,
eliminating the need for separate implementations per model tier.
2026-04-06 17:52:33 -04:00
freemo 60d385d8b1 build: Fixed some bad permissions on primary agents 2026-04-06 17:51:44 -04:00
freemo 5270987624 refactor: remove version suffixes from subtask-loop agent
- Update subtask-loop.md to use the new tier selector architecture
- Remove v2 references - we maintain only the latest version
- Effectively remove subtask-loop-v2.md (emptied for deletion)
- Keep single source of truth without version suffixes

The subtask-loop agent now uses the tier selector architecture
without any version references.
2026-04-06 21:31:52 +00:00
freemo 4aa236b7df feat: implement tier selector architecture for escalation without redundancy
BREAKING CHANGE: New escalation architecture eliminates duplicate agent code

Key changes:
- Add tier selector agents (tier-haiku, tier-codex, tier-sonnet, tier-opus)
  that set the model and invoke worker agents
- Create model-agnostic implementer.md that inherits model from caller
- Update unit-test-runner and typecheck-fixer to support escalation
- Add quality-gate-escalator to manage escalation for quality fixers
- Create subtask-loop-v2.md demonstrating the new architecture
- Document the new architecture in escalation-architecture-proposal.md

Benefits:
- Eliminates 90% code duplication across tier-specific agents
- Single source of truth for implementation logic
- Easy to add new tiers or modify escalation paths
- Consistent behavior across all model tiers
- Quality gate fixers now support full escalation starting from haiku

The architecture leverages the fact that agents without a model specification
inherit the model from their caller, allowing thin tier selectors to control
which model executes the actual work.
2026-04-06 21:26:20 +00:00
freemo 76333cf640 refactor: optimize agent models for cost reduction
- Change human-liaison from opus to sonnet (still needs complex reasoning)
- Change issue-analyzer from sonnet to haiku (text parsing task)
- Change lint-fixer from sonnet to haiku (pattern-based fixes)
- Change pr-description-writer from sonnet to haiku (template-based writing)
- Change issue-note-writer from sonnet to haiku (documentation formatting)

These changes reduce costs by 60-80% for high-frequency mechanical tasks
while maintaining quality through the escalation system for edge cases.
2026-04-06 21:19:50 +00:00
freemo 58b1e50410 feat: add 4-tier escalation system with Haiku bottom tier
- Add implementer-haiku.md as ultra-fast, cost-effective first tier
- Add behave-tester-haiku.md and robot-tester-haiku.md for fast testing
- Update difficulty-evaluator.md to assess 4 tiers (haiku/codex/sonnet/opus) 
- Update subtask-loop.md with 4-tier escalation logic and state persistence
- Add PR comment state tracking for escalation recovery after restarts
- Conservative evaluator defaults to Haiku when in doubt for cost efficiency
- New escalation path: haiku → haiku → codex → sonnet → opus (forever)
- Includes state persistence to resume from correct tier after agent restarts
2026-04-06 21:03:50 +00:00
freemo 4591ae053d feat(agents): remove ca- prefix to make agents generic
- Rename 72 agent files: ca-{name}.md → {name}.md
- Update all agent references across 76 files:
  - Permission blocks: "ca-agent": allow → "agent": allow
  - Invocations: invoke ca-agent → invoke agent
  - Bot signatures: Agent: ca-agent → Agent: agent
  - Temporary paths: /tmp/ca-* → /tmp/*
  - Clone directories: /tmp/ca-{id} → /tmp/{id}
- Preserve CleverAgents references (190 legitimate uses)
- All agents now have generic names suitable for any project
- Zero broken references remaining
2026-04-06 16:43:49 -04:00
freemo b4a36bb377 fix(agents): correct Anthropic model names to include version suffixes
- Revert claude-opus-4 → claude-opus-4-6 (15 agents)
- Revert claude-sonnet-4 → claude-sonnet-4-6 (30 agents) 
- Original model names with -4-6 suffix were correct
- Keeps openai/gpt-5-codex, openai/gpt-5-nano, google/gemini-2.5-pro unchanged
2026-04-06 20:25:08 +00:00
freemo e30f511bb7 fix(agents): change Gemini model from 3.1-pro to 2.5-pro
- Update google/gemini-3.1-pro → google/gemini-2.5-pro (5 agents)
- Affected agents: ca-architecture-guard, ca-bug-hunter, ca-ref-reader, ca-spec-reader, ca-test-infra-improver
- Maintains large context capability for documentation and analysis tasks
2026-04-06 20:18:16 +00:00
freemo 8c906c50b7 fix(agents): update all agent models to valid OpenCode models
- Update claude-sonnet-4-6 → claude-sonnet-4 (30 agents)
- Update claude-opus-4-6 → claude-opus-4 (15 agents)  
- Update claude-codex-4-20241022 → gpt-5-codex (14 agents)
- Update gpt-5.1-codex → gpt-5-codex (3 agents)
- Update gemini-2.5-pro → gemini-3.1-pro (5 agents)
- Update claude-sonnet-4-0 → claude-sonnet-4 (1 agent)

All 74 agents now use only valid models: claude-sonnet-4, claude-opus-4,
gpt-5-codex, gpt-5-nano, gemini-3.1-pro. Model assignments preserve the
existing capability/cost optimization strategy.
2026-04-06 20:16:54 +00:00
freemo 5d555bdedf feat(agents): add specialized agents with strict CONTRIBUTING.md compliance
- Add ca-opencode-editor.md for .opencode/ file editing with documentation links
- Add ca-general-build.md as replacement for default build agent with mandatory doc review
- Add ca-plan-agent.md as replacement for default plan agent with compliance checks
- Update ca-human-liaison.md to strictly follow CODE_OF_CONDUCT.md and CONTRIBUTING.md
- Update ca-implementer-sonnet.md with mandatory CONTRIBUTING.md compliance section

All new agents explicitly require reading and following CONTRIBUTING.md and CODE_OF_CONDUCT.md
before any actions, ensuring consistent adherence to project standards.
2026-04-06 20:14:18 +00:00
freemo 563bd2c247 fix(agents): correct mode field in fix-pr agent definition
Changes mode from invalid "agent" to "primary" to match OpenCode's
expected values: "subagent"|"primary"|"all".

fix-pr is the main user entry point so "primary" mode is appropriate.
2026-04-06 19:48:17 +00:00
freemo 10f182b921 fix(agents): resolve configuration validation errors in agent definitions
Fixes invalid hex color formats and missing YAML frontmatter that were
causing OpenCode configuration validation failures.

Color format fixes:
- ca-repo-isolator: utility -> #6B7280 (gray-500)
- ca-ci-log-fetcher: utility -> #6B7280 (gray-500)  
- ca-forgejo-signature-appender: utility -> #6B7280 (gray-500)
- ca-ref-material-loader: utility -> #6B7280 (gray-500)
- ca-async-agent-starter: system -> #DC2626 (red-600)
- ca-async-agent-monitor: system -> #DC2626 (red-600)
- ca-async-agent-cleanup: system -> #DC2626 (red-600)
- ca-async-agent-cleanup-all: system -> #DC2626 (red-600)

Missing frontmatter additions:
- fix-pr: Added complete YAML metadata with green color (#059669)
- ca-pr-status-checker: Added metadata with blue color (#3B82F6)
- ca-git-commit-helper: Added metadata with emerald color (#10B981)
- ca-issue-comment-formatter: Added metadata with violet color (#8B5CF6)

All agent definitions now have proper OpenCode-compliant configuration
with valid hex colors and complete YAML frontmatter sections.
2026-04-06 19:47:12 +00:00
freemo 477382ae31 feat(agents): add comprehensive set of 12 reusable subagents
Implements a complete ecosystem of reusable subagents that eliminate code
duplication across the CleverAgents system while providing major performance
and maintainability improvements.

Core Infrastructure (8 agents):
- ca-ci-log-fetcher: Web-based CI log retrieval with session management
- ca-repo-isolator: Safe repository isolation with security-focused design
- ca-forgejo-signature-appender: Standardized bot signatures (3 formats)
- ca-async-agent-starter: Tag-based async agent launching with restrictions
- ca-async-agent-monitor: Health monitoring with automatic restart capability
- ca-async-agent-cleanup: Single session cleanup with verification
- ca-async-agent-cleanup-all: Mass cleanup with parallel execution
- ca-ref-material-loader: Parent-child caching for O(1) performance gains

Primary User Interface (1 agent):
- fix-pr: Main entry point orchestrating all subagents for PR fixing

Specialized Operations (3 agents):
- ca-pr-status-checker: Comprehensive PR status analysis across CI/reviews/conflicts
- ca-git-commit-helper: Safe commit operations with rollback capabilities
- ca-issue-comment-formatter: Structured comment formatting with templates

Key Benefits:
- 80-95% performance improvement through parent-child caching model
- Eliminates O(n) ca-ref-reader calls across 20+ existing agents
- Tag-based session recovery for crash-proof async operations
- Repository isolation with security-focused `/tmp/ca-isolated-*` pattern
- Centralized async session management with strict localhost:4096 permissions
- Professional communication with standardized comment formatting
- Comprehensive error handling and rollback capabilities

This establishes the foundation for scalable, maintainable agent operations
while preserving all existing functionality and established behaviors.
2026-04-06 19:42:39 +00:00
freemo 8b44b265d1 refactor(agents): restructure implementation system for PR-first priority with cost-optimized escalation
- Rename ca-issue-worker → ca-implementation-worker for dual-mode operation (PR fixing + issue implementation)
- Rename issue-implementor → implementation-orchestrator with PR-first priority
- Create new pr-fix-orchestrator for aggressive parallel PR fixing with common cause analysis
- Update escalation order from sonnet→codex→opus to codex→sonnet→opus for better cost optimization
- Update all implementer and tester agents to reflect new escalation tiers
- Add web-based CI log access support since Forgejo Actions API returns 404s
- Update all cross-references and bot signatures throughout codebase
- Add CI_LOG_ACCESS_GUIDE.md with web authentication functions

The system now prioritizes fixing failing PRs over implementing new issues,
uses cost-effective escalation starting with codex, and supports aggressive
parallel execution with intelligent root cause analysis.
2026-04-06 18:46:00 +00:00
freemo 658b86c976 docs(spec): document DEPENDENCY_ORDERED subplan execution mode
Add the DEPENDENCY_ORDERED execution mode to the Child Plan Execution
Modes section. This mode performs topological sorting of subplan
dependencies and executes independent subplans concurrently in waves.
Also adds the dependency-ordered row to the failure handling table.

Closes #4034
2026-04-06 09:20:16 +00:00
freemo 0c9a537948 docs(timeline): update Day 96 with PR #3837 merge and latest counts (2026-04-06) 2026-04-06 08:23:27 +00:00
freemo 225eab25b1 fix(cli): change agents validation attach extra args to use --key value named option format (#3837)
Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
2026-04-06 07:55:09 +00:00
freemo 916130e014 docs(timeline): update Day 96 notes with latest PR/issue counts (2026-04-06) 2026-04-06 07:22:34 +00:00
freemo 3f4d984da6 docs(spec): add skeleton_fragments to AssembledContext and update pipeline pseudocode
Add skeleton_fragments field to the AssembledContext dataclass in the
spec to match the implementation (PR #3676). Update the pipeline
assemble() method signature to include skeleton_ratio and
parent_fragments parameters, and add Step 10 (SkeletonCompressor
invocation) to Phase 3 of the context assembly pipeline pseudocode.

Closes #3783
2026-04-06 06:47:28 +00:00
freemo 2b22c9f40e docs(spec): document automatic checkpoint triggers in main specification
Add documentation for the four automatic checkpoint triggers
(on_tool_write, on_tool_write_complete, on_subplan_spawn, on_error)
that were implemented in PR #3474 and documented in the reference
doc (docs/reference/checkpointing.md) but missing from the main
specification.

Also adds the sandbox.checkpoint.auto-create-on config key to the
configuration reference table.

Closes #3784
2026-04-06 06:46:19 +00:00
freemo 7da29628a4 docs(timeline): update schedule adherence Day 96 (2026-04-06) 2026-04-06 06:20:43 +00:00
freemo e54818d5cb feat: enhance UAT tester with automatic documentation generation
Extend the UAT testing agents to capture successful test workflows and
automatically generate showcase documentation demonstrating real-world
usage of CleverAgents.

Key features added:
- Documentation generation when tests succeed end-to-end
- Intelligent duplicate detection to avoid redundant examples
- Categorization into cli-tools, api-clients, data-processing, testing-tools
- Automatic PR creation for new documentation examples
- Integration with existing UAT workflow without disruption

Documentation structure:
- New docs/showcase/ directory for real-world examples
- Category-specific subdirectories with README guides
- Example template for consistent formatting
- JSON index for tracking and duplicate detection

The UAT tester now serves dual purposes:
1. Finding bugs through comprehensive testing (existing behavior)
2. Generating high-quality documentation from successful test runs (new)

This enables the system to build its own showcase of capabilities while
performing regular quality assurance, providing valuable examples for
users and demonstrating the system's practical applications.
2026-04-06 00:12:06 +00:00
freemo 51cd94dcd5 Fix supervisor monitoring with unique naming tags
Implement unique naming tags for all supervisors and workers to enable
proper monitoring and management by the product-builder agent. The previous
generic [CA-AUTO] prefix made it impossible to distinguish between different
supervisor types and count their workers accurately.

Changes:
- Pool supervisors now use specific tags (AUTO-IMP-SUP, AUTO-REV-SUP, etc.)
- Workers use corresponding tags (AUTO-IMP, AUTO-REV, etc.)
- Singleton supervisors use unique tags (AUTO-ARCH, AUTO-EPIC, etc.)
- Product-builder can now count supervisors/workers by tag pattern
- Added metadata mapping for reliable supervisor re-launching
- Updated system-watchdog to recognize new tag patterns

This enables the product-builder to detect zombie supervisors, verify
worker counts, and re-launch failed supervisors reliably.
2026-04-05 23:00:43 +00:00
freemo 5fbe4bd533 fix(agents): Add proper CI verification to ca-issue-worker before merging PRs
- Implemented missing all_checks_passing() function to query Forgejo API
- Added CI status verification via commit status endpoint
- Added safety warnings against using force_merge flag
- Fixed documentation to reflect correct merge responsibilities
- Added error handling to default to 'checks not passing' on API failures

This ensures PRs cannot be merged when CI checks are failing, respecting
branch protection rules and quality gates defined in CONTRIBUTING.md.
2026-04-05 17:40:29 -04:00
freemo eb6c2469b1 docs: document ACMS real retrieval logic and automatic checkpoint triggers
Reviewed and APPROVED. Documentation-only PR.
2026-04-05 21:35:27 +00:00
freemo 1f64a274e3 docs: document ACMS real retrieval logic and automatic checkpoint triggers
- docs/reference/context_strategies.md: update Built-in Strategies table
  to document real retrieval logic for all 6 strategies (SimpleKeyword,
  SemanticEmbedding, BreadthDepthNavigator, ARCE, TemporalArchaeology,
  PlanDecisionContext); add note about v1 character-frequency embedding
  approximation; note SpecStrategyAdapter registration (#3500)
- docs/reference/checkpointing.md: add Automatic Checkpoint Triggers
  section documenting the 4 triggers (on_tool_write, on_tool_write_complete,
  on_subplan_spawn, on_error), configuration via core.checkpoints.auto_create_on,
  and wiring into ToolRunner/SubplanExecutionService/PlanExecutor (#3439)
2026-04-05 21:31:44 +00:00
freemo 36fb867830 fix(acms): invoke SkeletonCompressor in ContextAssembler.assemble() to propagate skeleton context to child plans
Reviewed and APPROVED. Critical bug fix. Closes #3563.
2026-04-05 21:31:14 +00:00
freemo ca3399e177 fix(acms): invoke SkeletonCompressor in ContextAssembler.assemble() to propagate skeleton context to child plans
Added skeleton_fragments: tuple[ContextFragment, ...] field to ContextPayload in context_fragment.py
- Enables carrying compressed skeleton fragments along with normal context.

Extended ACMSPipeline.assemble() in acms_service.py
- Introduced skeleton_ratio: float = 0.15 (default matching spec) and parent_fragments: tuple[ContextFragment, ...] | None = None parameters.
- These same parameters are also added to ContextAssemblyPipeline.assemble() in acms_pipeline.py for consistency.

Skeleton compression integration
- In Phase 3 of both assemble() methods, computed skeleton_budget = int(budget.available_tokens * skeleton_ratio) and invoked self._skeleton_compressor.compress(parent_fragments, skeleton_budget).
- Compressed skeleton fragments are included in the returned ContextPayload.skeleton_fragments, enabling propagation of skeleton context to child plans.

Tests and behavior coverage
- Added a TDD issue-capture Behave scenario (@tdd_issue @tdd_issue_3563) to demonstrate the fix.
- Added four Behave unit test scenarios asserting: compressor invocation, correct arguments, skeleton presence in output, and skeleton_ratio budget enforcement.
- Added a Robot Framework integration test: parent plan accumulates context → child plan spawned → child plan context contains non-empty skeleton.
- Added skeleton-context-inheritance command to helper_acms_pipeline.py to support testing and manual verification.

Key design decisions
- skeleton_ratio defaults to 0.15 to align with the spec's --skeleton-ratio default.
- parent_fragments is None by default to maintain backward compatibility (no skeleton compression when no parent context).
- skeleton_budget is computed as skeleton_budget = int(budget.available_tokens * skeleton_ratio), deriving the skeleton budget from the total token budget.
- Both ACMSPipeline and ContextAssemblyPipeline are fixed to maintain consistency across the codepath.

ISSUES CLOSED: #3563
2026-04-05 21:26:33 +00:00
freemo 194c830f98 fix(ci): resolve repository push failure in CI pipeline
Reviewed and APPROVED. Closes CI push failure issue.
2026-04-05 21:25:11 +00:00
freemo 9dec3ead1b docs(development): add system watchdog architecture and audit reference
Reviewed and APPROVED. Documentation-only PR.
2026-04-05 21:23:59 +00:00
freemo 67b105b8f5 chore(agents): improve ca-subtask-loop — add meaningful-change verification
Reviewed and APPROVED. Closes #2443.
2026-04-05 21:23:58 +00:00
freemo 201868afd8 fix(cli): route 'agents actor add' through ActorRegistry YAML-first path with all CLI flags preserved
Reviewed and APPROVED. All blocking issues addressed. Closes #3426.
2026-04-05 21:20:20 +00:00
freemo 99b4067ec2 fix(cli): extend agents diagnostics to check all 9 supported providers
Reviewed and APPROVED. All blocking issues addressed. Closes #3422.
2026-04-05 21:19:43 +00:00
freemo 62ded31c24 fix(cli): route 'agents actor add' through ActorRegistry.add() YAML-first path
Route the 'agents actor add' CLI command through ActorRegistry.add() instead
of the legacy registry.upsert_actor() path. This ensures the original YAML
text, schema_version, and compiled_metadata are preserved in the database.

Changes:
- src/cleveragents/cli/commands/actor.py: Add _load_config_text() helper that
  returns both raw text and parsed dict. Refactor add() to call registry.add()
  with the raw yaml_text and update=update_existing flag when a registry is
  available. The service fallback path (no registry) is unchanged.
- features/steps/actor_cli_steps.py: Update add command step definitions to
  mock registry.add() instead of registry.upsert_actor(). Update 'the actor
  add should pass the loaded config' assertion to verify registry.add() is
  called with a non-empty yaml_text string.
- features/steps/actor_cli_yaml_steps.py: Update add command steps to mock
  registry.add() instead of registry.upsert_actor().
- features/steps/actor_add_rich_output_steps.py: Update add command steps to
  mock registry.add() instead of registry.upsert_actor().
- robot/helper_actor_add_rich_output.py: Update helper to mock registry.add()
  instead of registry.upsert_actor().
- features/actor_add_yaml_first_path.feature: New Behave feature verifying
  the YAML-first persistence path is used by actor add.
- features/steps/actor_add_yaml_first_path_steps.py: Step definitions for
  the new YAML-first path feature.
- robot/actor_add_yaml_first_path.robot: New Robot integration tests verifying
  yaml_text is preserved and upsert_actor is not called.
- robot/helper_actor_add_yaml_first_path.py: Helper script for Robot tests.

Fixes #3426

ISSUES CLOSED: #3426
2026-04-05 21:19:40 +00:00
freemo 234d71560d fix(executor): implement automatic per-tool-write and event-based checkpoint triggers
Reviewed and APPROVED. All blocking issues addressed. Closes #3439.
2026-04-05 21:19:18 +00:00
freemo a15c626e9d docs: update specification — DomainBaseModel as shared Pydantic base for domain entities
Reviewed and APPROVED. Closes #2440.
2026-04-05 21:19:00 +00:00
freemo f0e852680a chore(agents): improve product-builder — prohibit direct PR merging
Reviewed and APPROVED. Closes #2878.
2026-04-05 21:16:25 +00:00
freemo 461adcdb2a fix(cli): correct automation-profile list output structure and rich table rendering
Reviewed and APPROVED. Closes #2064.
2026-04-05 21:16:24 +00:00
freemo fa0dd3594f fix(mcp): correct MCPToolResult.data type annotation for MCP 1.4.0 content list format
Reviewed and APPROVED. Closes #2743.
2026-04-05 21:16:21 +00:00
freemo 96470f39dc docs: update specification — add agents plan errors command
Reviewed and APPROVED. Closes #2883.
2026-04-05 21:16:20 +00:00
freemo fdb3787fe3 feat(cli): add --container-id flag to agents resource add for container-instance
Reviewed and APPROVED. Closes #2598.
2026-04-05 21:16:18 +00:00
freemo 97a90e59c4 fix(domain): add missing execute hook to ToolLifecycle model to satisfy spec four-stage lifecycle
Reviewed and APPROVED. Closes #2820.
2026-04-05 21:16:05 +00:00
freemo 201a33928e chore(agents): improve implementer agents — verify domain model fields before referencing
Reviewed and APPROVED. Closes #2879.
2026-04-05 21:15:00 +00:00
freemo 098955693d fix(tool-registry): reject plain Tools in attach_validation type-discriminator check
Reviewed and APPROVED. Closes #2826.
2026-04-05 21:14:58 +00:00
freemo ce4dbdb53f fix(domain): add repository protocol interfaces to domain layer
Reviewed and APPROVED. Closes #2873.
2026-04-05 21:14:56 +00:00
freemo 47a8a6fb78 fix(error-handling): handle FileNotFoundError in robot.helper_actor_config
Reviewed and APPROVED. Closes #2789.
2026-04-05 21:14:44 +00:00
freemo 6bf67861c3 fix(resource-registry): remove type: ignore[override] from ResourceDagMixin
Reviewed and APPROVED. Closes #2830.
2026-04-05 21:14:42 +00:00
freemo 997af9a90a docs: update session export panels and plan executor subplan wiring
Reviewed and APPROVED. Documentation-only PR.
2026-04-05 21:14:39 +00:00
freemo 181ec4d2c2 fix(concurrency): protect CostTracker._daily_costs with a threading.Lock
Reviewed and APPROVED. Closes #1919.
2026-04-05 21:14:08 +00:00