feat!: repo topics are append-only #816

Merged
hexajon merged 4 commits from issue-813-append-only-topics into main 2026-10-19 23:51:02 +00:00
Owner

Summary

Repo topics are now append-only on the first-class surfaces (ADR 0057).

  • repo edit --add-topic <t> (CLI) and add_topics on madt_repos action=edit (MCP) append a topic through the per-topic endpoint, so the whole list is never resent. A repeat add is a no-op with a notice.
  • repo topics set / topics_set now refuses a set that would drop an existing topic; an additive set still works.

Breaking: repo topics set / topics_set rejects a set that drops a topic, where before it replaced the whole list.

Refs #813. This delivers the incremental add and makes set append-only. The per-topic remove half of the original issue (--remove-topic / remove_topics) is intentionally not implemented: topics are append-only, and the full-list replace stays reachable only through the raw API passthrough, which ADR 0057 records as the accepted tradeoff. I left #813 open for a maintainer close, since the scope changed from the original ask.

Refs #813

## Summary Repo topics are now append-only on the first-class surfaces (ADR 0057). - `repo edit --add-topic <t>` (CLI) and `add_topics` on `madt_repos action=edit` (MCP) append a topic through the per-topic endpoint, so the whole list is never resent. A repeat add is a no-op with a notice. - `repo topics set` / `topics_set` now refuses a set that would drop an existing topic; an additive set still works. Breaking: `repo topics set` / `topics_set` rejects a set that drops a topic, where before it replaced the whole list. Refs #813. This delivers the incremental add and makes `set` append-only. The per-topic remove half of the original issue (`--remove-topic` / `remove_topics`) is intentionally not implemented: topics are append-only, and the full-list replace stays reachable only through the raw API passthrough, which ADR 0057 records as the accepted tradeoff. I left #813 open for a maintainer close, since the scope changed from the original ask. Refs #813
Add `repo edit --add-topic` (CLI) and `add_topics` on `madt_repos action=edit`
(MCP). Each appends through the per-topic topics endpoint, so the rest of the
topic list is never sent and never replaced. A repeat add is a no-op with a
notice.

`repo topics set` / `topics_set` now refuses a set that would drop an existing
topic; an additive set still works. No first-class surface removes a topic.

BREAKING CHANGE: `repo topics set` / `topics_set` rejects a set that drops an
existing topic, where before it replaced the whole list.

Refs #813
fix: resolve the repo edit suggestion command token (#813)
Some checks failed
drift / govulncheck (pull_request) Has been skipped
drift / surface-diff (pull_request) Successful in 37s
drift / forgejo-smoke (pull_request) Has been skipped
ci / mcp-conformance (pull_request) Successful in 1m21s
ci / mcp-conformance (push) Successful in -32s
drift / govulncheck (push) Has been skipped
drift / surface-diff (push) Successful in -34s
drift / forgejo-smoke (push) Has been skipped
ci / gate (push) Failing after 4m6s
ci / gate (pull_request) Failing after 9m29s
07839d300c
The /topics/ endpoint suggestion named "repo edit --add-topic" as its
command token, but a command token must resolve against the Cobra tree
and a flag is not part of it. Use "repo edit"; the repos:edit action
already carries the add-topic intent.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sixfold-space/madtea!816
No description provided.