This commit resolves multiple blocking issues that were preventing WHOOSH from
properly detecting and converting bzzz-task labeled issues from Gitea:
## Issues Fixed:
1. **JSON Parsing Error**: Gitea API returns repository owner as string in issue
responses, but code expected User object. Added IssueRepository struct to
handle this API response format difference.
2. **Database Error Handling**: Code was using database/sql.ErrNoRows but
system uses pgx driver. Updated imports and error constants to use
pgx.ErrNoRows consistently.
3. **NULL Value Scanning**: Database fields (repository, project_id,
estimated_hours, complexity_score) can be NULL but Go structs used
non-pointer types. Added proper NULL handling with pointer scanning
and safe conversion.
## Results:
- ✅ WHOOSH now successfully detects bzzz-task labeled issues
- ✅ Task creation pipeline working end-to-end
- ✅ Tasks API functioning properly
- ✅ First bzzz-task converted: "Logic around registered agents faulty"
The core issue monitoring workflow is now fully operational and ready for
CHORUS integration.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace mock endpoints with real database-backed task management:
- Add tasks table with full relationships and indexes
- Create generic task management service supporting multiple sources
- Implement GITEA integration service for issue synchronization
- Add task creation, retrieval, assignment, and status updates
Database schema changes:
- New tasks table with external_id mapping for GITEA/GitHub/Jira
- Foreign key relationships to teams and agents
- Task workflow tracking (claimed_at, started_at, completed_at)
- JSONB fields for labels, tech_stack, requirements
Task management features:
- Generic TaskFilter with pagination and multi-field filtering
- Automatic tech stack inference from labels and descriptions
- Complexity scoring based on multiple factors
- Real task assignment to teams and agents
- GITEA webhook integration for automated task sync
API endpoints now use real database operations:
- GET /api/v1/tasks (real filtering and pagination)
- GET /api/v1/tasks/{id} (database lookup)
- POST /api/v1/tasks/ingest (creates actual task records)
- POST /api/v1/tasks/{id}/claim (real assignment operations)
GITEA integration includes:
- Issue-to-task synchronization with configurable task labels
- Priority mapping from issue labels
- Estimated hours extraction from issue descriptions
- Webhook processing for real-time updates
This removes the major mocked components and provides
a foundation for genuine E2E testing with real data.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>