refuse close and reopen words in caller text (implements ADR 0058) #829

Open
opened 2026-10-20 02:04:55 +00:00 by hexajon · 0 comments
Owner

Implements docs/decisions/0058: no text that a caller gives madtea may put a close or reopen word right before an issue reference. Only madtea writes close lines, from its closes list and the branch issue.

Scope: every caller text on the CLI and MCP (PR title and body, including the body operations; commit, merge, and squash messages; issue bodies; issue and PR comments; close reasons) and raw API writes to those endpoints. The check is one limit in the one write guard, with no flag to turn it off.

Acceptance, against throwaway Forgejo and Gitea servers:

  • Each of the 12 default words, with and without a colon, after a space, (, [, and at the line start, before #N and before owner/repo#N, is refused in every caller text field on both surfaces and through the raw API passthrough.
  • does not close #N is refused.
  • A close line that madtea writes passes, and the issue closes at merge.
  • A word that is not right before a reference passes.
  • The refusal names the word and the reference, and points at closes=.
  • The help documents that a server with custom close words is not covered.
Implements docs/decisions/0058: no text that a caller gives madtea may put a close or reopen word right before an issue reference. Only madtea writes close lines, from its `closes` list and the branch issue. Scope: every caller text on the CLI and MCP (PR title and body, including the body operations; commit, merge, and squash messages; issue bodies; issue and PR comments; close reasons) and raw API writes to those endpoints. The check is one limit in the one write guard, with no flag to turn it off. Acceptance, against throwaway Forgejo and Gitea servers: - Each of the 12 default words, with and without a colon, after a space, `(`, `[`, and at the line start, before `#N` and before `owner/repo#N`, is refused in every caller text field on both surfaces and through the raw API passthrough. - `does not close #N` is refused. - A close line that madtea writes passes, and the issue closes at merge. - A word that is not right before a reference passes. - The refusal names the word and the reference, and points at `closes=`. - The help documents that a server with custom close words is not covered.
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#829
No description provided.