From b69616278c889071be3aa1c15e22b1afa15a8e25 Mon Sep 17 00:00:00 2001 From: garrytan Date: Thu, 8 Oct 2026 06:23:03 +0000 Subject: [PATCH] chore(release): v1.91.37.0 changelog and TODOS Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 25 +++++++++++++++++++++++++ TODOS.md | 17 +++++++++++++++++ VERSION | 2 +- agents-digest/gstack-AGENTS.md | 2 +- package.json | 2 +- 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d215eff5d..ce08707e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## [1.91.37.0] - 2026-10-07 + +**Your first /office-hours session gets the first-session closing again, and you see the design doc before you approve it.** + +/office-hours logged the session to your builder profile and then read the profile to choose its closing, so every run counted itself as history. A first-time user got the "welcome back" closing, never saw the introduction, and was asked how the assignment they had just been given went. Every later tier was one session early too. Separately, the approval question showed up while the design doc sat in a collapsed tool output, and a session that never wrote a doc could still be logged as a success. + +### What this means for you + +Run `/gstack-upgrade`, then start `/office-hours` on a new idea. Before the doc is saved you'll see a `Builder profile before this session:` line. On a first session it says `SESSION_TIER=introduction PRIOR_SESSION_COUNT=0`, and the closing is the introduction. `gstack-timeline-read --limit 1abc` now exits 2 and shows an example instead of quietly reading one event. + +### Itemized changes + +#### Fixed +- /office-hours reads your builder profile before it logs the session and carries the earlier tier, count and last assignment to the closing. This session is counted as the prior count plus one. If the profile can't be read, it treats the session as your first and tells you so. (#2801) +- /office-hours prints the complete design doc in the conversation before asking you to approve it. (#879) +- /office-hours logs `success` only when this run's own design doc exists and isn't empty. It checks the doc's exact path under your gstack state root. A session that ends without a doc is logged as `abort` or `error` with failed step `design_doc`. (#1049) +- `/plan-ceo-review`, `/plan-eng-review`, `/plan-devex-review` and `/autoplan` skip the "run /office-hours first?" offer in spawned and headless sessions, where nobody can answer it, and continue with the standard review. (#1958) +- `gstack-timeline-read --limit` takes only a positive integer. A missing value, `0`, `-5`, `abc` or `1abc` exits 2 with `--limit must be a positive integer (got ''); example: --limit 20`, whether or not the project has a timeline. Without the flag you still get 20 events. (#1723) +- Skill start prints `SESSIONS: N`, the number of gstack sessions active in the last two hours, so CLAUDE.md rules that read the session count have a value. (#1651, part A) + +#### For contributors +- New tests in `test/gen-skill-docs.test.ts` run the rendered office-hours profile read, session log and design-doc check against a temporary state root. `test/timeline.test.ts` covers each bad `--limit` on empty and populated histories. `test/gstack-skill-start.test.ts` covers the `SESSIONS` count. The office-hours, plan-eng-review and autoplan parity caps include the measured growth. + +Contributed by @kikearciniegas (#2801), @kichinosukey (#879), @RyanAlberts (#1116), @walton-chris (#1049), @aviraldua93 (#1958), @jbetala7 (#1723, #1724), @TJ-NomoAI (#1651) and @0xDevNinja (#1747). + ## [1.91.36.0] - 2026-10-07 **Python and Rails repairs can now reach `runtime_tested` and replay, and a killed verification leaves nothing behind.** diff --git a/TODOS.md b/TODOS.md index 114d40036..57a589d71 100644 --- a/TODOS.md +++ b/TODOS.md @@ -2,6 +2,23 @@ ## NEXT PRIORITY +### P2/P3: office-hours and timeline follow-ups (filed 2026-10-07, v1.91.37.0) + +Left open by the office-hours tier fix (#2801, #879, #1049, #1958, #1723, #1651 part A). + +- **Session markers that reflect "currently active" (#1651 part B)** — skill + start touches `sessions/` only when a skill starts, so a long session + with no new skill for two hours drops out of `SESSIONS: N`. Fix shape: refresh + the marker per tool call from a hook. **Effort:** M. **Priority:** P3. +- **Live eval for the first-session closing** — free tests run the rendered + profile read and session log in order, but no paid case checks that a model + follows the carried `SESSION_TIER` through Phase 6 (first run gets the + introduction, second run asks about the earlier assignment). No office-hours + quality judge exists either. **Effort:** M. **Priority:** P2. +- **`gstack-timeline-read --since`/`--branch` without a value** — both still + read an unbound `$2` under `set -u` and crash with exit 1, the class #1723 + fixed for `--limit`. **Effort:** S. **Priority:** P3. + ### P2/P3: Oct 7 fix-wave follow-ups (filed 2026-10-07) Left open by the Oct 7 wave (docs/designs/FOLLOWUP_WAVE_2026_10_07.md), each with its reason. diff --git a/VERSION b/VERSION index fe477d414..b866b816f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.91.36.0 +1.91.37.0 diff --git a/agents-digest/gstack-AGENTS.md b/agents-digest/gstack-AGENTS.md index 291e0e985..dc887b150 100644 --- a/agents-digest/gstack-AGENTS.md +++ b/agents-digest/gstack-AGENTS.md @@ -1,4 +1,4 @@ -# gstack digest v1.91.36.0 — regenerate/re-copy after upgrading gstack +# gstack digest v1.91.37.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/package.json b/package.json index 8b401f41a..e730c6b91 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "1.91.36", + "version": "1.91.37", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module",