Commit graph

1184 commits

Author SHA1 Message Date
Tom Boucher
17ce3085f9 fix: classify terminated/connection errors as transient in provider error handler (#2309) (#2432)
classifyProviderError now recognizes terminated, connection reset, connection
refused, fetch failed, and other network errors as transient. These get a 15s
backoff delay and auto-resume instead of being treated as permanent failures
requiring manual intervention.

Fixes #2309

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:35:19 -06:00
Tom Boucher
5d0c6311f1 fix: archive completed-units.json on milestone transition and sync metrics.json (#2313) (#2431)
Two bugs fixed:
1. completed-units.json was wiped to [] on milestone transition, losing all
   tracking data. Now archived to completed-units-{MID}.json before reset.
2. metrics.json was never synced between worktree and project root. Added to
   syncStateToProjectRoot, syncWorktreeStateBack, and syncGsdStateToWorktree
   file lists.

Fixes #2313

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:35:01 -06:00
Tom Boucher
81de9f60c5 fix: supervision timeouts now respect task est: annotations (#2243) (#2434)
Added parseEstimateMinutes() to parse estimate strings like "30m", "2h",
"1h30m" into minutes. startUnitSupervision now looks up the task estimate
from the DB and scales soft/hard timeouts accordingly. A 30m task gets 3x
the default timeout, a 2h task gets 12x. Idle timeout is not scaled
because idle is idle regardless of task size.

Also added taskEstimate field to SupervisionContext interface for explicit
estimate passing from callers.

Fixes #2243

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:34:45 -06:00
Tom Boucher
2ddb790141 fix: auto_pr: true now actually creates PRs — fix 3 interacting bugs (#2302) (#2433)
Three bugs prevented auto_pr from ever creating a PR:

1. auto_pr was gated on `pushed` flag which requires auto_push to also be
   true. Changed condition to `!nothingToCommit` so auto_pr works independently.

2. phases.ts called createDraftPR AFTER mergeAndExit (when we're back on main
   and the milestone branch may not exist on remote). Removed duplicate PR
   creation from phases.ts — it's already handled inside mergeMilestoneToMain.

3. createDraftPR in git-service.ts lacked --head and --base parameters, so
   gh would create a PR from whatever branch was current. Added optional
   opts parameter with head/base support.

Fixes #2302

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:34:14 -06:00
TÂCHES
e39dc7976c fix(gsd): insert DB row when generating milestone ID (#2416)
gsd_milestone_generate_id creates a minimal DB row (status: 'queued')
via INSERT OR IGNORE when generating an ID. This ensures milestones
created via /gsd queue or multi-milestone discuss are visible to the
state machine from the moment they get an ID, rather than relying on
the safety-net reconciliation in deriveStateFromDb().

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:26:39 -06:00
TÂCHES
c9e6d50004 fix(gsd): reconcile disk-only milestones into DB in deriveStateFromDb (#2416)
* fix(gsd): reconcile disk-only milestones into DB in deriveStateFromDb

Milestones created via /gsd queue (or by complete-milestone writing a
next CONTEXT.md) are never inserted into the DB because the migration
guard in auto-start.ts only runs when gsd.db does not yet exist.
deriveStateFromDb() called getAllMilestones() (DB-only) with no disk
fallback, so these queued milestones were invisible to the state machine.
When all DB-tracked milestones completed, phase='complete' fired and
auto-mode stopped even though untracked milestones existed on disk.

Fix: add an incremental disk→DB reconciliation step inside
deriveStateFromDb() that compares findMilestoneIds() against DB rows
and calls insertMilestone() (INSERT OR IGNORE) for any non-ghost
directory that has no DB row. Re-queries only when rows were inserted.

Adds a regression test that reproduces the exact scenario from #2416:
M001 complete in DB, M002 queued on disk only → before fix phase was
'complete', after fix phase is 'pre-planning' with both milestones
visible in the registry.

Closes #2416

* fix: add missing closing brace for describe block in test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Jeremy McSpadden <jeremy@fluxlabs.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:20:45 -06:00
Tom Boucher
d21db9f398 fix(preferences): deduplicate unrecognized format warning on repeated loads (#2375)
parsePreferencesMarkdown emitted a console.warn every time preferences
were loaded with an unrecognized format, spamming stderr on each call
to loadEffectiveGSDPreferences. Gate the warning behind a warn-once
flag so it prints at most once per process.

Fixes #2373

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:06:37 -06:00
Jeremy McSpadden
e0b3bad2a5 feat(system-context): inject global ~/.gsd/agent/KNOWLEDGE.md into system prompt (#2331)
* feat(system-context): inject global ~/.gsd/agent/KNOWLEDGE.md into system prompt

Reads ~/.gsd/agent/KNOWLEDGE.md (global) alongside the existing project
.gsd/KNOWLEDGE.md and merges both into the [KNOWLEDGE] block. Global
section appears first so project entries can override or refine global
rules. Emits a startup warning when the global file exceeds 4 KB to
keep system prompt size in check.

Extracted loading logic into loadKnowledgeBlock() for testability.
Five new unit tests cover: empty state, project-only, global-only,
merged order, and size threshold.

Closes #2316

* fix(test): relax derive-state-db perf threshold from 1ms to 10ms

The <1ms assertion was intermittently failing on loaded CI runners
(observed: 1.054ms). 10ms still validates the in-memory cache path
is fast while being robust across shared CI environments.

---------

Co-authored-by: TÂCHES <afromanguy@me.com>
2026-03-24 22:03:00 -06:00
Tom Boucher
17e172b466 fix: gate auto-mode bootstrap on SQLite availability (#2419) (#2421) 2026-03-24 21:37:19 -06:00
Tom Boucher
6409070225 fix: block /gsd quick when auto-mode is active (#2420) 2026-03-24 21:36:56 -06:00
Tom Boucher
b24594d79f refactor: migrate D-G test files from createTestContext to node:test (#2418) 2026-03-24 21:34:52 -06:00
Tom Boucher
77460942ac refactor(test): migrate gsd/tests s-z from custom harness to node:test (#2397) 2026-03-24 21:33:39 -06:00
Tom Boucher
1fe52a2e8e refactor(test): migrate gsd/tests o-r from custom harness to node:test (#2401) 2026-03-24 21:33:17 -06:00
Tom Boucher
4498dcea32 refactor(test): migrate gsd/tests i-n from custom harness to node:test (#2399) 2026-03-24 21:33:01 -06:00
Tom Boucher
b1782a8678 refactor(test): migrate gsd/tests a-c from custom harness to node:test (#2400) 2026-03-24 21:32:26 -06:00
Tom Boucher
c237c56016 refactor(test): replace try/finally with t.after() in gsd/tests (e-i) (#2396) 2026-03-24 21:31:42 -06:00
Tom Boucher
2223298f76 refactor(test): replace try/finally with t.after() in gsd/tests (a-d) (#2395) 2026-03-24 21:31:29 -06:00
Tom Boucher
30775f4dcc refactor(test): replace try/finally with t.after() in src/tests (o-z) (#2392) 2026-03-24 21:30:29 -06:00
Tom Boucher
99af6b0315 refactor(test): replace try/finally with t.after() in src/tests (a-n) (#2394) 2026-03-24 21:30:00 -06:00
TÂCHES
ebfc63c42b fix: post-migration cleanup — pragmas, rollbacks, tool gaps, stale code (#2410)
* fix(gsd-db): add PRAGMA busy_timeout and foreign_keys

Concurrent worktrees sharing a WAL-mode DB get immediate SQLITE_BUSY
errors without a retry window. Add busy_timeout = 5000ms for file-backed
DBs. Enable foreign_keys per-connection so FK constraints declared in
the schema are actually enforced — prevents orphaned rows in slices,
tasks, verification_evidence, etc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(prompts): replace direct file writes with DB tool calls

plan-milestone.md single-slice fast path instructed mkdir + direct file
writes, bypassing gsd_plan_slice. discuss.md instructed writing
ROADMAP.md directly instead of calling gsd_plan_milestone. Both create
state where the DB has no knowledge of planning artifacts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(recover): wrap delete + repopulate in single transaction

handleRecover deleted hierarchy rows inside a transaction, then called
migrateHierarchyToDb() outside it. A crash mid-repopulate left a
partially populated DB. Wrap both operations in one dbTransaction()
call for atomicity.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(tools): add rollback on render failure

plan-milestone and plan-slice committed DB transactions then rendered
markdown — if rendering failed, DB had planning data with no file on
disk. db-writer functions (saveDecisionToDb, updateRequirementInDb,
saveArtifactToDb) had the same issue: DB upsert before disk write with
no rollback. Add rollback logic matching the complete-task.ts pattern.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(gsd): add gsd_complete_milestone tool and rogue detection gaps

Task and slice completion had DB-backed tools but milestone completion
used direct file writes. Add gsd_complete_milestone following the same
pattern: validate all slices complete, update DB status in transaction,
render SUMMARY.md, rollback on failure.

Extend detectRogueFileWrites() to cover reassess-roadmap (ASSESSMENT.md),
plan-task (T##-PLAN.md), and REPLAN.md — previously undetected bypass
paths.

Replace regex checkbox fallback in retry state-reset with explicit
failure + stderr log. Direct markdown mutation on DB-unavailable
reintroduced the pattern the migration eliminated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore(gsd): update stale comments, add legacy markers, DB-first queries

- state.ts: update module header and deriveState docstring to reflect
  DB-primary architecture. Add DB-first query to getActiveMilestoneId()
  with filesystem fallback. Add LEGACY marker on _deriveStateImpl().
- commands-maintenance.ts: add DB query before parseRoadmap() for stale
  branch cleanup.
- prompts: replace "toggles the checkbox" language with DB-accurate
  descriptions in execute-task.md and complete-slice.md.
- auto-recovery.ts: add LEGACY markers on !isDbAvailable() fallback
  branches.
- gsd-db.ts: add DEAD CODE annotations on sequence column definitions
  (no tool exposes sequence — always defaults to 0).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(tools): preserve DB rows on render failure instead of rolling back

The plan-milestone and plan-slice handlers were rolling back DB rows when
file rendering failed, destroying parse-visible state needed for debugging.
DB rows now persist on render failure. Also guard rollback references to
non-existent tables (slice_planning, task_planning, milestone_planning).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:55:26 -06:00
Jay The Reaper
bc278d12d9 feat(core): support for 'non-api-key' provider extensions like Claude Code CLI (#2382)
* feat(core): add generic native post-install hooks for package install

* feat(core): add before/after install/remove lifecycle hooks

* refactor(core): remove postInstall alias from lifecycle hook fallback

* feat(core): complete authMode support for keyless providers

The initial authMode implementation fixed model-registry, sdk, and
fallback-resolver but missed agent-session.ts (6 callsites) and
compaction-orchestrator.ts (2 callsites) that block externalCli
providers at runtime.

Architecture: separate readiness gating from credential retrieval.
- isProviderRequestReady(): authMode-aware readiness check
- getApiKey()/getApiKeyForProvider(): return undefined for
  externalCli/none providers instead of triggering auth errors
- All 8 callsites in agent-session and compaction-orchestrator
  now gate on readiness, not key presence
- Downstream signatures (compaction, branch-summarization) accept
  apiKey: string | undefined
- Replaced hardcoded ollama exception in discoverModels with
  isProviderRequestReady

Zero behavioral change for classic apiKey/oauth providers.

* feat(core): add isReady callback for provider readiness verification

Extensions can now provide an isReady() callback when registering any
provider. isProviderRequestReady() calls it before default auth checks,
allowing providers to verify actual reachability (CLI authenticated,
API key valid, service online) rather than relying solely on credential
presence.

* test(core): expand authMode test coverage

Cover all four auth modes (apiKey, oauth, externalCli, none),
isReady callback behavior, getProviderAuthMode defaults,
isProviderRequestReady for each mode, getAvailable filtering,
and getApiKey early-return for keyless providers.

* chore: remove provider-api-bridge files from this branch

These files implement GSD core → provider-api wiring (deps + tool
registry) and belong in a separate PR. Reverts register-extension.ts
to upstream state.
2026-03-24 15:50:12 -06:00
Lex Christopherson
dae38f797e fix(test): normalize CRLF in auto-stash-merge assertion for Windows
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:16:03 -06:00
Lex Christopherson
adfea1769d fix(test): swallow EPERM on Windows temp dir cleanup in auto-stash-merge test
Windows CI runners hold git file locks that prevent rmSync from removing
temp repos in finally blocks. Wrap cleanup in try-catch so a cleanup
failure doesn't fail the actual test.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:08:06 -06:00
Lex Christopherson
cc48cc9435 fix(gsd): add file-based fallbacks for DB-dependent code paths and fix CI test failures
The DB-backed planning migration (#2280) moved 6 core modules to DB-primary
queries but left no fallback when DB is unavailable, breaking 19 tests in CI.

Source fixes: add file-based fallbacks in auto-direct-dispatch, auto-prompts,
auto-worktree, dispatch-guard, reactive-graph, visualizer-data, workspace-index,
and skill-health. Windows fixes: CRLF normalization, EPERM retry on rmSync,
path normalization. Enable --experimental-test-isolation=process to prevent
cross-test DB state leakage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 14:59:56 -06:00
Tom Boucher
67f47bea06 feat(docker): add official Docker sandbox template for isolated GSD auto mode (#2360)
Ship a Dockerfile.sandbox, docker-compose.yml, .env.example, and docs so
users can run GSD auto mode inside an isolated Docker sandbox (MicroVM)
without risk to the host filesystem, SSH keys, or other projects.

- Dockerfile.sandbox: Node 22 base, gsd-pi pre-installed, non-root user, port 3000
- docker-compose.yml: workspace volume mount, persistent .gsd state, env_file support
- .env.example: template for LLM provider keys and optional tool credentials
- docker/README.md: setup guide covering sandbox CLI, Compose, two-terminal workflow,
  credential injection, and network allowlisting
- .dockerignore: project-root ignore file for efficient Docker builds
- src/tests/docker-template.test.ts: 13 structural tests verifying all template files

Fixes #1544

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 13:57:59 -06:00
Lex Christopherson
c5c75b0273 fix(gsd): remove stale observabilityIssues reference in journal-integration test
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 13:29:07 -06:00
Lex Christopherson
fa376bf816 merge: incorporate main into next (resolve 26 conflicts)
Merges 39 commits from main into next, including:
- WAL/journal runtime exclusion fixes (#2299)
- Memory and resource leak fixes (#2314)
- Freeform DECISIONS.md preservation (#2319)
- Per-prompt token cost display (#2357)
- Web UI project root switching (#2355)
- CODEOWNERS and team workflow docs (#2286)
- CI flake threshold fix (#2327)
- Various other bugfixes

All conflicts resolved preserving both PR #2280 DB-backed planning
functionality and main's bugfixes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 13:21:19 -06:00
Lex Christopherson
651b77bf5f fix(gsd): prevent planning data loss from destructive upsert and post-unit re-import (#2370)
insertTask() used INSERT OR REPLACE which in SQLite does DELETE + INSERT,
zeroing planning columns (description, estimate, inputs, expected_output)
when callers like handleCompleteTask didn't pass them. Changed to
ON CONFLICT ... DO UPDATE SET with CASE/NULLIF preservation for planning
columns.

Removed post-unit migrateFromMarkdown hook that re-imported a lossy
markdown subset after every auto-mode unit, overwriting DB planning data.
Startup migration in auto-start.ts and dynamic-tools.ts remains.

Removed vestigial "MUST write file" prompt instructions that conflict with
the DB-backed tool workflow. Removed Steps section duplication in task plan
renderer that re-rendered description as garbled bullets.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 09:52:23 -06:00
Lex Christopherson
cfc377fd9b fix(gsd): use correct notify severity type ("warning" not "warn")
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 07:43:17 -06:00
Lex Christopherson
7ca3ce04a4 fix(gsd): remove stale observability validator + fix greenfield worktree check
The observability validator checked for markdown headings (## Observability / Diagnostics,
## Observability Impact) that the DB-backed renderer never produces, causing false-positive
warnings on every dispatch. Removed entirely — the DB schema enforces structure at write time.

The worktree health check blocked execution in directories without recognized project files
(package.json, Cargo.toml, etc.), preventing greenfield projects from scaffolding. Downgraded
to a warning — .git check remains as the hard gate.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 07:27:48 -06:00
Lex Christopherson
c722442bb3 fix(gsd): keep params as any in db-tools executors (CI tsconfig is stricter)
Local tsconfig excludes src/resources/ but CI compiles everything.
Record<string, unknown> for params broke handler calls since handlers
expect typed params (validated at runtime). Keep params: any with
eslint-disable annotation, type all other executor params properly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 06:17:20 -06:00
Lex Christopherson
dc3fe88369 fix(gsd): replace any types in db-tools executor signatures
Tool executor lambdas now use proper types (string, Record<string, unknown>,
AbortSignal | undefined) instead of any for all parameters.
registerAlias toolDef param also properly typed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 06:06:51 -06:00
Lex Christopherson
2f7208150a fix(gsd): resolve 4 TS compilation errors from parser migration
- github-sync/sync.ts: import parseRoadmap/parsePlan from parsers-legacy
- auto-worktree.ts: replace dangling roadmap.title with getMilestone() DB query
- markdown-renderer.ts: add explicit type annotations on lazy-loaded parser callbacks

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 06:04:29 -06:00
Lex Christopherson
1194548d61 fix(gsd): wrap plan-task DB writes in transaction + untrack .gsd/ artifacts
plan-task.ts was the only planning tool handler not wrapping its
insertTask/upsertTaskPlanning calls in a transaction(), risking partial
DB state if the upsert failed after insert. Matches the pattern used by
plan-slice, replan-slice, reassess-roadmap, and plan-milestone.

Also removes 80 .gsd/ working artifacts that were force-added despite
being in .gitignore.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 13:42:38 -06:00
TÂCHES
108845dd4b chore(M001): auto-commit after complete-milestone 2026-03-23 13:32:31 -06:00
TÂCHES
dff941b1dc chore(M001): auto-commit after validate-milestone 2026-03-23 13:19:14 -06:00
TÂCHES
f76fe8ec1e feat(S06/T02): Strip all 16 lazy createRequire fallback paths from migr…
- src/resources/extensions/gsd/dispatch-guard.ts
- src/resources/extensions/gsd/auto-dispatch.ts
- src/resources/extensions/gsd/auto-verification.ts
- src/resources/extensions/gsd/parallel-eligibility.ts
- src/resources/extensions/gsd/doctor.ts
- src/resources/extensions/gsd/doctor-checks.ts
- src/resources/extensions/gsd/visualizer-data.ts
- src/resources/extensions/gsd/workspace-index.ts
2026-03-23 13:09:37 -06:00
TÂCHES
56efa72886 test(S06/T01): Extract parseRoadmap/parsePlan into parsers-legacy.ts, u…
- src/resources/extensions/gsd/parsers-legacy.ts
- src/resources/extensions/gsd/files.ts
- src/resources/extensions/gsd/state.ts
- src/resources/extensions/gsd/md-importer.ts
- src/resources/extensions/gsd/commands-maintenance.ts
- src/resources/extensions/gsd/markdown-renderer.ts
- src/resources/extensions/gsd/auto-recovery.ts
- src/resources/extensions/gsd/tests/parsers.test.ts
2026-03-23 12:53:49 -06:00
TÂCHES
460f6f3933 feat(S05/T04): Migrate remaining 6 callers (auto-prompts, auto-recovery…
- src/resources/extensions/gsd/auto-prompts.ts
- src/resources/extensions/gsd/auto-recovery.ts
- src/resources/extensions/gsd/auto-direct-dispatch.ts
- src/resources/extensions/gsd/auto-worktree.ts
- src/resources/extensions/gsd/reactive-graph.ts
- src/resources/extensions/gsd/markdown-renderer.ts
2026-03-23 12:17:23 -06:00
TÂCHES
06a876676a feat(S05/T03): Migrate 7 warm/cold callers (doctor, doctor-checks, visu…
- src/resources/extensions/gsd/doctor.ts
- src/resources/extensions/gsd/doctor-checks.ts
- src/resources/extensions/gsd/visualizer-data.ts
- src/resources/extensions/gsd/workspace-index.ts
- src/resources/extensions/gsd/dashboard-overlay.ts
- src/resources/extensions/gsd/auto-dashboard.ts
- src/resources/extensions/gsd/guided-flow.ts
2026-03-23 12:07:01 -06:00
TÂCHES
4d3ccb5b08 feat(S05/T02): Extend migrateHierarchyToDb to populate v8 planning colu…
- src/resources/extensions/gsd/md-importer.ts
- src/resources/extensions/gsd/tests/gsd-recover.test.ts
2026-03-23 11:52:46 -06:00
TÂCHES
64908fc822 feat(S05/T01): Schema v10 adds replan_triggered_at column; deriveStateF…
- src/resources/extensions/gsd/gsd-db.ts
- src/resources/extensions/gsd/state.ts
- src/resources/extensions/gsd/triage-resolution.ts
- src/resources/extensions/gsd/tests/flag-file-db.test.ts
- src/resources/extensions/gsd/tests/derive-state-db.test.ts
2026-03-23 11:46:28 -06:00
TÂCHES
d7994a1538 fix(S04/T04): Add planning-crossval tests proving DB↔rendered↔parsed pa…
- src/resources/extensions/gsd/tests/planning-crossval.test.ts
- src/resources/extensions/gsd/markdown-renderer.ts
- .gsd/milestones/M001/slices/S04/tasks/T04-PLAN.md
2026-03-23 11:16:24 -06:00
TÂCHES
93e46c3712 feat(S04/T03): Migrate auto-dispatch.ts (3 rules), auto-verification.ts…
- src/resources/extensions/gsd/auto-dispatch.ts
- src/resources/extensions/gsd/auto-verification.ts
- src/resources/extensions/gsd/parallel-eligibility.ts
- .gsd/milestones/M001/slices/S04/tasks/T03-PLAN.md
2026-03-23 11:09:38 -06:00
TÂCHES
08c3fcc57c feat(S04/T02): Migrate dispatch-guard.ts to DB queries with isDbAvailab…
- src/resources/extensions/gsd/dispatch-guard.ts
- src/resources/extensions/gsd/tests/dispatch-guard.test.ts
- .gsd/milestones/M001/slices/S04/tasks/T02-PLAN.md
2026-03-23 11:03:42 -06:00
TÂCHES
f86882bde5 fix(S04/T01): Add schema v9 migration with sequence column on slices/ta…
- src/resources/extensions/gsd/gsd-db.ts
- src/resources/extensions/gsd/tests/schema-v9-sequence.test.ts
- .gsd/milestones/M001/slices/S04/S04-PLAN.md
- .gsd/milestones/M001/slices/S04/tasks/T01-PLAN.md
2026-03-23 10:57:27 -06:00
TÂCHES
356d54431e test(S03/T03): Register gsd_replan_slice and gsd_reassess_roadmap tools…
- src/resources/extensions/gsd/bootstrap/db-tools.ts
- src/resources/extensions/gsd/prompts/replan-slice.md
- src/resources/extensions/gsd/prompts/reassess-roadmap.md
- src/resources/extensions/gsd/tests/prompt-contracts.test.ts
2026-03-23 10:37:08 -06:00
TÂCHES
46c5d37a8d test(S03/T02): Implement reassess_roadmap handler with structural enfor…
- src/resources/extensions/gsd/tools/reassess-roadmap.ts
- src/resources/extensions/gsd/tests/reassess-handler.test.ts
- src/resources/extensions/gsd/gsd-db.ts
2026-03-23 10:33:13 -06:00
TÂCHES
1acf1a6f57 test(S03/T01): Implement replan_slice handler with structural enforceme…
- src/resources/extensions/gsd/gsd-db.ts
- src/resources/extensions/gsd/markdown-renderer.ts
- src/resources/extensions/gsd/tools/replan-slice.ts
- src/resources/extensions/gsd/tests/replan-handler.test.ts
- .gsd/milestones/M001/slices/S03/S03-PLAN.md
2026-03-23 10:28:33 -06:00
TÂCHES
d53bf56bae test(S02/T03): Update plan-slice prompt to explicitly name gsd_plan_sli…
- src/resources/extensions/gsd/prompts/plan-slice.md
- src/resources/extensions/gsd/tests/prompt-contracts.test.ts
- src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts
- .gsd/milestones/M001/slices/S02/tasks/T03-PLAN.md
2026-03-23 10:08:44 -06:00