Problem: Councils couldn't be assigned to tasks because they didn't exist in teams table
- Foreign key constraint tasks_assigned_team_id_fkey required valid team record
- Councils ARE teams (special subtype for project kickoffs)
Solution: Create team record when forming council
- Added team INSERT in storeCouncilComposition()
- Use same UUID for both team.id and council.id
- Team name: 'Council: {ProjectName}'
- ON CONFLICT DO NOTHING for idempotency
Result: Tasks can now be assigned to councils, unblocking task execution
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed NetworkName from 'chorus_default' to 'chorus_net'
- This matches the actual network 'CHORUS_chorus_net' (service prefix added automatically)
- Fixes discovered_count:0 issue - now successfully discovering all 25 agents
- Updated IMPLEMENTATION-SUMMARY with deployment status
Result: All 25 CHORUS agents now discovered successfully via Docker Swarm API
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Two critical fixes for E2E council workflow:
1. Reduced core council roles from 8 to 2 (tpm + senior-software-architect)
- Faster council formation
- Easier debugging
- Sufficient for initial project planning
2. Added broadcast to monitor path
- Monitor now broadcasts council opportunities to CHORUS agents
- Previously only webhook path had broadcast, monitor path missed it
- Added broadcaster parameter to NewMonitor()
- Broadcast sent after council formation with 30s timeout
Verified working:
- Council formation successful
- Broadcast to CHORUS agents confirmed
- Role claims received (TPM claimed and loaded)
- Persona status "loaded" acknowledged
Image: anthonyrawlins/whoosh:broadcast-fix
Council: 2dad2070-292a-4dbd-9195-89795f84da19
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace incremental sync with full scan for new repositories
- Add initial_scan status to bypass Since parameter filtering
- Implement council formation detection for Design Brief issues
- Add version display to WHOOSH UI header for debugging
- Fix Docker token authentication with trailing newline removal
- Add comprehensive council orchestration with Docker Swarm integration
- Include BACKBEAT prototype integration for distributed timing
- Support council-specific agent roles and deployment strategies
- Transition repositories to active status after content discovery
Key architectural improvements:
- Full scan approach for new project detection vs incremental sync
- Council formation triggered by chorus-entrypoint labeled Design Briefs
- Proper token handling and authentication for Gitea API calls
- Support for both initial discovery and ongoing task monitoring
This enables autonomous project kickoff workflows where Design Brief issues
automatically trigger formation of specialized agent councils for new projects.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>