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:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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": {
|
||||||
|
|||||||
Reference in New Issue
Block a user