mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-10 17:11:04 +08:00
- 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.
13 KiB
13 KiB
Team Frontend Debug -- CSV Schema
Master CSV: tasks.csv
Column Definitions
Input Columns (Set by Decomposer)
| Column | Type | Required | Description | Example |
|---|---|---|---|---|
id |
string | Yes | Unique task identifier (PREFIX-NNN) | "TEST-001" |
title |
string | Yes | Short task title | "Feature testing" |
description |
string | Yes | Detailed task description (self-contained) with PURPOSE/TASK/CONTEXT/EXPECTED/CONSTRAINTS | "PURPOSE: Test all features from list..." |
role |
enum | Yes | Worker role: tester, reproducer, analyzer, fixer, verifier |
"tester" |
pipeline_mode |
enum | Yes | Pipeline mode: test-pipeline or debug-pipeline |
"test-pipeline" |
base_url |
string | No | Target URL for browser-based tasks | "http://localhost:3000" |
evidence_dimensions |
string | No | Semicolon-separated evidence types to collect | "screenshot;console;network" |
deps |
string | No | Semicolon-separated dependency task IDs | "TEST-001" |
context_from |
string | No | Semicolon-separated task IDs for context | "TEST-001" |
exec_mode |
enum | Yes | Execution mechanism: csv-wave or interactive |
"csv-wave" |
Computed Columns (Set by Wave Engine)
| Column | Type | Description | Example |
|---|---|---|---|
wave |
integer | Wave number (1-based, from topological sort) | 2 |
prev_context |
string | Aggregated findings from context_from tasks (per-wave CSV only) | "[TEST-001] Found 3 issues: 2 high, 1 medium..." |
Output Columns (Set by Agent)
| Column | Type | Description | Example |
|---|---|---|---|
status |
enum | pending -> completed / failed / skipped |
"completed" |
findings |
string | Key discoveries (max 500 chars) | "Tested 5 features: 3 pass, 2 fail. BUG-001: TypeError on login. BUG-002: API 500 on save." |
artifacts_produced |
string | Semicolon-separated paths of produced artifacts | "artifacts/TEST-001-report.md;artifacts/TEST-001-issues.json" |
issues_count |
string | Number of issues found (tester/analyzer only, empty for others) | "2" |
verdict |
string | Verification verdict: pass, pass_with_warnings, fail (verifier only) |
"pass" |
error |
string | Error message if failed | "" |
exec_mode Values
| Value | Mechanism | Description |
|---|---|---|
csv-wave |
spawn_agents_on_csv |
One-shot batch execution within wave |
interactive |
spawn_agent/wait/send_input/close_agent |
Multi-round individual execution |
Interactive tasks appear in master CSV for dependency tracking but are NOT included in wave-{N}.csv files.
Role Prefixes
| Role | Prefix | Pipeline | Inner Loop |
|---|---|---|---|
| tester | TEST | test-pipeline | Yes (iterates over features) |
| reproducer | REPRODUCE | debug-pipeline | No |
| analyzer | ANALYZE | both | No |
| fixer | FIX | both | Yes (may need multiple fix passes) |
| verifier | VERIFY | both | No |
Example Data (Test Pipeline)
id,title,description,role,pipeline_mode,base_url,evidence_dimensions,deps,context_from,exec_mode,wave,status,findings,artifacts_produced,issues_count,verdict,error
"TEST-001","Feature testing","PURPOSE: Test all features from feature list and discover issues | Success: All features tested with pass/fail results\nTASK:\n- Parse feature list\n- Navigate to each feature URL using Chrome DevTools\n- Execute test scenarios (click, fill, hover)\n- Capture evidence: screenshots, console logs, network requests\n- Classify results: pass/fail/warning\nCONTEXT:\n- Session: .workflow/.csv-wave/tfd-login-test-20260308\n- Base URL: http://localhost:3000\n- Features: Login, Dashboard, Profile\nEXPECTED: artifacts/TEST-001-report.md + artifacts/TEST-001-issues.json\nCONSTRAINTS: Chrome DevTools MCP only | No code modifications","tester","test-pipeline","http://localhost:3000","screenshot;console;network","","","csv-wave","1","pending","","","","",""
"ANALYZE-001","Root cause analysis","PURPOSE: Analyze discovered issues to identify root causes | Success: RCA for each high/medium issue\nTASK:\n- Load test report and issues list\n- Analyze console errors, network failures, DOM anomalies\n- Map to source code locations\nCONTEXT:\n- Session: .workflow/.csv-wave/tfd-login-test-20260308\n- Upstream: artifacts/TEST-001-issues.json\nEXPECTED: artifacts/ANALYZE-001-rca.md","analyzer","test-pipeline","","console;network","TEST-001","TEST-001","csv-wave","2","pending","","","","",""
"FIX-001","Fix all issues","PURPOSE: Fix identified issues | Success: All high/medium issues resolved\nTASK:\n- Load RCA report\n- Locate and fix each root cause\n- Run syntax/type checks\nCONTEXT:\n- Session: .workflow/.csv-wave/tfd-login-test-20260308\n- Upstream: artifacts/ANALYZE-001-rca.md\nEXPECTED: Modified source files + artifacts/FIX-001-changes.md","fixer","test-pipeline","","","ANALYZE-001","ANALYZE-001","csv-wave","3","pending","","","","",""
"VERIFY-001","Verify fixes","PURPOSE: Re-test failed scenarios to verify fixes | Success: Previously failed scenarios now pass\nTASK:\n- Re-execute failed test scenarios\n- Capture evidence and compare\n- Report pass/fail per scenario\nCONTEXT:\n- Session: .workflow/.csv-wave/tfd-login-test-20260308\n- Original: artifacts/TEST-001-report.md\n- Fix: artifacts/FIX-001-changes.md\nEXPECTED: artifacts/VERIFY-001-report.md","verifier","test-pipeline","http://localhost:3000","screenshot;console;network","FIX-001","FIX-001;TEST-001","csv-wave","4","pending","","","","",""
Example Data (Debug Pipeline)
id,title,description,role,pipeline_mode,base_url,evidence_dimensions,deps,context_from,exec_mode,wave,status,findings,artifacts_produced,issues_count,verdict,error
"REPRODUCE-001","Bug reproduction","PURPOSE: Reproduce bug and collect evidence | Success: Bug reproduced with artifacts\nTASK:\n- Navigate to target URL\n- Execute reproduction steps\n- Capture screenshots, snapshots, console logs, network\nCONTEXT:\n- Session: .workflow/.csv-wave/tfd-save-crash-20260308\n- Bug URL: http://localhost:3000/settings\n- Steps: 1. Click save 2. Observe white screen\nEXPECTED: evidence/ directory with all captures","reproducer","debug-pipeline","http://localhost:3000/settings","screenshot;console;network;snapshot","","","csv-wave","1","pending","","","","",""
"ANALYZE-001","Root cause analysis","PURPOSE: Analyze evidence to find root cause | Success: RCA with file:line location\nTASK:\n- Load evidence from reproducer\n- Analyze console errors and stack traces\n- Map to source code\nCONTEXT:\n- Session: .workflow/.csv-wave/tfd-save-crash-20260308\n- Upstream: evidence/\nEXPECTED: artifacts/ANALYZE-001-rca.md","analyzer","debug-pipeline","","","REPRODUCE-001","REPRODUCE-001","csv-wave","2","pending","","","","",""
"FIX-001","Code fix","PURPOSE: Fix the identified bug | Success: Root cause resolved\nTASK:\n- Load RCA report\n- Implement fix\n- Validate syntax\nCONTEXT:\n- Session: .workflow/.csv-wave/tfd-save-crash-20260308\n- Upstream: artifacts/ANALYZE-001-rca.md\nEXPECTED: Modified files + artifacts/FIX-001-changes.md","fixer","debug-pipeline","","","ANALYZE-001","ANALYZE-001","csv-wave","3","pending","","","","",""
"VERIFY-001","Fix verification","PURPOSE: Verify bug is fixed | Success: Original bug no longer reproduces\nTASK:\n- Same reproduction steps as REPRODUCE-001\n- Capture evidence and compare\n- Confirm resolution\nCONTEXT:\n- Session: .workflow/.csv-wave/tfd-save-crash-20260308\n- Original: evidence/\n- Fix: artifacts/FIX-001-changes.md\nEXPECTED: artifacts/VERIFY-001-report.md","verifier","debug-pipeline","http://localhost:3000/settings","screenshot;console;network;snapshot","FIX-001","FIX-001;REPRODUCE-001","csv-wave","4","pending","","","","",""
Column Lifecycle
Decomposer (Phase 1) Wave Engine (Phase 2) Agent (Execution)
--------------------- -------------------- -----------------
id ----------> id ----------> id
title ----------> title ----------> (reads)
description ----------> description ----------> (reads)
role ----------> role ----------> (reads)
pipeline_mode ---------> pipeline_mode ---------> (reads)
base_url ----------> base_url ----------> (reads)
evidence_dimensions ---> evidence_dimensions ---> (reads)
deps ----------> deps ----------> (reads)
context_from----------> context_from----------> (reads)
exec_mode ----------> exec_mode ----------> (reads)
wave ----------> (reads)
prev_context ----------> (reads)
status
findings
artifacts_produced
issues_count
verdict
error
Output Schema (JSON)
Agent output via report_agent_job_result (csv-wave tasks):
Tester output:
{
"id": "TEST-001",
"status": "completed",
"findings": "Tested 5 features: 3 pass, 2 fail. BUG-001: TypeError on login submit. BUG-002: API 500 on profile save.",
"artifacts_produced": "artifacts/TEST-001-report.md;artifacts/TEST-001-issues.json",
"issues_count": "2",
"verdict": "",
"error": ""
}
Verifier output:
{
"id": "VERIFY-001",
"status": "completed",
"findings": "Original bug resolved. Login error no longer appears. No new console errors. No new network failures.",
"artifacts_produced": "artifacts/VERIFY-001-report.md",
"issues_count": "",
"verdict": "pass",
"error": ""
}
Interactive tasks output via structured text or JSON written to interactive/{id}-result.json.
Discovery Types
| Type | Dedup Key | Data Schema | Description |
|---|---|---|---|
feature_tested |
data.feature |
{feature, name, result, issues} |
Feature test result |
bug_reproduced |
data.url |
{url, steps, console_errors, network_failures} |
Bug reproduction result |
evidence_collected |
data.dimension+data.file |
{dimension, file, description} |
Evidence artifact saved |
root_cause_found |
data.file+data.line |
{category, file, line, confidence} |
Root cause identified |
file_modified |
data.file |
{file, change, lines_added} |
Code fix applied |
verification_result |
data.verdict |
{verdict, original_error_resolved, new_errors} |
Fix verification |
issue_found |
data.file+data.line |
{file, line, severity, description} |
Issue discovered |
Discovery NDJSON Format
{"ts":"2026-03-08T10:00:00Z","worker":"TEST-001","type":"feature_tested","data":{"feature":"F-001","name":"Login","result":"fail","issues":1}}
{"ts":"2026-03-08T10:05:00Z","worker":"REPRODUCE-001","type":"bug_reproduced","data":{"url":"/settings","steps":3,"console_errors":2,"network_failures":0}}
{"ts":"2026-03-08T10:10:00Z","worker":"ANALYZE-001","type":"root_cause_found","data":{"category":"TypeError","file":"src/components/Settings.tsx","line":142,"confidence":"high"}}
{"ts":"2026-03-08T10:15:00Z","worker":"FIX-001","type":"file_modified","data":{"file":"src/components/Settings.tsx","change":"Added null check for user object","lines_added":3}}
Both csv-wave and interactive agents read/write the same discoveries.ndjson file.
Cross-Mechanism Context Flow
| Source | Target | Mechanism |
|---|---|---|
| CSV task findings | Interactive task | Injected via spawn message or send_input |
| Interactive task result | CSV task prev_context | Read from interactive/{id}-result.json |
| Any agent discovery | Any agent | Shared via discoveries.ndjson |
Validation Rules
| Rule | Check | Error |
|---|---|---|
| Unique IDs | No duplicate id values |
"Duplicate task ID: {id}" |
| Valid deps | All dep IDs exist in tasks | "Unknown dependency: {dep_id}" |
| No self-deps | Task cannot depend on itself | "Self-dependency: {id}" |
| No circular deps | Topological sort completes | "Circular dependency detected involving: {ids}" |
| context_from valid | All context IDs exist and in earlier waves | "Invalid context_from: {id}" |
| exec_mode valid | Value is csv-wave or interactive |
"Invalid exec_mode: {value}" |
| Description non-empty | Every task has description | "Empty description for task: {id}" |
| Status enum | status in {pending, completed, failed, skipped} | "Invalid status: {status}" |
| Role valid | role in {tester, reproducer, analyzer, fixer, verifier} | "Invalid role: {role}" |
| Pipeline mode valid | pipeline_mode in {test-pipeline, debug-pipeline} | "Invalid pipeline_mode: {mode}" |
| Verdict valid | verdict in {pass, pass_with_warnings, fail, ""} | "Invalid verdict: {verdict}" |
| Base URL for browser tasks | tester/reproducer/verifier have non-empty base_url | "Missing base_url for browser task: {id}" |