Commit Graph

2 Commits

Author SHA1 Message Date
Garry Tan 2eac7009e9 merge: integrate origin/main (v1.1.3.0) — /checkpoint → /context-save + /context-restore rename
Main shipped v1.1.3.0 fixing Claude Code's native /checkpoint alias
shadowing gstack's skill. The old /checkpoint directory is gone,
replaced by context-save/ and context-restore/. Storage path
(~/.gstack/projects/$SLUG/checkpoints/) is unchanged, so existing
saved contexts still load.

Conflicts:
- VERSION / package.json: kept 1.2.0.0 (above main's 1.1.3.0)
- CHANGELOG: preserved 1.2.0.0 at top, inserted 1.1.3.0 below
- scripts/resolvers/preamble.ts: same pattern as prior merges —
  main's side edited the monolithic file inline; I kept the
  submodule composition root intact (main's inline changes don't
  apply to this shape)

Ported my continuous-checkpoint and context-health submodule prose
to reference the new skill names:
- generate-continuous-checkpoint.ts: "/checkpoint resume" →
  "/context-restore"
- generate-context-health.ts: "/checkpoint" → "/context-save"

Also updated user-facing prose in:
- CHANGELOG.md (1.2.0.0 entry): "/checkpoint resume" →
  "/context-restore (formerly /checkpoint resume pre-v1.1.3)"
- README.md Continuous checkpoint section: same rename

Storage paths in generate-context-recovery.ts (`$_PROJ/checkpoints/`)
left untouched — per main's v1.1.3.0 notes, the storage directory
name stays `checkpoints/` to preserve backward-compat with saved files.

Touchfiles.ts auto-merged cleanly — main's context-save-writes-file
and context-restore-loads-latest replaced my old checkpoint-save-resume
entry.

Regenerated SKILL.md files. Ship golden fixtures refreshed. 423 tests
pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 08:41:41 +08:00
Garry Tan 0926e4b994 refactor: split preamble.ts into submodules (byte-identical output)
Splits scripts/resolvers/preamble.ts (841 lines, 18 generator functions +
composition root) into one file per generator under
scripts/resolvers/preamble/. Root preamble.ts becomes a thin composition
layer (~80 lines of imports + generatePreamble).

Before:
  scripts/resolvers/preamble.ts  841 lines

After:
  scripts/resolvers/preamble.ts                                   83 lines
  scripts/resolvers/preamble/generate-preamble-bash.ts            97 lines
  scripts/resolvers/preamble/generate-upgrade-check.ts            48 lines
  scripts/resolvers/preamble/generate-lake-intro.ts               16 lines
  scripts/resolvers/preamble/generate-telemetry-prompt.ts         37 lines
  scripts/resolvers/preamble/generate-proactive-prompt.ts         25 lines
  scripts/resolvers/preamble/generate-routing-injection.ts        49 lines
  scripts/resolvers/preamble/generate-vendoring-deprecation.ts    36 lines
  scripts/resolvers/preamble/generate-spawned-session-check.ts    11 lines
  scripts/resolvers/preamble/generate-ask-user-format.ts          16 lines
  scripts/resolvers/preamble/generate-completeness-section.ts     19 lines
  scripts/resolvers/preamble/generate-repo-mode-section.ts        12 lines
  scripts/resolvers/preamble/generate-test-failure-triage.ts     108 lines
  scripts/resolvers/preamble/generate-search-before-building.ts   14 lines
  scripts/resolvers/preamble/generate-completion-status.ts       161 lines
  scripts/resolvers/preamble/generate-voice-directive.ts          60 lines
  scripts/resolvers/preamble/generate-context-recovery.ts         51 lines
  scripts/resolvers/preamble/generate-continuous-checkpoint.ts    48 lines
  scripts/resolvers/preamble/generate-context-health.ts           31 lines

Byte-identity verification (the real gate per Codex correction):
- Before refactor: snapshotted 135 generated SKILL.md files via
  `find -name SKILL.md -type f | grep -v /gstack/` across all hosts.
- After refactor: regenerated with `bun run gen:skill-docs --host all`
  and re-snapshotted.
- `diff -r baseline after` returned zero differences and exit 0.

The `--host all --dry-run` gate passes too. No template or host behavior
changes — purely a code-organization refactor.

Test fix: audit-compliance.test.ts's telemetry check previously grepped
preamble.ts directly for `_TEL != "off"`. After the refactor that logic
lives in preamble/generate-preamble-bash.ts. Test now concatenates all
preamble submodule sources before asserting — tracks the semantic contract,
not the file layout. Doing the minimum rewrite preserves the test's intent
(conditional telemetry) without coupling it to file boundaries.

Why now: we were in-session with full context. Codex had downgraded this
from mandatory to optional, but the preamble had grown to 841 lines and
was getting harder to navigate. User asked "why not?" given the context
was hot. Shipping it as a clean bisectable commit while all the prior
preamble.ts changes are fresh reduces rebase pain later.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 06:43:19 +08:00