test(issue-5): add layer-1 herdr and layer-2 watcher test fixtures
This commit is contained in:
1 parent
720774c1e7
commit
f85fa5b6cf
15 files changed
+983
No files matched your search
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"scenario_id": "blocked_permission",
|
||||
"backend": "backend_agnostic",
|
||||
"provenance": "simulated",
|
||||
"description": "Native status blocked on interactive permission prompt. Completion forbidden.",
|
||||
"dispatch_context": {
|
||||
"job_id": "test-job-blocked-01",
|
||||
"attempt_id": 1,
|
||||
"agent_session_uuid": "1c53dd89-81fc-49a6-b15e-bef3dfb61697",
|
||||
"pane_process_generation": "w2X:p3:5678:2026-09-06T00:00:00Z",
|
||||
"dispatch_ack": true,
|
||||
"execution_anchor_observed": true
|
||||
},
|
||||
"timeline": [
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 0,
|
||||
"source_kind": "herdr",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"agent_status": "blocked",
|
||||
"interactive_ready": false,
|
||||
"matched_rule": "permission_prompt"
|
||||
}
|
||||
}
|
||||
],
|
||||
"filesystem": {
|
||||
"report_path": ".mam/jobs/test-job-blocked-01/report-final.md",
|
||||
"exists": false,
|
||||
"manifest_committed": false
|
||||
},
|
||||
"expected_policy": {
|
||||
"decision": "hold_blocked",
|
||||
"reason": "agent terminal is blocked awaiting user permission",
|
||||
"policy_version": "2.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"scenario_id": "finalized_candidate",
|
||||
"backend": "backend_agnostic",
|
||||
"provenance": "simulated",
|
||||
"description": "Execution anchor verified, native status idle/done, atomic rename complete with valid SHA-256 commit manifest. Inferred candidate approved for CAS.",
|
||||
"dispatch_context": {
|
||||
"job_id": "test-job-finalized-01",
|
||||
"attempt_id": 1,
|
||||
"agent_session_uuid": "7d5700d0-bab1-4f65-9665-6b887396a9a6",
|
||||
"pane_process_generation": "w2X:p1:1234:2026-09-06T00:00:00Z",
|
||||
"dispatch_ack": true,
|
||||
"execution_anchor_observed": true
|
||||
},
|
||||
"timeline": [
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 0,
|
||||
"source_kind": "event",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"event": "started",
|
||||
"job_id": "test-job-finalized-01"
|
||||
}
|
||||
},
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 5000,
|
||||
"source_kind": "filesystem",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"report_manifest": {
|
||||
"report_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"attempt_id": 1,
|
||||
"finalized": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 6000,
|
||||
"source_kind": "herdr",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"agent_status": "idle",
|
||||
"interactive_ready": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"filesystem": {
|
||||
"report_path": ".mam/jobs/test-job-finalized-01/report-final.md",
|
||||
"exists": true,
|
||||
"manifest_committed": true,
|
||||
"hash_verified": true
|
||||
},
|
||||
"expected_policy": {
|
||||
"decision": "candidate_approved",
|
||||
"reason": "all 4-fold attribution, fresh idle status, and atomic finalization manifest verified",
|
||||
"policy_version": "2.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"scenario_id": "initial_idle",
|
||||
"backend": "backend_agnostic",
|
||||
"provenance": "simulated",
|
||||
"description": "Dispatch record exists and native status is idle, but no execution anchor observed since dispatch_ack. Inferred completion must be held.",
|
||||
"dispatch_context": {
|
||||
"job_id": "test-job-init-idle-01",
|
||||
"attempt_id": 1,
|
||||
"agent_session_uuid": "7d5700d0-bab1-4f65-9665-6b887396a9a6",
|
||||
"pane_process_generation": "w2X:p1:1234:2026-09-06T00:00:00Z",
|
||||
"dispatch_ack": true,
|
||||
"execution_anchor_observed": false
|
||||
},
|
||||
"timeline": [
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 0,
|
||||
"source_kind": "event",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"event": "dispatched",
|
||||
"job_id": "test-job-init-idle-01"
|
||||
}
|
||||
},
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 500,
|
||||
"source_kind": "herdr",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"agent_status": "idle",
|
||||
"interactive_ready": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"filesystem": {
|
||||
"report_path": ".mam/jobs/test-job-init-idle-01/report-final.md",
|
||||
"exists": false,
|
||||
"manifest_committed": false
|
||||
},
|
||||
"expected_policy": {
|
||||
"decision": "hold",
|
||||
"reason": "no execution anchor observed for this attempt",
|
||||
"policy_version": "2.0.0"
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"description": "Multi-channel Watcher composite timeline scenario manifest",
|
||||
"scenarios": {
|
||||
"initial_idle": {
|
||||
"file": "initial_idle.json",
|
||||
"provenance": "simulated",
|
||||
"expected_decision": "hold",
|
||||
"description": "Dispatch record exists and native status is idle, but no execution anchor observed since dispatch_ack. Inferred completion must be held."
|
||||
},
|
||||
"tool_running": {
|
||||
"file": "tool_running.json",
|
||||
"provenance": "simulated",
|
||||
"expected_decision": "hold",
|
||||
"description": "Native status working or interactive_ready with active background tool execution. Inferred completion must be held."
|
||||
},
|
||||
"report_pause_15s": {
|
||||
"file": "report_pause_15s.json",
|
||||
"provenance": "simulated",
|
||||
"expected_decision": "hold",
|
||||
"description": "Partial report written and stable for >= 15s debounce, but lacks atomic finalization manifest. Completion must be held."
|
||||
},
|
||||
"finalized_candidate": {
|
||||
"file": "finalized_candidate.json",
|
||||
"provenance": "simulated",
|
||||
"expected_decision": "candidate_approved",
|
||||
"description": "Execution anchor verified, native status idle/done, atomic rename complete with valid SHA-256 commit manifest. Inferred candidate approved for CAS."
|
||||
},
|
||||
"blocked_permission": {
|
||||
"file": "blocked_permission.json",
|
||||
"provenance": "simulated",
|
||||
"expected_decision": "hold_blocked",
|
||||
"description": "Native status blocked on interactive permission prompt. Completion forbidden."
|
||||
},
|
||||
"transport_disconnected": {
|
||||
"file": "transport_disconnected.json",
|
||||
"provenance": "simulated",
|
||||
"expected_decision": "hold_reconnect",
|
||||
"description": "Herdr socket connection failure or freshness gap. Cached evidence invalidated; must reconnect and resnapshot."
|
||||
},
|
||||
"restarted_generation": {
|
||||
"file": "restarted_generation.json",
|
||||
"provenance": "simulated",
|
||||
"expected_decision": "reject_stale",
|
||||
"description": "Pane process restarted with new PID/start time; stale attempt rejected."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"scenario_id": "report_pause_15s",
|
||||
"backend": "backend_agnostic",
|
||||
"provenance": "simulated",
|
||||
"description": "Partial report written and stable for >= 15s debounce, but lacks atomic finalization manifest. Completion must be held.",
|
||||
"dispatch_context": {
|
||||
"job_id": "test-job-pause-01",
|
||||
"attempt_id": 1,
|
||||
"agent_session_uuid": "1c53dd89-81fc-49a6-b15e-bef3dfb61697",
|
||||
"pane_process_generation": "w2X:p3:5678:2026-09-06T00:00:00Z",
|
||||
"dispatch_ack": true,
|
||||
"execution_anchor_observed": true
|
||||
},
|
||||
"timeline": [
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 0,
|
||||
"source_kind": "filesystem",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"file": "report-final.md.tmp",
|
||||
"bytes": 250,
|
||||
"phase": "writing"
|
||||
}
|
||||
},
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 16000,
|
||||
"source_kind": "filesystem",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"file": "report-final.md.tmp",
|
||||
"bytes": 250,
|
||||
"mtime_stale_sec": 16.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 16100,
|
||||
"source_kind": "herdr",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"agent_status": "working",
|
||||
"interactive_ready": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"filesystem": {
|
||||
"report_path": ".mam/jobs/test-job-pause-01/report-final.md",
|
||||
"exists": false,
|
||||
"tmp_file_exists": true,
|
||||
"manifest_committed": false
|
||||
},
|
||||
"expected_policy": {
|
||||
"decision": "hold",
|
||||
"reason": "debounce elapsed on partial file, but report is unfinalized without manifest",
|
||||
"policy_version": "2.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"scenario_id": "restarted_generation",
|
||||
"backend": "backend_agnostic",
|
||||
"provenance": "simulated",
|
||||
"description": "Pane process restarted with new PID/start time; stale attempt rejected.",
|
||||
"dispatch_context": {
|
||||
"job_id": "test-job-restarted-01",
|
||||
"attempt_id": 1,
|
||||
"agent_session_uuid": "7d5700d0-bab1-4f65-9665-6b887396a9a6",
|
||||
"pane_process_generation": "w2X:p1:1234:2026-09-06T00:00:00Z",
|
||||
"dispatch_ack": true,
|
||||
"execution_anchor_observed": false
|
||||
},
|
||||
"timeline": [
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 0,
|
||||
"source_kind": "herdr",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"pane_id": "w2X:p1",
|
||||
"pane_process_generation": "w2X:p1:9999:2026-09-06T01:00:00Z",
|
||||
"agent_status": "idle"
|
||||
}
|
||||
}
|
||||
],
|
||||
"filesystem": {
|
||||
"report_path": ".mam/jobs/test-job-restarted-01/report-final.md",
|
||||
"exists": false,
|
||||
"manifest_committed": false
|
||||
},
|
||||
"expected_policy": {
|
||||
"decision": "reject_stale",
|
||||
"reason": "observed process generation does not match active dispatch attempt",
|
||||
"policy_version": "2.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"scenario_id": "tool_running",
|
||||
"backend": "backend_agnostic",
|
||||
"provenance": "simulated",
|
||||
"description": "Native status working or interactive_ready with active background tool execution. Inferred completion must be held.",
|
||||
"dispatch_context": {
|
||||
"job_id": "test-job-tool-running-01",
|
||||
"attempt_id": 1,
|
||||
"agent_session_uuid": "1c53dd89-81fc-49a6-b15e-bef3dfb61697",
|
||||
"pane_process_generation": "w2X:p3:5678:2026-09-06T00:00:00Z",
|
||||
"dispatch_ack": true,
|
||||
"execution_anchor_observed": true
|
||||
},
|
||||
"timeline": [
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 0,
|
||||
"source_kind": "herdr",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"agent_status": "working",
|
||||
"interactive_ready": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 200,
|
||||
"source_kind": "harness",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"tool": "bash",
|
||||
"active": true,
|
||||
"command": "pytest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"filesystem": {
|
||||
"report_path": ".mam/jobs/test-job-tool-running-01/report-final.md",
|
||||
"exists": false,
|
||||
"manifest_committed": false
|
||||
},
|
||||
"expected_policy": {
|
||||
"decision": "hold",
|
||||
"reason": "external tool execution currently active",
|
||||
"policy_version": "2.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"scenario_id": "transport_disconnected",
|
||||
"backend": "backend_agnostic",
|
||||
"provenance": "simulated",
|
||||
"description": "Herdr socket connection failure or freshness gap. Cached evidence invalidated; must reconnect and resnapshot.",
|
||||
"dispatch_context": {
|
||||
"job_id": "test-job-disconnect-01",
|
||||
"attempt_id": 1,
|
||||
"agent_session_uuid": "7d5700d0-bab1-4f65-9665-6b887396a9a6",
|
||||
"pane_process_generation": "w2X:p1:1234:2026-09-06T00:00:00Z",
|
||||
"dispatch_ack": true,
|
||||
"execution_anchor_observed": true
|
||||
},
|
||||
"timeline": [
|
||||
{
|
||||
"collector_clock_id": "CLOCK_MONOTONIC",
|
||||
"relative_ms": 0,
|
||||
"source_kind": "herdr",
|
||||
"source_provenance": "simulated",
|
||||
"payload": {
|
||||
"error": "connection_refused",
|
||||
"transport_healthy": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"filesystem": {
|
||||
"report_path": ".mam/jobs/test-job-disconnect-01/report-final.md",
|
||||
"exists": false,
|
||||
"manifest_committed": false
|
||||
},
|
||||
"expected_policy": {
|
||||
"decision": "hold_reconnect",
|
||||
"reason": "transport connection failure; previous idle observations cannot be trusted",
|
||||
"policy_version": "2.0.0"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user