diff --git a/.github/workflows/close-solved.yml b/.github/workflows/close-solved.yml index ec7c0c5..cc005b7 100644 --- a/.github/workflows/close-solved.yml +++ b/.github/workflows/close-solved.yml @@ -66,9 +66,12 @@ jobs: # tagged at the instant the last core problem closed. It reads the same rule # close-topics uses (apps/cli/topics.ts) straight off the sub-issues, so the # push that finishes a topic releases it in this run — no waiting for Close - # Topics, which chains after this workflow. Reconciling: a run releases - # every finished topic still missing one, so a manual dispatch backfills and - # a problem closed by hand in the UI is picked up by the next run. + # Topics, which chains after this workflow. A problem re-parented into a + # `Review — ` issue still belongs to its topic (recovered from + # its parent_issue_removed event), so moving it never rewrites a release. + # Reconciling: a run releases every finished topic still missing one, so a + # manual dispatch backfills and a problem closed by hand in the UI is picked + # up by the next run. Closing a finished Review issue is Close Topics' job. release: needs: close # Like close-topics: a partially failed close still closed some issues, diff --git a/.github/workflows/close-topics.yml b/.github/workflows/close-topics.yml index c303063..f65ae0f 100644 --- a/.github/workflows/close-topics.yml +++ b/.github/workflows/close-topics.yml @@ -1,9 +1,14 @@ name: Close Topics -# No D1 push here, unlike Close Solved: D1 stores no topic completion column. -# Phase progress, the gate pools and the charts all derive from the problem -# rows, which close-solved already logs — a topic is finished exactly when its -# core problems are, so there is nothing left to reconcile. +# Closes finished topics AND finished `Review — ` issues (every +# sub-issue closed). Problems moved from a topic into a Review issue still +# count toward that topic (apps/cli/topics.ts). +# +# No D1 push here, unlike Close Solved: D1 stores no topic or review +# completion column. Phase progress, the gate pools and the charts all derive +# from the problem rows, which close-solved already logs — a topic or review +# is finished exactly when its problems are, so there is nothing left to +# reconcile. on: # Close Solved closes problem issues with GITHUB_TOKEN, and token-driven @@ -19,7 +24,7 @@ on: workflow_dispatch: inputs: dry_run: - description: Report finished topics without closing anything + description: Report finished topics and reviews without closing anything type: boolean default: false @@ -34,7 +39,7 @@ concurrency: jobs: close: # The `issues` trigger fires for every issue in the repo; only closing a - # problem sub-issue can ever complete a topic's core set. + # problem sub-issue can ever complete a topic's core set or a review. if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'problem') runs-on: ubuntu-latest steps: