From 0c0df46ac9a07661383d65e85bcb2f3a416cd135 Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Sun, 30 Aug 2026 19:31:18 +0000 Subject: [PATCH] fix(gitea-releases): hedge the unconfirmed tag-deletion direction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The retrofit (dfacf05) collapsed a Gotcha into a bidirectional claim — "deleting a tag never deletes the release wrapping it" — that references/call-signatures.md never confirms; that file explicitly marks the reverse direction unconfirmed and "the more dangerous direction to get wrong." State only the confirmed direction (deleting a release doesn't delete its tag) and flag the reverse as unconfirmed with a verification step, on a destructive, irreversible operation. Found by an independent post-closure audit of #99 (agent-audit + skill-audit re-run against every changed skill/agent). --- plugins/gitea/.apm/skills/gitea-releases/SKILL.md | 2 +- plugins/gitea/skills/gitea-releases/SKILL.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/gitea/.apm/skills/gitea-releases/SKILL.md b/plugins/gitea/.apm/skills/gitea-releases/SKILL.md index a573c4c..37a3444 100644 --- a/plugins/gitea/.apm/skills/gitea-releases/SKILL.md +++ b/plugins/gitea/.apm/skills/gitea-releases/SKILL.md @@ -17,7 +17,7 @@ metadata: ## Gotchas -- **Deleting a release never deletes its tag, and deleting a tag never deletes the release wrapping it.** A release is a metadata wrapper around a tag, so removing both takes two independent destructive calls. +- **Deleting a release never deletes its tag.** A release is a metadata wrapper around a tag, so removing both takes two independent destructive calls. The reverse — whether deleting a tag deletes its release — is *unconfirmed*; verify with `list_releases`/`get_release` after `delete_tag` rather than assume it survives. - **`is_draft`/`is_pre_release` are booleans the caller sets — Gitea never infers a prerelease from a `-beta`/`-rc` tag name.** The response object names them `draft`/`prerelease`; passing `draft` as an input key is silently ignored, not rejected. - **`list_releases`/`list_tags` default `per_page` to 20**, where most other gitea-mcp list tools default to 30 — a caller assuming 30 under-counts the pages a full sweep needs. diff --git a/plugins/gitea/skills/gitea-releases/SKILL.md b/plugins/gitea/skills/gitea-releases/SKILL.md index a573c4c..37a3444 100644 --- a/plugins/gitea/skills/gitea-releases/SKILL.md +++ b/plugins/gitea/skills/gitea-releases/SKILL.md @@ -17,7 +17,7 @@ metadata: ## Gotchas -- **Deleting a release never deletes its tag, and deleting a tag never deletes the release wrapping it.** A release is a metadata wrapper around a tag, so removing both takes two independent destructive calls. +- **Deleting a release never deletes its tag.** A release is a metadata wrapper around a tag, so removing both takes two independent destructive calls. The reverse — whether deleting a tag deletes its release — is *unconfirmed*; verify with `list_releases`/`get_release` after `delete_tag` rather than assume it survives. - **`is_draft`/`is_pre_release` are booleans the caller sets — Gitea never infers a prerelease from a `-beta`/`-rc` tag name.** The response object names them `draft`/`prerelease`; passing `draft` as an input key is silently ignored, not rejected. - **`list_releases`/`list_tags` default `per_page` to 20**, where most other gitea-mcp list tools default to 30 — a caller assuming 30 under-counts the pages a full sweep needs.