chore: migrate references from gsd-build to open-gsd/get-shit-done-redux (#120) (#121)

Security-motivated migration of all stale repository and npm-scope references.

Three categories of changes (58 files, 174 substitutions):

1. gsd-build → open-gsd (security-critical):
   - .github/workflows/release-sdk.yml — npm token comment, tarball filename pattern
   - .github/workflows/hotfix.yml — same
   - .changeset/fix-3406-detect-stale-sdk-shadow.md — @gsd-build/sdk → @open-gsd/sdk
   - .changeset/sharp-quails-leap.md — same
   - get-shit-done/workflows/update.md — CHANGELOG raw GitHub URL

2. GSD-redux org slug → open-gsd (canonical rename):
   - package.json + sdk/package.json — repository/homepage/bugs metadata
   - All README.*.md — live badge and link sections
   - CONTRIBUTING.md, CONTEXT.md, QUICK-WINS-CONFIRMED-BUGS.md
   - .coderabbit.yaml, .release-monitor.sh, scripts/sync-rulesets.sh
   - docs/** — all live agent/ADR/user-facing documentation
   - tests/** — repo slug assertions and test fixtures
   - scripts/changeset/cli.cjs + github-release-notes.cjs
   - .github/ISSUE_TEMPLATE/*, .github/pull_request_template.md
   - bin/install.js, get-shit-done/bin/lib/model-catalog.cjs
   - sdk/HANDOVER-*.md, sdk/src/*.test.ts

3. CLAUDE.md (gitignored local file — not in this commit):
   Updated separately outside git: --repo gsd-build/get-shit-done →
   --repo open-gsd/get-shit-done-redux with security warning.

Intentionally unchanged: CHANGELOG.md, docs/RELEASE-*.md,
.changeset/README.md, .changeset/build-hooks-atomic-write.md,
README.md migration table (historical fork record),
tests/changeset-serialize.test.cjs line 78 (serialization fixture).

The gsd-build/get-shit-done repo is compromised (rug-pull documented in
README.md). Do not push to or interact with that repo.

Closes #120
This commit is contained in:
Tom Boucher
2026-05-22 12:28:16 -04:00
committed by GitHub
parent 9595b10006
commit 2a915c1b82
58 changed files with 174 additions and 174 deletions

View File

@@ -2,4 +2,4 @@
type: Fixed
pr: 3641
---
**Install-time warning when a stale `@gsd-build/sdk` shadows the bundled `gsd-sdk` shim** — global installs now run `npm ls -g @gsd-build/sdk` and, if the standalone 0.1.0 package is present (it never received `query` subcommand support), print a clear remediation block before the install completes. Detection is fail-closed: any npm/exec error silently returns no-stale. Gated by `GSD_SKIP_STALE_SDK_CHECK=1` for CI/test environments. Resolves #3406.
**Install-time warning when a stale `@open-gsd/sdk` shadows the bundled `gsd-sdk` shim** — global installs now run `npm ls -g @open-gsd/sdk` and, if the standalone 0.1.0 package is present (it never received `query` subcommand support), print a clear remediation block before the install completes. Detection is fail-closed: any npm/exec error silently returns no-stale. Gated by `GSD_SKIP_STALE_SDK_CHECK=1` for CI/test environments. Resolves #3406.

View File

@@ -2,4 +2,4 @@
type: Added
pr: 3558
---
**`executeForCjs` synchronous primitive on the SDK runtime bridge** — new sync entry point at `@gsd-build/sdk/dist/runtime-bridge-sync` that lets CJS callers (the `gsd-tools.cjs` dispatcher and per-family `*-command-router.cjs` files) invoke SDK query handlers in-process without spawning a subprocess and without breaking the synchronous CJS contract that ~21 CJS test files and 100+ consumers depend on. Implemented with `synckit` (Atomics.wait on a SharedArrayBuffer in a pooled Worker thread). First-call cost ~80ms (Worker startup + native bridge construction); steady-state ~0.1ms per call after the Worker warms. Returns a typed sync result `{ ok, data | errorKind, exitCode, errorDetails?, stderrLines }` aligned with the ADR-0001 Dispatch Policy Module error taxonomy. Foundation for the Phase 5 per-family CJS router migrations (state.*, verify.*, init.*, phase.*, phases.*, validate.*, roadmap.*, frontmatter.*, config.*) that follow as separate enhancements.
**`executeForCjs` synchronous primitive on the SDK runtime bridge** — new sync entry point at `@open-gsd/sdk/dist/runtime-bridge-sync` that lets CJS callers (the `gsd-tools.cjs` dispatcher and per-family `*-command-router.cjs` files) invoke SDK query handlers in-process without spawning a subprocess and without breaking the synchronous CJS contract that ~21 CJS test files and 100+ consumers depend on. Implemented with `synckit` (Atomics.wait on a SharedArrayBuffer in a pooled Worker thread). First-call cost ~80ms (Worker startup + native bridge construction); steady-state ~0.1ms per call after the Worker warms. Returns a typed sync result `{ ok, data | errorKind, exitCode, errorDetails?, stderrLines }` aligned with the ADR-0001 Dispatch Policy Module error taxonomy. Foundation for the Phase 5 per-family CJS router migrations (state.*, verify.*, init.*, phase.*, phases.*, validate.*, roadmap.*, frontmatter.*, config.*) that follow as separate enhancements.

View File

@@ -1,4 +1,4 @@
# CodeRabbit configuration — GSD-redux/get-shit-done-redux
# CodeRabbit configuration — open-gsd/get-shit-done-redux
#
# Schema: https://docs.coderabbit.ai/reference/yaml-template/
#

View File

@@ -1,11 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: "⚠️ v1.31.0 not on npm yet (known issue — workaround inside)"
url: https://github.com/GSD-redux/get-shit-done-redux/discussions
url: https://github.com/open-gsd/get-shit-done-redux/discussions
about: v1.31.0 was not published to npm due to a hardware failure. Read the pinned announcement for the workaround before opening an issue.
- name: Discord Community
url: https://discord.gg/mYgfVNfA2r
about: Ask questions and get help from the community
- name: Discussions
url: https://github.com/GSD-redux/get-shit-done-redux/discussions
url: https://github.com/open-gsd/get-shit-done-redux/discussions
about: Share ideas or ask general questions

View File

@@ -11,7 +11,7 @@ body:
A feature adds something new to GSD — a new command, workflow, concept, or integration. Features have the **highest bar** for acceptance because every feature adds permanent maintenance burden to a project built for solo developers.
**Before opening this issue:**
- Check [Discussions](https://github.com/GSD-redux/get-shit-done-redux/discussions) — has this been proposed and declined before?
- Check [Discussions](https://github.com/open-gsd/get-shit-done-redux/discussions) — has this been proposed and declined before?
- Read [CONTRIBUTING.md](../../CONTRIBUTING.md#-feature) — understand what "approved-feature" means and why you must wait for it before writing code.
- Ask yourself: *does this solve a real problem for a solo developer working with an AI coding tool, or is it a feature I personally want?*

View File

@@ -17,7 +17,7 @@ Select the template that matches your PR:
- If it **corrects broken behavior** → Fix
- If it **improves existing behavior** without adding new commands or concepts → Enhancement
- If it **adds something that doesn't exist today** → Feature
- If you are not sure → open a [Discussion](https://github.com/GSD-redux/get-shit-done-redux/discussions) first
- If you are not sure → open a [Discussion](https://github.com/open-gsd/get-shit-done-redux/discussions) first
---

View File

@@ -18,7 +18,7 @@ name: Hotfix Release
# - install-smoke gate (cross-platform, parity with release.yml/release-sdk.yml)
# - Bundles SDK as both loose tree (sdk/dist/cli.js) and recoverable tarball
# (sdk-bundle/gsd-sdk.tgz) — parity with release-sdk.yml so a hotfix shipped
# during the @gsd-build-token outage carries the same payload shape.
# during the @open-gsd-token outage carries the same payload shape.
# - Publishes to @latest, tags vX.YY.Z, re-points @next → vX.YY.Z, opens
# merge-back PR.
@@ -332,7 +332,7 @@ jobs:
set -e
cd sdk
npm pack
TARBALL="gsd-build-sdk-${VERSION}.tgz"
TARBALL="open-gsd-sdk-${VERSION}.tgz"
if [ ! -f "$TARBALL" ]; then
echo "::error::Expected $TARBALL but npm pack did not produce it."
ls -la

View File

@@ -6,7 +6,7 @@
# per run.
#
# Why this exists: @gsd-redux/sdk publishes from canary.yml and release.yml
# fail because the @gsd-build npm token is currently unavailable. CC users
# fail because the @open-gsd npm token is currently unavailable. CC users
# do not consume @gsd-redux/sdk directly — bin/gsd-sdk.js resolves
# sdk/dist/cli.js from inside the installed CC package, so the bundled
# copy is sufficient for full functionality. This workflow ships CC alone
@@ -579,8 +579,8 @@ jobs:
set -e
cd sdk
npm pack
# npm pack emits gsd-build-sdk-<version>.tgz in the cwd
TARBALL="gsd-build-sdk-${VERSION}.tgz"
# npm pack emits open-gsd-sdk-<version>.tgz in the cwd
TARBALL="open-gsd-sdk-${VERSION}.tgz"
if [ ! -f "$TARBALL" ]; then
echo "::error::Expected $TARBALL but npm pack did not produce it. Listing sdk/:"
ls -la

View File

@@ -1,6 +1,6 @@
# Render agent definitions from templates at install/config-change time
**Source:** [#2758](https://github.com/GSD-redux/get-shit-done-redux/issues/2758)
**Source:** [#2758](https://github.com/open-gsd/get-shit-done-redux/issues/2758)
**Decision:** wontfix — closed on the technical merits
**Date:** 2026-05-02

View File

@@ -1,6 +1,6 @@
# Temporal context as a first-class GSD signal
**Source:** [#2756](https://github.com/GSD-redux/get-shit-done-redux/issues/2756)
**Source:** [#2756](https://github.com/open-gsd/get-shit-done-redux/issues/2756)
**Decision:** wontfix — closed without further engagement
**Date:** 2026-05-02

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash
# Release monitor for GSD-redux/get-shit-done-redux
# Release monitor for open-gsd/get-shit-done-redux
# Checks every 15 minutes, writes new release info to a signal file
REPO="GSD-redux/get-shit-done-redux"
REPO="open-gsd/get-shit-done-redux"
SIGNAL_FILE="/tmp/gsd-new-release.json"
STATE_FILE="/tmp/gsd-monitor-last-tag"
LOG_FILE="/tmp/gsd-monitor.log"

View File

@@ -193,7 +193,7 @@ Five-axis story decomposition discipline (**S**pike, **P**aths, **I**nterfaces,
## Workspace seams (machine-oriented predicates)
`RULESET.GH.AUTH.DEFAULT=source .envrc GITHUB_TOKEN before gh; exception=ambient allowed only when user explicitly says machine-only fallback`
`RULESET.CODERABBIT.GUARD.OPEN_PRS=gh pr list --repo GSD-redux/get-shit-done-redux --author @me --state open; repeat near end because open PR set can change mid-run`
`RULESET.CODERABBIT.GUARD.OPEN_PRS=gh pr list --repo open-gsd/get-shit-done-redux --author @me --state open; repeat near end because open PR set can change mid-run`
`RULESET.CODERABBIT.GUARD.COMPLETE=required_checks_green && coderabbit_check_pass && graphQL(reviewThreads.unresolved_count)==0`
`RULESET.CODERABBIT.GUARD.GRAPHQL=reviewThreads(first:100){nodes{id isResolved comments{nodes{author body path line originalLine url}}}}; use unresolved threads as authoritative, not badge text alone`
`RULESET.CODERABBIT.GUARD.RERUN=after every push wait for CodeRabbit completion, then re-query unresolved threads; CodeRabbit can add new findings after earlier threads were resolved`
@@ -256,7 +256,7 @@ Five-axis story decomposition discipline (**S**pike, **P**aths, **I**nterfaces,
`RELEASE-NOTES.STANDARD.footer.hotfix=Install/upgrade: \`npx get-shit-done-redux@latest\``
`RELEASE-NOTES.STANDARD.footer.rc=Install for testing: \`npx get-shit-done-redux@next\` (per branch->dist-tag policy)`
`RELEASE-NOTES.STANDARD.footer.canary=Install: \`npx get-shit-done-redux@canary\``
`RELEASE-NOTES.STANDARD.footer.full-changelog=**Full Changelog**: https://github.com/GSD-redux/get-shit-done-redux/compare/<prev>...<this>`
`RELEASE-NOTES.STANDARD.footer.full-changelog=**Full Changelog**: https://github.com/open-gsd/get-shit-done-redux/compare/<prev>...<this>`
`RELEASE-NOTES.STANDARD.intro=optional one-paragraph framing for RC/feature releases; omit for pure-fix hotfixes`
`RELEASE-NOTES.SOURCE.commits=git log <prev-tag>..<this-tag> --pretty=format:'%s%n%n%b' --no-merges`
@@ -273,8 +273,8 @@ Five-axis story decomposition discipline (**S**pike, **P**aths, **I**nterfaces,
`RELEASE-NOTES.ANTI-PATTERN.implementation-first=do not lead bullet with file path or function name; lead with symptom/user-visible behavior`
`RELEASE-NOTES.ANTI-PATTERN.risk-commentary=do not include "may break", "be careful", "test thoroughly" - per global CLAUDE.md no-risk-commentary rule`
`RELEASE-NOTES.EXAMPLE.hotfix=v1.41.1 (https://github.com/GSD-redux/get-shit-done-redux/releases/tag/v1.41.1) - 14 fixes grouped by 6 subgroups`
`RELEASE-NOTES.EXAMPLE.rc=v1.42.0-rc1 (https://github.com/GSD-redux/get-shit-done-redux/releases/tag/v1.42.0-rc1) - intro + Added/Changed/Fixed/Documentation taxonomy`
`RELEASE-NOTES.EXAMPLE.hotfix=v1.41.1 (https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.41.1) - 14 fixes grouped by 6 subgroups`
`RELEASE-NOTES.EXAMPLE.rc=v1.42.0-rc1 (https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.42.0-rc1) - intro + Added/Changed/Fixed/Documentation taxonomy`
`RELEASE-NOTES.EXAMPLE.minor-auto-acceptable=v1.41.0 - kept auto-generated body; many small fixes with clean conventional-commit titles`
`RELEASE-NOTES.TEMPLATE.hotfix=## Fixed\n\n### <subgroup>\n- **<bold change>** — <explanation>. (#<PR>)\n\n---\n\nInstall/upgrade: \`npx get-shit-done-redux@latest\`\n\n**Full Changelog**: <compare-url>`
@@ -594,7 +594,7 @@ Migration plan: Phase 1 (#3465) seam additions complete; Phase 2 (#3466) targets
`DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.root-cause=gsd-test-summary lines 126-127 default LOCAL_OUT/DOCKER_OUT to fixed /tmp/gsd-test-{local,docker}.jsonl; concurrent line-buffered writers interleave bytes mid-multibyte → split UTF-8 sequence → decoder explodes on f.read()`
`DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.detect=two gsd-test-summary --both runs in flight; UnicodeDecodeError in parse_events_from_string traceback; /tmp/gsd-test-*.jsonl size mismatch vs total events emitted`
`DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.fix-forward=set per-invocation LOCAL_OUT=/tmp/gsd-test-<tag>-local.jsonl DOCKER_OUT=/tmp/gsd-test-<tag>-docker.jsonl env vars; or serialize the runs; upstream fix tracked in #3545 (default to tempfile.mkstemp + advisory flock)`
`DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.upstream=GSD-redux/get-shit-done-redux#3545`
`DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.upstream=open-gsd/get-shit-done-redux#3545`
`DEFECT.SUBAGENT-LONG-RUNNING-BG-STALL.symptom=spawned sub-agent kicks off gsd-test-summary --both via Bash run_in_background, then stops on the harness "you will be notified" message; never receives the notification because cross-turn task-notifications are only delivered to the top-level orchestrator`
`DEFECT.SUBAGENT-LONG-RUNNING-BG-STALL.detect=sub-agent returns prematurely with text like "I should wait for the notification per CLAUDE.md" and incomplete work in its worktree (commits absent, push absent, PR absent)`
`DEFECT.SUBAGENT-LONG-RUNNING-BG-STALL.fix-forward=keep gsd-test-summary --both at the top-level orchestrator; sub-agents either run it foreground with timeout: 1500000 (25min) and block, OR delegate the test step back to the orchestrator (write commits + return); never have a sub-agent fire-and-await a backgrounded long task`

View File

@@ -4,7 +4,7 @@
```bash
# Clone the repo
git clone https://github.com/GSD-redux/get-shit-done-redux.git
git clone https://github.com/open-gsd/get-shit-done-redux.git
cd get-shit-done
# Install dependencies
@@ -25,7 +25,7 @@ GSD accepts three types of contributions. Each type has a different process and
A fix corrects something that is broken, crashes, produces wrong output, or behaves contrary to documented behavior.
**Process:**
1. Open a [Bug Report issue](https://github.com/GSD-redux/get-shit-done-redux/issues/new?template=bug_report.yml) — fill it out completely.
1. Open a [Bug Report issue](https://github.com/open-gsd/get-shit-done-redux/issues/new?template=bug_report.yml) — fill it out completely.
2. Wait for a maintainer to confirm it is a bug (label: `confirmed-bug`). For obvious, reproducible bugs this is typically fast.
3. Fix it. Write a test that would have caught the bug.
4. Open a PR using the [Fix PR template](.github/PULL_REQUEST_TEMPLATE/fix.md) — link the confirmed issue.
@@ -41,7 +41,7 @@ An enhancement improves an existing feature — better output, faster execution,
**The bar:** Enhancements must have a scoped written proposal approved by a maintainer before any code is written. A PR for an enhancement will be closed without review if the linked issue does not carry the `approved-enhancement` label.
**Process:**
1. Open an [Enhancement issue](https://github.com/GSD-redux/get-shit-done-redux/issues/new?template=enhancement.yml) with the full proposal. The issue template requires: the problem being solved, the concrete benefit, the scope of changes, and alternatives considered.
1. Open an [Enhancement issue](https://github.com/open-gsd/get-shit-done-redux/issues/new?template=enhancement.yml) with the full proposal. The issue template requires: the problem being solved, the concrete benefit, the scope of changes, and alternatives considered.
2. **Wait for maintainer approval.** A maintainer must label the issue `approved-enhancement` before you write a single line of code. Do not open a PR against an unapproved enhancement issue — it will be closed.
3. Write the code. Keep the scope exactly as approved. If scope creep occurs, comment on the issue and get re-approval before continuing.
4. Open a PR using the [Enhancement PR template](.github/PULL_REQUEST_TEMPLATE/enhancement.md) — link the approved issue.
@@ -57,8 +57,8 @@ A feature adds something new — a new command, a new workflow, a new concept, a
**The bar:** Features require a complete written specification approved by a maintainer before any code is written. A PR for a feature will be closed without review if the linked issue does not carry the `approved-feature` label. Incomplete specs are closed, not revised by maintainers.
**Process:**
1. **Discuss first** — check [Discussions](https://github.com/GSD-redux/get-shit-done-redux/discussions) to see if the idea has been raised. If it has and was declined, don't open a new issue.
2. Open a [Feature Request issue](https://github.com/GSD-redux/get-shit-done-redux/issues/new?template=feature_request.yml) with the complete spec. The template requires: the solo-developer problem being solved, what is being added, full scope of affected files and systems, user stories, acceptance criteria, and assessment of maintenance burden.
1. **Discuss first** — check [Discussions](https://github.com/open-gsd/get-shit-done-redux/discussions) to see if the idea has been raised. If it has and was declined, don't open a new issue.
2. Open a [Feature Request issue](https://github.com/open-gsd/get-shit-done-redux/issues/new?template=feature_request.yml) with the complete spec. The template requires: the solo-developer problem being solved, what is being added, full scope of affected files and systems, user stories, acceptance criteria, and assessment of maintenance burden.
3. **Wait for maintainer approval.** A maintainer must label the issue `approved-feature` before you write a single line of code. Approval is not guaranteed — GSD is intentionally lean and many valid ideas are declined because they conflict with the project's design philosophy.
4. Write the code. Implement exactly the approved spec. Changes to scope require re-approval.
5. Open a PR using the [Feature PR template](.github/PULL_REQUEST_TEMPLATE/feature.md) — link the approved issue.
@@ -146,7 +146,7 @@ npm run changeset -- --type Fixed --pr <YOUR_PR_NUMBER> \
This writes `.changeset/<adjective>-<noun>-<noun>.md`. Three random words → concurrent PRs never collide. Allowed `type:` values follow [Keep a Changelog](https://keepachangelog.com/): `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`.
Fragments are consolidated into `CHANGELOG.md` at release time by the release workflow. See [`.changeset/README.md`](.changeset/README.md) for the format spec and [#2975](https://github.com/GSD-redux/get-shit-done-redux/issues/2975) for the rationale.
Fragments are consolidated into `CHANGELOG.md` at release time by the release workflow. See [`.changeset/README.md`](.changeset/README.md) for the format spec and [#2975](https://github.com/open-gsd/get-shit-done-redux/issues/2975) for the rationale.
**CI enforcement:** the `Changeset Required` workflow (`scripts/changeset/lint.cjs`) fails any PR that touches `bin/`, `get-shit-done/`, `agents/`, `commands/`, `hooks/`, or `sdk/src/` without a `.changeset/*.md` fragment.
@@ -154,7 +154,7 @@ Fragments are consolidated into `CHANGELOG.md` at release time by the release wo
## Documentation Updates — Update the Relevant Docs
If your PR adds, changes, deprecates, or removes user-visible behavior, you **must** update the relevant documentation in `docs/`. CI will fail any PR whose changeset fragment is typed `Added`, `Changed`, `Deprecated`, or `Removed` without also modifying at least one file under `docs/` ([#3213](https://github.com/GSD-redux/get-shit-done-redux/issues/3213)).
If your PR adds, changes, deprecates, or removes user-visible behavior, you **must** update the relevant documentation in `docs/`. CI will fail any PR whose changeset fragment is typed `Added`, `Changed`, `Deprecated`, or `Removed` without also modifying at least one file under `docs/` ([#3213](https://github.com/open-gsd/get-shit-done-redux/issues/3213)).
`Fixed` and `Security` fragments do not trigger this lint — bug fixes restore documented behavior, they do not introduce new behavior to document. (Edit the docs anyway if a fix corrects something the docs got wrong.)

View File

@@ -15,12 +15,12 @@ All six issues carry the `confirmed-bug` label, meaning the bug has been verifie
| # | Issue | Short Title | Type | Recommended Flow | Est. Effort | Status | Notes |
|---|-------|-------------|------|------------------|-------------|--------|-------|
| 1 | [#3583](https://github.com/GSD-redux/get-shit-done-redux/issues/3583) | Claude skill install leaves `/gsd:<cmd>` in `SKILL.md` body | Installer / Command namespace | PR 3629 (our branch) + competing 3586 | Small (1 file + test) | PR opened / Review | **Leading PR: 3629** (cristianuibar) — reviewed + hardened with CodeRabbit feedback (left-boundary regex + body-scoped guard). Competing PR 3586 has "needs changes" + "ci: failing". Issue still carries `confirmed-bug`. |
| 2 | [#3579](https://github.com/GSD-redux/get-shit-done-redux/issues/3579) | `build-hooks.js` + npm publish omit graphify auto-update hook | Packaging / Build | `/gsd-quick` | Small | Not started | Classic "new feature missed in release artifact". Easy local verification. |
| 3 | [#3496](https://github.com/GSD-redux/get-shit-done-redux/issues/3496) | `/gsd:update` changelog extraction skips intermediate versions | Workflow / Update logic | `/gsd-quick` or lightweight plan | Medium-small | Not started | Needs deterministic version-range helper. |
| 4 | [#3588](https://github.com/GSD-redux/get-shit-done-redux/issues/3588) | Production `npm audit` has 1 high + 5 moderate advisories | Security / Dependencies | Direct + careful review | Medium | Not started | Transitive via `@anthropic-ai/claude-agent-sdk`. May need overrides. |
| 5 | [#3584](https://github.com/GSD-redux/get-shit-done-redux/issues/3584) | Runtime `bin/lib/*.cjs` still emit `/gsd:<cmd>` (larger piece deferred from #3583) | Runtime output / Slash formatter | Short plan first, then execute | Medium-Large | Not started | 16+ files. Design a centralized runtime-aware formatter. Do after #3583. |
| 6 | [#3340](https://github.com/GSD-redux/get-shit-done-redux/issues/3340) | SDK publish lag — agent dir fix never shipped in `@gsd-redux/sdk@0.1.0` | Release / SDK publishing | Plan + coordination | Medium (release-focused) | Not started | Oldest. Mostly a publishing/versioning task. |
| 1 | [#3583](https://github.com/open-gsd/get-shit-done-redux/issues/3583) | Claude skill install leaves `/gsd:<cmd>` in `SKILL.md` body | Installer / Command namespace | PR 3629 (our branch) + competing 3586 | Small (1 file + test) | PR opened / Review | **Leading PR: 3629** (cristianuibar) — reviewed + hardened with CodeRabbit feedback (left-boundary regex + body-scoped guard). Competing PR 3586 has "needs changes" + "ci: failing". Issue still carries `confirmed-bug`. |
| 2 | [#3579](https://github.com/open-gsd/get-shit-done-redux/issues/3579) | `build-hooks.js` + npm publish omit graphify auto-update hook | Packaging / Build | `/gsd-quick` | Small | Not started | Classic "new feature missed in release artifact". Easy local verification. |
| 3 | [#3496](https://github.com/open-gsd/get-shit-done-redux/issues/3496) | `/gsd:update` changelog extraction skips intermediate versions | Workflow / Update logic | `/gsd-quick` or lightweight plan | Medium-small | Not started | Needs deterministic version-range helper. |
| 4 | [#3588](https://github.com/open-gsd/get-shit-done-redux/issues/3588) | Production `npm audit` has 1 high + 5 moderate advisories | Security / Dependencies | Direct + careful review | Medium | Not started | Transitive via `@anthropic-ai/claude-agent-sdk`. May need overrides. |
| 5 | [#3584](https://github.com/open-gsd/get-shit-done-redux/issues/3584) | Runtime `bin/lib/*.cjs` still emit `/gsd:<cmd>` (larger piece deferred from #3583) | Runtime output / Slash formatter | Short plan first, then execute | Medium-Large | Not started | 16+ files. Design a centralized runtime-aware formatter. Do after #3583. |
| 6 | [#3340](https://github.com/open-gsd/get-shit-done-redux/issues/3340) | SDK publish lag — agent dir fix never shipped in `@gsd-redux/sdk@0.1.0` | Release / SDK publishing | Plan + coordination | Medium (release-focused) | Not started | Oldest. Mostly a publishing/versioning task. |
## Execution Rules for This Batch

View File

@@ -12,9 +12,9 @@
[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![Tests](https://img.shields.io/github/actions/workflow/status/GSD-redux/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/GSD-redux/get-shit-done-redux/actions/workflows/test.yml)
[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r)
[![GitHub stars](https://img.shields.io/github/stars/GSD-redux/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/GSD-redux/get-shit-done-redux)
[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux)
[![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
<br>
@@ -77,7 +77,7 @@ GSDはそれを解決します。Claude Codeを信頼性の高いものにする
### v1.39.0 ハイライト
完全なリストは [v1.39.0 リリースノート](https://github.com/GSD-redux/get-shit-done-redux/releases/tag/v1.39.0) を参照してください。
完全なリストは [v1.39.0 リリースノート](https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.39.0) を参照してください。
- **`--minimal` インストールプロファイル** — エイリアス `--core-only`。メインループの6スキル(`new-project`、`discuss-phase`、`plan-phase`、`execute-phase`、`help`、`update`)のみをインストールし、`gsd-*` サブエージェントはゼロ。コールドスタート時のシステムプロンプトのオーバーヘッドを ~12kトークンから ~700トークンへ削減(≥94%減)。32K〜128Kコンテキストのローカル LLM やトークン課金 API に有効。
- **`/gsd-phase --edit`** — `ROADMAP.md` 上の既存フェーズの任意フィールドをその場で編集(番号や位置は変更されない)。`--force` で確認 diff をスキップ、`depends_on` の参照を検証し、書き込み時に `STATE.md` も更新。
@@ -180,7 +180,7 @@ npx get-shit-done-redux --all --global # すべてのディレクトリに
リポジトリをクローンしてインストーラーをローカルで実行します:
```bash
git clone https://github.com/GSD-redux/get-shit-done-redux.git
git clone https://github.com/open-gsd/get-shit-done-redux.git
cd get-shit-done
node bin/install.js --claude --local
```
@@ -847,11 +847,11 @@ OpenCode、Gemini CLI、Kilo、Codexは `npx get-shit-done-redux` でネイテ
## スター履歴
<a href="https://star-history.com/#GSD-redux/get-shit-done-redux&Date">
<a href="https://star-history.com/#open-gsd/get-shit-done-redux&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
</picture>
</a>

View File

@@ -12,9 +12,9 @@
[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![Tests](https://img.shields.io/github/actions/workflow/status/GSD-redux/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/GSD-redux/get-shit-done-redux/actions/workflows/test.yml)
[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r)
[![GitHub stars](https://img.shields.io/github/stars/GSD-redux/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/GSD-redux/get-shit-done-redux)
[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux)
[![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
<br>
@@ -77,7 +77,7 @@ GSD가 그걸 고칩니다. Claude Code를 신뢰할 수 있게 만드는 컨텍
### v1.39.0 하이라이트
전체 목록은 [v1.39.0 릴리스 노트](https://github.com/GSD-redux/get-shit-done-redux/releases/tag/v1.39.0)를 참고하세요.
전체 목록은 [v1.39.0 릴리스 노트](https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.39.0)를 참고하세요.
- **`--minimal` 설치 프로파일** — 별칭 `--core-only`. 메인 루프 6개 스킬(`new-project`, `discuss-phase`, `plan-phase`, `execute-phase`, `help`, `update`)만 설치하고 `gsd-*` 서브에이전트는 설치하지 않음. 콜드 스타트 시스템 프롬프트 오버헤드를 ~12k 토큰에서 ~700 토큰으로 축소(≥94% 감소). 32K–128K 컨텍스트의 로컬 LLM이나 토큰 과금 API에 유용.
- **`/gsd-phase --edit`** — `ROADMAP.md`에 있는 기존 단계의 임의 필드를 그 자리에서 수정(번호와 위치는 변경되지 않음). `--force`는 확인 diff를 건너뛰고, `depends_on` 참조를 검증하며 쓰기 시 `STATE.md`도 갱신.
@@ -180,7 +180,7 @@ npx get-shit-done-redux --all --global # 모든 디렉터리에 설치
저장소를 클론하고 설치 프로그램을 로컬에서 실행합니다:
```bash
git clone https://github.com/GSD-redux/get-shit-done-redux.git
git clone https://github.com/open-gsd/get-shit-done-redux.git
cd get-shit-done
node bin/install.js --claude --local
```
@@ -838,11 +838,11 @@ OpenCode, Gemini CLI, Kilo, Codex는 이제 `npx get-shit-done-redux`를 통해
## 스타 히스토리
<a href="https://star-history.com/#GSD-redux/get-shit-done-redux&Date">
<a href="https://star-history.com/#open-gsd/get-shit-done-redux&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
</picture>
</a>

View File

@@ -40,9 +40,9 @@
[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![Tests](https://img.shields.io/github/actions/workflow/status/GSD-redux/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/GSD-redux/get-shit-done-redux/actions/workflows/test.yml)
[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r)
[![GitHub stars](https://img.shields.io/github/stars/GSD-redux/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/GSD-redux/get-shit-done-redux)
[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux)
[![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
<br>
@@ -277,11 +277,11 @@ Full troubleshooting and uninstall instructions in **[docs/USER-GUIDE.md](docs/U
## Star History
<a href="https://star-history.com/#GSD-redux/get-shit-done-redux&Date">
<a href="https://star-history.com/#open-gsd/get-shit-done-redux&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
</picture>
</a>

View File

@@ -12,9 +12,9 @@
[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![Tests](https://img.shields.io/github/actions/workflow/status/GSD-redux/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/GSD-redux/get-shit-done-redux/actions/workflows/test.yml)
[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r)
[![GitHub stars](https://img.shields.io/github/stars/GSD-redux/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/GSD-redux/get-shit-done-redux)
[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux)
[![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
<br>
@@ -75,7 +75,7 @@ Quality gates embutidos capturam problemas reais: detecção de schema drift sin
### Destaques v1.39.0
Lista completa nas [notas de release v1.39.0](https://github.com/GSD-redux/get-shit-done-redux/releases/tag/v1.39.0).
Lista completa nas [notas de release v1.39.0](https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.39.0).
- **Perfil de instalação `--minimal`** — alias `--core-only`. Instala apenas os 6 skills do loop principal (`new-project`, `discuss-phase`, `plan-phase`, `execute-phase`, `help`, `update`) e nenhum subagente `gsd-*`. Reduz o overhead do system prompt no cold-start de ~12k para ~700 tokens (≥94% de redução). Útil para LLMs locais com contexto de 32K–128K e APIs cobradas por token.
- **`/gsd-phase --edit`** — edita qualquer campo de uma fase existente em `ROADMAP.md` no lugar, sem alterar o número ou a posição. `--force` pula o diff de confirmação; referências em `depends_on` são validadas e o `STATE.md` é atualizado na escrita.
@@ -469,11 +469,11 @@ OpenCode, Gemini CLI, Kilo e Codex agora são suportados nativamente via `npx ge
## Star History
<a href="https://star-history.com/#GSD-redux/get-shit-done-redux&Date">
<a href="https://star-history.com/#open-gsd/get-shit-done-redux&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
</picture>
</a>

View File

@@ -12,9 +12,9 @@
[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux)
[![Tests](https://img.shields.io/github/actions/workflow/status/GSD-redux/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/GSD-redux/get-shit-done-redux/actions/workflows/test.yml)
[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r)
[![GitHub stars](https://img.shields.io/github/stars/GSD-redux/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/GSD-redux/get-shit-done-redux)
[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux)
[![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
<br>
@@ -75,7 +75,7 @@ GSD 解决的就是这个问题。它是让 Claude Code 变得可靠的上下文
### v1.39.0 亮点
完整列表请参阅 [v1.39.0 发行说明](https://github.com/GSD-redux/get-shit-done-redux/releases/tag/v1.39.0)。
完整列表请参阅 [v1.39.0 发行说明](https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.39.0)。
- **`--minimal` 安装档** — 别名 `--core-only`。仅安装主循环的 6 个核心技能(`new-project`、`discuss-phase`、`plan-phase`、`execute-phase`、`help`、`update`),不安装任何 `gsd-*` 子代理。将冷启动系统提示开销从 ~12k token 降至 ~700 token(≥94% 减少)。适合 32K–128K 上下文的本地 LLM 和按 token 计费的 API。
- **`/gsd-phase --edit`** — 就地修改 `ROADMAP.md` 中已有阶段的任意字段,不改变其编号或位置。`--force` 跳过确认 diff,验证 `depends_on` 引用,并在写入时更新 `STATE.md`。
@@ -182,7 +182,7 @@ npx get-shit-done-redux --all --global # 安装到所有目录
克隆仓库并在本地运行安装器:
```bash
git clone https://github.com/GSD-redux/get-shit-done-redux.git
git clone https://github.com/open-gsd/get-shit-done-redux.git
cd get-shit-done
node bin/install.js --claude --local
```
@@ -819,11 +819,11 @@ OpenCode、Gemini CLI、Kilo 和 Codex 现在都已经通过 `npx get-shit-done-
## Star History
<a href="https://star-history.com/#GSD-redux/get-shit-done-redux&Date">
<a href="https://star-history.com/#open-gsd/get-shit-done-redux&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=GSD-redux/get-shit-done-redux&type=Date" />
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=open-gsd/get-shit-done-redux&type=Date" />
</picture>
</a>

View File

@@ -8553,7 +8553,7 @@ function install(isGlobal, runtime = 'claude', options = {}) {
// Copy agents to agents directory.
// Skipped under --minimal: gsd-* subagent descriptions are eagerly loaded
// into the runtime's Agent tool schema, costing ~6k tokens per turn even
// when no GSD workflow is active. See GSD-redux/get-shit-done-redux#2762.
// when no GSD workflow is active. See open-gsd/get-shit-done-redux#2762.
// Note: agentsSrc is declared as let before the enclosing try block so it
// is accessible by installCodexConfig() in the Codex config section below.
agentsSrc = _stageAgents(path.join(src, 'agents'));
@@ -10425,14 +10425,14 @@ function renderSdkFailFastReport(ir) {
console.error(` Or, if you prefer a one-shot run, clear the npx cache first:`);
console.error(` ${cyan}npx --yes get-shit-done-redux@latest${reset}`);
console.error(` Or build from source (git clone):`);
console.error(` ${cyan}git clone https://github.com/GSD-redux/get-shit-done-redux && cd get-shit-done/sdk && npm install && npm run build${reset}`);
console.error(` ${cyan}git clone https://github.com/open-gsd/get-shit-done-redux && cd get-shit-done/sdk && npm install && npm run build${reset}`);
} else if (ir.context === 'tarball') {
console.error(` The published tarball appears to be missing sdk/dist/ (see #2647).`);
console.error('');
console.error(` Fix: install a version that ships sdk/dist/ globally:`);
console.error(` ${cyan}${ir.fix_command}${reset}`);
console.error(` Or build from source (git clone):`);
console.error(` ${cyan}git clone https://github.com/GSD-redux/get-shit-done-redux && cd get-shit-done/sdk && npm install && npm run build${reset}`);
console.error(` ${cyan}git clone https://github.com/open-gsd/get-shit-done-redux && cd get-shit-done/sdk && npm install && npm run build${reset}`);
} else {
console.error(` Running from a git clone — build the SDK first:`);
console.error(` ${cyan}${ir.fix_command}${reset}`);
@@ -10688,7 +10688,7 @@ function formatStaleStandaloneSdkWarning(info) {
' npm uninstall -g @gsd-redux/sdk',
' npx -y get-shit-done-redux@latest --<runtime> --global',
'',
' Tracking: #3406 — https://github.com/GSD-redux/get-shit-done-redux/issues/3406',
' Tracking: #3406 — https://github.com/open-gsd/get-shit-done-redux/issues/3406',
].join('\n');
}

View File

@@ -120,7 +120,7 @@ User-facing entry points. Each file contains YAML frontmatter (name, description
**Total commands:** see [`docs/INVENTORY.md`](INVENTORY.md#commands) for the authoritative count and full roster.
#### Two-stage hierarchical routing (v1.40, [#2792](https://github.com/GSD-redux/get-shit-done-redux/issues/2792))
#### Two-stage hierarchical routing (v1.40, [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792))
To keep the eager skill-listing token cost low, v1.40 introduces six namespace **meta-skills** (`gsd-workflow`, `gsd-project`, `gsd-quality`, `gsd-context`, `gsd-manage`, `gsd-ideate` — sourced from `commands/gsd/ns-*.md`, but the invocable `name:` is the bare form shown here) layered above the concrete sub-skills. The model sees 6 namespace routers (~120 tokens) instead of a flat 86-skill listing (~2,150 tokens), selects a namespace, then routes to the concrete sub-skill via a routing table embedded in the namespace router's body. Namespace skills are **additive** — every concrete command is still directly invocable.

View File

@@ -57,10 +57,10 @@ If you have a local project that interacted with canary-only features (for insta
## Reporting issues against canary
File against the [issue tracker](https://github.com/GSD-redux/get-shit-done-redux/issues) with the `bug` template. Include the exact canary version (`get-shit-done-redux --version` reports it) so triage can route the report back into the `dev` stream rather than the stable stream.
File against the [issue tracker](https://github.com/open-gsd/get-shit-done-redux/issues) with the `bug` template. Include the exact canary version (`get-shit-done-redux --version` reports it) so triage can route the report back into the `dev` stream rather than the stable stream.
## Where to look next
- Active canary release notes: [`docs/RELEASE-v1.50.0-canary.1.md`](RELEASE-v1.50.0-canary.1.md)
- Stable release notes: [`CHANGELOG.md`](../CHANGELOG.md)
- Stream architecture rationale: discussed across [#2727](https://github.com/GSD-redux/get-shit-done-redux/issues/2727), [#2773](https://github.com/GSD-redux/get-shit-done-redux/issues/2773) (codex schema-break and the resulting promotion bottleneck that motivated explicit stream isolation)
- Stream architecture rationale: discussed across [#2727](https://github.com/open-gsd/get-shit-done-redux/issues/2727), [#2773](https://github.com/open-gsd/get-shit-done-redux/issues/2773) (codex schema-break and the resulting promotion bottleneck that motivated explicit stream isolation)

View File

@@ -16,7 +16,7 @@ The hyphen and colon forms are *runtime-specific spellings of the same command*.
## Namespace Meta-Skills
Six namespace routers ship as the first-stage entry points in v1.40. They keep the eager skill-listing token cost low (~120 tokens for 6 routers vs ~2,150 for a flat 86-skill listing) while the full surface remains directly invocable. The model selects a namespace, then routes to the concrete sub-skill. See [#2792](https://github.com/GSD-redux/get-shit-done-redux/issues/2792).
Six namespace routers ship as the first-stage entry points in v1.40. They keep the eager skill-listing token cost low (~120 tokens for 6 routers vs ~2,150 for a flat 86-skill listing) while the full surface remains directly invocable. The model selects a namespace, then routes to the concrete sub-skill. See [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792).
| Command | Routes to |
|---------|-----------|
@@ -757,7 +757,7 @@ Generate a developer behavioral profile from Claude Code session analysis across
Validate `.planning/` directory integrity. With `--context`, probes the
context-window utilization guard against the 60 % / 70 % thresholds (added
v1.40.0, [#2792](https://github.com/GSD-redux/get-shit-done-redux/issues/2792)).
v1.40.0, [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792)).
| Flag | Description |
|------|-------------|

View File

@@ -136,11 +136,11 @@ GSD stores project settings in `.planning/config.json`. Created during `/gsd-new
|---------|------|---------|---------|-------------|
| `mode` | enum | `interactive`, `yolo` | `interactive` | `yolo` auto-approves decisions; `interactive` confirms at each step |
| `granularity` | enum | `coarse`, `standard`, `fine` | `standard` | Controls phase count: `coarse` (3-5), `standard` (5-8), `fine` (8-12) |
| `model_profile` | enum | `quality`, `balanced`, `budget`, `adaptive`, `inherit` | `balanced` | Model tier for each agent (see [Model Profiles](#model-profiles)). `adaptive` was added per [#1713](https://github.com/GSD-redux/get-shit-done-redux/issues/1713) / [#1806](https://github.com/GSD-redux/get-shit-done-redux/issues/1806) and resolves the same way as the other tiers under runtime-aware profiles. |
| `runtime` | string | `claude`, `codex`, or any string | (none) | Active runtime for [runtime-aware profile resolution](#runtime-aware-profiles-2517). When set, profile tiers (opus/sonnet/haiku) resolve to runtime-native model IDs. Today only the Codex install path emits per-agent model IDs from this resolver; other runtimes (`opencode`, `gemini`, `qwen`, `copilot`, …) consume the resolver at spawn time and gain dedicated install-path support in [#2612](https://github.com/GSD-redux/get-shit-done-redux/issues/2612). When unset (default), behavior is unchanged from prior versions. Added in v1.39 |
| `model_profile` | enum | `quality`, `balanced`, `budget`, `adaptive`, `inherit` | `balanced` | Model tier for each agent (see [Model Profiles](#model-profiles)). `adaptive` was added per [#1713](https://github.com/open-gsd/get-shit-done-redux/issues/1713) / [#1806](https://github.com/open-gsd/get-shit-done-redux/issues/1806) and resolves the same way as the other tiers under runtime-aware profiles. |
| `runtime` | string | `claude`, `codex`, or any string | (none) | Active runtime for [runtime-aware profile resolution](#runtime-aware-profiles-2517). When set, profile tiers (opus/sonnet/haiku) resolve to runtime-native model IDs. Today only the Codex install path emits per-agent model IDs from this resolver; other runtimes (`opencode`, `gemini`, `qwen`, `copilot`, …) consume the resolver at spawn time and gain dedicated install-path support in [#2612](https://github.com/open-gsd/get-shit-done-redux/issues/2612). When unset (default), behavior is unchanged from prior versions. Added in v1.39 |
| `model_profile_overrides.<runtime>.<tier>` | string \| object | per-runtime tier override | (none) | Override the runtime-aware tier mapping for a specific `(runtime, tier)`. Tier is one of `opus`, `sonnet`, `haiku`. Value is either a model ID string (e.g. `"gpt-5-pro"`) or `{ model, reasoning_effort }`. See [Runtime-Aware Profiles](#runtime-aware-profiles-2517). Added in v1.39 |
| `models.<phase_type>` | enum | `opus`, `sonnet`, `haiku`, `inherit` | (none) | Per-phase-type model tier. Six accepted slots: `planning`, `discuss`, `research`, `execution`, `verification`, `completion`. Lets you tune at the phase level ("Opus for planning, Sonnet for the rest") without learning agent names. Resolves between `model_overrides` (higher) and `model_profile` (lower); see [Per-Phase-Type Models](#per-phase-type-models-models--added-in-v140). Added in v1.40 ([#3023](https://github.com/GSD-redux/get-shit-done-redux/pull/3030)) |
| `dynamic_routing.enabled` | boolean | `true`, `false` | `false` | Master switch for [dynamic routing with failure-tier escalation](#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140). When `true`, agents resolve to `tier_models[default_tier]` and escalate one tier up on orchestrator-detected soft failure. Added in v1.40 ([#3024](https://github.com/GSD-redux/get-shit-done-redux/pull/3031)) |
| `models.<phase_type>` | enum | `opus`, `sonnet`, `haiku`, `inherit` | (none) | Per-phase-type model tier. Six accepted slots: `planning`, `discuss`, `research`, `execution`, `verification`, `completion`. Lets you tune at the phase level ("Opus for planning, Sonnet for the rest") without learning agent names. Resolves between `model_overrides` (higher) and `model_profile` (lower); see [Per-Phase-Type Models](#per-phase-type-models-models--added-in-v140). Added in v1.40 ([#3023](https://github.com/open-gsd/get-shit-done-redux/pull/3030)) |
| `dynamic_routing.enabled` | boolean | `true`, `false` | `false` | Master switch for [dynamic routing with failure-tier escalation](#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140). When `true`, agents resolve to `tier_models[default_tier]` and escalate one tier up on orchestrator-detected soft failure. Added in v1.40 ([#3024](https://github.com/open-gsd/get-shit-done-redux/pull/3031)) |
| `dynamic_routing.tier_models.<tier>` | enum | `opus`, `sonnet`, `haiku` | (none) | Tier alias for `light`, `standard`, or `heavy`. Used when `dynamic_routing.enabled: true`. Added in v1.40 |
| `dynamic_routing.escalate_on_failure` | boolean | `true`, `false` | `true` | When `false`, escalation is disabled even if `enabled: true` — every attempt uses the default tier. Added in v1.40 |
| `dynamic_routing.max_escalations` | integer | `0`, `1`, `2`, … | `1` | Hard cap on retries per agent invocation. Beyond the cap the resolver returns the cap-tier model. Added in v1.40 |
@@ -258,7 +258,7 @@ All workflow toggles follow the **absent = enabled** pattern. If a key is missin
| `executor.stall_detect_interval_minutes` | number | `5` | Minutes between executor stall checks while an executor agent is active. The execute-phase orchestrator uses this cadence to inspect recent commits and avoid waiting forever on a silent agent. |
| `executor.stall_threshold_minutes` | number | `10` | Minutes without executor completion or expected-branch commit activity before execute-phase offers recovery choices for a possible stalled executor. |
| `workflow.inline_plan_threshold` | number | `3` | Maximum number of tasks in a phase before the planner generates a separate PLAN.md file instead of inlining tasks in the prompt |
| `workflow.drift_threshold` | number | `3` | Minimum number of new structural elements (new directories, barrel exports, migrations, route modules) introduced during a phase before the post-execute codebase-drift gate takes action. See [#2003](https://github.com/GSD-redux/get-shit-done-redux/issues/2003). Added in v1.39 |
| `workflow.drift_threshold` | number | `3` | Minimum number of new structural elements (new directories, barrel exports, migrations, route modules) introduced during a phase before the post-execute codebase-drift gate takes action. See [#2003](https://github.com/open-gsd/get-shit-done-redux/issues/2003). Added in v1.39 |
| `workflow.drift_action` | string | `warn` | What to do when `workflow.drift_threshold` is exceeded after `/gsd-execute-phase`. `warn` prints a message suggesting `/gsd-map-codebase --paths …`; `auto-remap` spawns `gsd-codebase-mapper` scoped to the affected paths. Added in v1.39 |
| `workflow.build_command` | string | (none) | Shell command to build the project in the post-merge build gate (Step A of step 5.6 in execute-phase). When unset, the gate auto-detects: Xcode (`.xcodeproj` present) → `xcodebuild build`, `Makefile` with `build:` target → `make build`, Justfile → `just build`, `Cargo.toml` → `cargo build`, `go.mod` → `go build ./...`, Python → `python -m py_compile`, `package.json` with `build` script → `npm run build`. Runs with a 5-minute timeout; failure increments `WAVE_FAILURE_COUNT`. Added in v1.39 |
| `workflow.test_command` | string | (none) | Shell command to run the project's test suite in the post-merge test gate (Step B of step 5.6 in execute-phase) and the regression gate. When unset, the gate auto-detects: Xcode (`.xcodeproj` present) → `xcodebuild test`, `Makefile` with `test:` target → `make test`, Justfile → `just test`, `package.json` → `npm test`, `Cargo.toml` → `cargo test`, `go.mod` → `go test ./...`, Python → `python -m pytest`. Runs with a 5-minute timeout; failure increments `WAVE_FAILURE_COUNT`. Added in v1.39 |
@@ -811,7 +811,7 @@ for the change to take effect. See issue #2256.
### Per-Phase-Type Models (`models`) — added in v1.41
> Express tuning at the **phase** level (planning, research, execution, verification) without learning the agent taxonomy. Added in [#3023](https://github.com/GSD-redux/get-shit-done-redux/pull/3030).
> Express tuning at the **phase** level (planning, research, execution, verification) without learning the agent taxonomy. Added in [#3023](https://github.com/open-gsd/get-shit-done-redux/pull/3030).
`model_overrides` is per-**agent** (precise but verbose; you have to know that `gsd-codebase-mapper` is research and `gsd-doc-writer` is execution). The `models` block lets you say "Opus for planning and execution, Sonnet for the rest" in two lines:
@@ -895,7 +895,7 @@ Direct edits to `.planning/config.json` are looser — the resolver simply ignor
### Dynamic Routing with Failure-Tier Escalation (`dynamic_routing`) — added in v1.41
> Start cheap, escalate only when the agent fails the gate. Added in [#3024](https://github.com/GSD-redux/get-shit-done-redux/pull/3031).
> Start cheap, escalate only when the agent fails the gate. Added in [#3024](https://github.com/open-gsd/get-shit-done-redux/pull/3031).
`dynamic_routing` lets you pay for the cheap tier by default and only escalate to the more expensive tier when the orchestrator detects a soft failure (verification inconclusive, plan-check FLAG, etc.).
@@ -974,7 +974,7 @@ The `dynamic_routing` block is **disabled by default** — `enabled: false` (or
### Non-Claude Runtimes (Codex, OpenCode, Gemini CLI, Kilo)
> **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/GSD-redux/get-shit-done-redux/issues/3562)).
> **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/open-gsd/get-shit-done-redux/issues/3562)).
>
> [Codex CLI 0.130.0](https://github.com/openai/codex/releases/tag/rust-v0.130.0) (released 2026-05-08) removed extra-skills-roots discovery via [openai/codex#21485](https://github.com/openai/codex/pull/21485). From this version forward, Codex CLI only scans `~/.codex/skills/<name>/SKILL.md`, `<project>/.codex/skills/`, and registered plugin roots for invocable skills. GSD installs the `$gsd-*` surface as `~/.codex/skills/gsd-<name>/SKILL.md` so commands resolve after a Codex restart. Earlier Codex CLI versions can show a duplicate listing (the legacy extra-roots scan plus the user-root copies) — restart Codex and either upgrade to ≥ 0.130.0 or accept the duplicates until you do.

View File

@@ -2644,7 +2644,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style
- REQ-CONSOLIDATE-03: Deleted micro-skill slash forms (the bare `gsd-add-todo`, `gsd-add-backlog`, `gsd-plant-seed`, `gsd-check-todos`, `gsd-add-phase`, `gsd-insert-phase`, `gsd-remove-phase`, `gsd-edit-phase`, `gsd-new-workspace`, `gsd-list-workspaces`, `gsd-remove-workspace`, `gsd-settings-advanced`, `gsd-settings-integrations`, `gsd-set-profile`, `gsd-sketch-wrap-up`, `gsd-spike-wrap-up`, `gsd-reapply-patches`, `gsd-code-review-fix`, …) MUST resolve to "Unknown command" — no shadow stubs.
- REQ-CONSOLIDATE-04: `autonomous.md` invokes `/gsd-code-review --fix` (was previously calling the deleted `gsd-code-review-fix`).
**Reference issue:** [#2790](https://github.com/GSD-redux/get-shit-done-redux/issues/2790)
**Reference issue:** [#2790](https://github.com/open-gsd/get-shit-done-redux/issues/2790)
---
@@ -2672,7 +2672,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style
- REQ-NS-02: Existing sub-skills are unchanged and still invocable directly — namespace skills are additive, not a replacement for direct slash forms.
- REQ-NS-03: The body of each namespace router contains a routing table that maps user intent to the correct concrete sub-skill on the post-#2790 consolidated surface.
**Reference issue:** [#2792](https://github.com/GSD-redux/get-shit-done-redux/issues/2792)
**Reference issue:** [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792)
---
@@ -2687,7 +2687,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style
- REQ-CTX-GUARD-02: The same triage is exposed as `gsd-sdk query validate.context --tokens-used <int> --context-window <int>` — a structured envelope for status-line and hook callers (#125). Both flags are required; the handler returns the same `{ percent, state }` envelope as the pure classifier in REQ-CTX-GUARD-03.
- REQ-CTX-GUARD-03: The classifier (`bin/lib/context-utilization.cjs`) is pure: input `(tokensUsed, contextWindow)`, output `{ percent, state }`. Easy to unit-test, easy to reuse from any caller.
**Reference issue:** [#2792](https://github.com/GSD-redux/get-shit-done-redux/issues/2792)
**Reference issue:** [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792)
---
@@ -2704,7 +2704,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style
- REQ-LIFECYCLE-02: `formatGsdState()` checks the lifecycle fields in priority order and emits the first matching scene (Phase active → Idle next-recommended → Milestone complete → Default fallback).
- REQ-LIFECYCLE-03: All four fields default to undefined; existing STATE.md files render byte-for-byte identically.
**Reference issue:** [#2833](https://github.com/GSD-redux/get-shit-done-redux/issues/2833) — see [`docs/STATE-MD-LIFECYCLE.md`](STATE-MD-LIFECYCLE.md) for the full field reference and rendering rules.
**Reference issue:** [#2833](https://github.com/open-gsd/get-shit-done-redux/issues/2833) — see [`docs/STATE-MD-LIFECYCLE.md`](STATE-MD-LIFECYCLE.md) for the full field reference and rendering rules.
---
@@ -2744,7 +2744,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style
- REQ-PHASE-MODELS-02: Configs without a `models` block behave byte-for-byte identically to pre-v1.41 behavior.
- REQ-PHASE-MODELS-03: `discuss` and `completion` are accepted by the schema for forward compatibility; setting them today is a no-op until a subagent maps to each.
**Reference issue:** [#3023](https://github.com/GSD-redux/get-shit-done-redux/pull/3030)
**Reference issue:** [#3023](https://github.com/open-gsd/get-shit-done-redux/pull/3030)
---
@@ -2765,7 +2765,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style
- REQ-DYNROUTE-02: New resolver `resolveModelForTier(cwd, agent, attempt)` in `core.cjs` is the single call-site for orchestrator integration.
- REQ-DYNROUTE-03: `max_escalations` caps the escalation chain to prevent runaway cost.
**Reference issue:** [#3024](https://github.com/GSD-redux/get-shit-done-redux/pull/3031)
**Reference issue:** [#3024](https://github.com/open-gsd/get-shit-done-redux/pull/3031)
---
@@ -2785,7 +2785,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style
- REQ-BANNER-02: No additional network requests — reuses the existing background update-check cache.
- REQ-BANNER-03: Uninstall path removes the banner hook.
**Reference issue:** [#2795](https://github.com/GSD-redux/get-shit-done-redux/pull/2795)
**Reference issue:** [#2795](https://github.com/open-gsd/get-shit-done-redux/pull/2795)
---
@@ -2804,7 +2804,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style
No new commands or daemon process — purely a documentation artifact that maps existing primitives onto a tracker-driven workflow.
**Reference issue:** [#2840](https://github.com/GSD-redux/get-shit-done-redux/pull/2840)
**Reference issue:** [#2840](https://github.com/open-gsd/get-shit-done-redux/pull/2840)
---
@@ -2832,7 +2832,7 @@ Source commit: abc1234 (3 commits behind HEAD)
**Fallback:** pre-v0.7 graphs and non-git checkouts return `commit_stale: null`; callers fall back to the existing mtime-based `stale` flag. No behavior change for existing users.
**Reference issue:** [#3170](https://github.com/GSD-redux/get-shit-done-redux/issues/3170)
**Reference issue:** [#3170](https://github.com/open-gsd/get-shit-done-redux/issues/3170)
---
@@ -2853,7 +2853,7 @@ CLI flag → ROADMAP `**Mode:** mvp` → `workflow.mvp_mode` config → `false`
**Bug fix:** `roadmap.get-phase --pick mode` in the SDK's `roadmap.ts` previously returned `null` for phases with `**Mode:** mvp`, causing MVP_MODE to silently fall through to false on the native dispatch path. Restores parity with the CJS implementation.
**Reference issue:** [#3178](https://github.com/GSD-redux/get-shit-done-redux/pull/3178)
**Reference issue:** [#3178](https://github.com/open-gsd/get-shit-done-redux/pull/3178)
---

View File

@@ -60,7 +60,7 @@ Full roster at `commands/gsd/*.md`. The groupings below mirror `docs/COMMANDS.md
### Namespace Meta-Skills
These six routers are descriptor-only entries that the model picks first; the body of each contains a routing table that points at the correct concrete sub-skill. They exist to keep the eager skill-listing token cost low while the full surface remains reachable. See [#2792](https://github.com/GSD-redux/get-shit-done-redux/issues/2792) for the rationale; the routing tables target the post-[#2790](https://github.com/GSD-redux/get-shit-done-redux/issues/2790) consolidated surface.
These six routers are descriptor-only entries that the model picks first; the body of each contains a routing table that points at the correct concrete sub-skill. They exist to keep the eager skill-listing token cost low while the full surface remains reachable. See [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792) for the rationale; the routing tables target the post-[#2790](https://github.com/open-gsd/get-shit-done-redux/issues/2790) consolidated surface.
| Command | Role | Source |
|---------|------|--------|

View File

@@ -1,7 +1,7 @@
# STATE.md Phase Lifecycle Frontmatter
> **Status:** Read-side shipped in v1.40.0 (issue
> [#2833](https://github.com/GSD-redux/get-shit-done-redux/issues/2833)).
> [#2833](https://github.com/open-gsd/get-shit-done-redux/issues/2833)).
> `parseStateMd()` reads the four frontmatter fields below and
> `formatGsdState()` renders the in-flight / idle / progress scenes.
> SDK write-side support to maintain the fields automatically is tracked

View File

@@ -2,7 +2,7 @@
This project's `tests/` directory uses **filename suffix markers** to group tests into named suites. The harness `scripts/run-tests.cjs` filters by suite when given `--suite <name>`. Without a flag it runs every `*.test.cjs` file (the historical default — unchanged).
> Tracked by issue [#3597](https://github.com/GSD-redux/get-shit-done-redux/issues/3597).
> Tracked by issue [#3597](https://github.com/open-gsd/get-shit-done-redux/issues/3597).
## Suites

View File

@@ -1219,7 +1219,7 @@ For the full audit, harness reference, and the composition note with `model_prof
### Using Non-Claude Runtimes (Codex, OpenCode, Gemini CLI, Kilo)
> **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/GSD-redux/get-shit-done-redux/issues/3562)).
> **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/open-gsd/get-shit-done-redux/issues/3562)).
>
> Codex CLI [0.130.0](https://github.com/openai/codex/releases/tag/rust-v0.130.0) (released 2026-05-08) removed extra-skills-roots discovery via [openai/codex#21485](https://github.com/openai/codex/pull/21485). From that version onward, Codex only discovers commands from `~/.codex/skills/<name>/SKILL.md` (user root), `<project>/.codex/skills/` (cwd root), and registered plugin roots. The GSD installer writes `~/.codex/skills/gsd-<name>/SKILL.md` directly so `$gsd-help`, `$gsd-new-project`, etc. are discoverable after restart.
>
@@ -1295,7 +1295,7 @@ Skills are installed to `~/.qwen/skills/gsd-*/SKILL.md`. Use the `QWEN_CONFIG_DI
Many supported runtimes ship a prerelease edition alongside their stable release — Windsurf Next, Cursor Nightly, VS Code Insiders, Codex preview channels, JetBrains EAP, and so on. Prerelease editions read from a sibling configuration directory, so the default install path won't reach them.
GSD does not enumerate prerelease editions as separate named runtimes. They are accommodated through the existing `<RUNTIME>_CONFIG_DIR` environment variables and the free-string runtime policy (see [#2517](https://github.com/GSD-redux/get-shit-done-redux/issues/2517)) — installs work, paths resolve, GSD operates. Prerelease editions are **best-effort and not separately tested** as part of release CI.
GSD does not enumerate prerelease editions as separate named runtimes. They are accommodated through the existing `<RUNTIME>_CONFIG_DIR` environment variables and the free-string runtime policy (see [#2517](https://github.com/open-gsd/get-shit-done-redux/issues/2517)) — installs work, paths resolve, GSD operates. Prerelease editions are **best-effort and not separately tested** as part of release CI.
**Pattern.** Set the runtime's `*_CONFIG_DIR` env var to the prerelease directory before running the installer:

View File

@@ -48,4 +48,4 @@ Future direction (deferred): the hub should consult `manifest` to detect per-sub
## References
- Extends ADR-0001 (Dispatch Policy Module) — the hub implements the no-throw + structured-result contract ADR-0001 established for the SDK query layer, applying it to the CJS adapter layer.
- Issue: [#3788](https://github.com/GSD-redux/get-shit-done-redux/issues/3788)
- Issue: [#3788](https://github.com/open-gsd/get-shit-done-redux/issues/3788)

View File

@@ -2,7 +2,7 @@
- **Status:** Proposed
- **Date:** 2026-05-14
- **Tracking issue:** [#3524](https://github.com/GSD-redux/get-shit-done-redux/issues/3524)
- **Tracking issue:** [#3524](https://github.com/open-gsd/get-shit-done-redux/issues/3524)
- **Related PRD:** [`docs/prd/3524-cjs-sdk-hard-seam.md`](../prd/3524-cjs-sdk-hard-seam.md)
- **Extends:** ADR-0005 (seam map) — adds the **Shared-Module Source Policy** to the seam family
- **Defers to:** ADR-0001 (Dispatch Policy Module), ADR-0003 (Model Catalog Module), ADR-0004 (Planning Workspace Module), ADR-0006 (Planning Path Projection Module), ADR-0009 (Shell Command Projection Module — post-Phase 3–4, also subsuming superseded ADR-0010)

View File

@@ -9,13 +9,13 @@ The CJS↔SDK hard-seam migration (#3524) eliminates a class of config-schema dr
| Phase | PR | Summary |
|-------|----|---------|
| Phase 1 | [#3531](https://github.com/GSD-redux/get-shit-done-redux/pull/3531) | `state-document` Shared Module — source-of-truth at `sdk/src/state-document/`, generator, freshness check, CJS Adapter (`state-document.generated.cjs`). Worked example for the pattern. |
| Phase 2 | [#3540](https://github.com/GSD-redux/get-shit-done-redux/pull/3540) | `configuration` Shared Module — `sdk/shared/config-schema.manifest.json` + `sdk/shared/config-defaults.manifest.json` as data manifests; generator + freshness check + CJS Adapter. |
| Phase 3 | [#3548](https://github.com/GSD-redux/get-shit-done-redux/pull/3548) | `workstream-inventory` Shared Module — source-of-truth at `sdk/src/workstream-inventory/`, builder, generator, freshness check, CJS Adapter. |
| Phase 4 | [#3554](https://github.com/GSD-redux/get-shit-done-redux/pull/3554) | `project-root` Shared Module — source-of-truth at `sdk/src/project-root/`, generator, freshness check, CJS Adapter. |
| Phase 5.0 | [#3558](https://github.com/GSD-redux/get-shit-done-redux/pull/3558) | `runtime-bridge-sync` worker — enables CJS-side execution of SDK native handlers; state.* family initial router delegation via `executeForCjs`. |
| Phase 5.1 | [#3574](https://github.com/GSD-redux/get-shit-done-redux/pull/3574) | `state.*` router delegation complete — all known state subcommands delegated via `executeForCjs`; Phase 5.0 worker bug fix. |
| Phase 6 | [#3577](https://github.com/GSD-redux/get-shit-done-redux/pull/3577) (closes [#3575](https://github.com/GSD-redux/get-shit-done-redux/issues/3575)) | Enforcement hardening + Final completion — hand-sync drift lint, CODEOWNERS, 6 family-router migrations, 5 Shared Module migrations (plan-scan, secrets, schema-detect, decisions, workstream-name-policy), workstream native support, parity fixes. Migration feature-complete: 22 cooperating siblings, 0 backlog pairs. |
| Phase 1 | [#3531](https://github.com/open-gsd/get-shit-done-redux/pull/3531) | `state-document` Shared Module — source-of-truth at `sdk/src/state-document/`, generator, freshness check, CJS Adapter (`state-document.generated.cjs`). Worked example for the pattern. |
| Phase 2 | [#3540](https://github.com/open-gsd/get-shit-done-redux/pull/3540) | `configuration` Shared Module — `sdk/shared/config-schema.manifest.json` + `sdk/shared/config-defaults.manifest.json` as data manifests; generator + freshness check + CJS Adapter. |
| Phase 3 | [#3548](https://github.com/open-gsd/get-shit-done-redux/pull/3548) | `workstream-inventory` Shared Module — source-of-truth at `sdk/src/workstream-inventory/`, builder, generator, freshness check, CJS Adapter. |
| Phase 4 | [#3554](https://github.com/open-gsd/get-shit-done-redux/pull/3554) | `project-root` Shared Module — source-of-truth at `sdk/src/project-root/`, generator, freshness check, CJS Adapter. |
| Phase 5.0 | [#3558](https://github.com/open-gsd/get-shit-done-redux/pull/3558) | `runtime-bridge-sync` worker — enables CJS-side execution of SDK native handlers; state.* family initial router delegation via `executeForCjs`. |
| Phase 5.1 | [#3574](https://github.com/open-gsd/get-shit-done-redux/pull/3574) | `state.*` router delegation complete — all known state subcommands delegated via `executeForCjs`; Phase 5.0 worker bug fix. |
| Phase 6 | [#3577](https://github.com/open-gsd/get-shit-done-redux/pull/3577) (closes [#3575](https://github.com/open-gsd/get-shit-done-redux/issues/3575)) | Enforcement hardening + Final completion — hand-sync drift lint, CODEOWNERS, 6 family-router migrations, 5 Shared Module migrations (plan-scan, secrets, schema-detect, decisions, workstream-name-policy), workstream native support, parity fixes. Migration feature-complete: 22 cooperating siblings, 0 backlog pairs. |
---
@@ -203,13 +203,13 @@ If the module affects `CONTEXT.md`'s module inventory, update that section. Also
Add the new source-of-truth path to `.github/CODEOWNERS` under the Phase 6 block to make the architectural ownership explicit.
**Reference:** Phase 1 PR [#3531](https://github.com/GSD-redux/get-shit-done-redux/pull/3531) — `state-document` migration.
**Reference:** Phase 1 PR [#3531](https://github.com/open-gsd/get-shit-done-redux/pull/3531) — `state-document` migration.
---
## Guide: Adding a new canonical command
Use this when adding a new `gsd-sdk query <family>.<subcommand>` that should be handled natively in the SDK (not delegated to CJS). Phase 5.1's `state.update` migration (PR [#3574](https://github.com/GSD-redux/get-shit-done-redux/pull/3574)) is the worked example.
Use this when adding a new `gsd-sdk query <family>.<subcommand>` that should be handled natively in the SDK (not delegated to CJS). Phase 5.1's `state.update` migration (PR [#3574](https://github.com/open-gsd/get-shit-done-redux/pull/3574)) is the worked example.
**Step 1 — Declare in the command manifest**
@@ -232,7 +232,7 @@ Add a test in `tests/<family>-command-router.test.cjs` (or a new file if the fam
This test enforces that the delegate and the native handler stay aligned.
**Reference:** Phase 5.1 PR [#3574](https://github.com/GSD-redux/get-shit-done-redux/pull/3574) — `state.update` delegation.
**Reference:** Phase 5.1 PR [#3574](https://github.com/open-gsd/get-shit-done-redux/pull/3574) — `state.update` delegation.
---

View File

@@ -1,6 +1,6 @@
# Issue tracker: GitHub
Issues for this repo live in **GitHub Issues** at `GSD-redux/get-shit-done-redux`.
Issues for this repo live in **GitHub Issues** at `open-gsd/get-shit-done-redux`.
## Auth
@@ -9,19 +9,19 @@ repo-local `.envrc` before running `gh`.
## Conventions
- **Create**: `gh issue create --repo GSD-redux/get-shit-done-redux --title "..." --body "..."`
- **Read**: `gh issue view <number> --repo GSD-redux/get-shit-done-redux --comments`
- **List**: `gh issue list --repo GSD-redux/get-shit-done-redux --state open --json number,title,labels --jq '...'`
- **Comment**: `gh issue comment <number> --repo GSD-redux/get-shit-done-redux --body "..."`
- **Label**: `gh issue edit <number> --repo GSD-redux/get-shit-done-redux --add-label "..." --remove-label "..."`
- **Close**: `gh issue close <number> --repo GSD-redux/get-shit-done-redux --comment "..."`
- **Create**: `gh issue create --repo open-gsd/get-shit-done-redux --title "..." --body "..."`
- **Read**: `gh issue view <number> --repo open-gsd/get-shit-done-redux --comments`
- **List**: `gh issue list --repo open-gsd/get-shit-done-redux --state open --json number,title,labels --jq '...'`
- **Comment**: `gh issue comment <number> --repo open-gsd/get-shit-done-redux --body "..."`
- **Label**: `gh issue edit <number> --repo open-gsd/get-shit-done-redux --add-label "..." --remove-label "..."`
- **Close**: `gh issue close <number> --repo open-gsd/get-shit-done-redux --comment "..."`
Always pass `--repo GSD-redux/get-shit-done-redux` explicitly — the local clone has multiple remotes and `gh` may resolve to the wrong one.
Always pass `--repo open-gsd/get-shit-done-redux` explicitly — the local clone has multiple remotes and `gh` may resolve to the wrong one.
## When a skill says "publish to the issue tracker"
Create a GitHub issue at `GSD-redux/get-shit-done-redux`.
Create a GitHub issue at `open-gsd/get-shit-done-redux`.
## When a skill says "fetch the relevant ticket"
Run `gh issue view <number> --repo GSD-redux/get-shit-done-redux --comments`.
Run `gh issue view <number> --repo open-gsd/get-shit-done-redux --comments`.

View File

@@ -1,6 +1,6 @@
# Triage Labels
Maps the five canonical triage roles to the actual label strings in `GSD-redux/get-shit-done-redux`.
Maps the five canonical triage roles to the actual label strings in `open-gsd/get-shit-done-redux`.
| Canonical role | Label in this repo | Notes |
|-------------------|--------------------------|----------------------------------------------------------------|

View File

@@ -36,13 +36,13 @@ immutable once created. Tag creation is unrestricted.
```bash
# Dry-run (evaluate mode — logs violations, does not block)
REPO=GSD-redux/get-shit-done-redux ENFORCEMENT=evaluate bash scripts/sync-rulesets.sh
REPO=open-gsd/get-shit-done-redux ENFORCEMENT=evaluate bash scripts/sync-rulesets.sh
# Activate protection
REPO=GSD-redux/get-shit-done-redux ENFORCEMENT=active bash scripts/sync-rulesets.sh
REPO=open-gsd/get-shit-done-redux ENFORCEMENT=active bash scripts/sync-rulesets.sh
# Roll back to disabled
REPO=GSD-redux/get-shit-done-redux ENFORCEMENT=disabled bash scripts/sync-rulesets.sh
REPO=open-gsd/get-shit-done-redux ENFORCEMENT=disabled bash scripts/sync-rulesets.sh
```
The script is idempotent: running it twice with the same `ENFORCEMENT` value
@@ -53,7 +53,7 @@ is a no-op semantically (PUT with identical body).
After applying with `evaluate`, check which PRs/pushes would have been blocked:
```bash
REPO=GSD-redux/get-shit-done-redux
REPO=open-gsd/get-shit-done-redux
RULESET_ID=$(gh api repos/$REPO/rulesets --jq '.[] | select(.name=="main-protection") | .id')
gh api repos/$REPO/rulesets/$RULESET_ID/rule-suites
```

View File

@@ -28,7 +28,7 @@ Currently, Grok Build is only supported via its Claude compatibility layer. This
## 2. Current Multi-Runtime Setup (as of May 2026)
### Development Source (Single Source of Truth)
- **Path:** `/home/cristian/bum/get-shit-done` (this repo — your working fork of `GSD-redux/get-shit-done-redux`)
- **Path:** `/home/cristian/bum/get-shit-done` (this repo — your working fork of `open-gsd/get-shit-done-redux`)
### Installed Locations
- `~/.agents/get-shit-done/` — Core workflows, references, templates, `gsd-tools.cjs`, `bin/`

View File

@@ -5,7 +5,7 @@ Use this procedure when `npx get-shit-done-redux@latest` is unavailable — e.g.
## Prerequisites
- Node.js installed
- This repo cloned locally (`git clone https://github.com/GSD-redux/get-shit-done-redux`)
- This repo cloned locally (`git clone https://github.com/open-gsd/get-shit-done-redux`)
## Steps

View File

@@ -2,7 +2,7 @@
- **Status:** Reference
- **Date:** 2026-05-14
- **Tracking issue:** [#3524](https://github.com/GSD-redux/get-shit-done-redux/issues/3524)
- **Tracking issue:** [#3524](https://github.com/open-gsd/get-shit-done-redux/issues/3524)
- **Related ADR:** [`docs/adr/3524-cjs-sdk-hard-seam.md`](../adr/3524-cjs-sdk-hard-seam.md)
## Why this PRD exists
@@ -11,7 +11,7 @@ The ADR defines the target architecture — one source of truth per Shared Modul
## Problem statement
The CJS↔SDK boundary in `GSD-redux/get-shit-done-redux` is structurally permeable. Multiple Shared Modules — STATE.md Document Module, Workstream Inventory Module, and several others — exist today as **hand-synced pairs** of `.cjs` and `.ts` files with character-identical implementations. Constants (`CONFIG_DEFAULTS`, `VALID_CONFIG_KEYS`) are likewise defined twice. The boundary is policed only by:
The CJS↔SDK boundary in `open-gsd/get-shit-done-redux` is structurally permeable. Multiple Shared Modules — STATE.md Document Module, Workstream Inventory Module, and several others — exist today as **hand-synced pairs** of `.cjs` and `.ts` files with character-identical implementations. Constants (`CONFIG_DEFAULTS`, `VALID_CONFIG_KEYS`) are likewise defined twice. The boundary is policed only by:
- A naming-parity test (`tests/config-schema-sdk-parity.test.cjs`)
- Output-parity golden tests for read-only handlers (`sdk/src/golden/read-only-parity.integration.test.ts`)

View File

@@ -1,7 +1,7 @@
# Skill surface budget — research memo
**Date:** 2026-05-12
**Author:** triage analysis for issue [#3408](https://github.com/GSD-redux/get-shit-done-redux/issues/3408)
**Author:** triage analysis for issue [#3408](https://github.com/open-gsd/get-shit-done-redux/issues/3408)
**Status:** Research input for ADR-0010
**Reading time:** ~15 min
@@ -260,7 +260,7 @@ Phase 2 — runtime surface command (follow-up ADR or amendment):
## 10. References
- Issue: [#3408](https://github.com/GSD-redux/get-shit-done-redux/issues/3408)
- Issue: [#3408](https://github.com/open-gsd/get-shit-done-redux/issues/3408)
- Existing seam: `get-shit-done/bin/lib/install-profiles.cjs`
- Description lint: `scripts/lint-descriptions.cjs`
- Install dispatcher: `bin/install.js:123` (mode parsing), `bin/install.js:8167-8207` (minimal staging)

View File

@@ -11,7 +11,7 @@ const path = require('node:path');
//
// 2. Source-repo dev path — sdk/shared/model-catalog.json
// Three levels up from bin/lib/: works when running directly from the
// GSD-redux/get-shit-done-redux clone (the original path introduced by #3230).
// open-gsd/get-shit-done-redux clone (the original path introduced by #3230).
//
// 3. GSD_MODEL_CATALOG env override — allows test harnesses and custom
// deployments to point at an arbitrary catalog file.

View File

@@ -256,14 +256,14 @@ If actionable anomalies were found (HIGH or MEDIUM confidence):
If confirmed:
```bash
# Check if "bug" label exists before using it
BUG_LABEL=$(gh label list --repo GSD-redux/get-shit-done-redux --search "bug" --json name -q '.[0].name' 2>/dev/null)
BUG_LABEL=$(gh label list --repo open-gsd/get-shit-done-redux --search "bug" --json name -q '.[0].name' 2>/dev/null)
LABEL_FLAG=""
if [ -n "$BUG_LABEL" ]; then
LABEL_FLAG="--label bug"
fi
gh issue create \
--repo GSD-redux/get-shit-done-redux \
--repo open-gsd/get-shit-done-redux \
--title "bug: {concise description from anomaly}" \
$LABEL_FLAG \
--body "{formatted findings from report}"

View File

@@ -377,8 +377,8 @@ Exit.
```bash
CHANGELOG_TMP="/tmp/gsd-changelog-$$.md"
curl -fsSL "https://raw.githubusercontent.com/gsd-build/get-shit-done/main/CHANGELOG.md" -o "$CHANGELOG_TMP" 2>/dev/null \
|| wget -qO "$CHANGELOG_TMP" "https://raw.githubusercontent.com/gsd-build/get-shit-done/main/CHANGELOG.md" 2>/dev/null
curl -fsSL "https://raw.githubusercontent.com/open-gsd/get-shit-done-redux/main/CHANGELOG.md" -o "$CHANGELOG_TMP" 2>/dev/null \
|| wget -qO "$CHANGELOG_TMP" "https://raw.githubusercontent.com/open-gsd/get-shit-done-redux/main/CHANGELOG.md" 2>/dev/null
EXTRACT_JSON=$(node "$GSD_DIR/get-shit-done/scripts/changeset/cli.cjs" extract \
--from "$INSTALLED_VERSION" \
@@ -631,7 +631,7 @@ Format completion message (changelog was already shown in confirmation step):
⚠️ Restart your runtime to pick up the new commands.
[View full changelog](https://github.com/GSD-redux/get-shit-done-redux/blob/main/CHANGELOG.md)
[View full changelog](https://github.com/open-gsd/get-shit-done-redux/blob/main/CHANGELOG.md)
```
</step>

View File

@@ -38,11 +38,11 @@
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/GSD-redux/get-shit-done-redux.git"
"url": "git+https://github.com/open-gsd/get-shit-done-redux.git"
},
"homepage": "https://github.com/GSD-redux/get-shit-done-redux",
"homepage": "https://github.com/open-gsd/get-shit-done-redux",
"bugs": {
"url": "https://github.com/GSD-redux/get-shit-done-redux/issues"
"url": "https://github.com/open-gsd/get-shit-done-redux/issues"
},
"engines": {
"node": ">=22.0.0"

View File

@@ -32,7 +32,7 @@ function parseArgs(argv) {
toRef: null,
changelog: null,
output: null,
repoSlug: 'GSD-redux/get-shit-done-redux',
repoSlug: 'open-gsd/get-shit-done-redux',
installCommand: 'npx get-shit-done-redux@latest',
json: false,
};

View File

@@ -145,7 +145,7 @@ function serializeGithubReleaseNotes({
ir,
fromRef,
toRef,
repoSlug = 'GSD-redux/get-shit-done-redux',
repoSlug = 'open-gsd/get-shit-done-redux',
installCommand = 'npx get-shit-done-redux@latest',
}) {
if (installCommand.includes('`')) {

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
REPO="${REPO:-GSD-redux/get-shit-done-redux}"
REPO="${REPO:-open-gsd/get-shit-done-redux}"
ENFORCEMENT="${ENFORCEMENT:-evaluate}"
case "$ENFORCEMENT" in

View File

@@ -55,7 +55,7 @@ Use this document at the start of a new session so work continues in context wit
- **Workspace:** `D:\Repos\get-shit-done` (GSD PBR backport initiative).
- **Feature branch:** `feat/sdk-phase3-query-layer` (62 commits ahead of `main`; confirm against `origin` before merging).
- **Upstream PRs:** `GSD-redux/get-shit-done-redux` issue #2302.
- **Upstream PRs:** `open-gsd/get-shit-done-redux` issue #2302.
---

View File

@@ -11,14 +11,14 @@ Paste this document (or `@sdk/HANDOVER-PARITY-DOCS.md`) at the start of a new ch
## Parent tracking
- **Issue:** [GSD-redux/get-shit-done-redux#2302](https://github.com/GSD-redux/get-shit-done-redux/issues/2302) — Phase 3 SDK query parity, registry, docs (parent umbrella #2007).
- **Issue:** [open-gsd/get-shit-done-redux#2302](https://github.com/open-gsd/get-shit-done-redux/issues/2302) — Phase 3 SDK query parity, registry, docs (parent umbrella #2007).
- **Acceptance criteria touched here:** parity coverage/exceptions documented; registry audit reflected in a **matrix** (issue wording: “every required CJS surface either has a handler or appears in the CJS-only matrix with justification”).
## Repo / branch
- **Workspace:** `D:\Repos\get-shit-done` (PBR backport); adjust path if different machine.
- **Feature branch (typical):** `feat/sdk-phase3-query-layer` — confirm with `git branch` before editing.
- **Upstream:** `GSD-redux/get-shit-done-redux`.
- **Upstream:** `open-gsd/get-shit-done-redux`.
## What already exists (do not duplicate blindly)

View File

@@ -4,17 +4,17 @@ Paste this document (or `@sdk/HANDOVER-QUERY-LAYER.md`) at the start of a new se
## Parent tracking
- **Issue:** [GSD-redux/get-shit-done-redux#2302](https://github.com/GSD-redux/get-shit-done-redux/issues/2302) — Phase 3 SDK query parity, registry, docs (umbrella #2007).
- **Workspace:** `D:\Repos\get-shit-done` (PBR backport). **Upstream:** `GSD-redux/get-shit-done-redux`. Confirm branch with `git branch` (typical: `feat/sdk-phase3-query-layer`).
- **Issue:** [open-gsd/get-shit-done-redux#2302](https://github.com/open-gsd/get-shit-done-redux/issues/2302) — Phase 3 SDK query parity, registry, docs (umbrella #2007).
- **Workspace:** `D:\Repos\get-shit-done` (PBR backport). **Upstream:** `open-gsd/get-shit-done-redux`. Confirm branch with `git branch` (typical: `feat/sdk-phase3-query-layer`).
### Scope anchors (do not confuse issues)
| Role | GitHub | Notes |
| --------------------------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Product / requirements anchor** | [#2007](https://github.com/GSD-redux/get-shit-done-redux/issues/2007) | Problem statement, user stories, and target architecture for the SDK-first migration. **Do not** treat its original acceptance-checklist boxes as proof of what is merged upstream; work was split into phased PRs after maintainer review. |
| **Phase 3 execution scope** | [#2302](https://github.com/GSD-redux/get-shit-done-redux/issues/2302) **+ this handover** | What this branch is actually doing now: registry/CLI parity, docs, harness gaps, runner alignment follow-ups as listed below. |
| **Patch mine (if local tree is short)** | [PR #2008](https://github.com/GSD-redux/get-shit-done-redux/pull/2008) and matching branches | Large pre-phasing PR; cherry-pick or compare when something looks missing vs that line of work. |
| **Product / requirements anchor** | [#2007](https://github.com/open-gsd/get-shit-done-redux/issues/2007) | Problem statement, user stories, and target architecture for the SDK-first migration. **Do not** treat its original acceptance-checklist boxes as proof of what is merged upstream; work was split into phased PRs after maintainer review. |
| **Phase 3 execution scope** | [#2302](https://github.com/open-gsd/get-shit-done-redux/issues/2302) **+ this handover** | What this branch is actually doing now: registry/CLI parity, docs, harness gaps, runner alignment follow-ups as listed below. |
| **Patch mine (if local tree is short)** | [PR #2008](https://github.com/open-gsd/get-shit-done-redux/pull/2008) and matching branches | Large pre-phasing PR; cherry-pick or compare when something looks missing vs that line of work. |
---

View File

@@ -21,12 +21,12 @@
],
"repository": {
"type": "git",
"url": "git+https://github.com/GSD-redux/get-shit-done-redux.git",
"url": "git+https://github.com/open-gsd/get-shit-done-redux.git",
"directory": "sdk"
},
"homepage": "https://github.com/GSD-redux/get-shit-done-redux/tree/main/sdk",
"homepage": "https://github.com/open-gsd/get-shit-done-redux/tree/main/sdk",
"bugs": {
"url": "https://github.com/GSD-redux/get-shit-done-redux/issues"
"url": "https://github.com/open-gsd/get-shit-done-redux/issues"
},
"author": "TÂCHES",
"license": "MIT",

View File

@@ -8,7 +8,7 @@
* prompt, so any `agent_skills.<correct-slug>` configuration in
* `.planning/config.json` is silently ignored. This test prevents regression.
*
* Related: https://github.com/GSD-redux/get-shit-done-redux/issues/2615
* Related: https://github.com/open-gsd/get-shit-done-redux/issues/2615
*/
import { describe, it, expect } from 'vitest';
import { readFileSync, readdirSync, statSync } from 'node:fs';

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-redux/get-shit-done-redux/issues/2168
* See: https://github.com/open-gsd/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-redux/get-shit-done-redux/issues/2361
* See: https://github.com/open-gsd/get-shit-done-redux/issues/2361
*/
const { test, describe } = require('node:test');

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-redux/get-shit-done-redux/issues/3670
* @see https://github.com/open-gsd/get-shit-done-redux/issues/3670
*/
'use strict';

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-redux/get-shit-done-redux".
// gsd-build — GitHub organization name: "github.com/open-gsd/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-redux/get-shit-done-redux/issues/2792)").
// (e.g., "[#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792)").
// The regex captures "/gsd-build" from the URL path. Not a slash command.
'build',

View File

@@ -143,25 +143,25 @@ describe('forensics workflow', () => {
);
});
test('workflow submits issues to GSD-redux/get-shit-done-redux, not the current repo', () => {
test('workflow submits issues to open-gsd/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
// contains the repo string.
assert.match(
content,
/gh issue create[\s\S]{0,250}--repo\s+GSD-redux\/get-shit-done-redux/,
'gh issue create must use --repo GSD-redux/get-shit-done-redux to avoid submitting to the user\'s current project repo'
/gh issue create[\s\S]{0,250}--repo\s+open-gsd/get-shit-done-redux/,
'gh issue create must use --repo open-gsd/get-shit-done-redux to avoid submitting to the user\'s current project repo'
);
});
test('workflow checks bug label in GSD-redux/get-shit-done-redux, not the current repo', () => {
test('workflow checks bug label in open-gsd/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-redux\/get-shit-done-redux/,
'gh label list must target GSD-redux/get-shit-done-redux'
/gh label list[\s\S]{0,250}--repo\s+open-gsd/get-shit-done-redux/,
'gh label list must target open-gsd/get-shit-done-redux'
);
});

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-redux/get-shit-done-redux/issues/1343
* Regression tests for: https://github.com/open-gsd/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-redux/get-shit-done-redux/issues/2551 (this test)
* - https://github.com/GSD-redux/get-shit-done-redux/issues/2361 (agent budget)
* - https://github.com/open-gsd/get-shit-done-redux/issues/2551 (this test)
* - https://github.com/open-gsd/get-shit-done-redux/issues/2361 (agent budget)
*/
const { test, describe } = require('node:test');