Decide: repo topics are append-only #815

Closed
opened 2026-10-19 23:13:44 +00:00 by hexajon · 1 comment
Owner

Decision

Repo topics are append-only on the first-class surfaces. There is no per-topic remove.

  • repo edit --add-topic <t>, and add_topics on madt_repos action=edit, append each topic through the per-topic endpoint, so the rest of the list is never sent and never replaced. A repeat add is a no-op with a notice.
  • repo topics set / topics_set refuses a set that would drop an existing topic. An additive set still works.

Accepted tradeoff

The raw API passthrough still reaches PUT /repos/{owner}/{repo}/topics, so a full-list replace that drops a topic stays possible there. I accept this: the passthrough is the deliberate escape hatch, and the append-only guarantee lives on the first-class surfaces.

Record

Tracked by a proposed ADR in docs/decisions. Implemented in #813.

## Decision Repo topics are append-only on the first-class surfaces. There is no per-topic remove. - `repo edit --add-topic <t>`, and `add_topics` on `madt_repos action=edit`, append each topic through the per-topic endpoint, so the rest of the list is never sent and never replaced. A repeat add is a no-op with a notice. - `repo topics set` / `topics_set` refuses a set that would drop an existing topic. An additive set still works. ## Accepted tradeoff The raw API passthrough still reaches `PUT /repos/{owner}/{repo}/topics`, so a full-list replace that drops a topic stays possible there. I accept this: the passthrough is the deliberate escape hatch, and the append-only guarantee lives on the first-class surfaces. ## Record Tracked by a proposed ADR in `docs/decisions`. Implemented in #813.
Author
Owner

ADR-ACCEPT 0057

Decided in ADR 0057, docs/decisions/0057-append-only-repo-topics.md, now accepted: repo topics are append-only on the first-class surfaces. repo edit --add-topic and add_topics append through the per-topic endpoint, repo topics set refuses a set that drops a topic, and no first-class surface removes a topic. The raw API passthrough can still replace the full list, and I accept that as the deliberate escape hatch. The implementation landed with #813.

ADR-ACCEPT 0057 Decided in ADR 0057, docs/decisions/0057-append-only-repo-topics.md, now accepted: repo topics are append-only on the first-class surfaces. `repo edit --add-topic` and `add_topics` append through the per-topic endpoint, `repo topics set` refuses a set that drops a topic, and no first-class surface removes a topic. The raw API passthrough can still replace the full list, and I accept that as the deliberate escape hatch. The implementation landed with #813.
Sign in to join this conversation.
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#815
No description provided.