Compare commits

..

9 Commits

Author SHA1 Message Date
6fc70ce435 deployer(ET): auto-commit from deployer run_id=503
Some checks failed
CI / test (push) Has been cancelled
CI / test (pull_request) Successful in 38s
2026-06-09 21:31:46 +03:00
2aacb39c2a tester(ET): auto-commit from tester run_id=502
All checks were successful
CI / test (push) Successful in 33s
CI / test (pull_request) Successful in 31s
2026-06-09 21:27:56 +03:00
79210529c8 reviewer(ET): auto-commit from reviewer run_id=501
All checks were successful
CI / test (push) Successful in 35s
CI / test (pull_request) Successful in 34s
2026-06-09 21:25:43 +03:00
0f945cfc1f fix(cancel): narrow STOP critical-window so deploy-park cancel applies (ORCH-090)
All checks were successful
CI / test (push) Successful in 31s
CI / test (pull_request) Successful in 32s
Review P1: a STOP while a self-hosting task is PARKED on `deploy` awaiting the
manual `Confirm Deploy` was classified as a critical merge/deploy window solely
because the task still held the per-repo merge-lease (held from merge-gate through
deploy->done). That window is fully reversible — nothing is merged or deployed yet
(the irreversible merge_pr runs later in _handle_merge_verify, always under an
INITIATED marker). So the cancel was DEFERRED to run_deploy_finalizer, which only
runs after Phase B (Confirm Deploy) — the very step the operator pressed STOP to
avoid. Result: the deferred cancel was never applied, the task wedged non-terminal
holding the lease, blocking the repo's serial-gate (ORCH-088) and merges.

Fix: gate the merge-lease branch of cancel.in_critical_window on an actively
RUNNING actor (_task_has_running_actor). Lease held + running deploy/merge job ->
still deferred (genuine in-flight step). Lease held + no running actor (idle
deploy parking) -> NOT critical -> immediate full reset, which itself releases the
lease (step 3c) and drives the task terminal. INITIATED-marker deferral unchanged.

Also fixes review P2 (AC-6): set_task_cancel_requested now returns the first-stamp
fact (rowcount), and the deferred branch only notifies on the first transition —
a repeated STOP while still deferred no longer spams duplicate notifications.

Tests: test_d7_lease_held_idle_parking_is_not_critical,
test_d7_lease_held_with_running_actor_still_critical,
test_d7_stop_on_deploy_awaiting_confirm_full_resets,
test_d7_repeated_stop_in_critical_window_no_duplicate_notify. Full suite green (1349).

Refs: ORCH-090

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 21:19:28 +03:00
61b8abe134 reviewer(ET): auto-commit from reviewer run_id=499
All checks were successful
CI / test (push) Successful in 33s
CI / test (pull_request) Successful in 31s
2026-06-09 21:10:24 +03:00
ad5bd901e3 feat(cancel): STOP-status task cancellation + relaunch-hole close (ORCH-090)
All checks were successful
CI / test (push) Successful in 33s
CI / test (pull_request) Successful in 32s
Introduce the dedicated Plane STOP status as a single declarative task-cancel
mechanism: stop the active agent (graceful SIGTERM cascade), cancel all jobs
(terminal `cancelled`, never requeued), remove the worktree + delete the remote
feature branch (never main, never force-push), drive the task to the new
system-terminal state `cancelled` and tombstone the natural keys so a later
"To Analyse" re-creates it from scratch (docs artefacts preserved). STOP during a
critical merge/deploy window is deferred until the irreversible step finishes
honestly. Also closes the relaunch hole: handle_status_start relaunch is gated to
the `analysis` stage; the only pipeline-start entry point remains "To Analyse".

Cross-cutting (adr-0026): the "task terminal" predicate is widened {done} ->
{done, cancelled} in serial_gate / task_deps / stages sink + reaper/worker
requeue guards. STAGE_TRANSITIONS exit-gates / QG_CHECKS / check_* are unchanged
(`cancelled` is a sink, not a new edge). Additive, never-raise, restart-safe,
under kill-switch ORCH_STOP_STATUS_ENABLED (off -> zero regression).

New: src/cancel.py (leaf), src/gitea.py (delete_remote_branch), tasks columns
cancelled_at/cancel_requested_at, jobs status `cancelled`, GET /queue `stop` block.
Tests: tests/test_stop_status.py (TC-01..TC-14 + D7); full suite green (1345).
Docs updated in-PR (architecture README, CLAUDE.md, README.md, .env.example,
CHANGELOG). ADR-001 D4 refinement: plane_issue_id is tombstoned too (the lookup
ORs on it) — original UUID recoverable from the parseable suffix.

Refs: ORCH-090

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 21:01:57 +03:00
269cbde3e3 architect(ET): auto-commit from architect run_id=497
All checks were successful
CI / test (push) Successful in 30s
2026-06-09 20:37:21 +03:00
610619edc2 analyst(ET): auto-commit from analyst run_id=496
All checks were successful
CI / test (push) Successful in 29s
2026-06-09 20:06:31 +03:00
cd24643c98 docs: init ORCH-090 business request
All checks were successful
CI / test (push) Successful in 29s
2026-06-09 19:59:15 +03:00
2 changed files with 0 additions and 26 deletions

View File

@@ -1,12 +0,0 @@
---
deploy_status: SUCCESS
work_item: ORCH-090
hook_exit_code: 0
deployed_by: deploy-finalizer
---
# Deploy log — ORCH-036 executable self-deploy
Прод-деплой завершён хост-хуком с exit-code `0` -> `deploy_status: SUCCESS`.
Вердикт зафиксирован детерминированным finalizer'ом (Фаза C), не LLM.

View File

@@ -1,14 +0,0 @@
---
post_deploy_status: HEALTHY
action_taken: NONE
work_item: ORCH-090
window_s: 900
checks_total: 30
checks_failed: 0
---
# Post-deploy log — ORCH-021 post-deploy monitor
Наблюдение прода завершено: `post_deploy_status: HEALTHY`, `action_taken: NONE`.
Окно наблюдения: 900s; опросов всего: 30, из них с провалом: 0.