gstack/test/fixtures
Carrington Dennis 665f979d57 fix(ship): version-bump skipped subdirectory manifests and wrote npm-invalid versions
Two ways `gstack-version-bump` left a release half-done, both silent.

1. It only ever looked at ./package.json. A repo whose only Node package lives
   in a subdirectory (web/, app/, frontend/) has no root manifest, so classify
   reported pkgExists:false and every bump wrote VERSION alone -- leaving the
   manifest to be edited by hand, which is the exact drift this tool exists to
   prevent, in the one layout where it silently did nothing. The path now
   resolves --package-json-path -> .gstack/package-json-path -> ./package.json,
   so a subdirectory package is covered by a one-line pin.

2. VERSION is 4-digit MAJOR.MINOR.PATCH.MICRO and npm's semver is 3-component:
   npm rejects the fourth. Mirroring VERSION 1:1 into an npm-managed manifest
   writes a version npm will not install. When a package-lock.json sits beside
   the manifest -- proof npm actually manages it -- the MICRO is now dropped
   (0.1.26.0 -> 0.1.26) and the lockfile's two version fields are mirrored too
   (root and packages[""], which npm keeps in step and nothing else in a release
   does, so a lockfile left behind drifts one field per bump until someone runs
   npm). Pure JSON edit, no npm spawn, no dependency-tree churn.

   Without a lockfile nothing validates the field, so the historical 1:1 mirror
   is preserved -- gstack's own package.json carries 1.60.1.0 and keeps doing so.

classifyState needed an expectedPkg parameter for (2): it defaults to VERSION,
but for an npm-managed manifest it is the 3-component truncation. Otherwise a
correctly-synced 0.1.27 reads as drift against 0.1.27.0 forever and every
classify returns DRIFT.

Step 12 of the ship skill documents the new behaviour; the three ship-skill
golden fixtures are updated to match the regenerated hosts.

7 new tests covering both sides, including the negatives: the pin, the override,
both lockfile fields, the correctly-synced-is-not-drift case, repair, and the
no-lockfile 4-digit path that must not change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 11:45:30 -04:00
..
golden fix(ship): version-bump skipped subdirectory manifests and wrote npm-invalid versions 2026-08-12 11:45:30 -04:00
ios-fix fix(ios-qa): make SwiftUI device taps observable and reliable 2026-07-14 16:35:30 -07:00
ios-qa/FixtureApp fix(ios-qa): make SwiftUI device taps observable and reliable 2026-07-14 16:35:30 -07:00
mode-posture feat: mode-posture energy fix for /plan-ceo-review and /office-hours (v1.1.2.0) (#1065) 2026-04-19 05:44:39 +08:00
office-hours-brain-writeback v1.52.1.0 feat: brain-aware planning — 5 skills read structured gbrain context before asking (#1742) 2026-05-29 08:35:00 -07:00
plans v1.15.0.0 feat: slim preamble + real-PTY plan-mode E2E harness (#1215) 2026-04-26 13:55:13 -07:00
coverage-audit-fixture.ts feat: test coverage catalog — shared audit across plan/ship/review (v0.10.1.0) (#259) 2026-03-22 11:28:16 -07:00
eval-baselines.json fix: rewrite session-runner to claude -p subprocess, lower flaky baselines 2026-03-14 02:34:10 -05:00
forcing-finding-seeds.ts v1.48.0.0 feat: AskUserQuestion split rule + runtime AUTO_DECIDE carve-out (#1740) 2026-05-26 23:43:07 -07:00
golden-ship-claude.md fix: community security wave — 8 PRs, 4 contributors (v0.15.13.0) (#847) 2026-04-06 00:47:04 -07:00
overlay-nudges.ts feat(v1.10.1.0): overlay efficacy harness + Opus 4.7 fanout nudge removal (#1166) 2026-04-23 18:42:58 -07:00
parity-baseline-v1.44.1.json v1.46.0.0 feat: gstack v2 foundation — catalog tokens drop 56%, eval-first floor covers all 51 skills (#1712) 2026-05-26 16:50:03 -07:00
parity-baseline-v1.46.0.0.json v1.46.0.0 feat: gstack v2 foundation — catalog tokens drop 56%, eval-first floor covers all 51 skills (#1712) 2026-05-26 16:50:03 -07:00
parity-baseline-v1.47.0.0.json v1.52.0.0 feat(plan-tune): explicit consent + first-run setup wizard for contributors (#1741) 2026-05-28 18:21:09 -07:00
parity-baseline-v1.53.0.0.json v1.53.1.0 fix: non-interactive-safe plan-tune hook install (flags + smart defaults) (#1805) 2026-05-30 11:42:13 -07:00
parity-baseline-v1.57.7.0.json v1.57.7.0 feat: GSTACK REVIEW REPORT always declares unresolved decisions (#1916) 2026-06-08 21:17:18 -07:00
qa-eval-checkout-ground-truth.json fix: 100% E2E pass — isolate test dirs, restart server, relax FP thresholds 2026-03-14 07:17:17 -05:00
qa-eval-ground-truth.json fix: 100% E2E pass — isolate test dirs, restart server, relax FP thresholds 2026-03-14 07:17:17 -05:00
qa-eval-spa-ground-truth.json fix: 100% E2E pass — isolate test dirs, restart server, relax FP thresholds 2026-03-14 07:17:17 -05:00
review-army-migration.sql feat: Review Army — parallel specialist reviewers for /review (v0.14.3.0) (#692) 2026-03-30 22:07:50 -06:00
review-army-n-plus-one.rb feat: Review Army — parallel specialist reviewers for /review (v0.14.3.0) (#692) 2026-03-30 22:07:50 -06:00
review-eval-design-slop.css feat: design review lite in /review and /ship + gstack-diff-scope (v0.6.3) (#142) 2026-03-17 20:12:55 -05:00
review-eval-design-slop.html feat: design review lite in /review and /ship + gstack-diff-scope (v0.6.3) (#142) 2026-03-17 20:12:55 -05:00
review-eval-enum-diff.rb feat: contributor mode, session awareness, recommendation format (#90) 2026-03-16 01:45:50 -05:00
review-eval-enum.rb feat: contributor mode, session awareness, recommendation format (#90) 2026-03-16 01:45:50 -05:00
review-eval-vuln.rb feat: 3-tier eval suite with planted-bug outcome testing (EVALS=1) 2026-03-14 01:17:36 -05:00