Status
approved
PRYAJA3 Approval
Human gate for repo writes, promotion gates and other risky actions. Decisions are sent to the canonical target API.
Current decision status and linked runtime entities.
Approve, request changes or reject. The API keeps approval, run, checkpoint and audit state in sync.
Canonical execution controls for approved repo writes, promotion gates and checkpoint resume. Destructive steps still pass through the target API policy layer.
The proposal or gated action that requires a human decision.
Post-approval execution state, verification lineage and promotion readiness.
{
"decision": {
"status": "approved",
"actor": "synthetic-live-proof",
"comment": "combined path verification",
"decided_at": "2026-04-12T17:32:01.081843+00:00"
},
"execution": {
"status": "applied_verified",
"executed_at": "2026-04-12T17:32:01.233494+00:00",
"workspace_path": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z",
"report_path": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/approval-apply-report.json",
"patch_path": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/proposed.patch",
"report": {
"approval_id": "approval-45eb403dc986",
"run_id": "run-9e17cc06",
"task_id": "task-63333f8e",
"status": "applied_verified",
"executed_at": "2026-04-12T17:32:01.233494+00:00",
"source_workspace_root": "/workspace",
"isolated_workspace_root": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z",
"proposal": {
"title": "Synthetic combined comment-only patch",
"summary": "Insert a harmless comment into test_openproject_webhook.py for combined path verification.",
"target_files": [
"apps/api/tests/test_openproject_webhook.py"
],
"validation_plan": [
"Run apps/api/tests/test_openproject_webhook.py in the isolated workspace."
],
"readiness": "proposal_ready",
"confidence": 0.99
},
"patch": {
"artifact_uri": "urn:pryaja3:artifact:code-patch-proposal:run-9e17cc06:PATCH-2",
"has_unified_diff": true,
"patch_path": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/proposed.patch",
"result": {
"status": "applied",
"selected_strip": 1,
"dry_run_attempts": [
{
"ok": true,
"exit_code": 0,
"strip": 1,
"argv": [
"patch",
"--dry-run",
"--batch",
"--forward",
"-p1",
"--input",
"/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/proposed.patch"
],
"started_at": "2026-04-12T17:32:01.233686+00:00",
"finished_at": "2026-04-12T17:32:01.236989+00:00",
"stdout_preview": "checking file apps/api/tests/test_openproject_webhook.py",
"stderr_preview": ""
}
],
"apply_result": {
"ok": true,
"exit_code": 0,
"strip": 1,
"argv": [
"patch",
"--batch",
"--forward",
"-p1",
"--input",
"/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/proposed.patch"
],
"started_at": "2026-04-12T17:32:01.237062+00:00",
"finished_at": "2026-04-12T17:32:01.239897+00:00",
"stdout_preview": "patching file apps/api/tests/test_openproject_webhook.py",
"stderr_preview": ""
}
}
},
"tests": {
"status": "passed",
"results": [
{
"path": "apps/api/tests/test_openproject_webhook.py",
"command": [
"python3",
"-m",
"unittest",
"discover",
"-s",
"apps/api/tests",
"-p",
"test_openproject_webhook.py",
"-v"
],
"pythonpath": "apps/api",
"start_dir": "apps/api/tests",
"status": "passed",
"exit_code": 0,
"started_at": "2026-04-12T17:32:01.240199+00:00",
"finished_at": "2026-04-12T17:32:03.140668+00:00",
"stdout_preview": "",
"stderr_preview": "test_normalize_openproject_webhook_builds_task_brief_and_forced_thread_binding (test_openproject_webhook.OpenProjectWebhookTests.test_normalize_openproject_webhook_builds_task_brief_and_forced_thread_binding) ... ok test_normalize_openproject_webhook_keeps_engineering_bug_in_development_mode_even_with_analysis_language (test_openproject_webhook.OpenProjectWebhookTests.test_normalize_openproject_webhook_keeps_engineering_bug_in_development_mode_even_with_analysis_language) ... ok test_webhook_endpoint_queues_once_and_deduplicates_repeated_event (test_openproject_webhook.OpenProjectWebhookTests.test_webhook_endpoint_queues_once_and_deduplicates_repeated_event) ... {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122926} {\"level\": \"INFO\", \"logger\": \"httpx\", \"message\": \"HTTP Request: POST http://testserver/v1/board/openproject/webhook \\\"HTTP/1.1 200 OK\\\"\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122927} {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122931} {\"level\": \"INFO\", \"logger\": \"httpx\", \"message\": \"HTTP Request: POST http://testserver/v1/board/openproject/webhook \\\"HTTP/1.1 200 OK\\\"\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122932} ok test_webhook_endpoint_rejects_payload_without_work_package (test_openproject_webhook.OpenProjectWebhookTests.test_webhook_endpoint_rejects_payload_without_work_package) ... {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122935} {\"level\": \"INFO\", \"logger\": \"httpx\", \"message\": \"HTTP Request: POST http://testserver/v1/board/openproject/webhook \\\"HTTP/1.1 400 Bad Request\\\"\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122936} ok ---------------------------------------------------------------------- Ran 4 tests in 0.025s OK"
}
]
}
}
},
"promotion": {
"state": "completed",
"ready_for_merge": false,
"summary": "Archived obsolete smoke/recovery/system-test entry; not actionable for the user.",
"source": "self",
"root_run_id": "run-9e17cc06",
"source_run_id": "run-9e17cc06",
"task_id": "task-63333f8e",
"task_title": "Synthetic combined approval proof",
"approval_state": "archived",
"approval_execution_parent_run_id": null,
"review_readiness": null,
"engineering_readiness": null,
"tests_overall_status": null,
"tests_count": 0,
"requirements": [],
"promotion_execution_state": null,
"promotion_execution_executed_at": null,
"promotion_execution_workspace_path": null,
"promotion_execution_target_root": null,
"promotion_execution_report_path": null,
"promotion_execution_diff_path": null,
"promotion_bundle_artifact_ids": [],
"updated_at": "2026-04-17T15:15:46.960347Z",
"completed_at": "2026-04-17T15:15:46.960347Z"
},
"lineage": {
"root_run_id": "run-9e17cc06",
"child_runs": [],
"approval_related_runs": []
}
}Patch proposals, execution outputs, approval state artifacts and verification reports.
Low-level request JSON for audit and debugging.
{
"approval_id": "approval-45eb403dc986",
"required": true,
"status": "requested",
"approval_kind": "repo_write_apply",
"title": "Synthetic combined apply approval",
"summary": "Execute synthetic isolated workspace patch application through combined decision path.",
"reason": "Controlled approval for live combined verification.",
"artifact_uri": "urn:pryaja3:artifact:code-patch-proposal:run-9e17cc06:PATCH-2",
"proposal_readiness": "proposal_ready",
"decision_options": [
"approve",
"reject",
"needs_changes"
],
"resume_supported": true,
"tool_name": "code.patch",
"step_id": "PATCH-2",
"decision": {
"status": "approved",
"actor": "synthetic-live-proof",
"comment": "combined path verification",
"decided_at": "2026-04-12T17:32:01.081843+00:00"
},
"execution": {
"status": "applied_verified",
"executed_at": "2026-04-12T17:32:01.233494+00:00",
"workspace_path": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z",
"report_path": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/approval-apply-report.json",
"patch_path": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/proposed.patch",
"report": {
"approval_id": "approval-45eb403dc986",
"run_id": "run-9e17cc06",
"task_id": "task-63333f8e",
"status": "applied_verified",
"executed_at": "2026-04-12T17:32:01.233494+00:00",
"source_workspace_root": "/workspace",
"isolated_workspace_root": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z",
"proposal": {
"title": "Synthetic combined comment-only patch",
"summary": "Insert a harmless comment into test_openproject_webhook.py for combined path verification.",
"target_files": [
"apps/api/tests/test_openproject_webhook.py"
],
"validation_plan": [
"Run apps/api/tests/test_openproject_webhook.py in the isolated workspace."
],
"readiness": "proposal_ready",
"confidence": 0.99
},
"patch": {
"artifact_uri": "urn:pryaja3:artifact:code-patch-proposal:run-9e17cc06:PATCH-2",
"has_unified_diff": true,
"patch_path": "/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/proposed.patch",
"result": {
"status": "applied",
"selected_strip": 1,
"dry_run_attempts": [
{
"ok": true,
"exit_code": 0,
"strip": 1,
"argv": [
"patch",
"--dry-run",
"--batch",
"--forward",
"-p1",
"--input",
"/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/proposed.patch"
],
"started_at": "2026-04-12T17:32:01.233686+00:00",
"finished_at": "2026-04-12T17:32:01.236989+00:00",
"stdout_preview": "checking file apps/api/tests/test_openproject_webhook.py",
"stderr_preview": ""
}
],
"apply_result": {
"ok": true,
"exit_code": 0,
"strip": 1,
"argv": [
"patch",
"--batch",
"--forward",
"-p1",
"--input",
"/isolated-workspaces/approval-45eb403dc986-20260412T173201Z/proposed.patch"
],
"started_at": "2026-04-12T17:32:01.237062+00:00",
"finished_at": "2026-04-12T17:32:01.239897+00:00",
"stdout_preview": "patching file apps/api/tests/test_openproject_webhook.py",
"stderr_preview": ""
}
}
},
"tests": {
"status": "passed",
"results": [
{
"path": "apps/api/tests/test_openproject_webhook.py",
"command": [
"python3",
"-m",
"unittest",
"discover",
"-s",
"apps/api/tests",
"-p",
"test_openproject_webhook.py",
"-v"
],
"pythonpath": "apps/api",
"start_dir": "apps/api/tests",
"status": "passed",
"exit_code": 0,
"started_at": "2026-04-12T17:32:01.240199+00:00",
"finished_at": "2026-04-12T17:32:03.140668+00:00",
"stdout_preview": "",
"stderr_preview": "test_normalize_openproject_webhook_builds_task_brief_and_forced_thread_binding (test_openproject_webhook.OpenProjectWebhookTests.test_normalize_openproject_webhook_builds_task_brief_and_forced_thread_binding) ... ok test_normalize_openproject_webhook_keeps_engineering_bug_in_development_mode_even_with_analysis_language (test_openproject_webhook.OpenProjectWebhookTests.test_normalize_openproject_webhook_keeps_engineering_bug_in_development_mode_even_with_analysis_language) ... ok test_webhook_endpoint_queues_once_and_deduplicates_repeated_event (test_openproject_webhook.OpenProjectWebhookTests.test_webhook_endpoint_queues_once_and_deduplicates_repeated_event) ... {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122926} {\"level\": \"INFO\", \"logger\": \"httpx\", \"message\": \"HTTP Request: POST http://testserver/v1/board/openproject/webhook \\\"HTTP/1.1 200 OK\\\"\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122927} {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122931} {\"level\": \"INFO\", \"logger\": \"httpx\", \"message\": \"HTTP Request: POST http://testserver/v1/board/openproject/webhook \\\"HTTP/1.1 200 OK\\\"\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122932} ok test_webhook_endpoint_rejects_payload_without_work_package (test_openproject_webhook.OpenProjectWebhookTests.test_webhook_endpoint_rejects_payload_without_work_package) ... {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122935} {\"level\": \"INFO\", \"logger\": \"httpx\", \"message\": \"HTTP Request: POST http://testserver/v1/board/openproject/webhook \\\"HTTP/1.1 400 Bad Request\\\"\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776015122936} ok ---------------------------------------------------------------------- Ran 4 tests in 0.025s OK"
}
]
}
}
},
"responsible_agent": "Engineer Agent",
"responsible_role": "engineer",
"responsibility_source": "plan_step_role"
}