Skip to content

feat(governance): add typed label and governance outputs - #3402

Draft
SamMorrowDrums wants to merge 1 commit into
sammorrowdrums-typed-projects-toolsfrom
sammorrowdrums-typed-label-governance-tools
Draft

SamMorrowDrums wants to merge 1 commit into
sammorrowdrums-typed-projects-toolsfrom
sammorrowdrums-typed-label-governance-tools

Conversation

@SamMorrowDrums

Copy link
Copy Markdown
Collaborator

Summary

Add concrete output types and schemas for all label tools, repository rulesets, and custom properties. Structured content is exposed only to the supported modern protocol; legacy text output, error behavior, level/method routing, scopes, and IFC metadata remain compatible.

Why

Continue the sequential typed-output stack on top of the Projects layer. Builds on #3401; no issue linked.

What changed

  • Typed both get_label registrations, list_label, label_write, repository_ruleset_read, create_repository_ruleset, and custom properties read/write.
  • Added protocol-gated wire tests for modern, legacy, empty, and unknown protocol versions, plus typed snapshots and regenerated documentation.

MCP impact

  • No tool or API changes
  • Tool schema or behavior changed — adds concrete output schemas and modern structured content while preserving legacy text responses.
  • New tool added

Prompts tested (tool changes only)

  • No natural-language prompts; direct MCP wire tests exercised label reads/writes, custom-property reads/writes at each level, and ruleset reads/writes across supported methods.

Security / limits

  • No security or limits impact
  • Auth / permissions considered — existing level-specific scope challenges are preserved.
  • Data exposure, filtering, or token/size limits considered — response fields remain faithful; no authorization or limit behavior changed.

Tool renaming

  • I am renaming tools as part of this PR (e.g. a part of a consolidation effort)
    • I have added the new tool aliases in deprecated_tool_aliases.go
  • I am not renaming tools as part of this PR

Note: if you're renaming tools, you must add the tool aliases. For more information on how to do so, please refer to the official docs.

Lint & tests

  • Linted locally with ./script/lint (invoked as script/lint; passed with 0 issues).
  • Tested locally with ./script/test (invoked as script/test; passed, including go test -race ./...).

Validation in order: UPDATE_TOOLSNAPS=true go test ./... — passed; script/lint — passed (0 issues); script/test — passed; script/generate-docs — passed and updated generated docs; git diff --check — passed.

Docs

  • Not needed
  • Updated (README / docs / examples) — regenerated README tool documentation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@SamMorrowDrums
SamMorrowDrums added this pull request to stack #3385 October 2, 2026 21:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant