chore: rebrand to GSD-redux/get-shit-done-redux

Mirror of code, issues, and PRs from the upstream gsd-build/get-shit-done,
which appears compromised or abandoned (maintainer unreachable since
2026-04-01; $GSD token linked to rug-pull).

- Adds rebrand notice block at top of English README
- Removes $GSD token badge and @gsd_foundation X badge (keeps Discord)
- Renames npm packages: get-shit-done-cc -> get-shit-done-redux,
  @gsd-build/sdk -> @gsd-redux/sdk
- Updates all repo URLs across docs, workflows, package.json, bin/
- Updates ci@gsd-build -> ci@gsd-redux in workflow git identities
- Leaves CHANGELOG and .changeset/* alone (historical, time-stamped)
This commit is contained in:
Tom Boucher
2026-05-22 08:27:07 -04:00
parent e1582a5f1b
commit dff176bfd2
132 changed files with 902 additions and 876 deletions

View File

@@ -8,7 +8,7 @@
* Validates that all agent .md files use the standardized <required_reading>
* pattern and that no legacy <files_to_read> blocks remain.
*
* See: https://github.com/gsd-build/get-shit-done/issues/2168
* See: https://github.com/GSD-redux/get-shit-done-redux/issues/2168
*/
const { test, describe } = require('node:test');

View File

@@ -19,7 +19,7 @@
* rationale in the PR, and make sure the bloat is not duplicated content
* that belongs in `get-shit-done/references/`.
*
* See: https://github.com/gsd-build/get-shit-done/issues/2361
* See: https://github.com/GSD-redux/get-shit-done-redux/issues/2361
*/
const { test, describe } = require('node:test');

View File

@@ -56,10 +56,10 @@ describe('bug #2334: quick workflow gsd-sdk pre-flight check', () => {
const firstSdkCall = content.indexOf('gsd-sdk query init.quick', step2Start);
const step2Section = content.slice(step2Start, firstSdkCall);
const hasInstallHint = step2Section.includes('get-shit-done-cc') || step2Section.includes('gsd-update') || step2Section.includes('/gsd-update');
const hasInstallHint = step2Section.includes('get-shit-done-redux') || step2Section.includes('gsd-update') || step2Section.includes('/gsd-update');
assert.ok(
hasInstallHint,
'Pre-flight error must include a hint on how to install query-capable gsd-sdk (npm install -g get-shit-done-cc or /gsd-update)'
'Pre-flight error must include a hint on how to install query-capable gsd-sdk (npm install -g get-shit-done-redux or /gsd-update)'
);
});
});

View File

