gstack 1.68.1.0

1.68.1.0
Added 5
  • Every ./setup run now heals first: gstack-settings-hook prune-stale --repoint removes dead gstack entries, re-points stale ones, restores stripped tags, and collapses duplicates
  • gstack-settings-hook prune-stale command with [--repoint] [--all] flags for self-healing hook registrations
  • gstack-config has for key-presence check
  • KNOWN_HOOKS identity table covering all six gstack hooks
  • Mutation lock around every settings.json write with ownership-checked release and atomic stale-lock takeover
Changed 10
  • Hook registration is now canonical-only: commands point at the stable ~/.claude/skills/gstack install or are not registered at all
  • Ownership is decided by a fixed identity table in bin/gstack-settings-hook per hook item, surviving tag-stripping and preventing false claims of hooks
  • Backups get unique names and rotate with 10 kept
  • The Conductor auto-opt-in for AskUserQuestion reliability hooks now respects explicit decisions
  • add-event is the single quoting authority: registered commands are normalized once
  • All settings.json mutators are per-item so a hook co-located in the same entry as a gstack hook survives every gstack operation
Fixed 4
  • Phantom hook errors are eliminated by having settings.json heal itself on every setup, preventing ephemeral paths from being baked in
  • Setup never writes a running-tree path into global settings
  • Deleted Conductor workspaces and worktrees no longer leave dead hooks
  • A vacuous test in the banner-tripwire check now passes the script as argv

From gstack

Phantom hook errors are dead. Your settings.json now heals itself on every setup, and no ephemeral path can ever be baked in again. Hook registration is now canonical-only: commands point at the stable ~/.claude/skills/gstack install or are not registered at all. Ownership is decided by a fixed identity table in bin/gstack-settings-hook, per hook item, so it survives tag-stripping and can never claim a hook you wrote yourself. Every ./setup run now heals first: gstack-settings-hook prune-stale --repoint removes dead gstack entries, re-points stale ones, restores stripped tags, and collapses duplicates. gstack-settings-hook prune-stale with [--repoint] [--all] for self-healing hook registrations. gstack-config has for key-presence check. KNOWN_HOOKS identity table covering all six gstack hooks. A mutation lock around every settings.json write with ownership-checked release and atomic stale-lock takeover. Backups get unique names and rotate with 10 kept. Hook registration is canonical-only. Setup never writes a running-tree path into global settings. The Conductor auto-opt-in for AskUserQuestion reliability hooks now respects explicit decisions. add-event is the single quoting authority: registered commands are normalized once. All settings.json mutators are per-item: a hook you co-located in the same entry as a gstack hook survives every gstack operation. Teardown paths run hook cleanup before any deletion. Deleted Conductor workspaces and worktrees no longer leave dead hooks. A corrupt settings.json is preserved and reported instead of being replaced. settings.json file mode is preserved across rewrites; fresh files are created 0600. Liveness checks treat only provable absence as dead. A vacuous test in the banner-tripwire check now passes the script as argv.

View original

Upgraded? How did it go?

Discussion