docs(remote-mcp): inventory stdio- and localhost-coupled assumptions (#930) #940

Merged
sysadmin merged 1 commits from docs/issue-930-remote-mcp-coupling-inventory into master 2026-07-26 02:10:51 -05:00
Owner

Summary

Adds docs/remote-mcp/coupling-inventory.md, the blocking first child of epic #929. It enumerates every place gitea_mcp_server.py and its supporting modules depend on being a local, client-spawned, stdio-attached process on the operator's machine.

Documentation only. No server behavior changes. One new file; no existing file is edited.

Closes #930

What is in the document

62 entries across the seven categories the issue requires:

Category Entries
1. Transport bind 9
2. Launch provenance 12
3. Role binding 7
4. Credentials 6
5. Runtime freshness 6
6. Local filesystem 11
7. Durable state 11
Total 62

No category is empty, so no "no coupling here" justification was needed.

Classification split:

Classification Entries
portable as written 5
needs a seam 16
needs a replacement 26
cannot be remote 15

Ownership — every child from #931 through #939 is named by at least one entry, and every entry names exactly one child:

Child Entries IDs
#931 9 T1-T9
#932 7 R1-R7
#933 6 C1-C6
#934 9 P1-P9
#935 6 F1-F6
#936 8 L1-L8
#937 13 L10, L11, S1-S11
#938 2 P10, L9
#939 2 P11, P12

Acceptance criteria

  • docs/remote-mcp/coupling-inventory.md exists and is committed.
  • Every required category has at least one entry.
  • Every entry carries a file and line anchor that resolves at the commit under review.
  • Every entry is assigned to exactly one epic child; children 2 through 10 are all named.
  • Entries are classified as portable as written, needs a seam, needs a replacement, or cannot be remote.
  • Summary tables count entries per category and per classification, plus category-by-classification and per-child.
  • The document states the commit it was generated against: 7bf4f1258451823a55b36d2157e74f8457165088.

Verification performed

Two mechanical checks were run against the worktree before commit:

  1. Anchor resolution. All 69 file:line references in the document were extracted and resolved against the checked-out tree. Every one exists, is in range, and the line it points at matches the behavior the entry describes. 20 distinct source files are cited.
  2. Count and coverage. Entry rows were parsed out of the tables and re-tallied. Computed per-category, per-classification, category-by-classification, and per-child totals all equal the values printed in the summary tables, and no child in the #931 through #939 range has zero entries.

Line anchors were taken against 7bf4f1258451 and remain valid at this branch head, because this change adds a file and edits none, so no existing line number shifts.

A reviewer checking the acceptance criterion "pick any five entries at random and confirm the line anchor and the described behavior" can do so directly against this branch head.

Out of scope

Per the issue's non-goals, this PR does not change server behavior and does not choose the remote transport, the credential provider, or the deployment target. #931 through #939 are not implemented here.

## Summary Adds `docs/remote-mcp/coupling-inventory.md`, the blocking first child of epic #929. It enumerates every place `gitea_mcp_server.py` and its supporting modules depend on being a local, client-spawned, stdio-attached process on the operator's machine. Documentation only. No server behavior changes. One new file; no existing file is edited. Closes #930 ## What is in the document 62 entries across the seven categories the issue requires: | Category | Entries | | -------- | ------: | | 1. Transport bind | 9 | | 2. Launch provenance | 12 | | 3. Role binding | 7 | | 4. Credentials | 6 | | 5. Runtime freshness | 6 | | 6. Local filesystem | 11 | | 7. Durable state | 11 | | **Total** | **62** | No category is empty, so no "no coupling here" justification was needed. Classification split: | Classification | Entries | | -------------- | ------: | | portable as written | 5 | | needs a seam | 16 | | needs a replacement | 26 | | cannot be remote | 15 | Ownership — every child from #931 through #939 is named by at least one entry, and every entry names exactly one child: | Child | Entries | IDs | | ----: | ------: | --- | | #931 | 9 | T1-T9 | | #932 | 7 | R1-R7 | | #933 | 6 | C1-C6 | | #934 | 9 | P1-P9 | | #935 | 6 | F1-F6 | | #936 | 8 | L1-L8 | | #937 | 13 | L10, L11, S1-S11 | | #938 | 2 | P10, L9 | | #939 | 2 | P11, P12 | ## Acceptance criteria - [x] `docs/remote-mcp/coupling-inventory.md` exists and is committed. - [x] Every required category has at least one entry. - [x] Every entry carries a file and line anchor that resolves at the commit under review. - [x] Every entry is assigned to exactly one epic child; children 2 through 10 are all named. - [x] Entries are classified as portable as written, needs a seam, needs a replacement, or cannot be remote. - [x] Summary tables count entries per category and per classification, plus category-by-classification and per-child. - [x] The document states the commit it was generated against: `7bf4f1258451823a55b36d2157e74f8457165088`. ## Verification performed Two mechanical checks were run against the worktree before commit: 1. **Anchor resolution.** All 69 `file:line` references in the document were extracted and resolved against the checked-out tree. Every one exists, is in range, and the line it points at matches the behavior the entry describes. 20 distinct source files are cited. 2. **Count and coverage.** Entry rows were parsed out of the tables and re-tallied. Computed per-category, per-classification, category-by-classification, and per-child totals all equal the values printed in the summary tables, and no child in the #931 through #939 range has zero entries. Line anchors were taken against `7bf4f1258451` and remain valid at this branch head, because this change adds a file and edits none, so no existing line number shifts. A reviewer checking the acceptance criterion "pick any five entries at random and confirm the line anchor and the described behavior" can do so directly against this branch head. ## Out of scope Per the issue's non-goals, this PR does not change server behavior and does not choose the remote transport, the credential provider, or the deployment target. #931 through #939 are not implemented here.
jcwalker3 added 1 commit 2026-07-26 01:10:48 -05:00
Add docs/remote-mcp/coupling-inventory.md, the blocking first child of epic
#929. It enumerates every place gitea_mcp_server.py and its supporting modules
depend on being a local, client-spawned, stdio-attached process on the
operator's machine.

62 entries across the seven required categories: transport bind, launch
provenance, role binding, credentials, runtime freshness, local filesystem,
and durable state. Each entry carries a file and line anchor resolving at
7bf4f12584, states what the code assumes today
and what it would observe on a remote host, is classified as portable as
written / needs a seam / needs a replacement / cannot be remote, and is
assigned to exactly one epic child. Every child from #931 through #939 is
named by at least one entry. Summary tables count entries per category, per
classification, per category-by-classification, and per child.

Documentation only. No server behavior changes.

Closes #930

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01HvJz7bUz5CkZgUxq8twHMz
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #940
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 64159-b80998ea9c86
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-930-coupling-inventory
phase: claimed
candidate_head: none
target_branch: master
target_branch_sha: none
last_activity: 2026-07-26T06:48:29Z
expires_at: 2026-07-26T06:58:29Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #940 issue: none reviewer_identity: sysadmin profile: prgs-reviewer session_id: 64159-b80998ea9c86 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-930-coupling-inventory phase: claimed candidate_head: none target_branch: master target_branch_sha: none last_activity: 2026-07-26T06:48:29Z expires_at: 2026-07-26T06:58:29Z blocker: none
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #940
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 64159-b80998ea9c86
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-930-coupling-inventory
phase: validating
candidate_head: 97bc190fc2
target_branch: master
target_branch_sha: 7bf4f12584
last_activity: 2026-07-26T06:57:54Z
expires_at: 2026-07-26T07:07:54Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #940 issue: none reviewer_identity: sysadmin profile: prgs-reviewer session_id: 64159-b80998ea9c86 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-930-coupling-inventory phase: validating candidate_head: 97bc190fc2f6da6893cd2b6613ba5b9992d3f379 target_branch: master target_branch_sha: 7bf4f1258451823a55b36d2157e74f8457165088 last_activity: 2026-07-26T06:57:54Z expires_at: 2026-07-26T07:07:54Z blocker: none
sysadmin approved these changes 2026-07-26 02:01:59 -05:00
sysadmin left a comment
Owner

NATIVE_REVIEW_PROOF: transport=native_mcp; entrypoint=mcp_server; entrypoint_path=/Users/jasonwalker/Development/Gitea-Tools/gitea_mcp_server.py; pid=64159; phase=transport_bound; mode=production; token_fingerprint=0f93de51538b56e4; lease_session=64159-b80998ea9c86; lease_comment=17325; phase_heartbeat_comment=17326; workflow_hash=263d0a6cb8a6; final_report_schema_hash=b6c65affc336; boundary_status=clean

Canonical PR State

STATE: PR #940 is in open state at head 97bc190fc2f6da6893cd2b6613ba5b9992d3f379, sits 0 commits behind master, reports mergeable with no conflicts, and now carries one formal review verdict of APPROVE recorded at that exact head.

WHO_IS_NEXT: merger

NEXT_ACTION: merge PR #940 into master from the merger role after re-confirming, via gitea_assess_pr_sync_status, that approval_at_current_head is true for 97bc190fc2f6da6893cd2b6613ba5b9992d3f379.

NEXT_PROMPT:

Merge PR #940 on prgs/Scaled-Tech-Consulting/Gitea-Tools.

Use the gitea-merger MCP namespace with profile prgs-merger. Call
gitea_whoami(remote="prgs") first and confirm the merger role.

Re-pin the live head before acting: PR #940 must still be at
97bc190fc2f6da6893cd2b6613ba5b9992d3f379 with base master at
7bf4f1258451823a55b36d2157e74f8457165088. Call gitea_assess_pr_sync_status
and require approval_at_current_head=true and approval_valid_for_merge=true.
If the head moved, stop: the APPROVE verdict is head-scoped and does not
carry to any other SHA.

Acquire the merger lease for PR #940 at that exact head, then merge.
merge_pr auto-closes issue #930 and strips status:pr-open; verify the
pr_open_label_cleanup record reads clean afterward.

Do not begin issues #931 through #939 until this lands on master.

WHAT_HAPPENED: The reviewer independently re-derived every claim in this PR rather than accepting the author handoff. The head was read from the server-side ref refs/pull/940/head and matched git ls-remote on the branch. The diff against base contains exactly one added file, docs/remote-mcp/coupling-inventory.md, 230 insertions and 0 deletions, in one commit, touching no production code, test, configuration, or dependency. All 69 file-and-line anchors in the document were extracted and resolved against blobs read from commit 7bf4f1258451823a55b36d2157e74f8457165088 with git show, not against a working tree: 69 of 69 resolve, 0 failures. Every anchor was then re-resolved at the PR head and compared byte for byte, with 0 differences, confirming the document's no-line-shift claim. Entry rows were reparsed and re-tallied independently of the document's own summary tables, and every printed total matched. Twelve entries were opened in source and compared against their prose, including all five entries classified portable as written, since a wrong portable call would tell a child that no work is needed.

WHY: Issue #930 is the blocking first child of epic #929, and its output is the scoping input for #931 through #939. A wrong anchor or a wrong classification in this document would silently mis-scope every later child, so the reviewer's job was to re-derive the mechanical claims rather than trust them.

ISSUE: #930, linked by the literal Closes #930 in the PR body.

HEAD_SHA: 97bc190fc2f6da6893cd2b6613ba5b9992d3f379

REVIEW_STATUS: APPROVE, recorded by sysadmin (user_id 4, profile prgs-reviewer) at head 97bc190fc2f6da6893cd2b6613ba5b9992d3f379. The PR author is jcwalker3 (user_id 1), a distinct identity, so reviewer independence is satisfied. No prior review existed at this head; reviews was empty before this verdict.

MERGE_READY: true at head 97bc190fc2f6da6893cd2b6613ba5b9992d3f379 — open state, 0 commits behind base, mergeable true, no conflicts, no status checks required by branch protection. The merger must still re-confirm approval_at_current_head immediately before merging, because this verdict is head-scoped.

BLOCKERS: none. Blocker classification: no blocker. No actionable finding was raised and nothing rises to a change request.

VALIDATION: 62 entries, 62 unique IDs, 0 duplicates. 69 of 69 anchors resolve at the inspected commit 7bf4f1258451823a55b36d2157e74f8457165088, across 20 distinct source files, with 0 anchors differing at the PR head. Category counts — transport bind 9, launch provenance 12, role binding 7, credentials 6, runtime freshness 6, local filesystem 11, durable state 11; all 7 required categories carry at least one entry, so no no-coupling justification was required. Classification counts — portable as written 5, needs a seam 16, needs a replacement 26, cannot be remote 15; the vocabulary contains only the four permitted values. Per-child counts — #931 = 9, #932 = 7, #933 = 6, #934 = 9, #935 = 6, #936 = 8, #937 = 13, #938 = 2, #939 = 2; all nine children are named and every row names exactly one child. Document structure lints clean: 12 table blocks, no malformed rows, consistent column counts, no tabs, no trailing whitespace, terminating newline present. The document states the exact inspected commit. Dry-run gate returned would_perform: true with authenticated_user: sysadmin and pr_author: jcwalker3.

LAST_UPDATED_BY: sysadmin / prgs-reviewer

Substantive review notes

Two classification calls were checked closely, because an error in either would misdirect a downstream child:

  • C5 classifies sentry_incident_bridge.py:190 as portable as written. Correct — resolve_token reads ENV_AUTH_TOKEN from an injected mapping and its docstring states "from env only". There is no keychain fallback, so the portable call holds.
  • F3 classifies the live-remote head probe as needing a seam. Correct — master_parity_gate.py keys its cache on (root, remote, branch) and shells git -C <root> ls-remote, so the probe really is bound to the operator's path.

Two candidate omissions were chased and then dismissed on inspection rather than filed as findings: gitea_auth.py:743 mentions GITEA_MCP_PROFILE only inside a docstring, and mcp_namespace_health.py:55 lists it in a SAFE_ENV_KEYS redaction allowlist. Neither binds a role, so excluding both from the role-binding category is correct.

Each category's named sub-requirements from the issue are covered: the literal stdio bind and its downstream readers including assess_transport_for_auth_mint; the GITEA_CLIENT_MANAGED check, TTY detection, manual-launch refusal, duplicate-role peer scan, and RECOGNIZED_GITEA_ENV_KEYS; GITEA_MCP_PROFILE reads and process-as-role treatment; resolve_token, keychain_auth, and assert_keychain_access_allowed; the startup-HEAD versus disk-HEAD comparison and the mutation_safe consumers; worktree bootstrap and binding, branches/ path assumptions, /tmp pointer files, and the startup conflict-marker scan; lock, lease, session, and control-plane stores including PID-keyed and owner_pid_alive state.

One non-blocking observation, recorded for the children rather than for this PR: the document's closing caveat about non-exhaustiveness is scoped to the branches/ path pattern specifically. The same caution applies to any grep-derived category, so #932 and #934 should re-scan rather than treat their entry lists as closed sets. This affects no acceptance criterion and requires no change here.

Reviewer mutations in this run: one lease acquisition (comment 17325), one lease phase heartbeat (comment 17326), one final-decision mark, and this one formal review. No file edits, no commits, no pushes, no merge.

NATIVE_REVIEW_PROOF: transport=native_mcp; entrypoint=mcp_server; entrypoint_path=/Users/jasonwalker/Development/Gitea-Tools/gitea_mcp_server.py; pid=64159; phase=transport_bound; mode=production; token_fingerprint=0f93de51538b56e4; lease_session=64159-b80998ea9c86; lease_comment=17325; phase_heartbeat_comment=17326; workflow_hash=263d0a6cb8a6; final_report_schema_hash=b6c65affc336; boundary_status=clean ## Canonical PR State STATE: PR #940 is in open state at head `97bc190fc2f6da6893cd2b6613ba5b9992d3f379`, sits 0 commits behind `master`, reports mergeable with no conflicts, and now carries one formal review verdict of APPROVE recorded at that exact head. WHO_IS_NEXT: merger NEXT_ACTION: merge PR #940 into `master` from the merger role after re-confirming, via `gitea_assess_pr_sync_status`, that `approval_at_current_head` is true for `97bc190fc2f6da6893cd2b6613ba5b9992d3f379`. NEXT_PROMPT: ```text Merge PR #940 on prgs/Scaled-Tech-Consulting/Gitea-Tools. Use the gitea-merger MCP namespace with profile prgs-merger. Call gitea_whoami(remote="prgs") first and confirm the merger role. Re-pin the live head before acting: PR #940 must still be at 97bc190fc2f6da6893cd2b6613ba5b9992d3f379 with base master at 7bf4f1258451823a55b36d2157e74f8457165088. Call gitea_assess_pr_sync_status and require approval_at_current_head=true and approval_valid_for_merge=true. If the head moved, stop: the APPROVE verdict is head-scoped and does not carry to any other SHA. Acquire the merger lease for PR #940 at that exact head, then merge. merge_pr auto-closes issue #930 and strips status:pr-open; verify the pr_open_label_cleanup record reads clean afterward. Do not begin issues #931 through #939 until this lands on master. ``` WHAT_HAPPENED: The reviewer independently re-derived every claim in this PR rather than accepting the author handoff. The head was read from the server-side ref `refs/pull/940/head` and matched `git ls-remote` on the branch. The diff against base contains exactly one added file, `docs/remote-mcp/coupling-inventory.md`, 230 insertions and 0 deletions, in one commit, touching no production code, test, configuration, or dependency. All 69 file-and-line anchors in the document were extracted and resolved against blobs read from commit `7bf4f1258451823a55b36d2157e74f8457165088` with `git show`, not against a working tree: 69 of 69 resolve, 0 failures. Every anchor was then re-resolved at the PR head and compared byte for byte, with 0 differences, confirming the document's no-line-shift claim. Entry rows were reparsed and re-tallied independently of the document's own summary tables, and every printed total matched. Twelve entries were opened in source and compared against their prose, including all five entries classified portable as written, since a wrong portable call would tell a child that no work is needed. WHY: Issue #930 is the blocking first child of epic #929, and its output is the scoping input for #931 through #939. A wrong anchor or a wrong classification in this document would silently mis-scope every later child, so the reviewer's job was to re-derive the mechanical claims rather than trust them. ISSUE: #930, linked by the literal `Closes #930` in the PR body. HEAD_SHA: `97bc190fc2f6da6893cd2b6613ba5b9992d3f379` REVIEW_STATUS: APPROVE, recorded by `sysadmin` (user_id 4, profile `prgs-reviewer`) at head `97bc190fc2f6da6893cd2b6613ba5b9992d3f379`. The PR author is `jcwalker3` (user_id 1), a distinct identity, so reviewer independence is satisfied. No prior review existed at this head; `reviews` was empty before this verdict. MERGE_READY: true at head `97bc190fc2f6da6893cd2b6613ba5b9992d3f379` — open state, 0 commits behind base, mergeable true, no conflicts, no status checks required by branch protection. The merger must still re-confirm `approval_at_current_head` immediately before merging, because this verdict is head-scoped. BLOCKERS: none. Blocker classification: no blocker. No actionable finding was raised and nothing rises to a change request. VALIDATION: 62 entries, 62 unique IDs, 0 duplicates. 69 of 69 anchors resolve at the inspected commit `7bf4f1258451823a55b36d2157e74f8457165088`, across 20 distinct source files, with 0 anchors differing at the PR head. Category counts — transport bind 9, launch provenance 12, role binding 7, credentials 6, runtime freshness 6, local filesystem 11, durable state 11; all 7 required categories carry at least one entry, so no no-coupling justification was required. Classification counts — portable as written 5, needs a seam 16, needs a replacement 26, cannot be remote 15; the vocabulary contains only the four permitted values. Per-child counts — #931 = 9, #932 = 7, #933 = 6, #934 = 9, #935 = 6, #936 = 8, #937 = 13, #938 = 2, #939 = 2; all nine children are named and every row names exactly one child. Document structure lints clean: 12 table blocks, no malformed rows, consistent column counts, no tabs, no trailing whitespace, terminating newline present. The document states the exact inspected commit. Dry-run gate returned `would_perform: true` with `authenticated_user: sysadmin` and `pr_author: jcwalker3`. LAST_UPDATED_BY: sysadmin / prgs-reviewer ## Substantive review notes Two classification calls were checked closely, because an error in either would misdirect a downstream child: - C5 classifies `sentry_incident_bridge.py:190` as portable as written. Correct — `resolve_token` reads `ENV_AUTH_TOKEN` from an injected mapping and its docstring states "from env only". There is no keychain fallback, so the portable call holds. - F3 classifies the live-remote head probe as needing a seam. Correct — `master_parity_gate.py` keys its cache on `(root, remote, branch)` and shells `git -C <root> ls-remote`, so the probe really is bound to the operator's path. Two candidate omissions were chased and then dismissed on inspection rather than filed as findings: `gitea_auth.py:743` mentions `GITEA_MCP_PROFILE` only inside a docstring, and `mcp_namespace_health.py:55` lists it in a `SAFE_ENV_KEYS` redaction allowlist. Neither binds a role, so excluding both from the role-binding category is correct. Each category's named sub-requirements from the issue are covered: the literal stdio bind and its downstream readers including `assess_transport_for_auth_mint`; the `GITEA_CLIENT_MANAGED` check, TTY detection, manual-launch refusal, duplicate-role peer scan, and `RECOGNIZED_GITEA_ENV_KEYS`; `GITEA_MCP_PROFILE` reads and process-as-role treatment; `resolve_token`, `keychain_auth`, and `assert_keychain_access_allowed`; the startup-HEAD versus disk-HEAD comparison and the `mutation_safe` consumers; worktree bootstrap and binding, `branches/` path assumptions, `/tmp` pointer files, and the startup conflict-marker scan; lock, lease, session, and control-plane stores including PID-keyed and `owner_pid_alive` state. One non-blocking observation, recorded for the children rather than for this PR: the document's closing caveat about non-exhaustiveness is scoped to the `branches/` path pattern specifically. The same caution applies to any grep-derived category, so #932 and #934 should re-scan rather than treat their entry lists as closed sets. This affects no acceptance criterion and requires no change here. Reviewer mutations in this run: one lease acquisition (comment 17325), one lease phase heartbeat (comment 17326), one final-decision mark, and this one formal review. No file edits, no commits, no pushes, no merge.
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #940
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 64159-b80998ea9c86
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-930-coupling-inventory
phase: released
candidate_head: 97bc190fc2
target_branch: master
target_branch_sha: 7bf4f12584
last_activity: 2026-07-26T07:02:33Z
expires_at: 2026-07-26T07:12:33Z
blocker: manual-release

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #940 issue: none reviewer_identity: sysadmin profile: prgs-reviewer session_id: 64159-b80998ea9c86 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-930-coupling-inventory phase: released candidate_head: 97bc190fc2f6da6893cd2b6613ba5b9992d3f379 target_branch: master target_branch_sha: 7bf4f1258451823a55b36d2157e74f8457165088 last_activity: 2026-07-26T07:02:33Z expires_at: 2026-07-26T07:12:33Z blocker: manual-release
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #940
issue: none
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 64189-0fcfcd2bab20
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-930-coupling-inventory
phase: claimed
candidate_head: 97bc190fc2
target_branch: master
target_branch_sha: none
last_activity: 2026-07-26T07:08:48Z
expires_at: 2026-07-26T07:18:48Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #940 issue: none reviewer_identity: sysadmin profile: prgs-merger session_id: 64189-0fcfcd2bab20 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-930-coupling-inventory phase: claimed candidate_head: 97bc190fc2f6da6893cd2b6613ba5b9992d3f379 target_branch: master target_branch_sha: none last_activity: 2026-07-26T07:08:48Z expires_at: 2026-07-26T07:18:48Z blocker: none
sysadmin merged commit 6a56260768 into master 2026-07-26 02:10:51 -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-26T07:10:54.571071+00:00` - last terminal: `approve` on PR #940 - PR state: `closed` (merged=True) - merge_commit_sha: `6a56260768ad2f69b773a8b7ab8d460ce821c914` - prior live_mutations_count: `4` - 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#940