@@ -1,5 +1,5 @@
/**
* Regression test for #2519: @gsd-build/sdk tarball shipped without dist/
* Regression test for #2519: @gsd-redux/sdk tarball shipped without dist/
*
* The published 0.1.0 tarball lacked a `files` whitelist including `dist/` and
* a `prepublishOnly` hook to build `dist/` before publish. As a result the

View File

@@ -2,7 +2,7 @@
* Regression guard for #2636 — `gsd-sdk query agent-skills <slug>` calls in
* workflows must NOT silently swallow failures via a bare `2>/dev/null`.
*
* Root cause of #2636: when the installed npm `@gsd-build/sdk` was stale and
* Root cause of #2636: when the installed npm `@gsd-redux/sdk` was stale and
* the `agent-skills` handler was missing, every workflow line of the form
* AGENT_SKILLS_X=$(gsd-sdk query agent-skills <slug> 2>/dev/null)
* resolved to empty string, and the `agent_skills.<slug>` config was never

View File

@@ -1,19 +1,19 @@
/**
* Regression test for bug #2647 (also partial fix for #2649).
*
* v1.38.3 of get-shit-done-cc shipped with:
* v1.38.3 of get-shit-done-redux shipped with:
* - `files` array missing `sdk/dist`
* - `prepublishOnly` only running `build:hooks`, not `build:sdk`
*
* Result: the published tarball had no `sdk/dist/cli.js`. The `gsd-sdk`
* bin shim in `bin/gsd-sdk.js` resolves `<pkg>/sdk/dist/cli.js`, which
* didn't exist, so PATH fell through to the separately installed
* `@gsd-build/sdk@0.1.0` (predates the `query` subcommand).
* `@gsd-redux/sdk@0.1.0` (predates the `query` subcommand).
*
* Every `gsd-sdk query <noun>` call in workflow docs thus failed on
* fresh installs of 1.38.3.
*
* This test guards the OUTER package.json (get-shit-done-cc) so future
* This test guards the OUTER package.json (get-shit-done-redux) so future
* edits cannot silently drop either safeguard. A sibling test at
* tests/bug-2519-sdk-tarball-dist.test.cjs guards the inner sdk package.
*

View File

@@ -35,7 +35,7 @@ function loadInstaller() {
function makeTempSdk({ npxCache = false } = {}) {
let root;
if (npxCache) {
root = path.join(os.tmpdir(), `gsd-npx-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`, 'npm-cache', '_npx', 'deadbeefcafe0001', 'node_modules', 'get-shit-done-cc');
root = path.join(os.tmpdir(), `gsd-npx-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`, 'npm-cache', '_npx', 'deadbeefcafe0001', 'node_modules', 'get-shit-done-redux');
fs.mkdirSync(root, { recursive: true });
} else {
root = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-clone-'));
@@ -155,7 +155,7 @@ describe('installer SDK dist-missing fail-fast (#2649)', () => {
assert.strictEqual(ir.reason, 'sdk_fail_fast');
assert.strictEqual(ir.context, 'npx-cache');
assert.strictEqual(ir.missing_artifact, 'sdk/dist');
assert.strictEqual(ir.fix_command, 'npm install -g get-shit-done-cc@latest');
assert.strictEqual(ir.fix_command, 'npm install -g get-shit-done-redux@latest');
assert.strictEqual(ir.attempted_nested_install, false,
'IR contract: nested-install must always be false (this is a hard invariant)');
} finally {

View File

@@ -6,7 +6,7 @@
/**
* Regression test for bug #2775
*
* `npx get-shit-done-cc@latest --global` runs the installer, which prints
* `npx get-shit-done-redux@latest --global` runs the installer, which prints
* `✓ GSD SDK ready` even though the secondary `gsd-sdk` bin is not on the
* user's PATH. Root cause: `npx` only links the package's primary bin into
* the ephemeral cache; secondary bins are not symlinked. The installer's

View File

@@ -1,7 +1,7 @@
/**
* Regression test for #2829: `command not found: gsd-sdk` with local-mode install.
*
* Repro: a fresh `npx get-shit-done-cc@latest` install with the runtime set
* Repro: a fresh `npx get-shit-done-redux@latest` install with the runtime set
* to local mode left every `gsd-sdk query …` call site unable to resolve the
* binary because the installer's previous behavior was to skip SDK linking
* entirely for local installs (#2678 over-corrected). The published tarball

View File

@@ -31,7 +31,7 @@ const fs = require('node:fs');
const REPO_ROOT = path.join(__dirname, '..');
const pkg = JSON.parse(fs.readFileSync(path.join(REPO_ROOT, 'package.json'), 'utf-8'));
const installPath = path.resolve(REPO_ROOT, pkg.bin['get-shit-done-cc']);
const installPath = path.resolve(REPO_ROOT, pkg.bin['get-shit-done-redux']);
const { stripStaleGsdHookBlocks } = require(installPath);
/**

View File

@@ -27,7 +27,7 @@ const fs = require('node:fs');
const REPO_ROOT = path.join(__dirname, '..');
const pkg = JSON.parse(fs.readFileSync(path.join(REPO_ROOT, 'package.json'), 'utf-8'));
const installPath = path.resolve(REPO_ROOT, pkg.bin['get-shit-done-cc']);
const installPath = path.resolve(REPO_ROOT, pkg.bin['get-shit-done-redux']);
const install = require(installPath);
// Build a minimal Claude command source whose description starts with the

View File

@@ -17,8 +17,8 @@ const { checkLatestVersion, CHECK_REASON, PACKAGE_NAME } = require(
// Tests use a pluggable spawn so no real npm process is invoked.
describe('Bug #2992: deterministic latest-version check', () => {
test('PACKAGE_NAME is the constant get-shit-done-cc (no callers can override)', () => {
assert.equal(PACKAGE_NAME, 'get-shit-done-cc');
test('PACKAGE_NAME is the constant get-shit-done-redux (no callers can override)', () => {
assert.equal(PACKAGE_NAME, 'get-shit-done-redux');
});
test('CHECK_REASON enum exposes the documented codes', () => {

View File

@@ -5,7 +5,7 @@ process.env.GSD_TEST_MODE = '1';
/**
* Regression test for #3011: SDK not found.
*
* Reporter (Windows / PowerShell 7) ran `npx get-shit-done-cc@latest`,
* Reporter (Windows / PowerShell 7) ran `npx get-shit-done-redux@latest`,
* upgrade reported success, but `gsd-sdk` could not be resolved by Claude
* Code, Git Bash, PowerShell, or WSL. The previous diagnostic was a
* generic "not on your PATH" with no actionable info; the user couldn't
@@ -28,7 +28,7 @@ describe('Bug #3011: formatSdkPathDiagnostic — Windows shim location and PATH
const ir = formatSdkPathDiagnostic({
shimDir: 'C:\\Users\\me\\AppData\\Roaming\\npm',
platform: 'win32',
runDir: 'C:\\Users\\me\\AppData\\Roaming\\npm\\node_modules\\get-shit-done-cc\\bin',
runDir: 'C:\\Users\\me\\AppData\\Roaming\\npm\\node_modules\\get-shit-done-redux\\bin',
});
assert.equal(ir.shimLocationLine,
'Shim written to: C:\\Users\\me\\AppData\\Roaming\\npm');
@@ -104,7 +104,7 @@ describe('Bug #3011: formatSdkPathDiagnostic — POSIX action lines', () => {
const ir = formatSdkPathDiagnostic({
shimDir: '/home/me/.local/bin',
platform: 'linux',
runDir: '/home/me/.local/lib/node_modules/get-shit-done-cc/bin',
runDir: '/home/me/.local/lib/node_modules/get-shit-done-redux/bin',
});
const exports_ = ir.actionLines.filter(l => l.startsWith('export PATH='));
assert.equal(exports_.length, 1, `expected 1 export line, got: ${JSON.stringify(ir.actionLines)}`);
@@ -115,7 +115,7 @@ describe('Bug #3011: formatSdkPathDiagnostic — POSIX action lines', () => {
const ir = formatSdkPathDiagnostic({
shimDir: '/usr/local/bin',
platform: 'darwin',
runDir: '/usr/local/lib/node_modules/get-shit-done-cc/bin',
runDir: '/usr/local/lib/node_modules/get-shit-done-redux/bin',
});
assert.ok(ir.actionLines.some(l => l === 'export PATH="/usr/local/bin:$PATH"'));
});
@@ -137,7 +137,7 @@ describe('Bug #3011: formatSdkPathDiagnostic — fallback when shimDir is null',
platform: 'win32',
runDir: 'C:\\some\\path',
});
assert.ok(ir.actionLines.some(l => l.includes('npm install -g get-shit-done-cc')));
assert.ok(ir.actionLines.some(l => l.includes('npm install -g get-shit-done-redux')));
});
});
@@ -146,7 +146,7 @@ describe('Bug #3011: formatSdkPathDiagnostic — npx-cache detection', () => {
const ir = formatSdkPathDiagnostic({
shimDir: '/home/me/.local/bin',
platform: 'linux',
runDir: '/home/me/.npm/_npx/abc123/node_modules/get-shit-done-cc/bin',
runDir: '/home/me/.npm/_npx/abc123/node_modules/get-shit-done-redux/bin',
});
assert.equal(ir.isNpx, true);
assert.ok(ir.npxNoteLines.length >= 2,
@@ -159,7 +159,7 @@ describe('Bug #3011: formatSdkPathDiagnostic — npx-cache detection', () => {
const ir = formatSdkPathDiagnostic({
shimDir: 'C:\\Users\\me\\AppData\\Roaming\\npm',
platform: 'win32',
runDir: 'C:\\Users\\me\\AppData\\Local\\npm-cache\\_npx\\abc123\\node_modules\\get-shit-done-cc\\bin',
runDir: 'C:\\Users\\me\\AppData\\Local\\npm-cache\\_npx\\abc123\\node_modules\\get-shit-done-redux\\bin',
});
assert.equal(ir.isNpx, true);
});
@@ -168,7 +168,7 @@ describe('Bug #3011: formatSdkPathDiagnostic — npx-cache detection', () => {
const ir = formatSdkPathDiagnostic({
shimDir: 'C:\\Users\\me\\AppData\\Roaming\\npm',
platform: 'win32',
runDir: 'C:\\Users\\me\\AppData\\Roaming\\npm\\node_modules\\get-shit-done-cc\\bin',
runDir: 'C:\\Users\\me\\AppData\\Roaming\\npm\\node_modules\\get-shit-done-redux\\bin',
});
assert.equal(ir.isNpx, false);
assert.deepEqual(ir.npxNoteLines, []);

View File

@@ -2,7 +2,7 @@
* Regression test for #3033: --sdk flag parsed but never used.
*
* `hasSdk` was set in bin/install.js but never passed to `installSdkIfNeeded`,
* so `npx get-shit-done-cc@latest --sdk` produced a misleading "✓ GSD SDK ready"
* so `npx get-shit-done-redux@latest --sdk` produced a misleading "✓ GSD SDK ready"
* message while still silently skipping SDK deployment for local installs.
*
* Fix: `installSdkIfNeeded` now accepts `opts.forceSdk`. When true, the

View File

@@ -12,13 +12,13 @@ function read(rel) {
}
describe('bug #3091: sdk install guidance and agent fallbacks use query-capable CLI', () => {
test('quick workflow install hint references get-shit-done-cc (not @gsd-build/sdk)', () => {
test('quick workflow install hint references get-shit-done-redux (not @gsd-redux/sdk)', () => {
const content = read('get-shit-done/workflows/quick.md');
assert.ok(content.includes('npm install -g get-shit-done-cc'));
assert.ok(!content.includes('npm install -g @gsd-build/sdk'));
assert.ok(content.includes('npm install -g get-shit-done-redux'));
assert.ok(!content.includes('npm install -g @gsd-redux/sdk'));
});
test('agent docs no longer reference node_modules/@gsd-build/sdk/dist/cli.js query fallback', () => {
test('agent docs no longer reference node_modules/@gsd-redux/sdk/dist/cli.js query fallback', () => {
const files = [
'agents/gsd-planner.md',
'agents/gsd-executor.md',
@@ -26,7 +26,7 @@ describe('bug #3091: sdk install guidance and agent fallbacks use query-capable
'agents/gsd-roadmapper.md',
];
const offenders = files.filter((f) => read(f).includes('@gsd-build/sdk/dist/cli.js query'));
assert.deepStrictEqual(offenders, [], `stale @gsd-build/sdk query fallback references: ${offenders.join(', ')}`);
const offenders = files.filter((f) => read(f).includes('@gsd-redux/sdk/dist/cli.js query'));
assert.deepStrictEqual(offenders, [], `stale @gsd-redux/sdk query fallback references: ${offenders.join(', ')}`);
});
});

View File

@@ -4,14 +4,14 @@
// Regression guard for bug #3130.
//
// Two failure modes were observed with the pre-fix npx invocation form:
// 1. Cache-stale: bare `npx -y get-shit-done-cc@latest` hits npx's local
// 1. Cache-stale: bare `npx -y get-shit-done-redux@latest` hits npx's local
// cache and may pull an older version instead of @latest.
// 2. Token-routing: Bash-tool wrappers misroute the `@` token in
// `get-shit-done-cc@latest`, causing npm to error with
// "Unknown command: get-shit-done-cc@latest".
// `get-shit-done-redux@latest`, causing npm to error with
// "Unknown command: get-shit-done-redux@latest".
//
// The robust form is:
// npx -y --package=get-shit-done-cc@latest -- get-shit-done-cc $ARGS
// npx -y --package=get-shit-done-redux@latest -- get-shit-done-redux $ARGS
//
// `--package=` forces a fresh registry fetch, bypassing the npx cache.
// `--` clearly delineates npx flags from the run-command, preventing
@@ -28,9 +28,9 @@ const UPDATE_WF = path.join(ROOT, 'get-shit-done', 'workflows', 'update.md');
const src = fs.readFileSync(UPDATE_WF, 'utf8');
test('bug #3130: update.md contains no bare npx invocations (cache-stale form)', () => {
// Any occurrence of `npx -y get-shit-done-cc@latest` without `--package=`
// Any occurrence of `npx -y get-shit-done-redux@latest` without `--package=`
// is the stale form that triggers the two failure modes.
const stale = (src.match(/npx -y get-shit-done-cc@latest[^\n]*/g) || []);
const stale = (src.match(/npx -y get-shit-done-redux@latest[^\n]*/g) || []);
assert.deepEqual(
stale,
[],
@@ -40,7 +40,7 @@ test('bug #3130: update.md contains no bare npx invocations (cache-stale form)',
test('bug #3130: update.md has >=3 robust npx invocations (--package= + -- separator)', () => {
// Three sibling invocations: local, global, and unknown/fallback.
const robust = (src.match(/npx -y --package=get-shit-done-cc@latest -- get-shit-done-cc/g) || []);
const robust = (src.match(/npx -y --package=get-shit-done-redux@latest -- get-shit-done-redux/g) || []);
assert.ok(
robust.length >= 3,
`Expected >=3 robust npx invocations in update.md, found ${robust.length}`,

View File

@@ -6,7 +6,7 @@ process.env.GSD_TEST_MODE = '1';
* Regression tests for bug #3211.
*
* Windows 11 + PowerShell 7 + Node v22.22.1, fresh
* `npx get-shit-done-cc@latest --global --claude`:
* `npx get-shit-done-redux@latest --global --claude`:
* gsd-sdk: The term 'gsd-sdk' is not recognized
*
* Root causes (Windows sibling of #3231):
@@ -380,7 +380,7 @@ describe('bug #3211-E: isLegacyGsdSdkShim detects legacy marker in .cmd files',
[
'@ECHO OFF',
'@SETLOCAL',
'@node "C:\\path\\to\\get-shit-done-cc\\bin\\gsd-sdk.js" %*',
'@node "C:\\path\\to\\get-shit-done-redux\\bin\\gsd-sdk.js" %*',
'',
].join('\r\n'),
);

View File

@@ -1,7 +1,7 @@
/**
* Regression tests for bug #3231.
*
* `npx get-shit-done-cc@latest` prints `✓ GSD SDK ready (sdk/dist/cli.js)` on
* `npx get-shit-done-redux@latest` prints `✓ GSD SDK ready (sdk/dist/cli.js)` on
* Linux but no persistent `gsd-sdk` shim is created. Two sub-bugs:
*
* 1. Transient npx PATH + null login-shell PATH → false success
@@ -244,7 +244,7 @@ describe('bug #3231: stale legacy symlink to deprecated gsd-tools.cjs',
modernFile,
[
'#!/usr/bin/env node',
"require('/usr/local/lib/node_modules/get-shit-done-cc/bin/gsd-sdk.js');",
"require('/usr/local/lib/node_modules/get-shit-done-redux/bin/gsd-sdk.js');",
'',
].join('\n'),
);

View File

@@ -17,7 +17,7 @@
* ignored by Steps 2-6 on non-GSD projects. The block was dead-but-noisy.
*
* Fix: gate the runtime bash detection on a positive "is-this-the-framework-
* repo" check (package.json name === "get-shit-done-cc") so it runs ONLY when
* repo" check (package.json name === "get-shit-done-redux") so it runs ONLY when
* analysing the GSD framework's own repo, OR remove the block entirely if no
* downstream consumers exist.
*
@@ -88,7 +88,7 @@ describe('bug #3290 — Group A: layout-detection block must be gated or absent'
// A valid gate checks package.json name or an equivalent positive signal
// that the current project IS the GSD framework's own repo.
const hasFrameworkGate =
content.includes('get-shit-done-cc') ||
content.includes('get-shit-done-redux') ||
content.includes('is-this-the-framework') ||
content.includes('framework repo') ||
content.includes('Only run') ||
@@ -102,7 +102,7 @@ describe('bug #3290 — Group A: layout-detection block must be gated or absent'
'bash block (`ls -d .kilo ... || echo unknown`) with no surrounding ' +
'framework-repo gate (#3290). ' +
'Either remove the block entirely, or wrap it in a check like:\n' +
' if [[ "$(jq -r \'.name // ""\' package.json 2>/dev/null)" == "get-shit-done-cc" ]]; then\n' +
' if [[ "$(jq -r \'.name // ""\' package.json 2>/dev/null)" == "get-shit-done-redux" ]]; then\n' +
' # ... detection block ...\n' +
' fi'
);

View File

@@ -1,7 +1,7 @@
/**
* Regression test for bug #3359.
*
* `npx get-shit-done-cc@latest` can refresh runtime files while an older
* `npx get-shit-done-redux@latest` can refresh runtime files while an older
* global `gsd-sdk` earlier on PATH remains the executable workflows call.
* The installer must not report SDK readiness when the resolved `gsd-sdk`
* version differs from the package/runtime version being installed.
@@ -91,7 +91,7 @@ describe('bug #3359: installer detects stale gsd-sdk earlier on PATH',
`warning must include detected and installer versions. Output:\n${combined}`,
);
assert.ok(
/npm install -g get-shit-done-cc@latest/.test(combined),
/npm install -g get-shit-done-redux@latest/.test(combined),
`warning must include global update remediation. Output:\n${combined}`,
);
assert.ok(

View File

@@ -1,11 +1,11 @@
'use strict';
/**
* Regression tests for #3406 — stale globally-installed `@gsd-build/sdk@0.1.0`
* shadows the `gsd-sdk` shim that `get-shit-done-cc` installs. The standalone
* Regression tests for #3406 — stale globally-installed `@gsd-redux/sdk@0.1.0`
* shadows the `gsd-sdk` shim that `get-shit-done-redux` installs. The standalone
* 0.1.0 binary only knows `run | auto | init` (no `query` subcommand), so
* every workflow that calls `gsd-sdk query <command>` fails until the user
* runs `npm uninstall -g @gsd-build/sdk`.
* runs `npm uninstall -g @gsd-redux/sdk`.
*
* Maintainer decision (per triage): option 2 — detect-and-warn during
* install. This test pins the pure detection helper so the install-time
@@ -13,7 +13,7 @@
*
* Test surface is the exported helper `detectStaleStandaloneSdk(runNpmLs)`.
* `runNpmLs` is an injected executor: in production it spawns
* `npm ls -g @gsd-build/sdk --json --depth=0`; in tests we hand it a stub
* `npm ls -g @gsd-redux/sdk --json --depth=0`; in tests we hand it a stub
* that returns canned stdout / throws, so the test never touches the host
* npm state.
*/
@@ -35,7 +35,7 @@ describe('#3406: detectStaleStandaloneSdk', () => {
});
test('returns { stale: false } when npm ls reports the package is not installed', () => {
// `npm ls -g @gsd-build/sdk --json --depth=0` exit code 1 with this
// `npm ls -g @gsd-redux/sdk --json --depth=0` exit code 1 with this
// JSON shape is the standard "not present" signal.
const stub = () => JSON.stringify({
name: 'lib',
@@ -45,13 +45,13 @@ describe('#3406: detectStaleStandaloneSdk', () => {
assert.deepStrictEqual(result, { stale: false });
});
test('returns { stale: true, version, path? } when @gsd-build/sdk is present', () => {
test('returns { stale: true, version, path? } when @gsd-redux/sdk is present', () => {
const stub = () => JSON.stringify({
name: 'lib',
dependencies: {
'@gsd-build/sdk': {
'@gsd-redux/sdk': {
version: '0.1.0',
resolved: 'file:/Users/REDACTED/.nvm/versions/node/v24.15.0/lib/node_modules/@gsd-build/sdk',
resolved: 'file:/Users/REDACTED/.nvm/versions/node/v24.15.0/lib/node_modules/@gsd-redux/sdk',
},
},
});
@@ -90,8 +90,8 @@ describe('#3406: detectStaleStandaloneSdk', () => {
// version is an intentional install (or a future republish) and must
// NOT be flagged. Without this gate, every maintainer with a local-link
// or any future publish would trigger a misleading warning on install.
const stubNewer = () => JSON.stringify({ dependencies: { '@gsd-build/sdk': { version: '1.50.0-canary.0' } } });
const stubFuture = () => JSON.stringify({ dependencies: { '@gsd-build/sdk': { version: '2.0.0' } } });
const stubNewer = () => JSON.stringify({ dependencies: { '@gsd-redux/sdk': { version: '1.50.0-canary.0' } } });
const stubFuture = () => JSON.stringify({ dependencies: { '@gsd-redux/sdk': { version: '2.0.0' } } });
assert.deepStrictEqual(detectStaleStandaloneSdk(stubNewer), { stale: false });
assert.deepStrictEqual(detectStaleStandaloneSdk(stubFuture), { stale: false });
});
@@ -100,7 +100,7 @@ describe('#3406: detectStaleStandaloneSdk', () => {
describe('#3406: install-time wiring stays silent when no stale package is found', () => {
// We can't easily stub npm inside a spawned install subprocess without
// shelling around it, so the install-side coverage here verifies the
// negative case: when @gsd-build/sdk is NOT installed globally (the npm
// negative case: when @gsd-redux/sdk is NOT installed globally (the npm
// dependency tree on CI is irrelevant — we use a doctored PATH that points
// npm at an empty prefix), the install run prints NO #3406 warning. The
// positive case is exhaustively covered by detectStaleStandaloneSdk above.
@@ -131,8 +131,8 @@ describe('#3406: install-time wiring stays silent when no stale package is found
}
);
assert.ok(
!stdout.includes('@gsd-build/sdk'),
'install output must not mention @gsd-build/sdk when the package is absent'
!stdout.includes('@gsd-redux/sdk'),
'install output must not mention @gsd-redux/sdk when the package is absent'
);
assert.ok(
!stdout.includes('#3406'),
@@ -158,10 +158,10 @@ describe('#3406: formatStaleStandaloneSdkWarning', () => {
test('message names the stale package, the version, and the uninstall command', () => {
const out = formatStaleStandaloneSdkWarning({ stale: true, version: '0.1.0' });
assert.ok(out.includes('@gsd-build/sdk'), 'must name the shadowing package');
assert.ok(out.includes('@gsd-redux/sdk'), 'must name the shadowing package');
assert.ok(out.includes('0.1.0'), 'must show the stale version');
assert.ok(
out.includes('npm uninstall -g @gsd-build/sdk'),
out.includes('npm uninstall -g @gsd-redux/sdk'),
'must include the remediation command verbatim'
);
assert.ok(out.includes('#3406'), 'must reference the issue for traceability');

View File

@@ -11,7 +11,7 @@ process.env.GSD_TEST_MODE = '1';
* commands from skills/<name>/SKILL.md. Prior installer logic ("Codex now
* discovers official skills from .agents/skills") was based on an assumption
* that does not match the shipping Codex CLI behavior, leaving users with
* workflows on disk and no $gsd-* entrypoints after `npx get-shit-done-cc
* workflows on disk and no $gsd-* entrypoints after `npx get-shit-done-redux
* --codex --global`.
*
* Fix: re-wire copyCommandsAsCodexSkills() back into the install dispatch path

View File

@@ -1,5 +1,5 @@
/**
* Regression test for #3610: fresh `npx get-shit-done-cc@latest --codex`
* Regression test for #3610: fresh `npx get-shit-done-redux@latest --codex`
* hard-aborts when the target ~/.codex/hooks/ contains the bundled GSD
* hook files (`gsd-check-update-worker.js`, `gsd-prompt-guard.js`, …)
* left over from a previous version. The installer-migration report

View File

@@ -42,7 +42,7 @@
* truly un-reclaimable lock, must still throw with a useful message naming
* the holder PID. (This guards against over-reclamation.)
*
* @see https://github.com/gsd-build/get-shit-done/issues/3670
* @see https://github.com/GSD-redux/get-shit-done-redux/issues/3670
*/
'use strict';

View File

@@ -50,7 +50,7 @@ describe('#1656: community .sh hooks must be present in hooks/dist', () => {
// ─── #1657 ───────────────────────────────────────────────────────────────────
//
// Historical context: #1657 originally guarded against a broken `promptSdk()`
// flow that shipped when `@gsd-build/sdk` did not yet exist on npm. The
// flow that shipped when `@gsd-redux/sdk` did not yet exist on npm. The
// package was published at v0.1.0 and is now a hard runtime requirement for
// every /gsd-* command (they all shell out to `gsd-sdk query …`).
//

View File

@@ -109,7 +109,7 @@ describe('changeset github release notes: tag-range renderer (#3382)', () => {
fromRef: 'v1.0.0',
toRef: 'v1.0.1',
repoSlug: 'example/project',
installCommand: 'npx get-shit-done-cc@latest',
installCommand: 'npx get-shit-done-redux@latest',
});
assert.equal(fs.readFileSync(output, 'utf8'), generated.body);
});

View File

@@ -4,7 +4,7 @@
* Integration test for `get-shit-done/bin/lib/cjs-sdk-bridge.cjs` — locks the
* load-success invariant that Phase 5/6 silently violated before this PR.
*
* Original bug: the bridge used `require('@gsd-build/sdk')` to load the
* Original bug: the bridge used `require('@gsd-redux/sdk')` to load the
* runtime-bridge module. That package name is not resolvable from the root
* `node_modules` (the SDK lives at `./sdk/` as a sibling, not a dependency),
* and even if it were, the public entry didn't expose `executeForCjs` or

View File

@@ -7,7 +7,7 @@
* Regression tests for bug #1991
*
* Cline is listed in GSD documentation as a supported runtime but was
* completely absent from bin/install.js. Running `npx get-shit-done-cc`
* completely absent from bin/install.js. Running `npx get-shit-done-redux`
* did not show Cline as an option in the interactive menu.
*
* Fixed: Cline is now a first-class runtime that:

View File

@@ -105,9 +105,9 @@ const INTERNAL_COMPONENT_SLUGS = new Set([
// a real command token.
'init-',
// gsd-build — GitHub organization name: "github.com/gsd-build/get-shit-done".
// gsd-build — GitHub organization name: "github.com/GSD-redux/get-shit-done-redux".
// Every occurrence of "/gsd-build" in docs is the path component of a GitHub URL
// (e.g., "[#2792](https://github.com/gsd-build/get-shit-done/issues/2792)").
// (e.g., "[#2792](https://github.com/GSD-redux/get-shit-done-redux/issues/2792)").
// The regex captures "/gsd-build" from the URL path. Not a slash command.
'build',

View File

@@ -143,7 +143,7 @@ describe('forensics workflow', () => {
);
});
test('workflow submits issues to gsd-build/get-shit-done, not the current repo', () => {
test('workflow submits issues to GSD-redux/get-shit-done-redux, not the current repo', () => {
const content = fs.readFileSync(workflowPath, 'utf-8');
// Scope check to the gh issue create invocation — a whole-file search would
// pass even if gh issue create lacked --repo, because gh label list also
@@ -151,17 +151,17 @@ describe('forensics workflow', () => {
assert.match(
content,
/gh issue create[\s\S]{0,250}--repo\s+gsd-build\/get-shit-done/,
'gh issue create must use --repo gsd-build/get-shit-done to avoid submitting to the user\'s current project repo'
'gh issue create must use --repo GSD-redux/get-shit-done-redux to avoid submitting to the user\'s current project repo'
);
});
test('workflow checks bug label in gsd-build/get-shit-done, not the current repo', () => {
test('workflow checks bug label in GSD-redux/get-shit-done-redux, not the current repo', () => {
const content = fs.readFileSync(workflowPath, 'utf-8');
// Regex is more robust than a fixed-length slice to formatting changes
assert.match(
content,
/gh label list[\s\S]{0,250}--repo\s+gsd-build\/get-shit-done/,
'gh label list must target gsd-build/get-shit-done'
'gh label list must target GSD-redux/get-shit-done-redux'
);
});

View File

@@ -85,7 +85,7 @@ describe('release-tarball-smoke', () => {
// ── Test C — happy lifecycle ───────────────────────────────────────────────
// Verifies that the installed package has all expected command .md files and
// that each command resolves a workflow .md file that also exists.
// Also verifies that `get-shit-done-cc --local --claude` (init) succeeds in
// Also verifies that `get-shit-done-redux --local --claude` (init) succeeds in
// the fixtureDir and creates the expected .claude/ directories.
test('C: happy lifecycle — command + workflow files resolve OK', () => {
const result = runSmoke({

View File

@@ -14,7 +14,7 @@
* 4. findProjectRoot detects .git at same level as .planning/
* 5. @file: handoff present in all workflows that call init
*
* Regression tests for: https://github.com/gsd-build/get-shit-done/issues/1343
* Regression tests for: https://github.com/GSD-redux/get-shit-done-redux/issues/1343
*/
const { test, describe } = require('node:test');

View File

@@ -21,8 +21,8 @@
* pattern introduced by #2551).
*
* See:
* - https://github.com/gsd-build/get-shit-done/issues/2551 (this test)
* - https://github.com/gsd-build/get-shit-done/issues/2361 (agent budget)
* - https://github.com/GSD-redux/get-shit-done-redux/issues/2551 (this test)
* - https://github.com/GSD-redux/get-shit-done-redux/issues/2361 (agent budget)
*/
const { test, describe } = require('node:test');