Files
gstack/test/crew-move-layout.test.ts
T
Garry Tanandcapy-ai[bot] 6417abf7a6 Move the tools only Capy crews use into a crew/ folder (GST-1833) (#4145)
* Load the Capy crew skills only on Capy machines (GST-1833)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Add changelog entry for Capy-only crew skills (GST-1833)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Move the Capy-only crew tooling into crew/ and run its tests only when needed (GST-1833)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Test that the Capy launch file puts crew/bin on PATH

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Count any ~/.capy as a Capy machine, so a Mac running Capy keeps /captain

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Fix the tests and fixtures that broke when crew tooling moved into crew/

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Plan every crew test when a pull request's merge-base can't be read

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Add a test that checks each crew-only module left the root tree for crew/

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Run crew tests on pull requests that change bin/ commands or workflows they drive

Review-Finding: p1/specialist-batched#1 reader=testing
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Keep running every crew test on every pull request; the skip comes in a later change

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Keep copied installs and older release bisects working after the crew/ move

Setup now copies crew/lib into every host's runtime root beside bin and lib, so Windows installs (which copy instead of linking) can still start gstack-ship-receipt, gstack-pregate and the other commands that import it. The release bisect runs the train-gate script from wherever the checked-out commit has it, so a bisect over commits from before the move still gets a verdict.

Review-Finding: p1/outside-voice#1 reader=outside-voice
Review-Finding: p1/outside-voice#2 reader=outside-voice
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Say in the changelog that Windows installs keep working after the crew/ move

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Point the harness guide's merge-queue rows at crew/lib/ where those modules moved

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Point the plain-title test at the wave module's new home in crew/ (GST-1833)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-11-08 14:26:14 +00:00

67 lines
3.6 KiB
TypeScript

/**
* Crew-only modules live under crew/ (crew/README.md). Each one left the root
* tree whole: its old path is gone, its crew/ path exists, and the test-code
* typecheck still covers crew/test.
*/
import { describe, expect, test } from 'bun:test';
import * as fs from 'fs';
import * as path from 'path';
const ROOT = path.resolve(import.meta.dir, '..');
const MOVED: Array<[string, string]> = [
['lib/gate-cost-history.ts', 'crew/lib/gate-cost-history.ts'],
['lib/gate-cost.ts', 'crew/lib/gate-cost.ts'],
['lib/lane-ownership.ts', 'crew/lib/lane-ownership.ts'],
['lib/release-gate.ts', 'crew/lib/release-gate.ts'],
['lib/restamp-release.ts', 'crew/lib/restamp-release.ts'],
['lib/ship-queue-dispatch-ci.ts', 'crew/lib/ship-queue-dispatch-ci.ts'],
['lib/ship-queue-gate.ts', 'crew/lib/ship-queue-gate.ts'],
['lib/ship-queue-land-lock.ts', 'crew/lib/ship-queue-land-lock.ts'],
['lib/ship-queue-post-merge.ts', 'crew/lib/ship-queue-post-merge.ts'],
['lib/ship-queue-screen.ts', 'crew/lib/ship-queue-screen.ts'],
['lib/ship-queue-stack-tests.ts', 'crew/lib/ship-queue-stack-tests.ts'],
['lib/ship-queue-train-cli.ts', 'crew/lib/ship-queue-train-cli.ts'],
['lib/ship-queue-train-forget.ts', 'crew/lib/ship-queue-train-forget.ts'],
['lib/ship-queue-train-gate.ts', 'crew/lib/ship-queue-train-gate.ts'],
['lib/ship-queue-train-github.ts', 'crew/lib/ship-queue-train-github.ts'],
['lib/ship-queue-train-init.ts', 'crew/lib/ship-queue-train-init.ts'],
['lib/ship-queue-train-land.ts', 'crew/lib/ship-queue-train-land.ts'],
['lib/ship-queue-train-ready.ts', 'crew/lib/ship-queue-train-ready.ts'],
['lib/ship-queue-train-record.ts', 'crew/lib/ship-queue-train-record.ts'],
['lib/ship-queue-train-stamp.ts', 'crew/lib/ship-queue-train-stamp.ts'],
['lib/ship-queue-train-verdict.ts', 'crew/lib/ship-queue-train-verdict.ts'],
['lib/ship-queue-train-verify.ts', 'crew/lib/ship-queue-train-verify.ts'],
['lib/ship-queue-train-watch.ts', 'crew/lib/ship-queue-train-watch.ts'],
['lib/ship-queue-train.ts', 'crew/lib/ship-queue-train.ts'],
['lib/ship-queue-wave.ts', 'crew/lib/ship-queue-wave.ts'],
['lib/ship-recheck.ts', 'crew/lib/ship-recheck.ts'],
['lib/version-gate-train.ts', 'crew/lib/version-gate-train.ts'],
['scripts/census-arms.ts', 'crew/scripts/census-arms.ts'],
['scripts/eval-input-cache.ts', 'crew/scripts/eval-input-cache.ts'],
['scripts/gate-cost-replay.ts', 'crew/scripts/gate-cost-replay.ts'],
['scripts/gate-diff-calibrate.ts', 'crew/scripts/gate-diff-calibrate.ts'],
['scripts/gate-reuse.ts', 'crew/scripts/gate-reuse.ts'],
['scripts/judge-calibration-configs.ts', 'crew/scripts/judge-calibration-configs.ts'],
['scripts/measure-journal-read.ts', 'crew/scripts/measure-journal-read.ts'],
['scripts/recover-receipts.ts', 'crew/scripts/recover-receipts.ts'],
['scripts/release-cadence.ts', 'crew/scripts/release-cadence.ts'],
['scripts/release-cut.ts', 'crew/scripts/release-cut.ts'],
['scripts/replay-pr-selection.ts', 'crew/scripts/replay-pr-selection.ts'],
['scripts/review-dispatch-compare.ts', 'crew/scripts/review-dispatch-compare.ts'],
['scripts/train-backstop.ts', 'crew/scripts/train-backstop.ts'],
['scripts/train-gate.ts', 'crew/scripts/train-gate.ts'],
];
describe('crew-only modules moved into crew/', () => {
test.each(MOVED)('%s now lives at %s', (from, to) => {
expect(fs.existsSync(path.join(ROOT, from))).toBe(false);
expect(fs.existsSync(path.join(ROOT, to))).toBe(true);
});
test('tsconfig.test.json typechecks crew/test', () => {
const config = JSON.parse(fs.readFileSync(path.join(ROOT, 'tsconfig.test.json'), 'utf8'));
expect(config.include).toContain('crew/test/**/*.ts');
});
});