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": "live-tester",
"comment": "execute synthetic live verification flow",
"decided_at": "2026-04-13T17:49:41.281657+00:00"
},
"execution": {
"status": "applied_verified",
"executed_at": "2026-04-13T17:49:41.437228+00:00",
"workspace_path": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z",
"report_path": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/approval-apply-report.json",
"patch_path": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch",
"report": {
"approval_id": "approval-live-post-apply-review-parent-3",
"run_id": "run-live-post-apply-review-parent-3",
"task_id": "task-live-post-apply-review-parent-3",
"status": "applied_verified",
"executed_at": "2026-04-13T17:49:41.437228+00:00",
"source_workspace_root": "/workspace",
"isolated_workspace_root": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z",
"proposal": {
"title": "Patch apps/api/app/main.py live smoke marker 3",
"summary": "Insert a harmless smoke marker comment into apps/api/app/main.py.",
"target_files": [
"apps/api/app/main.py"
],
"validation_plan": [
"Run apps.api.tests.test_openproject_webhook in isolated workspace"
],
"readiness": "proposal_ready",
"confidence": 0.92
},
"patch": {
"artifact_uri": "urn:pryaja3:artifact:code-patch-proposal:run-live-post-apply-review-parent-3:PATCH-5",
"has_unified_diff": true,
"patch_path": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch",
"result": {
"status": "applied",
"selected_strip": 0,
"dry_run_attempts": [
{
"ok": false,
"exit_code": 1,
"strip": 1,
"argv": [
"patch",
"--dry-run",
"--batch",
"--forward",
"-p1",
"--input",
"/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch"
],
"started_at": "2026-04-13T17:49:41.437559+00:00",
"finished_at": "2026-04-13T17:49:41.439750+00:00",
"stdout_preview": "can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- apps/api/app/main.py |+++ apps/api/app/main.py -------------------------- No file to patch. Skipping patch. 1 out of 1 hunk ignored",
"stderr_preview": ""
},
{
"ok": true,
"exit_code": 0,
"strip": 0,
"argv": [
"patch",
"--dry-run",
"--batch",
"--forward",
"-p0",
"--input",
"/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch"
],
"started_at": "2026-04-13T17:49:41.439953+00:00",
"finished_at": "2026-04-13T17:49:41.442858+00:00",
"stdout_preview": "checking file apps/api/app/main.py",
"stderr_preview": ""
}
],
"apply_result": {
"ok": true,
"exit_code": 0,
"strip": 0,
"argv": [
"patch",
"--batch",
"--forward",
"-p0",
"--input",
"/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch"
],
"started_at": "2026-04-13T17:49:41.442917+00:00",
"finished_at": "2026-04-13T17:49:41.444631+00:00",
"stdout_preview": "patching file apps/api/app/main.py",
"stderr_preview": ""
}
}
},
"tests": {
"status": "passed",
"results": [
{
"path": "apps/api/tests/test_openproject_webhook.py",
"command": [
"python3",
"-m",
"unittest",
"apps.api.tests.test_openproject_webhook"
],
"pythonpath": "apps/api",
"start_dir": "",
"status": "passed",
"exit_code": 0,
"started_at": "2026-04-13T17:49:41.444924+00:00",
"finished_at": "2026-04-13T17:49:43.374417+00:00",
"stdout_preview": "",
"stderr_preview": "..{\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102583150} {\"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\": 1776102583152} {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102583157} {\"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\": 1776102583158} .{\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102583162} {\"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\": 1776102583163} . ---------------------------------------------------------------------- Ran 4 tests in 0.029s 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-live-post-apply-review-parent-3",
"source_run_id": "run-live-post-apply-review-parent-3",
"task_id": "task-live-post-apply-review-parent-3",
"task_title": "Live synthetic approval apply review 3",
"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-live-post-apply-review-parent-3",
"child_runs": [
{
"run_id": "run-c0b61f45",
"task_id": "task-5b02a345",
"thread_id": "thread-live-post-apply-review-3",
"status": "completed",
"raw_status": "completed",
"mode": "development",
"difficulty": "complex",
"started_at": "2026-04-13T17:49:43.449505Z",
"completed_at": "2026-04-13T17:50:56.715178Z",
"updated_at": "2026-04-13T17:50:56.715178Z",
"task_title": "Post-apply review: Live synthetic approval apply review 3",
"task_source": "telegram",
"execution_mode": "canonical",
"approval_state": "not_required",
"phase": "completed",
"current_stage": "worker.completed",
"current_step_id": null,
"plan_version": "target-worker-playbook-development-repo-analysis-v3",
"root_run_id": "run-live-post-apply-review-parent-3",
"parent_run_ids": [
"run-live-post-apply-review-parent-3"
],
"lineage_kind": "post_apply_review",
"approval_id": "approval-live-post-apply-review-parent-3",
"workspace_root": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z",
"final_answer_preview": "Основываясь на результатах выполнения задачи, представляю отчет о post-apply ревью для задачи «Live synthetic approval apply review 3». ### Что найдено * **Целевой файл:** `apps/a…"
}
],
"approval_related_runs": [
{
"run_id": "run-c0b61f45",
"task_id": "task-5b02a345",
"thread_id": "thread-live-post-apply-review-3",
"status": "completed",
"raw_status": "completed",
"mode": "development",
"difficulty": "complex",
"started_at": "2026-04-13T17:49:43.449505Z",
"completed_at": "2026-04-13T17:50:56.715178Z",
"updated_at": "2026-04-13T17:50:56.715178Z",
"task_title": "Post-apply review: Live synthetic approval apply review 3",
"task_source": "telegram",
"execution_mode": "canonical",
"approval_state": "not_required",
"phase": "completed",
"current_stage": "worker.completed",
"current_step_id": null,
"plan_version": "target-worker-playbook-development-repo-analysis-v3",
"root_run_id": "run-live-post-apply-review-parent-3",
"parent_run_ids": [
"run-live-post-apply-review-parent-3"
],
"lineage_kind": "post_apply_review",
"approval_id": "approval-live-post-apply-review-parent-3",
"workspace_root": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z",
"final_answer_preview": "Основываясь на результатах выполнения задачи, представляю отчет о post-apply ревью для задачи «Live synthetic approval apply review 3». ### Что найдено * **Целевой файл:** `apps/a…"
}
]
}
}Patch proposals, execution outputs, approval state artifacts and verification reports.
Low-level request JSON for audit and debugging.
{
"title": "Patch apps/api/app/main.py live smoke marker 3",
"summary": "Review the proposed diff before apply.",
"reason": "Repo writes require explicit human approval.",
"artifact_uri": "urn:pryaja3:artifact:code-patch-proposal:run-live-post-apply-review-parent-3:PATCH-5",
"decision_options": [
"approve",
"reject",
"needs_changes"
],
"decision": {
"status": "approved",
"actor": "live-tester",
"comment": "execute synthetic live verification flow",
"decided_at": "2026-04-13T17:49:41.281657+00:00"
},
"resume_supported": true,
"status": "approved",
"execution": {
"status": "applied_verified",
"executed_at": "2026-04-13T17:49:41.437228+00:00",
"workspace_path": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z",
"report_path": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/approval-apply-report.json",
"patch_path": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch",
"report": {
"approval_id": "approval-live-post-apply-review-parent-3",
"run_id": "run-live-post-apply-review-parent-3",
"task_id": "task-live-post-apply-review-parent-3",
"status": "applied_verified",
"executed_at": "2026-04-13T17:49:41.437228+00:00",
"source_workspace_root": "/workspace",
"isolated_workspace_root": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z",
"proposal": {
"title": "Patch apps/api/app/main.py live smoke marker 3",
"summary": "Insert a harmless smoke marker comment into apps/api/app/main.py.",
"target_files": [
"apps/api/app/main.py"
],
"validation_plan": [
"Run apps.api.tests.test_openproject_webhook in isolated workspace"
],
"readiness": "proposal_ready",
"confidence": 0.92
},
"patch": {
"artifact_uri": "urn:pryaja3:artifact:code-patch-proposal:run-live-post-apply-review-parent-3:PATCH-5",
"has_unified_diff": true,
"patch_path": "/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch",
"result": {
"status": "applied",
"selected_strip": 0,
"dry_run_attempts": [
{
"ok": false,
"exit_code": 1,
"strip": 1,
"argv": [
"patch",
"--dry-run",
"--batch",
"--forward",
"-p1",
"--input",
"/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch"
],
"started_at": "2026-04-13T17:49:41.437559+00:00",
"finished_at": "2026-04-13T17:49:41.439750+00:00",
"stdout_preview": "can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- apps/api/app/main.py |+++ apps/api/app/main.py -------------------------- No file to patch. Skipping patch. 1 out of 1 hunk ignored",
"stderr_preview": ""
},
{
"ok": true,
"exit_code": 0,
"strip": 0,
"argv": [
"patch",
"--dry-run",
"--batch",
"--forward",
"-p0",
"--input",
"/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch"
],
"started_at": "2026-04-13T17:49:41.439953+00:00",
"finished_at": "2026-04-13T17:49:41.442858+00:00",
"stdout_preview": "checking file apps/api/app/main.py",
"stderr_preview": ""
}
],
"apply_result": {
"ok": true,
"exit_code": 0,
"strip": 0,
"argv": [
"patch",
"--batch",
"--forward",
"-p0",
"--input",
"/isolated-workspaces/approval-live-post-apply-review-parent-3-20260413T174941Z/proposed.patch"
],
"started_at": "2026-04-13T17:49:41.442917+00:00",
"finished_at": "2026-04-13T17:49:41.444631+00:00",
"stdout_preview": "patching file apps/api/app/main.py",
"stderr_preview": ""
}
}
},
"tests": {
"status": "passed",
"results": [
{
"path": "apps/api/tests/test_openproject_webhook.py",
"command": [
"python3",
"-m",
"unittest",
"apps.api.tests.test_openproject_webhook"
],
"pythonpath": "apps/api",
"start_dir": "",
"status": "passed",
"exit_code": 0,
"started_at": "2026-04-13T17:49:41.444924+00:00",
"finished_at": "2026-04-13T17:49:43.374417+00:00",
"stdout_preview": "",
"stderr_preview": "..{\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102583150} {\"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\": 1776102583152} {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102583157} {\"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\": 1776102583158} .{\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102583162} {\"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\": 1776102583163} . ---------------------------------------------------------------------- Ran 4 tests in 0.029s OK"
}
]
}
}
},
"responsible_agent": "Coordinator Agent",
"responsible_role": "coordinator",
"responsibility_source": "default_coordinator"
}