PRYAJA3 Approval

Patch apps/api/app/main.py live smoke marker

Human gate for repo writes, promotion gates and other risky actions. Decisions are sent to the canonical target API.

Approval state

Current decision status and linked runtime entities.

Status
approved
Kind
approval
Responsible
Coordinator Agent
Run status
completed
Mode
development
Artifacts
7
Family runs
2
Verification runs
1
Promotion
completed
Human notification
pending
approvedtoolOpen runOpen task cardJSON reportMarkdown report

Decision

Approve, request changes or reject. The API keeps approval, run, checkpoint and audit state in sync.

This approval is already terminal.

Follow-up actions

Canonical execution controls for approved repo writes, promotion gates and checkpoint resume. Destructive steps still pass through the target API policy layer.

Resume run
Resume the graph runtime from the durable approval checkpoint.

Request details

The proposal or gated action that requires a human decision.

Approval ID
approval-live-post-apply-review-parent-2
Responsible agent
Coordinator Agent
Responsible role
coordinator
Run ID
run-live-post-apply-review-parent-2
Task
Live synthetic approval apply review 2
Thread
Live post-apply verification 2
Step
PATCH-5
Requested
13 апр. 2026 г., 17:50
Decided
13 апр. 2026 г., 17:44
Notification
pending / attempts=0
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-2:PATCH-5
Readiness
unknown

Execution and promotion

Post-approval execution state, verification lineage and promotion readiness.

Execution
applied_verified
Workspace
present
Promotion ready
no
Promotion approval
none
{
  "decision": {
    "status": "approved",
    "actor": "live-tester",
    "comment": "execute synthetic live verification flow",
    "decided_at": "2026-04-13T17:44:13.157117+00:00"
  },
  "execution": {
    "status": "applied_verified",
    "executed_at": "2026-04-13T17:44:13.290804+00:00",
    "workspace_path": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z",
    "report_path": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z/approval-apply-report.json",
    "patch_path": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z/proposed.patch",
    "report": {
      "approval_id": "approval-live-post-apply-review-parent-2",
      "run_id": "run-live-post-apply-review-parent-2",
      "task_id": "task-live-post-apply-review-parent-2",
      "status": "applied_verified",
      "executed_at": "2026-04-13T17:44:13.290804+00:00",
      "source_workspace_root": "/workspace",
      "isolated_workspace_root": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z",
      "proposal": {
        "title": "Patch apps/api/app/main.py live smoke marker",
        "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-2:PATCH-5",
        "has_unified_diff": true,
        "patch_path": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z/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-2-20260413T174413Z/proposed.patch"
              ],
              "started_at": "2026-04-13T17:44:13.290988+00:00",
              "finished_at": "2026-04-13T17:44:13.292980+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-2-20260413T174413Z/proposed.patch"
              ],
              "started_at": "2026-04-13T17:44:13.293089+00:00",
              "finished_at": "2026-04-13T17:44:13.296221+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-2-20260413T174413Z/proposed.patch"
            ],
            "started_at": "2026-04-13T17:44:13.296285+00:00",
            "finished_at": "2026-04-13T17:44:13.299229+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:44:13.299480+00:00",
            "finished_at": "2026-04-13T17:44:15.149830+00:00",
            "stdout_preview": "",
            "stderr_preview": "..{\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102254909} {\"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\": 1776102254912} {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102254916} {\"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\": 1776102254917} .{\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102254920} {\"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\": 1776102254921} . ---------------------------------------------------------------------- Ran 4 tests in 0.027s 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-2",
    "source_run_id": "run-live-post-apply-review-parent-2",
    "task_id": "task-live-post-apply-review-parent-2",
    "task_title": "Live synthetic approval apply review 2",
    "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-2",
    "child_runs": [
      {
        "run_id": "run-ee35763b",
        "task_id": "task-9e649c6a",
        "thread_id": "thread-live-post-apply-review-2",
        "status": "completed",
        "raw_status": "completed",
        "mode": "development",
        "difficulty": "complex",
        "started_at": "2026-04-13T17:44:15.188027Z",
        "completed_at": "2026-04-13T17:45:36.041082Z",
        "updated_at": "2026-04-13T17:45:36.041082Z",
        "task_title": "Post-apply review: Live synthetic approval apply review 2",
        "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-2",
        "parent_run_ids": [
          "run-live-post-apply-review-parent-2"
        ],
        "lineage_kind": "post_apply_review",
        "approval_id": "approval-live-post-apply-review-parent-2",
        "workspace_root": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z",
        "final_answer_preview": "Вот результаты post-apply ревью для задачи «Live synthetic approval apply review 2» на основе доступных данных и выполненного плана. ### Что найдено * Согласно описанию задачи, це…"
      }
    ],
    "approval_related_runs": [
      {
        "run_id": "run-ee35763b",
        "task_id": "task-9e649c6a",
        "thread_id": "thread-live-post-apply-review-2",
        "status": "completed",
        "raw_status": "completed",
        "mode": "development",
        "difficulty": "complex",
        "started_at": "2026-04-13T17:44:15.188027Z",
        "completed_at": "2026-04-13T17:45:36.041082Z",
        "updated_at": "2026-04-13T17:45:36.041082Z",
        "task_title": "Post-apply review: Live synthetic approval apply review 2",
        "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-2",
        "parent_run_ids": [
          "run-live-post-apply-review-parent-2"
        ],
        "lineage_kind": "post_apply_review",
        "approval_id": "approval-live-post-apply-review-parent-2",
        "workspace_root": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z",
        "final_answer_preview": "Вот результаты post-apply ревью для задачи «Live synthetic approval apply review 2» на основе доступных данных и выполненного плана. ### Что найдено * Согласно описанию задачи, це…"
      }
    ]
  }
}

Related artifacts

Patch proposals, execution outputs, approval state artifacts and verification reports.

approval_resume_state13 апр. 2026 г., 17:44
urn:pryaja3:artifact:approval-resume:approval-live-post-apply-review-parent-2:approved
isolated_workspace13 апр. 2026 г., 17:44
urn:pryaja3:artifact:isolated-workspace:approval-live-post-apply-review-parent-2
patch_apply_report13 апр. 2026 г., 17:44
urn:pryaja3:artifact:patch-apply-report:approval-live-post-apply-review-parent-2
approval_resume_execution13 апр. 2026 г., 17:44
urn:pryaja3:artifact:approval-resume-execution:approval-live-post-apply-review-parent-2
approval_resume_report13 апр. 2026 г., 17:45
urn:pryaja3:artifact:approval-resume-report:run-live-post-apply-review-parent-2:approval-live-post-apply-review-parent-2
Approval execution applied the approved patch in the isolated workspace and verification completed successfully.
approval_resume_checkpoint13 апр. 2026 г., 17:45
urn:pryaja3:artifact:approval-resume-checkpoint:run-live-post-apply-review-parent-2:approval-live-post-apply-review-parent-2
code_patch_proposal13 апр. 2026 г., 17:50
urn:pryaja3:artifact:code-patch-proposal:run-live-post-apply-review-parent-2:PATCH-5

Raw approval payload

Low-level request JSON for audit and debugging.

{
  "title": "Patch apps/api/app/main.py live smoke marker",
  "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-2: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:44:13.157117+00:00"
  },
  "resume_supported": true,
  "status": "approved",
  "execution": {
    "status": "applied_verified",
    "executed_at": "2026-04-13T17:44:13.290804+00:00",
    "workspace_path": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z",
    "report_path": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z/approval-apply-report.json",
    "patch_path": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z/proposed.patch",
    "report": {
      "approval_id": "approval-live-post-apply-review-parent-2",
      "run_id": "run-live-post-apply-review-parent-2",
      "task_id": "task-live-post-apply-review-parent-2",
      "status": "applied_verified",
      "executed_at": "2026-04-13T17:44:13.290804+00:00",
      "source_workspace_root": "/workspace",
      "isolated_workspace_root": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z",
      "proposal": {
        "title": "Patch apps/api/app/main.py live smoke marker",
        "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-2:PATCH-5",
        "has_unified_diff": true,
        "patch_path": "/isolated-workspaces/approval-live-post-apply-review-parent-2-20260413T174413Z/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-2-20260413T174413Z/proposed.patch"
              ],
              "started_at": "2026-04-13T17:44:13.290988+00:00",
              "finished_at": "2026-04-13T17:44:13.292980+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-2-20260413T174413Z/proposed.patch"
              ],
              "started_at": "2026-04-13T17:44:13.293089+00:00",
              "finished_at": "2026-04-13T17:44:13.296221+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-2-20260413T174413Z/proposed.patch"
            ],
            "started_at": "2026-04-13T17:44:13.296285+00:00",
            "finished_at": "2026-04-13T17:44:13.299229+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:44:13.299480+00:00",
            "finished_at": "2026-04-13T17:44:15.149830+00:00",
            "stdout_preview": "",
            "stderr_preview": "..{\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102254909} {\"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\": 1776102254912} {\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102254916} {\"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\": 1776102254917} .{\"level\": \"INFO\", \"logger\": \"app.main\", \"message\": \"request finished\", \"service\": \"pryaja3-target-api\", \"timestamp_ms\": 1776102254920} {\"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\": 1776102254921} . ---------------------------------------------------------------------- Ran 4 tests in 0.027s OK"
          }
        ]
      }
    }
  },
  "responsible_agent": "Coordinator Agent",
  "responsible_role": "coordinator",
  "responsibility_source": "default_coordinator"
}