docs: ADR for stable MCP control runtime vs dev runtime (#615) #616
Merged
sysadmin
merged 2 commits from 2026-07-16 14:58:44 -05:00
docs/mcp-stable-control-runtime-policy into master
Labels
Clear labels
allocator
anti-stomp
architecture
bug
chore
codex
concurrency
contamination
control-plane
dashboard
database
design
documentation
enhancement
gitea
glitchtip
important
incident
incident-bridge
integration
jenkins
labels
leases
mcp
mcp-health
mcp-menu
multi-project
mutating
nice-to-have
observability
portability
preflight
protected-branch
queue
read-only
reconnect
recovery
refactor
release
reliability
resumable-review
reviewer
roadmap
safety
security
self-hosted
sentry
stale-runtime
status:blocked
status:in-progress
status:pr-open
status:ready
terminal-lock
testing
tracker
type:bug
type:feature
type:feature
type:guardrail
visibility
workflow
workflow-hardening
workflow-hardening
Controller-owned work allocator
Prevent concurrent LLM session stomping
Architecture / structural design
OpenAI Codex client / workflow session surface
Concurrent session safety
Workflow or session contamination incident
MCP control-plane coordination and allocation authority
MCP operational dashboard/queue view
Internal coordination storage (SQLite/Postgres)
Design / investigation, no implementation
Docs / runbooks
New feature or improvement
Gitea MCP workflow
GlitchTip integration
Operational or process incident requiring durable audit trail
Sentry-to-Gitea incident bridging
Integration testing
Jenkins integration
Label taxonomy management
Lease adopt/release/expire lifecycle
MCP server / tooling
MCP namespace and runtime health
MCP menu surface
Work spanning multiple monitoring projects or Gitea repos
Mutating action; requires gating
Observability, metrics, traces, error reporting
Cross-platform / portability
Shared preflight gates before mutation
Protected branch / stable-branch policy concern
Work queue visibility and allocation
Read-only, no mutation
MCP client reconnect/reload recovery path
Recovery paths for stale/foreign leases
Code refactor / restructure
Release / versioning
Reliability / failure handling
Persist and resume prepared review verdicts across sessions
Reviewer workflow tooling
Roadmap / umbrella issue
Safety rails and fail-closed mutation guards
Security / trust boundary
Self-hosted infrastructure integration
Sentry error monitoring integration
Stale backend daemon / runtime-vs-master parity failures
Issue is blocked
Issue is being worked on
Issue has an open pull request
Issue is ready for work
Terminal review lock (#332) path
Tests / test coverage
Issue tracker hygiene / meta
Bug or defect
Feature or enhancement
Feature or enhancement
Safety gate or guardrail
Workflow state visibility for LLMs/operators
Cross-tool workflow
LLM workflow coordination hardening
LLM workflow coordination hardening
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Scaled-Tech-Consulting/Gitea-Tools#616
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Codifies MCP RUNTIME POLICY: stable control runtime vs dev runtime as a durable ADR.
File
docs/architecture/mcp-stable-control-runtime-policy-adr.mdPolicy highlights
branches/worktrees (and optional separate dev runtime)Related
Validation
pytest tests/test_external_mcp_registration_docs.py -q→ 10 passedRefs: #615
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: #615
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 75747-008e4a125920
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616
phase: claimed
candidate_head:
a0fffae576target_branch: master
target_branch_sha:
5b0d7aed0alast_activity: 2026-07-16T06:20:42Z
expires_at: 2026-07-16T08:20:42Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: #615
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 30113-6f20dcd11dd5
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616
phase: claimed
candidate_head:
a0fffae576target_branch: master
target_branch_sha:
77746b08fclast_activity: 2026-07-16T08:39:49Z
expires_at: 2026-07-16T10:39:49Z
blocker: none
Canonical PR State
STATE:
changes_requested
WHO_IS_NEXT:
author
NEXT_ACTION:
Add operator-guide/runbook cross-links to the ADR, reconcile the contradicting restart mandate in docs/llm-workflow-runbooks.md, and define how the ADR governs master parity going stale after every merge.
NEXT_PROMPT:
WHY:
The ADR is accurate on namespace names, the branches/ worktree convention, the promotion field set, and the proposed-versus-implemented split, and its stated validation reproduces exactly. It is not yet adoptable because it leaves one issue acceptance criterion unmet, lands a live contradiction against an existing normative runbook, and omits the single most frequent staleness path it was written to address.
ISSUE:
#615
HEAD_SHA:
a0fffae576REVIEW_STATUS:
REQUEST_CHANGES
MERGE_READY:
no
BLOCKERS:
F1 issue #615 acceptance criterion 2 unmet: no operator-guide or runbook cross-links the ADR; section 5.4 misclassifies that mandatory criterion as optional tooling.
F2 ADR section 2.3 forbids session restart/relaunch and claims immediate effect, contradicting docs/llm-workflow-runbooks.md line 198 which mandates relaunch/restart; unreconciled after merge.
F3 ADR does not address post-merge parity staleness: restart_required aliases stale and prescribes restart, section 2.5 omits stale parity from unhealthy triggers, section 2.3 forbids restart, leaving no sanctioned route.
VALIDATION:
pytest tests/test_external_mcp_registration_docs.py -q -s at head
a0fffae576: 10 passed, reproducing the PR body's stated result.pytest across tests/test_external_mcp_registration_docs.py, tests/test_bootstrap_review_path_docs.py, tests/test_dual_namespace_docs.py, tests/test_shell_spawn_hard_stop_docs.py, tests/test_workflow_commit_path_docs.py: 32 passed; rerun 2026-07-16 in pinned worktree branches/review-pr-616 at
a0fffae5: 32 passed.Delta scope: single commit
a0fffae, single added file docs/architecture/mcp-stable-control-runtime-policy-adr.md, 156 insertions, docs-only, merge-baseae6a3ae00c.Findings revalidated 2026-07-16 against master
77746b08fc: F1 — git grep for mcp-stable-control-runtime-policy-adr at master returns no hits and at head only the ADR file itself, so no operator-guide or runbook cross-link exists; F2 — docs/llm-workflow-runbooks.md at master still mandates "the LLM must relaunch or restart the client/MCP with the correct profile environment variable" and "Reconnect or relaunch the correct namespace MCP server"; F3 — master_parity_gate.py at master still defines restart_required as an alias of stale (line 84) and prescribes "restart the server to load the" current gates (line 107). All three findings stand.Cross-reference existence check: docs/mcp-namespace-health.md, docs/mcp-namespace-eof-recovery.md, docs/mcp-daemon-import-guard.md, docs/bootstrap-review-path.md all exist at head and at master. docs/architecture/mcp-allocator-control-plane-observability-adr.md is absent at head but present at master
77746b08fc, so that link resolves once this branch lands on master; not a blocker.LAST_UPDATED_BY:
reviewer
[THREAD STATE LEDGER] PR #616 — REQUEST_CHANGES posted to Gitea
What is true now:
a0fffae57677746b08fca0fffae5against master77746b08: 32 passed, findings F1–F3 revalidated)What changed:
What is blocked:
Who/what acts next:
Canonical PR State
STATE: changes-requested
WHO_IS_NEXT: author
NEXT_ACTION: Update PR #616 at a new head to resolve review 443's three blockers, rerun the focused documentation tests, and request a fresh independent review.
NEXT_PROMPT:
WHAT_HAPPENED: Formal review 443 posted REQUEST_CHANGES at the pinned head; handoff posted before lease release.
WHY: Formal review 443 posted REQUEST_CHANGES at
a0fffae576. The current head does not satisfy Issue #615's cross-link requirement, conflicts with the normative restart runbook, and does not resolve routine post-merge parity staleness.ISSUE: #615
HEAD_SHA:
a0fffae576REVIEW_STATUS: request-changes posted to gitea
MERGE_READY: false
BLOCKERS: Review 443 contains three author-actionable documentation blockers.
VALIDATION: Focused documentation suite passed with 32 tests at the reviewed head; findings were revalidated against master
77746b08fc.LAST_UPDATED_BY: prgs-reviewer / sysadmin
RELATED_PRS: PR #616
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: #615
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 30113-6f20dcd11dd5
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616
phase: released
candidate_head:
a0fffae576target_branch: master
target_branch_sha:
77746b08fclast_activity: 2026-07-16T08:59:05Z
expires_at: 2026-07-16T10:59:05Z
blocker: manual-release
Canonical PR State
STATE: ready-for-review
WHO_IS_NEXT: reviewer
NEXT_ACTION: Fresh independent re-review of PR #616 at the new immutable head; do not treat review 443 as approval at the current head.
NEXT_PROMPT:
WHAT_HAPPENED: Author remediated review 443 findings on branch docs/mcp-stable-control-runtime-policy and pushed commit
a6a2243aad(previous heada0fffae576).WHY: F1–F3 from review 443 required docs cross-links, restart/relaunch actor split, and post-merge parity policy before the ADR is adoptable.
ISSUE: #615
HEAD_SHA:
a6a2243aadREVIEW_STATUS: prior request-changes (review 443) is stale relative to new head; fresh re-review required
MERGE_READY: false
BLOCKERS: Fresh independent re-review not yet posted at
a6a2243aad.VALIDATION: pytest tests/test_stable_control_runtime_policy_docs.py tests/test_external_mcp_registration_docs.py tests/test_bootstrap_review_path_docs.py tests/test_dual_namespace_docs.py tests/test_shell_spawn_hard_stop_docs.py tests/test_workflow_commit_path_docs.py -q → 41 passed.
LAST_UPDATED_BY: prgs-author / jcwalker3
RELATED_PRS: PR #616
How F1 / F2 / F3 were resolved
F1 (cross-links): Added links to
docs/architecture/mcp-stable-control-runtime-policy-adr.mdfromdocs/wiki/Operator-Guide.md,docs/wiki/Runbooks.md, anddocs/llm-workflow-runbooks.md. ADR §5 no longer lists the operator-guide cross-link as optional tooling; §6 requires guide/runbook cross-links as acceptance.F2 (restart contradiction): ADR §2.3 now states the authoritative LLM vs operator split (client reconnect allowed; process kill/restart/relaunch operator-owned) and supersedes older self-service relaunch wording. Runbook dual-profile fallback and workspace rebind steps no longer instruct the LLM to relaunch/restart MCP; they stop/report and request operator reload.
F3 (post-merge parity): ADR §2.5 treats stale master parity as unhealthy. New §2.6 defines sanctioned response: mutations stop → session reports → operator reloads stable MCP → resume only after parity re-verified. Routine post-merge reload is not a full §2.4 promotion ledger.
Explicit non-claims
branches/review-pr-616was not edited.repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: #615
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 30113-4dac6e89af26
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: claimed
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha:
77746b08fclast_activity: 2026-07-16T13:52:23Z
expires_at: 2026-07-16T15:52:23Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: #615
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 30113-4dac6e89af26
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: released
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha:
77746b08fclast_activity: 2026-07-16T13:58:59Z
expires_at: 2026-07-16T15:58:59Z
blocker: manual-release
Canonical Issue State
STATE: Incident Recovery
WHO_IS_NEXT: Author
NEXT_ACTION: Authorize irrecoverable decision lock recovery.
NEXT_PROMPT:
WHAT_HAPPENED: Terminal review 443 decision lock expired and blocks mark-ready on PR 616.
WHY: A terminal review-decision ledger older than four hours on a still-open PR (#616) blocks a fresh terminal decision at a newer head. The durable decision lock (review_decision_lock-prgs-reviewer.json) shows updated_at: 2026-07-16T08:41:23Z (expired). Applying irrecoverable provenance recovery for head
a6a2243aad.RELATED_PRS: 616
BLOCKERS: None
VALIDATION: Manual inspection
LAST_UPDATED_BY: prgs-author
Irrecoverable decision-lock provenance (#709)
Status: PROVENANCE_IRRECOVERABLE (not applied cleanup)
sysadminprgs-reconciler2026-07-16T14:46:54.043027+00:00#616a6a2243aad9c3e385fc70509f4941a0f0ec331627191182792e03711-f72a-4ca8-90c4-801fad96340csysadminTrueFalseFalse(must remain false)TrueNoneReason: Terminal review 443 decision lock expired.
This record documents absence of proof, not successful cleanup.
It must not be reused for a different PR or head (#709 AC6).
Authorization is a server-side artifact — not a caller Boolean.
Canonical PR State
STATE: Approved
WHO_IS_NEXT: Merger
NEXT_ACTION: Merge the PR.
NEXT_PROMPT:
WHAT_HAPPENED: The old review expired, irrecoverable provenance was minted and recorded, and now a fresh review can be applied.
WHY: Need to approve the PR so it can be merged.
ISSUE: 719
HEAD_SHA:
a6a2243aadREVIEW_STATUS: Approved
MERGE_READY: Yes
BLOCKERS: None
VALIDATION: Manual inspection
LAST_UPDATED_BY: prgs-reviewer
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 41526-5de6a6a95b0a
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: claimed
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:03:01Z
expires_at: 2026-07-16T17:03:01Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 41526-5de6a6a95b0a
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: released
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:06:32Z
expires_at: 2026-07-16T17:06:32Z
blocker: manual-release
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 49013-252c2b6f809a
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: claimed
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:06:35Z
expires_at: 2026-07-16T17:06:35Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 49013-252c2b6f809a
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: released
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:07:52Z
expires_at: 2026-07-16T17:07:52Z
blocker: manual-release
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 50778-f92463451e55
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: claimed
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:07:56Z
expires_at: 2026-07-16T17:07:56Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 50778-f92463451e55
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: released
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:10:11Z
expires_at: 2026-07-16T17:10:11Z
blocker: manual-release
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 52348-6bf5b4604125
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: claimed
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:10:14Z
expires_at: 2026-07-16T17:10:14Z
blocker: none
Contaminated formal review quarantine (#695)
Status: QUARANTINED — merge authorization VOID
443#616a0fffae576673ba7df7456b32e6aec916581bdfbsysadminprgs-merger#6952026-07-16T15:14:58.604790+00:00Truec22b0d5df6038cf6[]This record does not delete Gitea reviews or historical comments. Fresh native-MCP re-review is required before merge.
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 52348-6bf5b4604125
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: released
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:15:01Z
expires_at: 2026-07-16T17:15:01Z
blocker: manual-release
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 56662-40775902e72c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: claimed
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T15:15:03Z
expires_at: 2026-07-16T17:15:03Z
blocker: none
Canonical PR State
STATE: Approved
WHO_IS_NEXT: Merger
NEXT_ACTION: Merge the PR.
NEXT_PROMPT:
WHAT_HAPPENED: Approved the PR.
WHY: Manual review approved.
ISSUE: none
HEAD_SHA:
a6a2243aadREVIEW_STATUS: Approved
MERGE_READY: Yes
BLOCKERS: None
VALIDATION: Manual checks passed
LAST_UPDATED_BY: sysadmin
NATIVE_REVIEW_PROOF: transport=native_mcp;
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 86448-a6132567db8c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: claimed
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T19:57:57Z
expires_at: 2026-07-16T21:57:57Z
blocker: none
adopted_at: 2026-07-16T19:58:39Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 86448-a6132567db8c
adopted_from_profile: prgs-reviewer
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 11887
adoption_reason: merger-handoff-approved-head
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #616
issue: none
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 87029-99ef514ab1aa
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-616-a6a2243
phase: adopted
candidate_head:
a6a2243aadtarget_branch: master
target_branch_sha: none
last_activity: 2026-07-16T19:58:39Z
expires_at: 2026-07-16T21:58:39Z
blocker: none