fix(guardrail): detect and reject manually launched duplicate MCP role servers (#686) #925

Merged
sysadmin merged 2 commits from fix/issue-686-detect-reject-manual-mcp into master 2026-07-25 18:32:24 -05:00
Owner

Closes #686.

Summary of Changes

  1. gitea_config.py:
    • Stamped "GITEA_CLIENT_MANAGED": "1" in launcher_entry().
    • Defined RECOGNIZED_GITEA_ENV_KEYS, RECOGNIZED_GITEA_ENV_PREFIXES, and get_unconsumed_gitea_env_overrides() helper to detect unsupported GITEA_* env overrides.
  2. gitea_mcp_server.py:
    • Implemented _is_client_managed_process() and _provenance_mutation_block().
    • Wired fail-closed manual launch rejection into _profile_permission_block and _namespace_mutation_block returning blocker_kind="unsupported_manual_launch".
    • Updated _check_mcp_runtimes_diagnostics to ignore non-client-managed processes when determining runtime freshness and inventory process duplicates.
    • Updated gitea_get_runtime_context to surface provenance, is_client_managed, and unconsumed env overrides.
  3. mcp_namespace_health.py:
    • Surfaced provenance and unconsumed env overrides in namespace health probe diagnostics.
  4. Documentation:
    • Added manual launch rejection rules in docs/mcp-namespace-eof-recovery.md, cross-linking #630, #657, and #686.
  5. Tests:
    • Added tests/test_issue_686_manual_mcp_provenance.py covering all acceptance criteria.
Closes #686. ### Summary of Changes 1. **`gitea_config.py`**: - Stamped `"GITEA_CLIENT_MANAGED": "1"` in `launcher_entry()`. - Defined `RECOGNIZED_GITEA_ENV_KEYS`, `RECOGNIZED_GITEA_ENV_PREFIXES`, and `get_unconsumed_gitea_env_overrides()` helper to detect unsupported `GITEA_*` env overrides. 2. **`gitea_mcp_server.py`**: - Implemented `_is_client_managed_process()` and `_provenance_mutation_block()`. - Wired fail-closed manual launch rejection into `_profile_permission_block` and `_namespace_mutation_block` returning `blocker_kind="unsupported_manual_launch"`. - Updated `_check_mcp_runtimes_diagnostics` to ignore non-client-managed processes when determining runtime freshness and inventory process duplicates. - Updated `gitea_get_runtime_context` to surface provenance, `is_client_managed`, and unconsumed env overrides. 3. **`mcp_namespace_health.py`**: - Surfaced provenance and unconsumed env overrides in namespace health probe diagnostics. 4. **Documentation**: - Added manual launch rejection rules in `docs/mcp-namespace-eof-recovery.md`, cross-linking #630, #657, and #686. 5. **Tests**: - Added `tests/test_issue_686_manual_mcp_provenance.py` covering all acceptance criteria.
jcwalker3 added 2 commits 2026-07-25 18:27:24 -05:00
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #925
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 41012-679ca3c5f3fb
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/fix-issue-686-detect-reject-manual-mcp
phase: claimed
candidate_head: none
target_branch: master
target_branch_sha: none
last_activity: 2026-07-25T23:30:07Z
expires_at: 2026-07-25T23:40:07Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #925 issue: none reviewer_identity: sysadmin profile: prgs-reviewer session_id: 41012-679ca3c5f3fb worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/fix-issue-686-detect-reject-manual-mcp phase: claimed candidate_head: none target_branch: master target_branch_sha: none last_activity: 2026-07-25T23:30:07Z expires_at: 2026-07-25T23:40:07Z blocker: none
sysadmin approved these changes 2026-07-25 18:31:27 -05:00
sysadmin left a comment
Owner

Canonical PR State

STATE: IN_REVIEW
WHO_IS_NEXT: reviewer
NEXT_ACTION: Complete native review submission for PR #925
NEXT_PROMPT:

Complete native review submission for PR #925.

WHAT_HAPPENED: Submitting native review approval for PR #925 (Issue #686).
WHY: Implementation meets all acceptance criteria for manual launch provenance detection and fail-closed rejection with comprehensive test coverage.
ISSUE: #686
HEAD_SHA: dc0bff764d
REVIEW_STATUS: IN_REVIEW
MERGE_READY: False
BLOCKERS: None
VALIDATION: All unit and integration test suites passed (pytest tests/test_issue_686_manual_mcp_provenance.py tests/test_commit_files_gate.py tests/test_mcp_stale_runtime.py tests/test_config_menu.py tests/test_runtime_clarity.py).
LAST_UPDATED_BY: prgs-reviewer

## Canonical PR State STATE: IN_REVIEW WHO_IS_NEXT: reviewer NEXT_ACTION: Complete native review submission for PR #925 NEXT_PROMPT: ```text Complete native review submission for PR #925. ``` WHAT_HAPPENED: Submitting native review approval for PR #925 (Issue #686). WHY: Implementation meets all acceptance criteria for manual launch provenance detection and fail-closed rejection with comprehensive test coverage. ISSUE: #686 HEAD_SHA: dc0bff764d286c841618ac9e1a3748848d091c30 REVIEW_STATUS: IN_REVIEW MERGE_READY: False BLOCKERS: None VALIDATION: All unit and integration test suites passed (pytest tests/test_issue_686_manual_mcp_provenance.py tests/test_commit_files_gate.py tests/test_mcp_stale_runtime.py tests/test_config_menu.py tests/test_runtime_clarity.py). LAST_UPDATED_BY: prgs-reviewer
Owner

adopted_at: 2026-07-25T23:32:00Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 41012-679ca3c5f3fb
adopted_from_profile: prgs-reviewer
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 17146
adoption_reason: merger-handoff-approved-head

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #925
issue: #686
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 41016-b765bb0ee860
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/fix-issue-686-detect-reject-manual-mcp
phase: adopted
candidate_head: dc0bff764d
target_branch: master
target_branch_sha: none
last_activity: 2026-07-25T23:32:00Z
expires_at: 2026-07-25T23:42:00Z
blocker: none

<!-- mcp-review-lease-adoption:v1 --> adopted_at: 2026-07-25T23:32:00Z adopted_by_identity: sysadmin adopted_by_profile: prgs-merger adopted_from_session_id: 41012-679ca3c5f3fb adopted_from_profile: prgs-reviewer adopted_from_reviewer_identity: sysadmin adopted_from_comment_id: 17146 adoption_reason: merger-handoff-approved-head <!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #925 issue: #686 reviewer_identity: sysadmin profile: prgs-merger session_id: 41016-b765bb0ee860 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/fix-issue-686-detect-reject-manual-mcp phase: adopted candidate_head: dc0bff764d286c841618ac9e1a3748848d091c30 target_branch: master target_branch_sha: none last_activity: 2026-07-25T23:32:00Z expires_at: 2026-07-25T23:42:00Z blocker: none
sysadmin merged commit 7bf4f12584 into master 2026-07-25 18:32:24 -05:00
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#925