fix(mcp): add active IDE vs global config-drift diagnostic (Closes #672) #920

Merged
sysadmin merged 1 commits from fix/issue-672-mcp-config-drift into master 2026-07-27 05:40:05 -05:00
Owner

Closes #672

Implements active IDE vs global MCP configuration drift diagnostic:

  • Adds mcp_config_drift.py tool comparing ~/.gemini/antigravity-ide/mcp_config.json vs ~/.gemini/config/mcp_config.json
  • Redacts all secrets (tokens, keys, passwords)
  • Reports missing Gitea role servers (gitea-author, gitea-reviewer, gitea-merger, gitea-reconciler, gitea-controller, gitea-tools) and profile mismatches
  • Establishes sanctioned repair path (backup active config -> patch active config from canonical -> IDE reconnect -> live whoami proof)
  • Forbids pkill, mtime edits, source edits, or session-state edits for repair
  • Unit tests in tests/test_mcp_config_drift.py and documentation in docs/mcp-config-drift-runbook.md
Closes #672 Implements active IDE vs global MCP configuration drift diagnostic: - Adds mcp_config_drift.py tool comparing ~/.gemini/antigravity-ide/mcp_config.json vs ~/.gemini/config/mcp_config.json - Redacts all secrets (tokens, keys, passwords) - Reports missing Gitea role servers (gitea-author, gitea-reviewer, gitea-merger, gitea-reconciler, gitea-controller, gitea-tools) and profile mismatches - Establishes sanctioned repair path (backup active config -> patch active config from canonical -> IDE reconnect -> live whoami proof) - Forbids pkill, mtime edits, source edits, or session-state edits for repair - Unit tests in tests/test_mcp_config_drift.py and documentation in docs/mcp-config-drift-runbook.md
jcwalker3 added 1 commit 2026-07-25 18:08:39 -05:00
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #920
issue: #672
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: prgs-reviewer-49289-39cddf6c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr920-672
phase: claimed
candidate_head: fad44669d9
target_branch: master
target_branch_sha: 2b4e43042a
last_activity: 2026-07-25T23:31:16Z
expires_at: 2026-07-25T23:41:16Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #920 issue: #672 reviewer_identity: sysadmin profile: prgs-reviewer session_id: prgs-reviewer-49289-39cddf6c worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr920-672 phase: claimed candidate_head: fad44669d9572d202cf4bc53a2c07167a17a09a0 target_branch: master target_branch_sha: 2b4e43042a34f4e29617378ae79a7f5a3d312688 last_activity: 2026-07-25T23:31:16Z expires_at: 2026-07-25T23:41:16Z blocker: none
sysadmin approved these changes 2026-07-25 18:31:42 -05:00
sysadmin left a comment
Owner

Formal review — PR #920 (head fad4466) · Closes #672

Verdict: APPROVE

Scope

Active IDE vs global MCP config-drift diagnostic. 3 new files only (+456). Additive; mergeable. Author jcwalker3 ≠ reviewer sysadmin.

What is good

  • mcp_config_drift.py compares active IDE config vs global canonical config for required Gitea role servers.
  • Secret redaction on env keys (token/secret/pass/key/auth) + console_redaction.redact_payload on report.
  • Sanctioned repair runbook (backup → patch → IDE reconnect → live whoami); forbids pkill/mtime/source/session-state repair.
  • Unit tests cover in-sync, missing servers, profile mismatch, redaction, missing files (6 passed).
  • Operator docs in docs/mcp-config-drift-runbook.md.

Non-blocking notes

  • CLI-only diagnostic (no gitea_* MCP tool registration). Acceptable for #672 offline/IDE config diagnosis; a thin MCP wrapper could follow later.
  • Branch base is older than current master tip; files are pure adds so merge risk is low, but merger should confirm conflict-free merge.

Validation

pytest tests/test_mcp_config_drift.py → 6 passed. Worktree HEAD matches pin.

Canonical PR State

STATE: approved-awaiting-merge
WHO_IS_NEXT: merger
NEXT_ACTION: merge PR #920 at pinned head fad44669d9 when merge policy allows
NEXT_PROMPT:

Merger session: call gitea_allocate_next_work(apply=true, role='merger') for prgs/Scaled-Tech-Consulting/Gitea-Tools. If PR #920 is assigned, merge only that PR at head fad44669d9572d202cf4bc53a2c07167a17a09a0 after merge preflight. Do not self-select. Do not force-push.

WHAT_HAPPENED: Formal APPROVE submitted for PR #920 after code review and tests.
WHY: #672 diagnostic + sanctioned repair path met; redaction and forbidden-path hygiene verified; scope clean.
ISSUE: #672
HEAD_SHA: fad44669d9
REVIEW_STATUS: approved / approval_at_current_head
MERGE_READY: true
BLOCKERS: none
VALIDATION: pytest tests/test_mcp_config_drift.py → 6 passed; reviewer approved at head fad44669d9
NATIVE_REVIEW_PROOF: transport=native_mcp; entrypoint=mcp_server; tool=gitea_submit_pr_review
LAST_UPDATED_BY: sysadmin / prgs-reviewer

## Formal review — PR #920 (head fad4466) · Closes #672 **Verdict: APPROVE** ### Scope Active IDE vs global MCP config-drift diagnostic. 3 new files only (+456). Additive; mergeable. Author jcwalker3 ≠ reviewer sysadmin. ### What is good - `mcp_config_drift.py` compares active IDE config vs global canonical config for required Gitea role servers. - Secret redaction on env keys (token/secret/pass/key/auth) + `console_redaction.redact_payload` on report. - Sanctioned repair runbook (backup → patch → IDE reconnect → live whoami); forbids pkill/mtime/source/session-state repair. - Unit tests cover in-sync, missing servers, profile mismatch, redaction, missing files (6 passed). - Operator docs in `docs/mcp-config-drift-runbook.md`. ### Non-blocking notes - CLI-only diagnostic (no `gitea_*` MCP tool registration). Acceptable for #672 offline/IDE config diagnosis; a thin MCP wrapper could follow later. - Branch base is older than current master tip; files are pure adds so merge risk is low, but merger should confirm conflict-free merge. ### Validation pytest tests/test_mcp_config_drift.py → 6 passed. Worktree HEAD matches pin. ## Canonical PR State STATE: approved-awaiting-merge WHO_IS_NEXT: merger NEXT_ACTION: merge PR #920 at pinned head fad44669d9572d202cf4bc53a2c07167a17a09a0 when merge policy allows NEXT_PROMPT: ```text Merger session: call gitea_allocate_next_work(apply=true, role='merger') for prgs/Scaled-Tech-Consulting/Gitea-Tools. If PR #920 is assigned, merge only that PR at head fad44669d9572d202cf4bc53a2c07167a17a09a0 after merge preflight. Do not self-select. Do not force-push. ``` WHAT_HAPPENED: Formal APPROVE submitted for PR #920 after code review and tests. WHY: #672 diagnostic + sanctioned repair path met; redaction and forbidden-path hygiene verified; scope clean. ISSUE: #672 HEAD_SHA: fad44669d9572d202cf4bc53a2c07167a17a09a0 REVIEW_STATUS: approved / approval_at_current_head MERGE_READY: true BLOCKERS: none VALIDATION: pytest tests/test_mcp_config_drift.py → 6 passed; reviewer approved at head fad44669d9572d202cf4bc53a2c07167a17a09a0 NATIVE_REVIEW_PROOF: transport=native_mcp; entrypoint=mcp_server; tool=gitea_submit_pr_review LAST_UPDATED_BY: sysadmin / prgs-reviewer
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #920
issue: #672
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 48595-a27bfbcdbc8b
worktree: /Users/jasonwalker/Development/Gitea-Tools
phase: claimed
candidate_head: fad44669d9
target_branch: master
target_branch_sha: none
last_activity: 2026-07-27T10:39:58Z
expires_at: 2026-07-27T10:49:58Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #920 issue: #672 reviewer_identity: sysadmin profile: prgs-merger session_id: 48595-a27bfbcdbc8b worktree: /Users/jasonwalker/Development/Gitea-Tools phase: claimed candidate_head: fad44669d9572d202cf4bc53a2c07167a17a09a0 target_branch: master target_branch_sha: none last_activity: 2026-07-27T10:39:58Z expires_at: 2026-07-27T10:49:58Z blocker: none
sysadmin merged commit c30b381eb2 into master 2026-07-27 05:40:05 -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#920