gitea_adopt_merger_pr_lease duplicate verify_preflight_purity clears capability state #547

Closed
opened 2026-07-08 13:33:20 -05:00 by jcwalker3 · 2 comments
Owner

Problem

gitea_adopt_merger_pr_lease calls verify_preflight_purity twice:

  1. Inside _verify_role_mutation_workspace(..., task="adopt_merger_pr_lease")
  2. Again immediately afterward at gitea_mcp_server.py (~line 5594)

verify_preflight_purity clears resolved capability state at the end of each successful pass (_clear_preflight_capability_state). The second call therefore fails closed with:

Pre-flight order violation: Task capability (gitea_resolve_task_capability) has not been resolved

even when gitea_resolve_task_capability(task="adopt_merger_pr_lease") succeeded milliseconds earlier in the same session.

Observed during PR #542 merge (2026-07-08)

  • Merger session sysadmin / prgs-merger could not complete adoption through sequential MCP tool calls.
  • A temporary one-line local removal of the redundant second verify_preflight_purity call was required for the gated adoption+merge chain to succeed in a single Python process.
  • That local change was reverted immediately after merge and must not be treated as an accepted workflow path.

Expected behavior

  • gitea_adopt_merger_pr_lease should require exactly one preflight purity check (same pattern as gitea_acquire_reviewer_pr_lease, which only checks inside _verify_role_mutation_workspace).
  • Sequential MCP invocations after gitea_resolve_task_capability(adopt_merger_pr_lease) should succeed without local code edits.

Suggested fix

Remove the redundant standalone verify_preflight_purity(remote, task="adopt_merger_pr_lease") after _verify_role_mutation_workspace in gitea_adopt_merger_pr_lease.

Add/adjust regression test so adopt works after a single capability resolve without patching preflight.

Related

  • #536 merger lease adoption
  • #546 reviewer lease acquisition clearing preflight before submit
  • PR #542 merger handoff (adoption comment 7152)
## Problem `gitea_adopt_merger_pr_lease` calls `verify_preflight_purity` twice: 1. Inside `_verify_role_mutation_workspace(..., task="adopt_merger_pr_lease")` 2. Again immediately afterward at `gitea_mcp_server.py` (~line 5594) `verify_preflight_purity` clears resolved capability state at the end of each successful pass (`_clear_preflight_capability_state`). The second call therefore fails closed with: > Pre-flight order violation: Task capability (gitea_resolve_task_capability) has not been resolved even when `gitea_resolve_task_capability(task="adopt_merger_pr_lease")` succeeded milliseconds earlier in the same session. ## Observed during PR #542 merge (2026-07-08) - Merger session `sysadmin / prgs-merger` could not complete adoption through sequential MCP tool calls. - A **temporary one-line local removal** of the redundant second `verify_preflight_purity` call was required for the gated adoption+merge chain to succeed in a single Python process. - That local change was **reverted immediately after merge** and must **not** be treated as an accepted workflow path. ## Expected behavior - `gitea_adopt_merger_pr_lease` should require exactly one preflight purity check (same pattern as `gitea_acquire_reviewer_pr_lease`, which only checks inside `_verify_role_mutation_workspace`). - Sequential MCP invocations after `gitea_resolve_task_capability(adopt_merger_pr_lease)` should succeed without local code edits. ## Suggested fix Remove the redundant standalone `verify_preflight_purity(remote, task="adopt_merger_pr_lease")` after `_verify_role_mutation_workspace` in `gitea_adopt_merger_pr_lease`. Add/adjust regression test so adopt works after a single capability resolve without patching preflight. ## Related - #536 merger lease adoption - #546 reviewer lease acquisition clearing preflight before submit - PR #542 merger handoff (adoption comment `7152`)
Author
Owner

Already fixed on master

This is the same defect as #548, fixed and merged in PR #550 (a4e014e / merge 18e7d7b).

On current prgs/master, gitea_adopt_merger_pr_lease has a single preflight path via _verify_role_mutation_workspace(..., task="adopt_merger_pr_lease") — no redundant second verify_preflight_purity after workspace verify.

Closing as duplicate of #548 (already landed). No further code change required.

STATE: done
WHO_IS_NEXT: none
NEXT_ACTION: none — issue complete
WHAT_HAPPENED: Confirmed fix via #548/#550 on master
ISSUE: #547
## Already fixed on master This is the same defect as **#548**, fixed and merged in **PR #550** (`a4e014e` / merge `18e7d7b`). On current `prgs/master`, `gitea_adopt_merger_pr_lease` has a single preflight path via `_verify_role_mutation_workspace(..., task="adopt_merger_pr_lease")` — no redundant second `verify_preflight_purity` after workspace verify. Closing as **duplicate of #548** (already landed). No further code change required. ``` STATE: done WHO_IS_NEXT: none NEXT_ACTION: none — issue complete WHAT_HAPPENED: Confirmed fix via #548/#550 on master ISSUE: #547 ```
Author
Owner

Already landed on master

Issue #547 describes the duplicate verify_preflight_purity call in gitea_adopt_merger_pr_lease that cleared capability state.

Live prgs/master now has:

  • a4e014e fix: remove duplicate verify_preflight_purity in gitea_adopt_merger_pr_lease (#548)
  • 18e7d7b Merge PR #550 (closes #548)

On current master, gitea_adopt_merger_pr_lease contains zero standalone verify_preflight_purity calls and one _verify_role_mutation_workspace path (same pattern as reviewer lease acquire).

No further author code change required. Closing as completed by #548 / PR #550.

## Already landed on master Issue #547 describes the duplicate `verify_preflight_purity` call in `gitea_adopt_merger_pr_lease` that cleared capability state. Live `prgs/master` now has: - `a4e014e` fix: remove duplicate verify_preflight_purity in gitea_adopt_merger_pr_lease (#548) - `18e7d7b` Merge PR #550 (closes #548) On current master, `gitea_adopt_merger_pr_lease` contains **zero** standalone `verify_preflight_purity` calls and **one** `_verify_role_mutation_workspace` path (same pattern as reviewer lease acquire). No further author code change required. Closing as completed by #548 / PR #550.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

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