Skip to content

feat(vetted-ops): extend the catalogue to the issue family - #1178

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:feat/vetted-ops-issue-family
Sep 8, 2026
Merged

feat(vetted-ops): extend the catalogue to the issue family#1178
potiuk merged 1 commit into
apache:mainfrom
potiuk:feat/vetted-ops-issue-family

Conversation

@potiuk

@potiuk potiuk commented Sep 8, 2026

Copy link
Copy Markdown
Member

Second family in the series, after #1177.

The existing issue-* operations address the tracker — the private repository the security lifecycle runs in. The issue family works on the project's own public issues, which is a different repository and so needs a different set of operations. repo- marks upstream here, matching the existing repo-file. Ten operations: view, list, comments, comment, add/remove label, set milestone, add assignee, close, reopen.

Confusing the two repositories is the failure that would actually hurt — security-lifecycle content posted to a public issue — so a test walks the whole catalogue and asserts that no repo-issue-* / pr-* / gql-* operation ever names the tracker, and no tracker operation ever names upstream.

pr_labels becomes upstream_labels. GitHub labels are repo-scoped and shared between issues and PRs, so two keys for one label set would have been wrong the moment the issue family arrived; correcting it while the series is still in flight is cheaper than living with it. This is the one change here that touches #1177's surface.

Two shapes are refused rather than wrapped. gh search issues takes a free-text query with no fixed shape, and wrapping it would re-introduce exactly the unbounded surface the catalogue exists to remove. gh issue create / gh pr create would need a free-text title, since gh has --body-file but no --title-file — and creation is a genuinely novel action, which the spec's non-goals already say keeps its confirmation. Both keep their ask rule, and the code says so where a reader will look.

🤖 Generated with Claude Code

https://claude.ai/code/session_015qpVgY8ADkD9c7vYZk5imP

Second family in the series, stacked on the PR-management branch.

The existing `issue-*` operations address the *tracker* — the private
repository the security lifecycle runs in. The issue family works on the
project's own public issues, which is a different repository and so needs a
different set of operations. `repo-` marks upstream here, matching the existing
`repo-file`. Ten operations: view, list, comments, comment, add/remove label,
set milestone, add assignee, close, reopen.

Confusing the two repositories is the failure that would actually hurt —
security-lifecycle content posted to a public issue — so a test walks the whole
catalogue and asserts that no `repo-issue-*` / `pr-*` / `gql-*` operation ever
names the tracker, and no tracker operation ever names upstream.

`pr_labels` becomes `upstream_labels`. GitHub labels are repo-scoped and shared
between issues and PRs, so two keys for one label set would have been wrong the
moment the issue family arrived; correcting it while the series is still in
flight is cheaper than living with it.

Two shapes are refused rather than wrapped. `gh search issues` takes a free-text
query with no fixed shape, and wrapping it would re-introduce exactly the
unbounded surface the catalogue exists to remove. `gh issue create` /
`gh pr create` would need a free-text title, since `gh` has `--body-file` but no
`--title-file` — and creation is a genuinely novel action, which the spec's
non-goals already say keeps its confirmation. Both keep their `ask` rule, and
the code says so where a reader will look.

Generated-by: Claude Code (Opus 5)
Comment thread tools/vetted-ops/src/vetted_ops/ops.py Dismissed
@potiuk
potiuk merged commit b14e7f9 into apache:main Sep 8, 2026
9 checks passed
potiuk added a commit to potiuk/magpie that referenced this pull request Sep 9, 2026
Seven changes have landed behind the previous stamp: the agent-guard plugin
move (apache#1170), the doctoc URL fix (apache#1171), the marketplace re-sync plus the
self-correcting prek hook (apache#1174), the vetted command surface (apache#1176), and the
three PRs that extended its catalogue from 19 to 58 operations (apache#1177, apache#1178,
apache#1179). `claude plugin update` compares version strings, so none of that
reaches an adopter until the stamp moves.

Mechanical: `project.version` edited, then
`tools/dev/check-family-plugins.py --fix` propagated it to the five ecosystem
manifests and the eleven per-family plugin manifests plus the marketplace
entries, and `uv lock` refreshed the workspace's own package version.

Generated-by: Claude Code (Opus 5)
potiuk added a commit that referenced this pull request Sep 9, 2026
Seven changes have landed behind the previous stamp: the agent-guard plugin
move (#1170), the doctoc URL fix (#1171), the marketplace re-sync plus the
self-correcting prek hook (#1174), the vetted command surface (#1176), and the
three PRs that extended its catalogue from 19 to 58 operations (#1177, #1178,
#1179). `claude plugin update` compares version strings, so none of that
reaches an adopter until the stamp moves.

Mechanical: `project.version` edited, then
`tools/dev/check-family-plugins.py --fix` propagated it to the five ecosystem
manifests and the eleven per-family plugin manifests plus the marketplace
entries, and `uv lock` refreshed the workspace's own package version.

Generated-by: Claude Code (Opus 5)
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.

2 participants