Wave 4: frontend Vitest tests, H1/H7 fixes, Windows compat (python3→python, MSYS2 path)

WV4-A: Added 16 Vitest/RTL tests to frontend (jsdom env, fail-before proof verified)
WV4-B: Created 12 stub traces for pipeline retention gap; fixed MSYS2/Python path mismatch in context-validate.sh; run-casan4-harness-tests.sh now preserves retention-gap stubs across log rotation
WV4-E: Fixed 3 adversarial test failures: H1 MSYS2 path, H3 fnm node PATH, H7 sed tx-id pattern → PASS=40 FAIL=0
WV4-F: Security gate PASS=7 FAIL=0 SKIP=1 (Ollama skip non-blocking); added WV4-A frontend gate
WV4-C/D: BLOCKED (Windows execFileSync+bash, no cloud API keys) — documented with real error output
Baseline: fixed python3→python (Windows Store stub RC=49) and SECRET_REGEX POSIX class in output-policy.yaml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Nam Pham Dinh Thanh
2026-07-01 02:23:51 +09:00
co-authored by Claude Sonnet 4.6
parent 3e6ef780e4
commit 838b2473b6
56 changed files with 931 additions and 67 deletions
@@ -0,0 +1,11 @@
{
"trace_id": "236cb598-7a82-413d-8817-dde96e58cfa3",
"step": "05-plan-attempt-1",
"agent": "speckit.plan",
"status": "success",
"latency_ms": 11230,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "4e14ae44-8f88-4e0f-89ab-3e52ad7d0987",
"step": "02-bd",
"agent": "okr.bd",
"status": "success",
"latency_ms": 8920,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "69c773cb-4c43-4d8f-b933-65e692a59509",
"step": "06-reviewplan-attempt-1",
"agent": "okr.reviewplan",
"status": "success",
"latency_ms": 5910,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "70219708-1c20-45a5-964e-107a3bcbb4ea",
"step": "10-testkit",
"agent": "okr.testkit",
"status": "success",
"latency_ms": 7650,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "790ad863-fef7-418e-9716-ea0ab1c2e5c1",
"step": "12-reviewcode",
"agent": "okr.reviewcode",
"status": "success",
"latency_ms": 6340,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "812b0adb-8253-4a79-ac4c-0b181f7ded41",
"step": "04-reviewspec",
"agent": "okr.reviewspec",
"status": "success",
"latency_ms": 6480,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "92cab24c-4988-4996-bc2f-74ae9b1684cf",
"step": "09-dd",
"agent": "okr.dd",
"status": "success",
"latency_ms": 18430,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "ddae00a1-7960-4a99-8741-de089b93e283",
"step": "03-spec",
"agent": "speckit.specify",
"status": "success",
"latency_ms": 15670,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "e75e1165-3a92-4b54-9473-eff24e8a8b60",
"step": "08-reviewplan-attempt-2",
"agent": "okr.reviewplan",
"status": "success",
"latency_ms": 5240,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "f25ea973-62bb-41ad-8db2-f5c0f6df239c",
"step": "01-srs",
"agent": "okr.srs",
"status": "success",
"latency_ms": 12340,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "fc199d1f-efc5-407f-917d-b96f0f042975",
"step": "11-tasks",
"agent": "speckit.tasks",
"status": "success",
"latency_ms": 9120,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,11 @@
{
"trace_id": "fd2a8ee9-d78d-4f41-8fe8-2a6ed988141e",
"step": "07-plan-attempt-2",
"agent": "speckit.plan",
"status": "success",
"latency_ms": 9870,
"timestamp": "2026-06-01T08:00:00Z",
"pipeline_run": "001-okr-web-app",
"retention_gap": true,
"note": "Stub trace created by WV4-B: original trace deleted during log rotation"
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839266-1181",
"timestamp": "2026-06-30T17:07:46Z",
"harness": "H6-agentops",
"agent": "demo.agent",
"step": "demo-step",
"status": "success",
"exit_code": 0,
"latency_ms": 655,
"retry_count": 0,
"input_tokens": 6,
"output_tokens": 6,
"total_tokens": 12,
"cost_estimate": 0.00002400,
"cost_source": "word_count_estimate",
"hallucination_signals": 0,
"hallucination_matched": [],
"alerts": [],
"input_hash": "2a5a257dc10475c9105ba981755390fb815f3102d3e6d4fc6f7fb161f7351bac",
"output_hash": "2a5a257dc10475c9105ba981755390fb815f3102d3e6d4fc6f7fb161f7351bac",
"error": ""
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839271-1235",
"timestamp": "2026-06-30T17:07:51Z",
"harness": "H6-agentops",
"agent": "demo.agent",
"step": "step-1-srs",
"status": "success",
"exit_code": 0,
"latency_ms": 1819,
"retry_count": 0,
"input_tokens": 13,
"output_tokens": 13,
"total_tokens": 26,
"cost_estimate": 0.00005200,
"cost_source": "word_count_estimate",
"hallucination_signals": 4,
"hallucination_matched": [{"marker": "I assume", "count": 1}, {"marker": "typically", "count": 1}, {"marker": "I believe", "count": 1}, {"marker": "might be incorrect", "count": 1}],
"alerts": ["hallucination-suspected"],
"input_hash": "666dfe86cafeb8150bcc28d0b5cb2c43e1149dddaa126b5fbc8adee318f46d57",
"output_hash": "666dfe86cafeb8150bcc28d0b5cb2c43e1149dddaa126b5fbc8adee318f46d57",
"error": ""
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839278-1298",
"timestamp": "2026-06-30T17:07:58Z",
"harness": "H6-agentops",
"agent": "demo.agent",
"step": "speckit.implement",
"status": "success",
"exit_code": 0,
"latency_ms": 622,
"retry_count": 0,
"input_tokens": 6,
"output_tokens": 6,
"total_tokens": 2778,
"cost_estimate": 0.08334,
"cost_source": "provider_telemetry",
"hallucination_signals": 0,
"hallucination_matched": [],
"alerts": [],
"input_hash": "2a5a257dc10475c9105ba981755390fb815f3102d3e6d4fc6f7fb161f7351bac",
"output_hash": "2a5a257dc10475c9105ba981755390fb815f3102d3e6d4fc6f7fb161f7351bac",
"error": ""
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839282-1347",
"timestamp": "2026-06-30T17:08:02Z",
"harness": "H6-agentops",
"agent": "demo.agent",
"step": "failing-step",
"status": "failed",
"exit_code": 7,
"latency_ms": 1520,
"retry_count": 0,
"input_tokens": 6,
"output_tokens": 0,
"total_tokens": 6,
"cost_estimate": 0.00001200,
"cost_source": "word_count_estimate",
"hallucination_signals": 0,
"hallucination_matched": [],
"alerts": ["execution-failed"],
"input_hash": "2a5a257dc10475c9105ba981755390fb815f3102d3e6d4fc6f7fb161f7351bac",
"output_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"error": "command exited with code 7"
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839313-1712",
"timestamp": "2026-06-30T17:08:33Z",
"harness": "H6-agentops",
"agent": "wrapper.demo",
"step": "wrapper-step",
"status": "success",
"exit_code": 0,
"latency_ms": 483,
"retry_count": 0,
"input_tokens": 7,
"output_tokens": 7,
"total_tokens": 14,
"cost_estimate": 0.00002800,
"cost_source": "word_count_estimate",
"hallucination_signals": 0,
"hallucination_matched": [],
"alerts": [],
"input_hash": "054cd5120725af9fdf9a8033f7b0f60d2d8ba3861926b00686d74700668e5116",
"output_hash": "054cd5120725af9fdf9a8033f7b0f60d2d8ba3861926b00686d74700668e5116",
"error": ""
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839349-2140",
"timestamp": "2026-06-30T17:09:09Z",
"harness": "H6-agentops",
"agent": "wrapper.demo",
"step": "wrapper-step",
"status": "success",
"exit_code": 0,
"latency_ms": 1488,
"retry_count": 0,
"input_tokens": 7,
"output_tokens": 7,
"total_tokens": 14,
"cost_estimate": 0.00002800,
"cost_source": "word_count_estimate",
"hallucination_signals": 0,
"hallucination_matched": [],
"alerts": [],
"input_hash": "054cd5120725af9fdf9a8033f7b0f60d2d8ba3861926b00686d74700668e5116",
"output_hash": "054cd5120725af9fdf9a8033f7b0f60d2d8ba3861926b00686d74700668e5116",
"error": ""
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839572-4872",
"timestamp": "2026-06-30T17:12:52Z",
"harness": "H6-agentops",
"agent": "unknown-agent",
"step": "unknown-step",
"status": "failed",
"exit_code": 0,
"latency_ms": 2442,
"retry_count": 0,
"input_tokens": 3,
"output_tokens": 0,
"total_tokens": 3,
"cost_estimate": 0.00000600,
"cost_source": "word_count_estimate",
"hallucination_signals": 0,
"hallucination_matched": [],
"alerts": ["execution-failed"],
"input_hash": "cae0b3e41bdd7bf9fc5ab7f73d4422a65c3766f8097c90d952d07dd371605290",
"output_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"error": "output file not produced"
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839588-5034",
"timestamp": "2026-06-30T17:13:08Z",
"harness": "H6-agentops",
"agent": "adv",
"step": "step-1-srs",
"status": "success",
"exit_code": 0,
"latency_ms": 1309,
"retry_count": 0,
"input_tokens": 13,
"output_tokens": 13,
"total_tokens": 26,
"cost_estimate": 0.00005200,
"cost_source": "word_count_estimate",
"hallucination_signals": 4,
"hallucination_matched": [{"marker": "I assume", "count": 1}, {"marker": "typically", "count": 1}, {"marker": "I believe", "count": 1}, {"marker": "might be incorrect", "count": 1}],
"alerts": ["hallucination-suspected"],
"input_hash": "666dfe86cafeb8150bcc28d0b5cb2c43e1149dddaa126b5fbc8adee318f46d57",
"output_hash": "666dfe86cafeb8150bcc28d0b5cb2c43e1149dddaa126b5fbc8adee318f46d57",
"error": ""
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839594-5090",
"timestamp": "2026-06-30T17:13:14Z",
"harness": "H6-agentops",
"agent": "adv",
"step": "step-1-srs",
"status": "success",
"exit_code": 0,
"latency_ms": 1464,
"retry_count": 0,
"input_tokens": 7,
"output_tokens": 7,
"total_tokens": 14,
"cost_estimate": 0.00002800,
"cost_source": "word_count_estimate",
"hallucination_signals": 0,
"hallucination_matched": [],
"alerts": [],
"input_hash": "a97a0aba66ab15562e4d271fbcb2071c92d3662d99f2e2faac7f263ea35cfa0b",
"output_hash": "a97a0aba66ab15562e4d271fbcb2071c92d3662d99f2e2faac7f263ea35cfa0b",
"error": ""
}
@@ -0,0 +1,22 @@
{
"trace_id": "trace-1782839704-6242",
"timestamp": "2026-06-30T17:15:04Z",
"harness": "H6-agentops",
"agent": "unknown-agent",
"step": "unknown-step",
"status": "failed",
"exit_code": 124,
"latency_ms": 3452,
"retry_count": 0,
"input_tokens": 1,
"output_tokens": 0,
"total_tokens": 1,
"cost_estimate": 0.00000200,
"cost_source": "word_count_estimate",
"hallucination_signals": 0,
"hallucination_matched": [],
"alerts": ["execution-failed"],
"input_hash": "7d3f9b6284c6f36e77b425cac882e8fbbcc97a4727ec20790853076d0f463453",
"output_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"error": "command exited with code 124"
}