diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fc55131a..53063d9f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # Changelog +## [1.53.1.0] - 2026-05-30 + +## **Workspace and scripted setup never hang on a hidden prompt again. Installing the plan-tune hooks is now flag-driven with safe defaults.** + +`./setup` asked "Install both hooks now? [y/N]" with a blocking read. Run under a Conductor workspace or any forwarded terminal, that prompt had nobody to answer it, so setup hung forever. Now the decision comes from a flag, an env var, or saved config, and when nobody is there to answer it takes a safe default instead of waiting. A real terminal still gets the prompt, but it is time-bounded (auto-skips after 10s) so it can never stall a pipeline. + +### What this means for you + +- Spinning up a new workspace just works. `bin/dev-setup` runs fully non-interactively and never rewrites your global Claude settings behind your back. +- Want the plan-tune hooks installed without a prompt? `./setup --plan-tune-hooks` (or `GSTACK_PLAN_TUNE_HOOKS=yes`, or `gstack-config set plan_tune_hooks yes`). Don't want them? `--no-plan-tune-hooks`. Leave it unset and a real terminal still asks once, then remembers. + +### Added + +- `--plan-tune-hooks` / `--no-plan-tune-hooks` / `--plan-tune-hooks=yes|no|prompt` flags on `./setup`, plus the `GSTACK_PLAN_TUNE_HOOKS` env var and a `plan_tune_hooks` config key (default `prompt`). Precedence: flag > env > saved config > prompt on a real terminal. + +### Fixed + +- `./setup` no longer hangs in non-interactive or forwarded-TTY contexts (Conductor workspaces, CI). The plan-tune consent prompt is time-bounded and defaults to skip. +- `bin/dev-setup` runs setup non-interactively and can no longer silently rewrite your global `~/.claude/settings.json` to point at an ephemeral workspace path that breaks when the workspace is deleted. +- Opt-in values like `YES`, `Yes`, or ` yes` are honored instead of being silently downgraded to skip, and `gstack-config` now rejects out-of-domain `plan_tune_hooks` values. + +### For contributors + +- New regression suite `test/setup-plan-tune-hooks-noninteractive.test.ts` (flag wiring, no-blocking-read guard, decision normalization, config round-trip + domain rejection, dev-setup pin) with host-config isolation via a temp `GSTACK_HOME`. +- Rebaselined `test/parity-suite.test.ts` from the stale v1.44.1 anchor to v1.53.0.0. The 1.05 per-skill ratio is kept (only the anchor moved), absorbing legitimate v1.49–v1.53 planning-skill growth and clearing the 5 pre-existing parity failures noted in the v1.53.0.0 entry. Historical baselines retained for the v1→v2 audit trail. +- De-flaked `test/plan-tune.test.ts` "derive pushes scope_appetite up" (was ~25–50% flaky, worse on main): it now sets `GSTACK_QUESTION_LOG_NO_DERIVE=1` so gstack-question-log's fire-and-forget background `--derive` can't race the test's explicit one. + ## [1.53.0.0] - 2026-05-29 ## **Secrets, PII, and legal landmines get caught before they reach a public sink. One redaction engine now guards /spec, /ship, /cso, and the /document-* skills.** diff --git a/TODOS.md b/TODOS.md index d3c32bc72..113223812 100644 --- a/TODOS.md +++ b/TODOS.md @@ -2,27 +2,22 @@ ## Test infrastructure -### P0: Rebaseline parity-suite (v1.44.1) — stale, 5 pre-existing failures +### ✅ DONE (v1.53.1.0): Rebaseline parity-suite (v1.44.1 → v1.53.0.0) -**What:** `test/parity-suite.test.ts` checks every skill's SKILL.md size against -the frozen `test/fixtures/parity-baseline-v1.44.1.json`. Five planning skills now -exceed the 1.05x ceiling: `plan-ceo-review` (1.052), `plan-eng-review` (1.062), -`plan-design-review` (1.068), `investigate` (1.053), `office-hours` (1.065). +**What:** `test/parity-suite.test.ts` checked every skill's SKILL.md size against +the frozen `test/fixtures/parity-baseline-v1.44.1.json`. Five planning skills had +crept past the 1.05x ceiling: `plan-ceo-review` (1.052), `plan-eng-review` (1.062), +`plan-design-review` (1.068), `investigate` (1.053), `office-hours` (1.065) — growth +from the brain-aware-planning releases (v1.49–v1.52) plus the v1.53 redaction guard. -**Why:** These grew during the brain-aware-planning releases (v1.49–v1.52) which -added the `BRAIN_PREFLIGHT`/`BRAIN_CACHE_REFRESH`/`BRAIN_WRITE_BACK` resolvers to -those skills. The v1.44.1 baseline was never regenerated, so it's four releases -stale. The failures are pre-existing on `origin/main` (proven: they fail with the -redaction branch absent). The active size gate (`skill-size-budget`, v1.47 baseline) -passes, and parity-suite is not in CI's `test:gate`, so nothing is blocked — but the -local `bun test` shows red until rebaselined. - -**How to start:** Either regenerate the fixture to a current baseline -(`bun run scripts/capture-baseline.ts ` and point the test at it), or bump the -per-skill ratio for the planning skills. Decide whether v1.44.1 should be retired in -favor of the v1.47 baseline the size-budget test already uses. - -**Depends on:** nothing. Standalone. +**Resolved:** Captured a fresh baseline at HEAD via +`bun run scripts/capture-baseline.ts --tag v1.53.0.0` and re-pointed the test at +`test/fixtures/parity-baseline-v1.53.0.0.json`. The per-skill 1.05 ratio is kept, so +future bloat is still caught — only the stale anchor moved. Mirrors the earlier +`skill-size-budget` rebase (v1.44.1 → v1.47.0.0). Historical v1.44.1 / v1.46.0.0 / +v1.47.0.0 baselines retained in `test/fixtures/` for the v1→v2 audit trail. The +captured skill bytes match `origin/main` exactly (the rebasing branch left every +SKILL.md untouched). `bun test` is green again. ## gbrowser memory follow-ups (filed via /plan-eng-review + /codex on the v1.49 leak-fix PR) diff --git a/VERSION b/VERSION index b8c5f21a9..69fadfb2d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.53.0.0 +1.53.1.0 diff --git a/package.json b/package.json index 75d05e770..65be6147f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "1.53.0.0", + "version": "1.53.1.0", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module",