feat: add workflow dashboard for queue, leases, and next safe action (Closes #605) #762

Merged
sysadmin merged 2 commits from feat/issue-605-workflow-dashboard into master 2026-07-19 19:20:20 -05:00
Owner

Summary

Implements #605: read-only MCP workflow dashboard so humans and LLMs can see live queue/lease/blocker state and the next safe action without reconstructing comments.

Delivered

  • New pure module workflow_dashboard.py (machine + human readable snapshot)
  • New MCP tool gitea_workflow_dashboard (gitea.read, never assigns work)
  • mcp-menu.sh + docs/mcp-menu.md entry documenting the tool
  • Hermetic tests including #593/#592/#587-style terminal-lock queue behavior

Safety

  • Read-only; exclusive assignment still requires gitea_allocate_next_work
  • Never presents blocked / dependency-unmet / claimed / terminal-locked (non-terminal) items as safe
  • Incomplete inventory fails closed (no safe suggestions)

Validation

  • pytest tests/test_workflow_dashboard.py tests/test_mcp_menu_script.py — 24 passed

Closes #605

Head pin

  • Branch: feat/issue-605-workflow-dashboard
  • Head SHA: 7f2b9f36de4fa958e43fcee36e07b36e4cb53759
  • Base: master @ 8a851eb87e63fc236d8897ed67f67cbe295bc3ae
## Summary Implements #605: read-only MCP workflow dashboard so humans and LLMs can see live queue/lease/blocker state and the next safe action without reconstructing comments. ### Delivered - New pure module `workflow_dashboard.py` (machine + human readable snapshot) - New MCP tool `gitea_workflow_dashboard` (gitea.read, never assigns work) - `mcp-menu.sh` + `docs/mcp-menu.md` entry documenting the tool - Hermetic tests including #593/#592/#587-style terminal-lock queue behavior ### Safety - Read-only; exclusive assignment still requires `gitea_allocate_next_work` - Never presents blocked / dependency-unmet / claimed / terminal-locked (non-terminal) items as safe - Incomplete inventory fails closed (no safe suggestions) ### Validation - `pytest tests/test_workflow_dashboard.py tests/test_mcp_menu_script.py` — 24 passed Closes #605 ## Head pin - Branch: `feat/issue-605-workflow-dashboard` - Head SHA: `7f2b9f36de4fa958e43fcee36e07b36e4cb53759` - Base: `master` @ `8a851eb87e63fc236d8897ed67f67cbe295bc3ae`
jcwalker3 added 1 commit 2026-07-19 13:43:26 -05:00
Read-only MCP tool gitea_workflow_dashboard plus mcp-menu entry so operators
and LLMs can see PR/issue queues, leases, terminal locks, blockers, and exact
next-safe prompts without reconstructing state from comments. Never assigns
work or presents blocked/terminal-locked items as safe.
Author
Owner

CTH: Author Handoff

Canonical Issue State

STATE: author_implementation_complete_pr_open
WHO_IS_NEXT: reviewer
NEXT_ACTION: Independently review PR #762 at exact head 7f2b9f36de and submit one formal verdict; do not merge in the review phase
NEXT_PROMPT:

Review PR #762 for issue #605 at head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759 using gitea-reviewer / prgs-reviewer. Pin that head SHA, run the canonical review-merge workflow review phase only, and submit exactly one formal Gitea review verdict. Do not merge. Do not switch roles.

WHAT_HAPPENED: Implemented #605 (workflow dashboard). Added pure workflow_dashboard.py, MCP tool gitea_workflow_dashboard, mcp-menu + docs entry, and hermetic tests (terminal-lock queue cases). Opened PR #762. Control-plane assignment asn-7fe2dec0e5df42f7 / lease lease-1dfc4167c6bc490d. Issue lock on feat/issue-605-workflow-dashboard.
WHY: Issue #605 required a read-only operational view of queues, leases, blockers, and next safe action so agents do not reconstruct state from comments or self-select blocked work.
RELATED_PRS: PR #762 (this PR); Closes #605
BLOCKERS: none
VALIDATION: pytest tests/test_workflow_dashboard.py tests/test_mcp_menu_script.py — 24 passed; head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759; base master 8a851eb87e
LAST_UPDATED_BY: jcwalker3 / prgs-author (author session prgs-author-75593-01e31082)

## CTH: Author Handoff ## Canonical Issue State STATE: author_implementation_complete_pr_open WHO_IS_NEXT: reviewer NEXT_ACTION: Independently review PR #762 at exact head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759 and submit one formal verdict; do not merge in the review phase NEXT_PROMPT: ```text Review PR #762 for issue #605 at head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759 using gitea-reviewer / prgs-reviewer. Pin that head SHA, run the canonical review-merge workflow review phase only, and submit exactly one formal Gitea review verdict. Do not merge. Do not switch roles. ``` WHAT_HAPPENED: Implemented #605 (workflow dashboard). Added pure workflow_dashboard.py, MCP tool gitea_workflow_dashboard, mcp-menu + docs entry, and hermetic tests (terminal-lock queue cases). Opened PR #762. Control-plane assignment asn-7fe2dec0e5df42f7 / lease lease-1dfc4167c6bc490d. Issue lock on feat/issue-605-workflow-dashboard. WHY: Issue #605 required a read-only operational view of queues, leases, blockers, and next safe action so agents do not reconstruct state from comments or self-select blocked work. RELATED_PRS: PR #762 (this PR); Closes #605 BLOCKERS: none VALIDATION: pytest tests/test_workflow_dashboard.py tests/test_mcp_menu_script.py — 24 passed; head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759; base master 8a851eb87e63fc236d8897ed67f67cbe295bc3ae LAST_UPDATED_BY: jcwalker3 / prgs-author (author session prgs-author-75593-01e31082)
Author
Owner

CTH: Blocker / Review Handoff

Canonical Issue State

STATE: blocked
WHO_IS_NEXT: author
NEXT_ACTION: Assess and implement defect issue #763 through prgs-author / jcwalker3 subject to WIP and dependency policy; do not re-attempt the failed reviewer lease sequence on PR #762 until #763 is resolved and verified.
NEXT_PROMPT:

As prgs-author / jcwalker3, assess open type:bug #763 (Reviewer lease acquisition rejects canonical preflight order). Do not implement PR #762 or #605. Do not re-run gitea_acquire_reviewer_pr_lease against PR #762 until #763 is fixed and verified. Subject to WIP and dependency policy, plan or implement the tooling fix for the deterministic preflight_order_violation on the whoami → resolve_task_capability(review_pr) → acquire_reviewer_pr_lease sequence.

WHAT_HAPPENED: Reviewer session could not acquire a reviewer lease for PR #762 despite green identity, capability, parity, namespace, workflow proof, and clean pinned worktree. Defect recorded as #763; this comment is the durable blocker handoff. PR #762 remains open and unreviewed. Required head remains 7f2b9f36de. No reviewer lease exists. Review validation did not begin. No code change to PR #762 is requested.
WHY: Formal review of PR #762 / #605 is blocked by MCP preflight order gate inconsistency (gitea_acquire_reviewer_pr_lease reason_code=preflight_order_violation, error_class=precondition, retryable=false), not by PR content.
RELATED_PRS: PR #762 (this PR, still unreviewed); defect #763; product issue #605
BLOCKERS: #763 — unblock only when #763 is fixed/verified such that whoami → resolve_task_capability(review_pr) → gitea_acquire_reviewer_pr_lease succeeds under prgs-reviewer for PR #762 at head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759; repeating the failed lease sequence is not a safe next action until then.
VALIDATION: Author issue-recording preflight green on prgs-author/jcwalker3: identity_match=true; in_parity=true at 8a851eb87e63fc236d8897ed67f67cbe295bc3ae; create_issue allowed; duplicate inventory 415/500 complete; #763 created type:bug status:ready; no PR review/merge; no implementation branch/lock for #763; existing feat-issue-605 worktree used only as worktree_path binding for this PR discussion comment.
LAST_UPDATED_BY: jcwalker3 / prgs-author (issue-recording + blocker-handoff only; no implementation)

Reproduction signature (recorded on #763)

signature=reviewer_lease_preflight_order_violation_v1
tool=gitea_acquire_reviewer_pr_lease
reason_code=preflight_order_violation
error_class=precondition
retryable=false
preflight=whoami -> resolve_task_capability(review_pr) -> acquire_reviewer_pr_lease
capability_next_action="None; ready for operations."
profile=prgs-reviewer
identity=sysadmin
identity_match=true
pr=762
issue=605
head=7f2b9f36de4fa958e43fcee36e07b36e4cb53759
master=8a851eb87e63fc236d8897ed67f67cbe295bc3ae
in_parity=true
lease_present=false
mutation_performed=false
param_inconsistency=worktree vs worktree_path
workflow_hash=263d0a6cb8a6

Why not #718

#718 was a merger-path internal_error on gitea_adopt_merger_pr_lease after lease expiry. This failure is a deterministic non-retryable preflight_order_violation on gitea_acquire_reviewer_pr_lease after a green whoami + resolve_task_capability(review_pr) sequence under prgs-reviewer / sysadmin.

Labels / issue state

  • No label changes applied to PR #762 or issue #605 in this phase.
  • #605 remains open; PR #762 remains open.
  • #763 created as type:bug / status:ready.
## CTH: Blocker / Review Handoff ## Canonical Issue State STATE: blocked WHO_IS_NEXT: author NEXT_ACTION: Assess and implement defect issue #763 through prgs-author / jcwalker3 subject to WIP and dependency policy; do not re-attempt the failed reviewer lease sequence on PR #762 until #763 is resolved and verified. NEXT_PROMPT: ```text As prgs-author / jcwalker3, assess open type:bug #763 (Reviewer lease acquisition rejects canonical preflight order). Do not implement PR #762 or #605. Do not re-run gitea_acquire_reviewer_pr_lease against PR #762 until #763 is fixed and verified. Subject to WIP and dependency policy, plan or implement the tooling fix for the deterministic preflight_order_violation on the whoami → resolve_task_capability(review_pr) → acquire_reviewer_pr_lease sequence. ``` WHAT_HAPPENED: Reviewer session could not acquire a reviewer lease for PR #762 despite green identity, capability, parity, namespace, workflow proof, and clean pinned worktree. Defect recorded as #763; this comment is the durable blocker handoff. PR #762 remains open and unreviewed. Required head remains 7f2b9f36de4fa958e43fcee36e07b36e4cb53759. No reviewer lease exists. Review validation did not begin. No code change to PR #762 is requested. WHY: Formal review of PR #762 / #605 is blocked by MCP preflight order gate inconsistency (gitea_acquire_reviewer_pr_lease reason_code=preflight_order_violation, error_class=precondition, retryable=false), not by PR content. RELATED_PRS: PR #762 (this PR, still unreviewed); defect #763; product issue #605 BLOCKERS: #763 — unblock only when #763 is fixed/verified such that whoami → resolve_task_capability(review_pr) → gitea_acquire_reviewer_pr_lease succeeds under prgs-reviewer for PR #762 at head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759; repeating the failed lease sequence is not a safe next action until then. VALIDATION: Author issue-recording preflight green on prgs-author/jcwalker3: identity_match=true; in_parity=true at 8a851eb87e63fc236d8897ed67f67cbe295bc3ae; create_issue allowed; duplicate inventory 415/500 complete; #763 created type:bug status:ready; no PR review/merge; no implementation branch/lock for #763; existing feat-issue-605 worktree used only as worktree_path binding for this PR discussion comment. LAST_UPDATED_BY: jcwalker3 / prgs-author (issue-recording + blocker-handoff only; no implementation) ## Reproduction signature (recorded on #763) ```text signature=reviewer_lease_preflight_order_violation_v1 tool=gitea_acquire_reviewer_pr_lease reason_code=preflight_order_violation error_class=precondition retryable=false preflight=whoami -> resolve_task_capability(review_pr) -> acquire_reviewer_pr_lease capability_next_action="None; ready for operations." profile=prgs-reviewer identity=sysadmin identity_match=true pr=762 issue=605 head=7f2b9f36de4fa958e43fcee36e07b36e4cb53759 master=8a851eb87e63fc236d8897ed67f67cbe295bc3ae in_parity=true lease_present=false mutation_performed=false param_inconsistency=worktree vs worktree_path workflow_hash=263d0a6cb8a6 ``` ## Why not #718 #718 was a merger-path `internal_error` on `gitea_adopt_merger_pr_lease` after lease expiry. This failure is a deterministic non-retryable `preflight_order_violation` on `gitea_acquire_reviewer_pr_lease` after a green whoami + resolve_task_capability(review_pr) sequence under prgs-reviewer / sysadmin. ## Labels / issue state * No label changes applied to PR #762 or issue #605 in this phase. * #605 remains open; PR #762 remains open. * #763 created as type:bug / status:ready.
Owner

Canonical PR State

STATE: blocked
WHO_IS_NEXT: author
NEXT_ACTION: Author implements issue #763 under operator blocker-remediation authorization comment #12981; do not re-attempt reviewer lease or review of this PR until #763 is fixed and verified
NEXT_PROMPT:

As prgs-author / jcwalker3: honor OPERATOR BLOCKER-REMEDIATION AUTHORIZATION on issue #763 (comment #12981). Do not review or modify PR #762. Implement only #763 as authorized, then stop for independent review of the #763 PR.

WHAT_HAPPENED: Operator posted one-time blocker-remediation WIP exception on issue #763 as comment #12981 (prgs-reconciler/sysadmin). This is a cross-reference only.
WHY: PR #762 remains blocked by tooling defect #763; independent review cannot start until #763 is remediated. This is not #557 and does not authorize review of #762.
ISSUE: #605
HEAD_SHA: 7f2b9f36de
REVIEW_STATUS: unreviewed; formal review blocked pending #763
MERGE_READY: false
RELATED_PRS: this PR #762; defect issue #763 authorization comment #12981; no #763 remediation PR yet
BLOCKERS: #763 until fixed/verified such that reviewer lease acquisition succeeds for this PR at pinned head; then independent reviewer may review
VALIDATION: Authorization record visible on issue #763 as comment #12981 authored by sysadmin; no labels changed; no implementation in controller session
LAST_UPDATED_BY: sysadmin / prgs-reconciler (cross-reference only)

Cross-reference: see issue #763 comment #12981 — OPERATOR BLOCKER-REMEDIATION AUTHORIZATION (not #557).

## Canonical PR State STATE: blocked WHO_IS_NEXT: author NEXT_ACTION: Author implements issue #763 under operator blocker-remediation authorization comment #12981; do not re-attempt reviewer lease or review of this PR until #763 is fixed and verified NEXT_PROMPT: ```text As prgs-author / jcwalker3: honor OPERATOR BLOCKER-REMEDIATION AUTHORIZATION on issue #763 (comment #12981). Do not review or modify PR #762. Implement only #763 as authorized, then stop for independent review of the #763 PR. ``` WHAT_HAPPENED: Operator posted one-time blocker-remediation WIP exception on issue #763 as comment #12981 (prgs-reconciler/sysadmin). This is a cross-reference only. WHY: PR #762 remains blocked by tooling defect #763; independent review cannot start until #763 is remediated. This is not #557 and does not authorize review of #762. ISSUE: #605 HEAD_SHA: 7f2b9f36de4fa958e43fcee36e07b36e4cb53759 REVIEW_STATUS: unreviewed; formal review blocked pending #763 MERGE_READY: false RELATED_PRS: this PR #762; defect issue #763 authorization comment #12981; no #763 remediation PR yet BLOCKERS: #763 until fixed/verified such that reviewer lease acquisition succeeds for this PR at pinned head; then independent reviewer may review VALIDATION: Authorization record visible on issue #763 as comment #12981 authored by sysadmin; no labels changed; no implementation in controller session LAST_UPDATED_BY: sysadmin / prgs-reconciler (cross-reference only) Cross-reference: see issue #763 comment #12981 — OPERATOR BLOCKER-REMEDIATION AUTHORIZATION (not #557).
jcwalker3 added 1 commit 2026-07-19 18:54:26 -05:00
Author
Owner

[THREAD STATE LEDGER]

what is true now

  • PR #762 remains in open state at head d181d499d33f9c367d2d490ce88ba942d3ea51c6.
  • The new head contains former head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759 and base b7a5284b984d1d810123a23fe7adb7eb5ba6eb99 (both proven by git merge-base --is-ancestor).
  • commits_behind=0, mergeable=true, has_conflicts=false.
  • Server-side decision state: no review verdict exists at the current head; the former-head approval was invalidated by the head change and was not carried forward.
  • Local verdict/state: author synchronization phase complete; local worktree fast-forwarded to the exact new head and clean.

what changed

  • Sanctioned #753 dead-session lock recovery for issue #605 succeeded through one gitea_lock_issue call: prior session pid 75589 proven dead, expired lease replaced by pid 86490, same identity jcwalker3 / profile prgs-author, same branch and worktree. No manual lock-file edit occurred.
  • gitea_update_pr_branch_by_merge performed an update-by-merge of live base master @ b7a5284b984d1d810123a23fe7adb7eb5ba6eb99 into feat/issue-605-workflow-dashboard (style=merge, no rebase, no force-push).
  • Head transition: 7f2b9f36de4fa958e43fcee36e07b36e4cb53759d181d499d33f9c367d2d490ce88ba942d3ea51c6.
  • Feature diff against the base remains scoped to #605 plus base synchronization: workflow_dashboard.py, gitea_mcp_server.py (dashboard tool only), mcp-menu.sh, docs/mcp-menu.md, tests/test_workflow_dashboard.py, tests/test_mcp_menu_script.py.

what is blocked

  • Blocker classification: no blocker
  • Do not do: do not reuse any former-head review verdict, do not rebase/force-push/amend this branch, and do not treat the two pre-existing master failures below as regressions of this PR.

who/what acts next

  • Next actor: reviewer
  • Required action: perform an independent review of PR #762 at the exact head d181d499d33f9c367d2d490ce88ba942d3ea51c6.
  • Server-side mutation ledger: gitea_lock_issue (recovery, performed=true), gitea_update_pr_branch_by_merge (performed=true), this comment. No review, merge, or branch-deletion mutation was attempted by this session.

Canonical PR State

STATE:
PR-open, synchronized

WHO_IS_NEXT:
reviewer

NEXT_ACTION:
Independently review PR #762 at NEW_HEAD d181d499d33f9c367d2d490ce88ba942d3ea51c6.

NEXT_PROMPT:

Fresh Grok prgs-reviewer session.
Repository: Scaled-Tech-Consulting/Gitea-Tools   Remote: prgs
Profile: prgs-reviewer   Role: reviewer
Review PR #762 at exact head d181d499d33f9c367d2d490ce88ba942d3ea51c6 (issue #605).
Acquire the reviewer lease through the canonical task=review_pr lease canary.
Do not use any raw bootstrap fallback path.
Do not reuse any verdict scoped to former head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759.

WHAT_HAPPENED:
The #605 author lock was recovered from a dead session (pid 75589) through the sanctioned #753 recovery path, then PR #762 was synchronized onto current master by an author update-by-merge.

WHY:
Current-base protection is satisfied through an author merge rather than a rebase, so the review history stays intact and the exact new head can be reviewed against live master.

ISSUE:
#605

BASE:
master @ b7a5284b98

HEAD:
feat/issue-605-workflow-dashboard

HEAD_SHA:
d181d499d3

OLD_HEAD:
7f2b9f36de

BASE_HEAD:
b7a5284b98

NEW_HEAD:
d181d499d3

REVIEW_STATUS:
none at the current head; the former-head approval was invalidated by the head change and no verdict was carried forward

LOCK_RECOVERY:
sanctioned #753 dead-session recovery succeeded (prior pid 75589 dead, replacement pid 86490, recovered_at 2026-07-19T23:53:34Z, lease expires 2026-07-20T03:53:34Z)

VALIDATION:
pytest tests/test_workflow_dashboard.py tests/test_mcp_menu_script.py tests/test_webui_queue_dashboard.py tests/test_allocator_dependencies.py tests/test_allocator_inventory_mcp.py tests/test_allocator_service.py tests/test_issue_763_reviewer_lease_preflight_order.py — 98 passed, 30 subtests passed.
Full suite at the new head: 3695 passed, 2 failed, 6 skipped, 435 subtests passed.
The 2 failures (tests/test_issue_702_review_findings_f1_f6.py::TestF1RecoveryBeforeTerminalProbe::test_removed_worktree_recovers_before_probe, tests/test_reconciler_supersession_close.py::TestReconcilerSupersessionMcpTool::test_tool_posts_comment_and_closes_superseded_pr_issue) are pre-existing on master: both test files are byte-identical to b7a5284b984d, and the #605 delta to gitea_mcp_server.py has zero overlap with verify_preflight_purity / reconcile_close_superseded_pr / worktree-recovery code paths.
git diff --check clean.

MERGE_READY:
no — an independent review verdict at the exact current head does not yet exist

BLOCKERS:
none

SUPERSEDES:
none

SUPERSEDED_BY:
none

RELATED_PRS:

RELATED_ISSUES:

LAST_UPDATED_BY:
jcwalker3 / prgs-author / 2026-07-19

[THREAD STATE LEDGER] **what is true now** - PR #762 remains in open state at head `d181d499d33f9c367d2d490ce88ba942d3ea51c6`. - The new head contains former head `7f2b9f36de4fa958e43fcee36e07b36e4cb53759` and base `b7a5284b984d1d810123a23fe7adb7eb5ba6eb99` (both proven by `git merge-base --is-ancestor`). - `commits_behind=0`, `mergeable=true`, `has_conflicts=false`. - Server-side decision state: no review verdict exists at the current head; the former-head approval was invalidated by the head change and was not carried forward. - Local verdict/state: author synchronization phase complete; local worktree fast-forwarded to the exact new head and clean. **what changed** - Sanctioned #753 dead-session lock recovery for issue #605 succeeded through one `gitea_lock_issue` call: prior session pid 75589 proven dead, expired lease replaced by pid 86490, same identity `jcwalker3` / profile `prgs-author`, same branch and worktree. No manual lock-file edit occurred. - `gitea_update_pr_branch_by_merge` performed an update-by-merge of live base `master @ b7a5284b984d1d810123a23fe7adb7eb5ba6eb99` into `feat/issue-605-workflow-dashboard` (style=merge, no rebase, no force-push). - Head transition: `7f2b9f36de4fa958e43fcee36e07b36e4cb53759` → `d181d499d33f9c367d2d490ce88ba942d3ea51c6`. - Feature diff against the base remains scoped to #605 plus base synchronization: `workflow_dashboard.py`, `gitea_mcp_server.py` (dashboard tool only), `mcp-menu.sh`, `docs/mcp-menu.md`, `tests/test_workflow_dashboard.py`, `tests/test_mcp_menu_script.py`. **what is blocked** - Blocker classification: no blocker - Do not do: do not reuse any former-head review verdict, do not rebase/force-push/amend this branch, and do not treat the two pre-existing master failures below as regressions of this PR. **who/what acts next** - Next actor: reviewer - Required action: perform an independent review of PR #762 at the exact head `d181d499d33f9c367d2d490ce88ba942d3ea51c6`. - Server-side mutation ledger: `gitea_lock_issue` (recovery, performed=true), `gitea_update_pr_branch_by_merge` (performed=true), this comment. No review, merge, or branch-deletion mutation was attempted by this session. ## Canonical PR State STATE: PR-open, synchronized WHO_IS_NEXT: reviewer NEXT_ACTION: Independently review PR #762 at NEW_HEAD `d181d499d33f9c367d2d490ce88ba942d3ea51c6`. NEXT_PROMPT: ```text Fresh Grok prgs-reviewer session. Repository: Scaled-Tech-Consulting/Gitea-Tools Remote: prgs Profile: prgs-reviewer Role: reviewer Review PR #762 at exact head d181d499d33f9c367d2d490ce88ba942d3ea51c6 (issue #605). Acquire the reviewer lease through the canonical task=review_pr lease canary. Do not use any raw bootstrap fallback path. Do not reuse any verdict scoped to former head 7f2b9f36de4fa958e43fcee36e07b36e4cb53759. ``` WHAT_HAPPENED: The #605 author lock was recovered from a dead session (pid 75589) through the sanctioned #753 recovery path, then PR #762 was synchronized onto current master by an author update-by-merge. WHY: Current-base protection is satisfied through an author merge rather than a rebase, so the review history stays intact and the exact new head can be reviewed against live master. ISSUE: #605 BASE: master @ b7a5284b984d1d810123a23fe7adb7eb5ba6eb99 HEAD: feat/issue-605-workflow-dashboard HEAD_SHA: d181d499d33f9c367d2d490ce88ba942d3ea51c6 OLD_HEAD: 7f2b9f36de4fa958e43fcee36e07b36e4cb53759 BASE_HEAD: b7a5284b984d1d810123a23fe7adb7eb5ba6eb99 NEW_HEAD: d181d499d33f9c367d2d490ce88ba942d3ea51c6 REVIEW_STATUS: none at the current head; the former-head approval was invalidated by the head change and no verdict was carried forward LOCK_RECOVERY: sanctioned #753 dead-session recovery succeeded (prior pid 75589 dead, replacement pid 86490, recovered_at 2026-07-19T23:53:34Z, lease expires 2026-07-20T03:53:34Z) VALIDATION: `pytest tests/test_workflow_dashboard.py tests/test_mcp_menu_script.py tests/test_webui_queue_dashboard.py tests/test_allocator_dependencies.py tests/test_allocator_inventory_mcp.py tests/test_allocator_service.py tests/test_issue_763_reviewer_lease_preflight_order.py` — 98 passed, 30 subtests passed. Full suite at the new head: 3695 passed, 2 failed, 6 skipped, 435 subtests passed. The 2 failures (`tests/test_issue_702_review_findings_f1_f6.py::TestF1RecoveryBeforeTerminalProbe::test_removed_worktree_recovers_before_probe`, `tests/test_reconciler_supersession_close.py::TestReconcilerSupersessionMcpTool::test_tool_posts_comment_and_closes_superseded_pr_issue`) are pre-existing on master: both test files are byte-identical to `b7a5284b984d`, and the #605 delta to `gitea_mcp_server.py` has zero overlap with `verify_preflight_purity` / `reconcile_close_superseded_pr` / worktree-recovery code paths. `git diff --check` clean. MERGE_READY: no — an independent review verdict at the exact current head does not yet exist BLOCKERS: none SUPERSEDES: none SUPERSEDED_BY: none RELATED_PRS: - #764 RELATED_ISSUES: - #605 LAST_UPDATED_BY: jcwalker3 / prgs-author / 2026-07-19
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #762
issue: #605
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 13372-d997000a7c61
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-762-d181d499-post763-canary
phase: claimed
candidate_head: d181d499d3
target_branch: master
target_branch_sha: b7a5284b98
last_activity: 2026-07-20T00:07:24Z
expires_at: 2026-07-20T00:17:24Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #762 issue: #605 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 13372-d997000a7c61 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-762-d181d499-post763-canary phase: claimed candidate_head: d181d499d33f9c367d2d490ce88ba942d3ea51c6 target_branch: master target_branch_sha: b7a5284b984d1d810123a23fe7adb7eb5ba6eb99 last_activity: 2026-07-20T00:07:24Z expires_at: 2026-07-20T00:17:24Z blocker: none
sysadmin approved these changes 2026-07-19 19:13:58 -05:00
sysadmin left a comment
Owner

Canonical PR State

STATE:
approved_at_current_head; ready for merger (do not merge in review phase)

WHO_IS_NEXT:
merger

NEXT_ACTION:
Fresh Claude prgs-merger session: reassess and merge PR #762 only at exact head d181d499d3 if all merge gates pass.

NEXT_PROMPT:

Fresh Claude prgs-merger session.
Repository: Scaled-Tech-Consulting/Gitea-Tools
Remote: prgs
Profile: prgs-merger
Role: merger
PR: #762
Linked issue: #605
Pinned head: d181d499d33f9c367d2d490ce88ba942d3ea51c6
Base: master @ b7a5284b984d1d810123a23fe7adb7eb5ba6eb99
Independent reviewer APPROVE is live at this head (sysadmin / prgs-reviewer).
CANONICAL_REVIEW_PR_CANARY=PASS (lease session_id=13372-d997000a7c61, comment_id=13030).
Adopt or acquire the required merger lease through the sanctioned path only.
Reassess approval, inventory, already-landed, and merge gates at this exact head.
Merge only this exact head if all gates pass. Do not review as author. Do not update the branch. Do not touch #760 or residual #763 cleanup.

WHAT_HAPPENED:
Independent reviewer (sysadmin / prgs-reviewer) completed POST-#763 canary + full review of PR #762 at synchronized head d181d499. Canonical whoami → resolve_task_capability(task=review_pr) → gitea_acquire_reviewer_pr_lease succeeded once (CANONICAL_REVIEW_PR_CANARY=PASS). Six-file #605 feature reviewed against master; formal APPROVE submitted via native MCP. No merge performed.

WHY:
#605 acceptance criteria are satisfied and safety gates are preserved; #763 preflight path remains intact on the synchronized head (live canary + tests).

ISSUE:
#605

HEAD_SHA:
d181d499d3

REVIEW_STATUS:
APPROVED at d181d499d3 by sysadmin / prgs-reviewer

MERGE_READY:
pending independent merger gate reassessment at the exact approved head (review phase does not merge)

BLOCKERS:
none

VALIDATION:
pytest dashboard+menu: 24 passed / 30 subtests; related allocator/webui/#763: 98 passed / 30 subtests; MCP safety: 120 passed / 38 subtests; full suite: 3695 passed, 2 failed (pre-existing on master b7a5284; identical failing tests), 6 skipped, 435 subtests; git diff --check clean. Worktree clean at reviewed head.

NATIVE_REVIEW_PROOF: transport=native_mcp; entrypoint=mcp_server; token_fingerprint=be1ea4ce53546b0a; pid=13372; mode=production

LAST_UPDATED_BY:
sysadmin / prgs-reviewer


Formal Review Detail — PR #762 / #605

Reviewed head SHA: d181d499d33f9c367d2d490ce88ba942d3ea51c6
Base: master @ b7a5284b984d1d810123a23fe7adb7eb5ba6eb99
Author: jcwalker3 (≠ reviewer sysadmin)
Decision: APPROVE

CANONICAL_REVIEW_PR_CANARY=PASS

Sequence (one attempt; no intervening call between resolve and lease; no raw task=acquire_reviewer_pr_lease):

  1. gitea_whoami(remote=prgs) → identity_match=true; profile=prgs-reviewer; role=reviewer; identity=sysadmin
  2. gitea_resolve_task_capability(task=review_pr, remote=prgs) → allowed
  3. gitea_acquire_reviewer_pr_lease → acquired=true

Lease: session_id=13372-d997000a7c61 comment_id=13030 candidate_head=d181d499… target_branch_sha=b7a5284… worktree=branches/review-pr-762-d181d499-post763-canary created=2026-07-20T00:07:24Z expires=2026-07-20T00:17:24Z

Files reviewed

workflow_dashboard.py; gitea_mcp_server.py (additive dashboard tool only; #763 path preserved); mcp-menu.sh; docs/mcp-menu.md; tests/test_workflow_dashboard.py; tests/test_mcp_menu_script.py

Ancestry: contains old feature 7f2b9f36… and master b7a5284…; commits_behind=0; mergeable=true; no conflicts.

Acceptance criteria (#605)

All PASS: live queues; leases; blockers; next-safe-action; incomplete inventory fail-closed; terminal/blocked handling; deterministic ordering; MCP read-only integration; shell menu docs-only; no allocator/reviewer/merger/reconciler gate weakening.

Findings

None actionable.

Final decision

APPROVE at d181d499d33f9c367d2d490ce88ba942d3ea51c6. Do not merge in this session.

## Canonical PR State STATE: approved_at_current_head; ready for merger (do not merge in review phase) WHO_IS_NEXT: merger NEXT_ACTION: Fresh Claude prgs-merger session: reassess and merge PR #762 only at exact head d181d499d33f9c367d2d490ce88ba942d3ea51c6 if all merge gates pass. NEXT_PROMPT: ```text Fresh Claude prgs-merger session. Repository: Scaled-Tech-Consulting/Gitea-Tools Remote: prgs Profile: prgs-merger Role: merger PR: #762 Linked issue: #605 Pinned head: d181d499d33f9c367d2d490ce88ba942d3ea51c6 Base: master @ b7a5284b984d1d810123a23fe7adb7eb5ba6eb99 Independent reviewer APPROVE is live at this head (sysadmin / prgs-reviewer). CANONICAL_REVIEW_PR_CANARY=PASS (lease session_id=13372-d997000a7c61, comment_id=13030). Adopt or acquire the required merger lease through the sanctioned path only. Reassess approval, inventory, already-landed, and merge gates at this exact head. Merge only this exact head if all gates pass. Do not review as author. Do not update the branch. Do not touch #760 or residual #763 cleanup. ``` WHAT_HAPPENED: Independent reviewer (sysadmin / prgs-reviewer) completed POST-#763 canary + full review of PR #762 at synchronized head d181d499. Canonical whoami → resolve_task_capability(task=review_pr) → gitea_acquire_reviewer_pr_lease succeeded once (CANONICAL_REVIEW_PR_CANARY=PASS). Six-file #605 feature reviewed against master; formal APPROVE submitted via native MCP. No merge performed. WHY: #605 acceptance criteria are satisfied and safety gates are preserved; #763 preflight path remains intact on the synchronized head (live canary + tests). ISSUE: #605 HEAD_SHA: d181d499d33f9c367d2d490ce88ba942d3ea51c6 REVIEW_STATUS: APPROVED at d181d499d33f9c367d2d490ce88ba942d3ea51c6 by sysadmin / prgs-reviewer MERGE_READY: pending independent merger gate reassessment at the exact approved head (review phase does not merge) BLOCKERS: none VALIDATION: pytest dashboard+menu: 24 passed / 30 subtests; related allocator/webui/#763: 98 passed / 30 subtests; MCP safety: 120 passed / 38 subtests; full suite: 3695 passed, 2 failed (pre-existing on master b7a5284; identical failing tests), 6 skipped, 435 subtests; git diff --check clean. Worktree clean at reviewed head. NATIVE_REVIEW_PROOF: transport=native_mcp; entrypoint=mcp_server; token_fingerprint=be1ea4ce53546b0a; pid=13372; mode=production LAST_UPDATED_BY: sysadmin / prgs-reviewer --- ## Formal Review Detail — PR #762 / #605 **Reviewed head SHA:** `d181d499d33f9c367d2d490ce88ba942d3ea51c6` **Base:** `master` @ `b7a5284b984d1d810123a23fe7adb7eb5ba6eb99` **Author:** jcwalker3 (≠ reviewer sysadmin) **Decision:** APPROVE ### CANONICAL_REVIEW_PR_CANARY=PASS Sequence (one attempt; no intervening call between resolve and lease; no raw `task=acquire_reviewer_pr_lease`): 1. `gitea_whoami(remote=prgs)` → identity_match=true; profile=prgs-reviewer; role=reviewer; identity=sysadmin 2. `gitea_resolve_task_capability(task=review_pr, remote=prgs)` → allowed 3. `gitea_acquire_reviewer_pr_lease` → acquired=true **Lease:** session_id=`13372-d997000a7c61` comment_id=`13030` candidate_head=`d181d499…` target_branch_sha=`b7a5284…` worktree=`branches/review-pr-762-d181d499-post763-canary` created=`2026-07-20T00:07:24Z` expires=`2026-07-20T00:17:24Z` ### Files reviewed workflow_dashboard.py; gitea_mcp_server.py (additive dashboard tool only; #763 path preserved); mcp-menu.sh; docs/mcp-menu.md; tests/test_workflow_dashboard.py; tests/test_mcp_menu_script.py Ancestry: contains old feature 7f2b9f36… and master b7a5284…; commits_behind=0; mergeable=true; no conflicts. ### Acceptance criteria (#605) All PASS: live queues; leases; blockers; next-safe-action; incomplete inventory fail-closed; terminal/blocked handling; deterministic ordering; MCP read-only integration; shell menu docs-only; no allocator/reviewer/merger/reconciler gate weakening. ### Findings None actionable. ### Final decision **APPROVE** at `d181d499d33f9c367d2d490ce88ba942d3ea51c6`. Do not merge in this session.
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #762
issue: #605
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 28132-b6d845eed2de
worktree: branches/merge-pr-762-d181d499
phase: claimed
candidate_head: d181d499d3
target_branch: master
target_branch_sha: b7a5284b98
last_activity: 2026-07-20T00:19:20Z
expires_at: 2026-07-20T00:29:20Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #762 issue: #605 reviewer_identity: sysadmin profile: prgs-merger session_id: 28132-b6d845eed2de worktree: branches/merge-pr-762-d181d499 phase: claimed candidate_head: d181d499d33f9c367d2d490ce88ba942d3ea51c6 target_branch: master target_branch_sha: b7a5284b984d1d810123a23fe7adb7eb5ba6eb99 last_activity: 2026-07-20T00:19:20Z expires_at: 2026-07-20T00:29:20Z blocker: none
sysadmin merged commit fcf6981b1b into master 2026-07-19 19:20:20 -05:00
Owner

Stale #332 review-decision lock cleanup (#594)

Status: APPLIED

Manual deletion of session-state files is not the workflow.
This path only clears a lock when the referenced PR is merged/closed.

## Stale #332 review-decision lock cleanup (#594) Status: **APPLIED** - actor: `sysadmin` - profile: `prgs-merger` - timestamp: `2026-07-20T00:20:23.074543+00:00` - last terminal: `approve` on PR #762 - PR state: `closed` (merged=True) - merge_commit_sha: `fcf6981b1ba4d8d5072357ba13be0fdb6baa07ff` - prior live_mutations_count: `1` - prior profile_identity: `prgs-reviewer` Manual deletion of session-state files is **not** the workflow. This path only clears a lock when the referenced PR is merged/closed.
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Scaled-Tech-Consulting/Gitea-Tools#762