Merge pull request 'Update operator runbooks and roadmap docs for Jenkins/GlitchTip MCP status' (#163) from feat/issue-154-update-runbooks-roadmap-docs into master

This commit was merged in pull request #163.
This commit is contained in:
2026-07-05 11:20:50 -05:00
3 changed files with 17 additions and 18 deletions
@@ -5,20 +5,22 @@
- **Related:** #77 (repo/branch/PR → job mapping, designed separately) - **Related:** #77 (repo/branch/PR → job mapping, designed separately)
- **Date:** 2026-07-02 - **Date:** 2026-07-02
Note on naming: This design used historical `jenkins-readonly` skill name in Gitea-Tools. Actual package/server is `jenkins-mcp` (see mcp-control-plane registration in #55). The server boundary now contains gated trigger (see #56), but read tools remain as designed.
## 1. Purpose and scope ## 1. Purpose and scope
Define the minimum **read-only** Jenkins MCP tool set that lets an LLM answer: Define the minimum **read-only** Jenkins MCP tool set that lets an LLM answer:
*"Did the latest build for this project/branch succeed or fail?"* — plus enough *"Did the latest build for this project/branch succeed or fail?"* — plus enough
detail (build URL, number, timing, result) to report or investigate. detail (build URL, number, timing, result) to report or investigate.
Phase 1 is **strictly read-only**, per ADR-0001 Phase 1 is **primarily read-only**, per ADR-0001
([`adr-0001-mcp-control-plane-boundaries.md`](adr-0001-mcp-control-plane-boundaries.md)): ([`adr-0001-mcp-control-plane-boundaries.md`](adr-0001-mcp-control-plane-boundaries.md)):
- **Excluded: build triggers.** - Build triggers are gated behind dedicated profile + exact confirmation (landed in #4, boundary correction in #56).
- **Excluded: deploy triggers.** - **Excluded: deploy triggers.**
- **Excluded: parameterized job launches.** - **Excluded: parameterized job launches.**
- Excluded: job creation/deletion/config changes, queue manipulation, node - Excluded: job creation/deletion/config changes, queue manipulation, node
management — any Jenkins mutation whatsoever. management — any Jenkins mutation whatsoever unless explicitly configured.
## 2. Boundary placement ## 2. Boundary placement
+4 -2
View File
@@ -17,7 +17,9 @@ To maintain a secure environment, all secrets, tokens, passwords, and sensitive
## 4. Read-Only First Policy ## 4. Read-Only First Policy
By default, MCP servers (such as `jenkins-mcp` and `ops-mcp`) operate in a **read-only** mode. Mutation capabilities are deny-by-default and fail-closed. By default, MCP servers (such as `jenkins-mcp` and `ops-mcp`) operate in a **read-only** mode. Mutation capabilities are deny-by-default and fail-closed.
Note on naming: Historical design docs used `jenkins-readonly` / `glitchtip-readonly` skill names. Actual server packages are `jenkins-mcp` / `glitchtip-mcp` (registered via entry points in mcp-control-plane). See Gitea-Tools skills and mcp-control-plane #55 for registration.
## 5. Mutation Gating ## 5. Mutation Gating
Any mutating action (e.g., Gitea issue creation from GlitchTip, or Jenkins builds) must be explicitly allowed by the execution profile. Any mutating action (e.g., Gitea issue creation from GlitchTip, or Jenkins builds) must be explicitly allowed by the execution profile.
- **Jenkins build triggers** are explicitly deferred for phase 1. - **Jenkins build triggers** exist in jenkins-mcp (landed #4) but require dedicated profile/identity and exact confirmation; not on standard reader profiles. See #56 for boundary correction.
- **GlitchTip to Gitea issue filing** is documented as a gated, orchestrated workflow, not a direct unprompted automatic action. - **GlitchTip to Gitea issue filing** is documented as a gated, orchestrated workflow (not in glitchtip-mcp), currently partial (mocked, dedup not wired, audit missing). See #57.
+8 -13
View File
@@ -1975,34 +1975,29 @@ _PROJECT_SKILLS = {
}, },
"jenkins-readonly": { "jenkins-readonly": {
"description": "Read-only Jenkins CI inspection (jobs, builds, " "description": "Read-only Jenkins CI inspection (jobs, builds, "
"logs).", "logs). Actual server name: jenkins-mcp (see mcp-control-plane).",
"when_to_use": "Checking CI state once Jenkins MCP tools exist.", "when_to_use": "Checking CI state once Jenkins MCP tools exist.",
"required_operations": ["jenkins.read"], "required_operations": ["jenkins.read"],
"status": "designed-not-implemented", "status": "designed-not-implemented",
"notes": "Design exists (issues #72/#77); no Jenkins MCP server is " "notes": "Server code exists in mcp-control-plane as jenkins-mcp (read tools + gated trigger); registration pending (#55); docs in Gitea-Tools use historical name. Report SKIPPED if not connected. Do not substitute shell/API. Trigger requires dedicated profile (see #56).",
"connected yet. Report SKIPPED rather than substituting "
"shell or direct API calls.",
"steps": [ "steps": [
"Confirm a Jenkins MCP server is connected; if not, report " "Confirm a Jenkins MCP server is connected (jenkins-mcp); if not, report "
"SKIPPED.", "SKIPPED.",
"Use read-only operations only; never trigger, cancel, or " "Use read-only operations only; never trigger unless using dedicated profile + confirmation.",
"configure builds.",
], ],
}, },
"glitchtip-readonly": { "glitchtip-readonly": {
"description": "Read-only GlitchTip error/event inspection.", "description": "Read-only GlitchTip error/event inspection. Actual server name: glitchtip-mcp (see mcp-control-plane).",
"when_to_use": "Investigating reported errors once GlitchTip MCP " "when_to_use": "Investigating reported errors once GlitchTip MCP "
"tools exist.", "tools exist.",
"required_operations": ["glitchtip.read"], "required_operations": ["glitchtip.read"],
"status": "designed-not-implemented", "status": "designed-not-implemented",
"notes": "Design exists (issue #73); no GlitchTip MCP server is " "notes": "Server code exists in mcp-control-plane as glitchtip-mcp (read-only tools); registration pending (#55); filing orchestrator is partial in mcp-control-plane (see #57). Report SKIPPED if not connected. Filing to Gitea is separate orchestrator, not in this server.",
"connected yet. Report SKIPPED rather than substituting "
"shell or direct API calls.",
"steps": [ "steps": [
"Confirm a GlitchTip MCP server is connected; if not, report " "Confirm a GlitchTip MCP server is connected (glitchtip-mcp); if not, report "
"SKIPPED.", "SKIPPED.",
"Use read-only operations only; never mutate issues or " "Use read-only operations only; never mutate issues or "
"settings.", "settings. Filing tracked in #57.",
], ],
}, },
"release-operator": { "release-operator": {