From 188e574d84f34579df0ad67ed71603443e8d1f73 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Mon, 26 Oct 2026 00:37:42 -0700 Subject: [PATCH] v1.91.235.0 docs(triage): parked issues stay open under the `parked` label; closing means fixed, duplicate or won't fix (GSTA-99) (#3427) * docs(triage): parked issues stay open under the parked label; closing means fixed, duplicate or won't fix (GSTA-99) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(triage): already-fixed reports close as fixed, duplicates use GitHub's duplicate reason /ship adversarial review on #3427 (outside voice openai/gpt-6.1-sol, native claude-sonnet-5-5): the non-reproduction rule sent reports that main had already fixed to "won't fix"; the Duplicate row said close reason "not planned" although GitHub and gh have a native duplicate reason; a duplicate of an issue that already shipped had no close path; and TODOS.md's "73 open feature requests" sat beside the "75 parked" the CHANGELOG and docs/triage.md state without saying the two extra are #3061 and #3122. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(triage): parked label comes off at close; CHANGELOG entry follows the user-facing style /ship adversarial review pass 2 on #3427: docs/triage.md said the label "goes with" a fixed close but nothing about duplicate or won't-fix closes, and a lane "may" remove it, which left an open lane-owned issue either parked or not. The CHANGELOG entry named TODOS.md in the user-facing summary and listed the GitHub-side label under Added; docs/CHANGELOG_STYLE.md keeps contributor details in a "For contributors" section. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(triage): removing the parked label is a manual step after a merge closes the issue; close labels are added separately Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * v1.91.235.0 stamp Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 11 +++++ CONTRIBUTING.md | 8 ++++ TODOS.md | 2 +- VERSION | 2 +- agents-digest/gstack-AGENTS.md | 2 +- docs/triage.md | 85 ++++++++++++++++++++++++++++++++++ package.json | 2 +- 7 files changed, 108 insertions(+), 4 deletions(-) create mode 100644 docs/triage.md diff --git a/CHANGELOG.md b/CHANGELOG.md index c4a3a64d0..38f3fe241 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [1.91.235.0] - 2026-10-26 + +**An issue we intend to fix later now stays open under the `parked` label instead of being closed.** The Oct 11 triage closed 75 feature requests with a "not rejected" note, and GitHub showed them as closed with no fix. Those 75 are open again under the new `parked` label on garrytan/gstack ("Not fixed yet, not rejected: stays open; a comment says where it is tracked and what fixes it"), each with one comment saying where the work is tracked and what fixes it. The rule is written down: an issue closes only as fixed, duplicate or won't fix, each with its reason; a report that main already fixed closes as fixed, not won't fix; and a duplicate uses GitHub's own duplicate close reason. + +### Added +- **`docs/triage.md`**: the three issue states (open, parked, closed), how to park an issue (the label plus one comment naming where it is tracked and what fixes it), when the label comes off, the three close reasons with their GitHub close reason and label, and where the parked themes live. + +### For contributors +- **`CONTRIBUTING.md`**: an "Issue triage" section ahead of the PR wave process, pointing at docs/triage.md. +- **`TODOS.md`**: the Wave 9 feature-themes note says issues stay open under `parked` and points at their theme there (73 listed, 75 with #3061 and #3122), instead of closing with a link. + ## [1.91.234.0] - 2026-10-26 **Weekly tagged releases, and a `stable` channel that team-mode auto-update follows by default.** Main kept stamping a version per merge, a dozen a day, with no tag or release anywhere, and `./setup --team` installs moved to every one of them within the hour. Now a Monday-morning workflow tags the newest green commit on main as `v`, publishes a GitHub Release from the CHANGELOG headlines and fast-forwards a `stable` branch to it; team installs follow `stable` and move once a week (plus hotfixes), contributors keep following main, and one config key switches either way. Nothing about per-merge stamping or the merge train changed (docs/releases.md). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3f33e91dc..e3a9220eb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -909,6 +909,14 @@ bun install && bun run build && ./setup This affects all projects. To revert: `git checkout main && git pull && bun run build && ./setup`. +## Issue triage + +An issue is open, parked or closed, and closed means fixed, duplicate or won't +fix, each with its reason in the closing comment. An issue we intend to fix +later stays open under the `parked` label with one comment saying where it is +tracked (a TODOS.md theme or a tracking issue) and what fixes it. The full rule, +including the labels and the close reasons, is in [docs/triage.md](docs/triage.md). + ## Community PR triage (wave process) When community PRs accumulate, batch them into themed waves: diff --git a/TODOS.md b/TODOS.md index b2057075e..cec10456f 100644 --- a/TODOS.md +++ b/TODOS.md @@ -60,7 +60,7 @@ Each item was decided in the Wave 9 plan and parked with its reason. Credit the ### P3: feature themes from the Wave 9 triage (filed 2026-10-11) -The 73 open feature requests, grouped by theme with counted demand (issues in the theme). Each issue closes with a link to its theme here; the three largest cross-cutting themes (new hosts, provider pluralism, install footprint) stay open as tracking issues. Pick a theme up as a whole and credit every linked reporter. +The 73 open feature requests (75 with #3061 and #3122, which the themes below also name), grouped by theme with counted demand (issues in the theme). Each issue stays open under the `parked` label with a link to its theme here (the rule is in docs/triage.md); the three largest cross-cutting themes (new hosts, provider pluralism, install footprint) also have tracking issues. Pick a theme up as a whole and credit every linked reporter. - **New hosts (8 issues, plus #3061 above and 9 PRs parked on Oct 8)** — Kimi CLI (#1072), Gemini CLI (#1247), Pi Agent (#1288), Claude Desktop Cowork (#1345), Letta Code (#2117), team mode for non-Claude hosts (#890), `/retro global` discovery of Antigravity (#1977) and Kimi Code / OMP sessions (#2917). Waits for the host-config work; see "Parked contributor ideas (Oct 8 triage)" for the parked host PRs. **Priority:** P3. - **Provider pluralism (7 issues, plus #3122)** — Gemini CLI as an outside-voice backend (#619), non-OpenAI image providers in `design` (#990), Codex-native `image_gen` in the `design` binary's own generate, evolve and prototype calls (#2174; design-shotgun itself already uses `$imagegen` on Codex since #2175), GPT-6 Sol/Luna tiers in Codex call routing (#2943), a `/grok` review port (#2947), Codex review token usage (#2948), Codex refresh-token recovery docs (#1542), and a configurable PR review bot instead of hard-coded Greptile in /review, /ship and /retro (#3122, folded here by decision D4). One provider seam serves all of them. **Priority:** P3. diff --git a/VERSION b/VERSION index 75224693e..7aa15bb5b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.91.234.0 +1.91.235.0 diff --git a/agents-digest/gstack-AGENTS.md b/agents-digest/gstack-AGENTS.md index f63a3b9ef..1e17be4b0 100644 --- a/agents-digest/gstack-AGENTS.md +++ b/agents-digest/gstack-AGENTS.md @@ -1,4 +1,4 @@ -# gstack digest v1.91.234.0 — regenerate/re-copy after upgrading gstack +# gstack digest v1.91.235.0 — regenerate/re-copy after upgrading gstack Behavioral rules from gstack (https://github.com/garrytan/gstack), compressed for agent hosts without a full skill install. The full skills add workflows, diff --git a/docs/triage.md b/docs/triage.md new file mode 100644 index 000000000..57bee8764 --- /dev/null +++ b/docs/triage.md @@ -0,0 +1,85 @@ +# Issue triage + +How gstack issues move between open, parked and closed, and what each state +promises the reporter. The rule exists because a closed issue reads as "fixed" +or "rejected" to the person who filed it. On 2026-10-11 a triage pass closed 75 +feature requests into TODOS.md themes with a "not rejected" note, and reporters +still saw a closed issue with no fix. Those were reopened on 2026-10-25 under +the `parked` label, and this page is the rule going forward. + +## The three states + +| State | Meaning | How it looks on GitHub | +|-------|---------|------------------------| +| **Open** | We intend to act on it and nothing is decided yet, or a lane is on it now. | Open, no `parked` label. `next-wave` marks issues accepted for the next fix wave. | +| **Parked** | We intend to fix it later, not now. | Open, labelled `parked`, with one comment that says where it is tracked and what fixes it. | +| **Closed** | Fixed, duplicate, or won't fix. Nothing else. | Closed with the matching reason (below). | + +An issue we still intend to fix is never closed. Grouping it into a theme, +folding it into a tracking issue, or deciding it waits for other work are all +"parked", not "closed". + +## Parking an issue + +1. Add the `parked` label. +2. Post one comment with two facts: **where it is tracked** (the TODOS.md + theme, by link, or the tracking issue such as #3137, #3138 or #3139) and + **what fixes it** (the work that, when it ships, closes this issue). One or + two sentences. No other comment is needed. +3. Add the issue number to the TODOS.md entry so the theme credits the reporter + when it is picked up. + +When the work ships, close the issue as fixed with the version or PR. Whatever +the close reason, remove the `parked` label when the issue closes +(`gh issue edit --remove-label parked`), so a `label:parked` search lists +only open parked issues. GitHub leaves labels alone when a merged PR's +`Closes #` closes the issue, so the lane that ships the fix removes the label +itself. When a lane picks a parked issue up, it removes the label while it works +on it (the issue is open again, with the lane on it); an issue the lane later +drops goes back to parked with an updated comment. + +## Closing an issue + +Each close names its reason in the closing comment. GitHub's close reason and +the labels match: + +| Reason | Comment says | Close reason | Label | +|--------|--------------|--------------|-------| +| **Fixed** | the version, commit or PR that fixed it, and what changed | completed | — | +| **Duplicate** | the issue that tracks it (and that issue is open or parked; if it was already fixed, close this one as fixed too, with the same version) | duplicate (`gh issue close --duplicate-of `) | `duplicate` | +| **Won't fix** | why: out of scope, a different design was chosen, the premise no longer holds | not planned | `wontfix` | + +`gh issue close` sets only the close reason; add the `duplicate` or `wontfix` +label separately with `gh issue edit --add-label