gsd-pi 2.78.1-dev.b6a389b66 → 2.78.1-dev.d8826a445
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/gsd/auto/phases.js +7 -2
- package/dist/resources/extensions/gsd/auto/session.js +3 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +3 -2
- package/dist/resources/extensions/gsd/auto-post-unit.js +7 -1
- package/dist/resources/extensions/gsd/auto-worktree.js +185 -40
- package/dist/resources/extensions/gsd/auto.js +62 -1
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +1 -1
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +17 -16
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +67 -55
- package/dist/resources/extensions/gsd/db-writer.js +96 -16
- package/dist/resources/extensions/gsd/delegation-policy.js +155 -0
- package/dist/resources/extensions/gsd/gsd-db.js +194 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +1 -1
- package/dist/resources/extensions/gsd/guided-flow.js +117 -25
- package/dist/resources/extensions/gsd/metrics.js +287 -1
- package/dist/resources/extensions/gsd/paths.js +79 -8
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +4 -4
- package/dist/resources/extensions/gsd/prompts/execute-task.md +3 -3
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +8 -1
- package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +22 -7
- package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +6 -2
- package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +8 -1
- package/dist/resources/extensions/gsd/templates/project.md +10 -0
- package/dist/resources/extensions/gsd/workflow-mcp.js +2 -2
- package/dist/resources/extensions/gsd/workspace.js +59 -0
- package/dist/resources/extensions/gsd/worktree-resolver.js +15 -2
- package/dist/resources/extensions/gsd/write-intercept.js +3 -3
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/required-server-files.json +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/server.js +1 -1
- package/package.json +1 -1
- package/packages/mcp-server/README.md +2 -11
- package/packages/mcp-server/dist/remote-questions.d.ts +27 -0
- package/packages/mcp-server/dist/remote-questions.d.ts.map +1 -1
- package/packages/mcp-server/dist/remote-questions.js +28 -0
- package/packages/mcp-server/dist/remote-questions.js.map +1 -1
- package/packages/mcp-server/dist/server.d.ts +28 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +94 -4
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/src/mcp-server.test.ts +226 -0
- package/packages/mcp-server/src/remote-questions.test.ts +103 -0
- package/packages/mcp-server/src/remote-questions.ts +35 -0
- package/packages/mcp-server/src/server.ts +129 -6
- package/packages/mcp-server/src/workflow-tools.ts +1 -1
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/src/resources/extensions/gsd/auto/phases.ts +8 -2
- package/src/resources/extensions/gsd/auto/session.ts +4 -0
- package/src/resources/extensions/gsd/auto-dispatch.ts +10 -2
- package/src/resources/extensions/gsd/auto-post-unit.ts +8 -1
- package/src/resources/extensions/gsd/auto-worktree.ts +225 -47
- package/src/resources/extensions/gsd/auto.ts +79 -1
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +1 -1
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +17 -17
- package/src/resources/extensions/gsd/bootstrap/tests/write-gate-basepath.test.ts +103 -0
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +80 -55
- package/src/resources/extensions/gsd/db-writer.ts +113 -17
- package/src/resources/extensions/gsd/delegation-policy.ts +197 -0
- package/src/resources/extensions/gsd/gsd-db.ts +184 -0
- package/src/resources/extensions/gsd/guided-flow-queue.ts +1 -1
- package/src/resources/extensions/gsd/guided-flow.ts +154 -25
- package/src/resources/extensions/gsd/metrics.ts +321 -1
- package/src/resources/extensions/gsd/paths.ts +67 -8
- package/src/resources/extensions/gsd/prompts/complete-slice.md +4 -4
- package/src/resources/extensions/gsd/prompts/execute-task.md +3 -3
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +8 -1
- package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +22 -7
- package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +6 -2
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +8 -1
- package/src/resources/extensions/gsd/templates/project.md +10 -0
- package/src/resources/extensions/gsd/tests/auto-discuss-milestone-deadlock-4973.test.ts +14 -14
- package/src/resources/extensions/gsd/tests/auto-session-scope.test.ts +331 -0
- package/src/resources/extensions/gsd/tests/auto-worktree-registry.test.ts +176 -0
- package/src/resources/extensions/gsd/tests/db-writer-path-containment.test.ts +152 -0
- package/src/resources/extensions/gsd/tests/db-writer-root-artifact.test.ts +221 -0
- package/src/resources/extensions/gsd/tests/db-writer-scope.test.ts +230 -0
- package/src/resources/extensions/gsd/tests/delegation-policy.test.ts +151 -0
- package/src/resources/extensions/gsd/tests/dispatch-backgroundable-annotation.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/draft-promotion.test.ts +3 -23
- package/src/resources/extensions/gsd/tests/gate-1b-orphan-discrimination.test.ts +193 -0
- package/src/resources/extensions/gsd/tests/gate-1b-recovery-bound-corrections.test.ts +246 -0
- package/src/resources/extensions/gsd/tests/gate-1b-recovery-bound.test.ts +218 -0
- package/src/resources/extensions/gsd/tests/gsd-db-failed-open-restore.test.ts +117 -0
- package/src/resources/extensions/gsd/tests/gsd-db-workspace-scope.test.ts +226 -0
- package/src/resources/extensions/gsd/tests/gsd-root-canonical.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/gsd-root-home-guard.test.ts +68 -5
- package/src/resources/extensions/gsd/tests/guided-flow-prompt-consolidation.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/integration/workspace-collapse-integration.test.ts +371 -0
- package/src/resources/extensions/gsd/tests/metrics-atomic-merge.test.ts +222 -0
- package/src/resources/extensions/gsd/tests/metrics-lock-hardening.test.ts +400 -0
- package/src/resources/extensions/gsd/tests/metrics-lock-not-acquired.test.ts +141 -0
- package/src/resources/extensions/gsd/tests/metrics-lock-retry-sleep.test.ts +287 -0
- package/src/resources/extensions/gsd/tests/metrics-prune-cache-invalidation.test.ts +149 -0
- package/src/resources/extensions/gsd/tests/metrics-scope.test.ts +378 -0
- package/src/resources/extensions/gsd/tests/originalbase-path-comparison.test.ts +329 -0
- package/src/resources/extensions/gsd/tests/path-cache-decoupled.test.ts +209 -0
- package/src/resources/extensions/gsd/tests/path-normalization-unified.test.ts +175 -0
- package/src/resources/extensions/gsd/tests/paths-cache.test.ts +170 -0
- package/src/resources/extensions/gsd/tests/pending-autostart-scope.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +150 -7
- package/src/resources/extensions/gsd/tests/ready-phrase-no-files-4573.test.ts +74 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +28 -16
- package/src/resources/extensions/gsd/tests/resume-missing-worktree-warning.test.ts +209 -0
- package/src/resources/extensions/gsd/tests/sync-layer-scope.test.ts +453 -0
- package/src/resources/extensions/gsd/tests/teardown-chdir-failure-clears-registry.test.ts +162 -0
- package/src/resources/extensions/gsd/tests/teardown-cleanup-parity.test.ts +102 -0
- package/src/resources/extensions/gsd/tests/teardown-failure-clears-registry.test.ts +186 -0
- package/src/resources/extensions/gsd/tests/tool-invocation-error-loop-break.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/validator-scope-parity.test.ts +239 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +9 -15
- package/src/resources/extensions/gsd/tests/workspace.test.ts +190 -0
- package/src/resources/extensions/gsd/tests/write-gate-predicates.test.ts +35 -35
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +67 -52
- package/src/resources/extensions/gsd/tests/write-intercept.test.ts +1 -1
- package/src/resources/extensions/gsd/workflow-mcp.ts +2 -2
- package/src/resources/extensions/gsd/workspace.ts +95 -0
- package/src/resources/extensions/gsd/worktree-resolver.ts +16 -2
- package/src/resources/extensions/gsd/write-intercept.ts +3 -3
- /package/dist/web/standalone/.next/static/{HahrZrc_Xn4wumj0O1Ydp → AT5qi39nKXkdmQIOIoh0f}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{HahrZrc_Xn4wumj0O1Ydp → AT5qi39nKXkdmQIOIoh0f}/_ssgManifest.js +0 -0
|
@@ -8,6 +8,13 @@ Your goal is **not** to center the discussion on tech stack trivia, naming conve
|
|
|
8
8
|
|
|
9
9
|
## Interview Protocol
|
|
10
10
|
|
|
11
|
+
### Read project shape
|
|
12
|
+
|
|
13
|
+
Before your first question round, read `.gsd/PROJECT.md` and look for `## Project Shape` → `**Complexity:**`. The verdict is either **`simple`** or **`complex`** (default to `complex` if the section is missing or unclear).
|
|
14
|
+
|
|
15
|
+
- **`simple`** — favor 1–2 plain-text rounds, write the slice context fast. Skip parallel-research investigation.
|
|
16
|
+
- **`complex`** — full investigation with structured 3–4-option questions.
|
|
17
|
+
|
|
11
18
|
### Before your first question round
|
|
12
19
|
|
|
13
20
|
Do a lightweight targeted investigation so your questions are grounded in reality:
|
|
@@ -24,7 +31,7 @@ Do **not** go deep — just enough that your questions reflect what's actually t
|
|
|
24
31
|
|
|
25
32
|
**Never fabricate or simulate user input.** Never generate fake transcript markers like `[User]`, `[Human]`, or `User:`. Ask one question round, then wait for the user's actual response before continuing.
|
|
26
33
|
|
|
27
|
-
**If `{{structuredQuestionsAvailable}}` is `true`:** Ask **1–3 questions per round** using `ask_user_questions`. **Call `ask_user_questions` exactly once per turn — never make multiple calls with the same or overlapping questions. Wait for the user's response before asking the next round.**
|
|
34
|
+
**If `{{structuredQuestionsAvailable}}` is `true`:** Ask **1–3 questions per round** using `ask_user_questions`. In **`complex`** mode, each multi-choice question MUST present **3 or 4 concrete, researched options** plus a final **"Other — let me discuss"** option; options must be grounded in the investigation above (codebase signals, library docs, prior `.gsd/` artifacts), not generic placeholders. In **`simple`** mode, 2 options is fine. Binary wrap-up gates are exempt from the 3-or-4 rule. **Call `ask_user_questions` exactly once per turn — never make multiple calls with the same or overlapping questions. Wait for the user's response before asking the next round.**
|
|
28
35
|
**If `{{structuredQuestionsAvailable}}` is `false`:** Ask **1–3 questions per round** in plain text. Number them and wait for the user's response before asking the next round.
|
|
29
36
|
Keep each question focused on one of:
|
|
30
37
|
- **UX and user-facing behaviour** — what does the user see, click, trigger, or experience?
|
|
@@ -11,6 +11,16 @@
|
|
|
11
11
|
|
|
12
12
|
{{theOneThingThatMustWorkEvenIfEverythingElseIsCut}}
|
|
13
13
|
|
|
14
|
+
## Project Shape
|
|
15
|
+
|
|
16
|
+
<!-- Drives questioning depth in downstream stages. `simple` → short plain-text
|
|
17
|
+
rounds, fast PROJECT/CONTEXT/REQUIREMENTS writes. `complex` → researched
|
|
18
|
+
3–4-option questions with an "Other — let me discuss" hatch.
|
|
19
|
+
Default to `complex` when uncertain. -->
|
|
20
|
+
|
|
21
|
+
- **Complexity:** {{simple | complex}}
|
|
22
|
+
- **Why:** {{one-line rationale citing the signals that decided it}}
|
|
23
|
+
|
|
14
24
|
## Current State
|
|
15
25
|
|
|
16
26
|
{{whatHasBeenBuiltSoFar — what works, what exists, what's deployed}}
|
|
@@ -292,9 +292,9 @@ export function getRequiredWorkflowToolsForAutoUnit(unitType) {
|
|
|
292
292
|
case "execute-task":
|
|
293
293
|
case "execute-task-simple":
|
|
294
294
|
case "reactive-execute":
|
|
295
|
-
return ["
|
|
295
|
+
return ["gsd_task_complete"];
|
|
296
296
|
case "complete-slice":
|
|
297
|
-
return ["
|
|
297
|
+
return ["gsd_slice_complete"];
|
|
298
298
|
case "replan-slice":
|
|
299
299
|
return ["gsd_replan_slice"];
|
|
300
300
|
case "reassess-roadmap":
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// GSD-2 + Workspace handle: single source of truth for path resolution per milestone
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { resolveGsdPathContract, normalizeRealPath } from "./paths.js";
|
|
4
|
+
import { isGsdWorktreePath, resolveWorktreeProjectRoot } from "./worktree-root.js";
|
|
5
|
+
function tryRealpath(p) {
|
|
6
|
+
return normalizeRealPath(p);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Create an immutable GsdWorkspace handle from a raw base path.
|
|
10
|
+
* Resolves both the project root and (when applicable) the worktree root,
|
|
11
|
+
* normalizes them via realpath, and freezes the result.
|
|
12
|
+
*/
|
|
13
|
+
export function createWorkspace(rawBasePath) {
|
|
14
|
+
const resolvedBase = resolve(rawBasePath);
|
|
15
|
+
const isWorktree = isGsdWorktreePath(resolvedBase);
|
|
16
|
+
const projectRootRaw = resolveWorktreeProjectRoot(resolvedBase);
|
|
17
|
+
const projectRoot = tryRealpath(resolve(projectRootRaw));
|
|
18
|
+
const worktreeRoot = isWorktree ? tryRealpath(resolvedBase) : null;
|
|
19
|
+
// Derive a canonical base from the already-realpath-normalized paths so that
|
|
20
|
+
// resolveGsdPathContract always receives a canonical path. Using the raw
|
|
21
|
+
// resolvedBase here can produce a non-canonical projectGsd when the input
|
|
22
|
+
// path contains symlinks, causing contract.projectGsd to diverge from the
|
|
23
|
+
// realpath-normalized projectRoot / identityKey.
|
|
24
|
+
const canonicalBase = isWorktree ? (worktreeRoot ?? resolvedBase) : projectRoot;
|
|
25
|
+
const contract = Object.freeze(resolveGsdPathContract(canonicalBase));
|
|
26
|
+
const identityKey = tryRealpath(projectRoot);
|
|
27
|
+
const mode = isWorktree ? "worktree" : "project";
|
|
28
|
+
const workspace = Object.freeze({
|
|
29
|
+
projectRoot,
|
|
30
|
+
worktreeRoot,
|
|
31
|
+
mode,
|
|
32
|
+
contract,
|
|
33
|
+
identityKey,
|
|
34
|
+
lockRoot: projectRoot,
|
|
35
|
+
});
|
|
36
|
+
return workspace;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Bind a milestoneId to a workspace, producing an immutable MilestoneScope
|
|
40
|
+
* with path-returning closures that resolve via the authoritative projectGsd.
|
|
41
|
+
*
|
|
42
|
+
* All milestone-content paths route to contract.projectGsd (canonical),
|
|
43
|
+
* since that is the authoritative source of truth regardless of worktree mode.
|
|
44
|
+
*/
|
|
45
|
+
export function scopeMilestone(workspace, milestoneId) {
|
|
46
|
+
const { contract } = workspace;
|
|
47
|
+
const gsd = contract.projectGsd;
|
|
48
|
+
const scope = Object.freeze({
|
|
49
|
+
workspace,
|
|
50
|
+
milestoneId,
|
|
51
|
+
contextFile: () => join(gsd, "milestones", milestoneId, `${milestoneId}-CONTEXT.md`),
|
|
52
|
+
roadmapFile: () => join(gsd, "milestones", milestoneId, `${milestoneId}-ROADMAP.md`),
|
|
53
|
+
stateFile: () => join(gsd, "STATE.md"),
|
|
54
|
+
dbPath: () => contract.projectDb,
|
|
55
|
+
milestoneDir: () => join(gsd, "milestones", milestoneId),
|
|
56
|
+
metaJson: () => join(gsd, `${milestoneId}-META.json`),
|
|
57
|
+
});
|
|
58
|
+
return scope;
|
|
59
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// GSD-2 — WorktreeResolver: encapsulates worktree path state and merge/exit lifecycle.
|
|
1
2
|
/**
|
|
2
3
|
* WorktreeResolver — encapsulates worktree path state and merge/exit lifecycle.
|
|
3
4
|
*
|
|
@@ -20,7 +21,19 @@ import { emitJournalEvent } from "./journal.js";
|
|
|
20
21
|
import { emitWorktreeCreated, emitWorktreeMerged } from "./worktree-telemetry.js";
|
|
21
22
|
import { getCollapseCadence, getMilestoneResquash, resquashMilestoneOnMain } from "./slice-cadence.js";
|
|
22
23
|
import { loadEffectiveGSDPreferences } from "./preferences.js";
|
|
23
|
-
import { resolveWorktreeProjectRoot } from "./worktree-root.js";
|
|
24
|
+
import { resolveWorktreeProjectRoot, normalizeWorktreePathForCompare } from "./worktree-root.js";
|
|
25
|
+
// ─── Path Comparison Helper ────────────────────────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* Compare two paths for physical identity, tolerating trailing slashes,
|
|
28
|
+
* symlink differences, and case variations on case-insensitive volumes.
|
|
29
|
+
*
|
|
30
|
+
* Used in place of string `===` / `!==` wherever one operand may be
|
|
31
|
+
* realpath-normalised (e.g. from the workspace registry) and the other
|
|
32
|
+
* may not be (e.g. a raw caller-supplied basePath).
|
|
33
|
+
*/
|
|
34
|
+
function isSamePath(a, b) {
|
|
35
|
+
return normalizeWorktreePathForCompare(a) === normalizeWorktreePathForCompare(b);
|
|
36
|
+
}
|
|
24
37
|
// ─── Path Helpers ──────────────────────────────────────────────────────────
|
|
25
38
|
/**
|
|
26
39
|
* Resolve the project root from session path state.
|
|
@@ -454,7 +467,7 @@ export class WorktreeResolver {
|
|
|
454
467
|
// roadmap triggers bare teardown which deletes the branch and orphans all
|
|
455
468
|
// milestone commits (#1573).
|
|
456
469
|
let roadmapPath = this.deps.resolveMilestoneFile(originalBase, milestoneId, "ROADMAP");
|
|
457
|
-
if (!roadmapPath && this.s.basePath
|
|
470
|
+
if (!roadmapPath && !isSamePath(this.s.basePath, originalBase)) {
|
|
458
471
|
roadmapPath = this.deps.resolveMilestoneFile(this.s.basePath, milestoneId, "ROADMAP");
|
|
459
472
|
if (roadmapPath) {
|
|
460
473
|
debugLog("WorktreeResolver", {
|
|
@@ -85,9 +85,9 @@ function matchesBlockedPattern(path) {
|
|
|
85
85
|
* Directs the agent to use engine tool calls instead.
|
|
86
86
|
*/
|
|
87
87
|
export const BLOCKED_WRITE_ERROR = `Direct writes to .gsd/STATE.md and .gsd/gsd.db are blocked. Use engine tool calls instead:
|
|
88
|
-
- To complete a task: call
|
|
89
|
-
- To complete a slice: call
|
|
90
|
-
- To save a decision: call
|
|
88
|
+
- To complete a task: call gsd_task_complete(milestone_id, slice_id, task_id, summary)
|
|
89
|
+
- To complete a slice: call gsd_slice_complete(milestone_id, slice_id, summary, uat_result)
|
|
90
|
+
- To save a decision: call gsd_decision_save(scope, decision, choice, rationale)
|
|
91
91
|
- To start a task: call gsd_start_task(milestone_id, slice_id, task_id)
|
|
92
92
|
- To record verification: call gsd_record_verification(milestone_id, slice_id, task_id, evidence)
|
|
93
93
|
- To report a blocker: call gsd_report_blocker(milestone_id, slice_id, task_id, description)`;
|