From dbe83f9f8f846938aadc177b46831c2e36efe7be Mon Sep 17 00:00:00 2001 From: Justin Klein Date: Sun, 27 Sep 2026 22:02:20 +0000 Subject: [PATCH] Workflow: a PR that does not finish its issue writes Part of #n --- Workflow.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Workflow.md b/Workflow.md index c959927..6d5fdd8 100644 --- a/Workflow.md +++ b/Workflow.md @@ -57,6 +57,7 @@ Page names are file names: `outline.md` is the page `outline`. Links between pag - **No `Co-Authored-By` trailer and no "Generated with Claude Code" footer.** - **Commits must be signed.** In the Coder workspace that needs no extra step — its own SSH signer does it — but verify before opening the PR: `git log --format='%G?' -1` must print `G`. If signing fails, stop and report rather than pushing unsigned work; branch protection rejects unsigned commits on `main`, and discovering that at merge time wastes the review. +- **A PR that does not finish its issue writes `Part of #n`, never `Fixes #n`.** The forge reads `Fixes` as an instruction to close the issue at merge, so putting it on a PR that deliberately leaves work behind files an open task as done. The repair — reopening the issue by hand and recording what is left — depends on somebody remembering that the PR was partial, and nobody rereads a merged PR body. This is not hypothetical: Gitea PR #48 replaced the outdated sentence in twenty charts but not in `rss-bridge`, which had to be dropped because its install test fails on the runner (Gitea #51), and the decision was explicitly that Gitea #40 stays open until the remainder is caught up. The PR text carried `Fixes #40` anyway; the merge closed #40 with one occurrence still open, and it was reopened by hand only because the implementing agent happened to think of it. This way of working produces the case regularly — one issue and several PRs, a chart taken out of a sweep, a finding that earns its own issue — so the keyword is chosen against the PR's actual scope and not copied out of the template. Step 8 above verifies the auto-close; that check is only worth anything if the keyword was right to begin with. - **Write new issue references with the Gitea number.** `#n` inside the repo's files means the old GitHub tracker, and Gitea silently resolves a bare `#n` against its own counter — so an old reference can render as a link to something unrelated. See [Forge and tooling](Forge-and-Tooling#issue-numbers-changed-with-the-move). ## Documentation that is not the wiki