singularity-forge/src/resources/extensions
Tom Boucher a061e3c276 feat: stop/backtrack capture classifications for milestone regression (#3488)
* feat: add stop/backtrack capture classifications for milestone regression (#3487)

Adds 4-layer methodology for halting auto-mode and backtracking to
previous milestones when captures indicate the user wants to stop or
that a milestone missed critical features:

1. Type layer: "stop" and "backtrack" classification types in captures.ts
2. Guard layer: pre-dispatch stop check in runGuards() pauses auto-mode
   before the next unit dispatches
3. Resolution layer: executeBacktrack() writes BACKTRACK-TRIGGER.md and
   milestone regression markers for state machine detection
4. Protection layer: revertExecutorResolvedCaptures() detects and reverts
   captures silenced by non-triage agents (resolved without classification)

Also adds fast-path stop detection in auto-post-unit.ts that pattern-matches
pending capture text for stop keywords without waiting for triage.

Closes #3487

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add slice-level skip with gsd_skip_slice tool (#3477)

Adds "skipped" as a closed status alongside "complete" and "done":

- status-guards.ts: isClosedStatus() recognizes "skipped"
- state.ts: isStatusDone() recognizes "skipped"
- gsd-db.ts: getActiveSliceFromDb() skips slices with status "skipped"
- db-tools.ts: new gsd_skip_slice tool for rethink and manual use
- rethink.md: added "Skip a slice" operation to rethink prompt
- rethink.ts: buildRethinkData shows skipped slice counts

Skipped slices satisfy dependencies for downstream slices, allowing
auto-mode to advance past them. Slice data is preserved for reference.

Relates to #3477

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve 4 issues found in adversarial review of PR #3488

1. triage-ui.ts: Restore stop/backtrack entries in CLASSIFICATION_LABELS
   and ALL_CLASSIFICATIONS — the Record<Classification, ...> type requires
   all union members, and runtime lookups would crash on stop/backtrack.
   Also auto-confirm stop/backtrack in the triage confirmation flow
   (matching the triage-captures.md prompt directive).

2. triage-resolution.ts: Replace require("node:fs") in clearBacktrackTrigger
   with ESM import of unlinkSync — consistent with the rest of the codebase.

3. auto-post-unit.ts: Anchor STOP_PATTERN regex to start-of-string (^) to
   prevent false positives on captures like "add a pause button" or "stop
   the timer from re-rendering" which are feature descriptions, not halt
   directives.

4. status-guards.test.ts: Add missing test case for isClosedStatus("skipped")
   to cover the new status value.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update tool-naming test count for gsd_skip_slice

The new gsd_skip_slice tool (no alias) brings the total from 29 to 30.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 01:40:33 -04:00
..
async-jobs fix(extensions): update provides.hooks in 7 extension manifests to match actual registrations (#3157) 2026-03-31 11:54:41 -06:00
aws-auth feat: add aws-auth extension for automatic Bedrock credential refresh (#1253) 2026-03-18 15:07:10 -06:00
bg-shell fix(extensions): update provides.hooks in 7 extension manifests to match actual registrations (#3157) 2026-03-31 11:54:41 -06:00
browser-tools fix(extensions): update provides.hooks in 7 extension manifests to match actual registrations (#3157) 2026-03-31 11:54:41 -06:00
claude-code-cli fix: repair YAML bullet lists in malformed tool-call JSON (#3090) 2026-03-30 14:37:09 -06:00
cmux refactor: replace hardcoded /tmp paths with os.tmpdir()/homedir() (#1708) 2026-03-21 08:46:34 -06:00
context7 fix(extensions): update provides.hooks in 7 extension manifests to match actual registrations (#3157) 2026-03-31 11:54:41 -06:00
github-sync refactor: move GSD metadata from commit subject scopes to git trailers 2026-03-25 22:56:48 +00:00
google-search fix(extensions): update provides.hooks in 7 extension manifests to match actual registrations (#3157) 2026-03-31 11:54:41 -06:00
gsd feat: stop/backtrack capture classifications for milestone regression (#3488) 2026-04-04 01:40:33 -04:00
mac-tools feat: add extension manifest + registry for user-managed enable/disable (#1238) 2026-03-18 14:12:19 -06:00
mcp-client fix(mcp): handle server names with spaces in mcp_discover (#3037) 2026-03-30 13:29:14 -06:00
ollama feat(extensions): add Ollama extension for first-class local LLM support (#3371) 2026-04-01 08:37:31 -06:00
remote-questions fix(remote-questions): empty-key entry in auth.json shadows valid Discord bot token (#2737) 2026-03-26 16:16:42 -06:00
search-the-web fix(security): add configurable overrides for command allowlist and SSRF blocklist 2026-04-02 13:45:05 +02:00
shared fix: add free-text input to ask-user-questions when "None of the above" is selected (#3081) 2026-03-30 14:39:35 -06:00
slash-commands refactor: split shared/mod.ts into pure and TUI-dependent barrels (#1807) 2026-03-21 11:48:32 -06:00
subagent Merge pull request #2887 from mastertyko/fix/subagent-project-agents-dir 2026-03-27 17:39:36 -06:00
ttsr feat: add GSD_HOME env var to override global ~/.gsd directory (#1566) 2026-03-20 08:29:01 -06:00
universal-config feat: add extension manifest + registry for user-managed enable/disable (#1238) 2026-03-18 14:12:19 -06:00
voice fix(voice): fix misleading portaudio error on PEP 668 Linux systems (#2403) (#2407) 2026-03-25 08:45:39 -06:00
ask-user-questions.ts fix: add free-text input to ask-user-questions when "None of the above" is selected (#3081) 2026-03-30 14:39:35 -06:00
get-secrets-from-user.ts fix: use loose equality for null checks in secure_env_collect (#2997) (#3231) 2026-03-30 14:32:40 -06:00
package.json Improve startup performance with lazy extension loading (#1336) 2026-03-19 07:38:50 -06:00