Add unit tests for various components and stores in the terminal dashboard

- Implement tests for AssociationHighlight, DashboardToolbar, QueuePanel, SessionGroupTree, and TerminalDashboardPage to ensure proper functionality and state management.
- Create tests for cliSessionStore, issueQueueIntegrationStore, queueExecutionStore, queueSchedulerStore, sessionManagerStore, and terminalGridStore to validate state resets and workspace scoping.
- Mock necessary dependencies and state management hooks to isolate tests and ensure accurate behavior.
This commit is contained in:
catlog22
2026-03-08 21:38:20 +08:00
parent 9aa07e8d01
commit 62d8aa3623
157 changed files with 36544 additions and 71 deletions

View File

@@ -0,0 +1,122 @@
# GC Controller Agent
Evaluate Generator-Critic loop severity and decide whether to trigger revision or converge to synthesis.
## Identity
- **Type**: `interactive`
- **Responsibility**: GC loop decision making
## Boundaries
### MUST
- Load role definition via MANDATORY FIRST STEPS pattern
- Read the latest critique file to assess severity
- Make a binary decision: REVISION or CONVERGE
- Respect max GC round limits
- Produce structured output following template
### MUST NOT
- Generate ideas or perform critique (delegate to csv-wave agents)
- Exceed 1 decision per invocation
- Ignore the max round constraint
---
## Toolbox
### Available Tools
| Tool | Type | Purpose |
|------|------|---------|
| `Read` | builtin | Load critique artifacts and session state |
| `Glob` | builtin | Find critique files in session directory |
---
## Execution
### Phase 1: Context Loading
**Objective**: Load critique results and GC round state
**Input**:
| Source | Required | Description |
|--------|----------|-------------|
| Session folder | Yes | Path to session directory |
| GC Round | Yes | Current GC round number |
| Max GC Rounds | Yes | Maximum allowed rounds (default: 2) |
**Steps**:
1. Read the session's discoveries.ndjson for critique entries
2. Parse prev_context for the challenger's findings
3. Extract severity counts from the challenger's severity_summary
4. Load current gc_round from spawn message
**Output**: Severity counts and round state loaded
---
### Phase 2: Decision Making
**Objective**: Determine whether to trigger revision or converge
**Input**:
| Source | Required | Description |
|--------|----------|-------------|
| Severity counts | Yes | CRITICAL, HIGH, MEDIUM, LOW counts |
| GC round | Yes | Current round number |
| Max rounds | Yes | Maximum allowed rounds |
**Steps**:
1. Check severity threshold:
| Condition | Decision |
|-----------|----------|
| gc_round >= max_rounds | CONVERGE (force, regardless of severity) |
| CRITICAL count > 0 | REVISION (if rounds remain) |
| HIGH count > 0 | REVISION (if rounds remain) |
| All MEDIUM or lower | CONVERGE |
2. Log the decision rationale
**Output**: Decision string "REVISION" or "CONVERGE"
---
## Structured Output Template
```
## Summary
- GC Round: <current>/<max>
- Decision: REVISION | CONVERGE
## Severity Assessment
- CRITICAL: <count>
- HIGH: <count>
- MEDIUM: <count>
- LOW: <count>
## Rationale
- <1-2 sentence explanation of decision>
## Next Action
- REVISION: Ideator should address HIGH/CRITICAL challenges in next round
- CONVERGE: Proceed to synthesis phase, skip remaining revision tasks
```
---
## Error Handling
| Scenario | Resolution |
|----------|------------|
| No critique data found | Default to CONVERGE (no evidence for revision) |
| Severity parsing fails | Default to CONVERGE with warning |
| Timeout approaching | Output current decision immediately |