mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-21 20:28:24 +08:00
merge: integrate origin/main (v1.1.1.0) — /ship VERSION/package.json drift repair
Main shipped v1.1.1.0, a focused /ship hardening release. Step 12 now detects and repairs drift between VERSION and package.json (FRESH / ALREADY_BUMPED / DRIFT_STALE_PKG / DRIFT_UNEXPECTED classification), validates semver strings before any write, handles CRLF, and halts loudly on invalid JSON. Adds test/ship-version-sync.test.ts (14 cases). Conflicts: - VERSION: kept 1.2.0.0 (branch higher than main's 1.1.1.0) - package.json: kept 1.2.0.0 - CHANGELOG: preserved my 1.2.0.0 entry at top, inserted main's 1.1.1.0 entry beneath it Ship SKILL.md, golden fixtures, and all other touched files auto-merged cleanly. Regenerated SKILL.md across all hosts. 423 tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
10
CHANGELOG.md
10
CHANGELOG.md
@@ -28,6 +28,16 @@
|
||||
- **`scripts/resolvers/preamble/`** — 18 single-purpose generators, 16-160 lines each. The composition root in `scripts/resolvers/preamble.ts` imports them and wires them into the tier-gated section list.
|
||||
- **Plan and reviews persisted.** Implementation followed `~/.claude/plans/declarative-riding-cook.md` which went through CEO review (SCOPE EXPANSION, 6 expansions accepted), DX review (POLISH, 5 gaps fixed), Eng review (4 architecture issues), and Codex review (11 brutal findings, all integrated and 2 prior decisions reversed).
|
||||
|
||||
## [1.1.1.0] - 2026-04-18
|
||||
|
||||
### Fixed
|
||||
- **`/ship` no longer silently lets `VERSION` and `package.json` drift.** Before this fix, `/ship`'s Step 12 read and bumped only the `VERSION` file. Any downstream consumer that reads `package.json` (registry UIs, `bun pm view`, `npm publish`, future helpers) would see a stale semver, and because the idempotency check keyed on `VERSION` alone, the next `/ship` run couldn't detect it had drifted. Now Step 12 classifies into four states — FRESH, ALREADY_BUMPED, DRIFT_STALE_PKG, DRIFT_UNEXPECTED — detects drift in every direction, repairs it via a sync-only path that can't double-bump, and halts loudly when `VERSION` and `package.json` disagree in an ambiguous way.
|
||||
- **Hardened against malformed version strings.** `NEW_VERSION` is validated against the 4-digit semver pattern before any write, and the drift-repair path applies the same check to `VERSION` contents before propagating them into `package.json`. Trailing carriage returns and whitespace are stripped from both file reads. If `package.json` is invalid JSON, `/ship` stops loudly instead of silently rewriting a corrupted file.
|
||||
|
||||
### For contributors
|
||||
- New test file at `test/ship-version-sync.test.ts` — 14 cases covering every branch of the new Step 12 logic, including the critical no-double-bump path (drift-repair must never call the normal bump action), trailing-CR regression, and invalid-semver repair rejection.
|
||||
- Review history on this fix: one round of `/plan-eng-review`, one round of `/codex` plan review (found a double-bump bug in the original design), one round of Claude adversarial subagent (found CRLF handling gap and unvalidated `REPAIR_VERSION`). All surfaced issues applied in-branch.
|
||||
|
||||
## [1.1.0.0] - 2026-04-18
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user