Context — child of #14164
Sibling of #14188 (kb tagging). Tags github-workflow, applying the #14164 tier-projection mechanism. Landed together with the kb slice in the same PR (the compliance tests share OpenApiValidatorCompliance.spec.mjs, so the slices are naturally stacked).
Scope (this leaf — delivered by the PR)
- github-workflow openapi: every operation tagged
x-neo-tool-tier + the root x-neo-harness-tool-projection policy (defaultVisibleTiers: [read, write], operatorOnlyTiers: [admin]).
- Tier split (24 tools → 10 read / 8 write / 5 extended / 1 admin):
- read (always-on): healthcheck, get_mcp_tool_handbook, list_labels, list_pull_requests, get_pull_request_diff, get_conversation, get_local_issue_by_id, list_issues, get_discussion_conversation, get_viewer_permission
- write (always-on core-maintainer writes): manage_issue_comment, manage_issue_labels, manage_issue_assignees, manage_pr_review, manage_pr_reviewers, create_issue, update_issue_relationship, signal_state_transition
- extended (on-demand): manage_issue_projects, create_discussion, manage_discussion, manage_discussion_comment, sync_all
- admin (operator-only, dangerous): checkout_pull_request (desyncs the canonical clone)
- Compliance tests lock the tagging (policy + classification + dangerous-not-read).
→ harness-embedded loads 18 of 24 (a 25% cut — smaller than kb because a maintainer's core surface on gh genuinely includes the writes); the 6 withheld stay reachable via get_mcp_tool_handbook. No capability removed.
Why gh's visible set differs from kb
kb's writes are all admin-destructive, so visible=[read] was clean. gh has core maintainer-writes (review, comment, create, assign, label, link, transition) that a maintainer uses constantly — so visible=[read, write]. The cross-server tier vocab (read/write/extended/admin) is shared; each server's defaultVisibleTiers reflects its own core. The core-line is review-adjustable — flagged for peer sanity-check on #14164.
Acceptance Criteria
Test Evidence
OpenApiValidatorCompliance.spec.mjs — 3 new gh tier tests + the existing gh per-server loop green (37 passed total with kb). YAML parse + tier distribution verified.
Authored by Vega (Claude Opus 4.8, Claude Code). Origin session 1bb8a27b-ae0d-4668-a9a2-acbbe2387512.
Context — child of #14164
Sibling of #14188 (kb tagging). Tags github-workflow, applying the #14164 tier-projection mechanism. Landed together with the kb slice in the same PR (the compliance tests share
OpenApiValidatorCompliance.spec.mjs, so the slices are naturally stacked).Scope (this leaf — delivered by the PR)
x-neo-tool-tier+ the rootx-neo-harness-tool-projectionpolicy (defaultVisibleTiers: [read, write],operatorOnlyTiers: [admin]).→ harness-embedded loads 18 of 24 (a 25% cut — smaller than kb because a maintainer's core surface on gh genuinely includes the writes); the 6 withheld stay reachable via
get_mcp_tool_handbook. No capability removed.Why gh's visible set differs from kb
kb's writes are all admin-destructive, so
visible=[read]was clean. gh has core maintainer-writes (review, comment, create, assign, label, link, transition) that a maintainer uses constantly — sovisible=[read, write]. The cross-server tier vocab (read/write/extended/admin) is shared; each server'sdefaultVisibleTiersreflects its own core. The core-line is review-adjustable — flagged for peer sanity-check on #14164.Acceptance Criteria
x-neo-tool-tier; the policy declaresdefaultVisibleTiers: [read, write].read;checkout_pull_requestisadmin.Test Evidence
OpenApiValidatorCompliance.spec.mjs— 3 new gh tier tests + the existing gh per-server loop green (37 passed total with kb). YAML parse + tier distribution verified.Authored by Vega (Claude Opus 4.8, Claude Code). Origin session 1bb8a27b-ae0d-4668-a9a2-acbbe2387512.