@kynetic-ai/spec 0.3.0 → 0.5.0

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.
Files changed (160) hide show
  1. package/dist/cli/batch-exec.d.ts +0 -9
  2. package/dist/cli/batch-exec.d.ts.map +1 -1
  3. package/dist/cli/batch-exec.js +16 -4
  4. package/dist/cli/batch-exec.js.map +1 -1
  5. package/dist/cli/commands/derive.d.ts.map +1 -1
  6. package/dist/cli/commands/derive.js +2 -1
  7. package/dist/cli/commands/derive.js.map +1 -1
  8. package/dist/cli/commands/guard.d.ts +43 -0
  9. package/dist/cli/commands/guard.d.ts.map +1 -0
  10. package/dist/cli/commands/guard.js +200 -0
  11. package/dist/cli/commands/guard.js.map +1 -0
  12. package/dist/cli/commands/index.d.ts +1 -0
  13. package/dist/cli/commands/index.d.ts.map +1 -1
  14. package/dist/cli/commands/index.js +1 -0
  15. package/dist/cli/commands/index.js.map +1 -1
  16. package/dist/cli/commands/item.d.ts.map +1 -1
  17. package/dist/cli/commands/item.js +18 -0
  18. package/dist/cli/commands/item.js.map +1 -1
  19. package/dist/cli/commands/log.d.ts.map +1 -1
  20. package/dist/cli/commands/log.js +5 -4
  21. package/dist/cli/commands/log.js.map +1 -1
  22. package/dist/cli/commands/meta.d.ts.map +1 -1
  23. package/dist/cli/commands/meta.js +2 -1
  24. package/dist/cli/commands/meta.js.map +1 -1
  25. package/dist/cli/commands/plan-import.d.ts.map +1 -1
  26. package/dist/cli/commands/plan-import.js +100 -30
  27. package/dist/cli/commands/plan-import.js.map +1 -1
  28. package/dist/cli/commands/ralph.d.ts.map +1 -1
  29. package/dist/cli/commands/ralph.js +143 -330
  30. package/dist/cli/commands/ralph.js.map +1 -1
  31. package/dist/cli/commands/session.d.ts +73 -1
  32. package/dist/cli/commands/session.d.ts.map +1 -1
  33. package/dist/cli/commands/session.js +607 -162
  34. package/dist/cli/commands/session.js.map +1 -1
  35. package/dist/cli/commands/setup.d.ts.map +1 -1
  36. package/dist/cli/commands/setup.js +97 -217
  37. package/dist/cli/commands/setup.js.map +1 -1
  38. package/dist/cli/commands/skill-install.d.ts +4 -1
  39. package/dist/cli/commands/skill-install.d.ts.map +1 -1
  40. package/dist/cli/commands/skill-install.js +62 -5
  41. package/dist/cli/commands/skill-install.js.map +1 -1
  42. package/dist/cli/commands/task.d.ts.map +1 -1
  43. package/dist/cli/commands/task.js +128 -59
  44. package/dist/cli/commands/task.js.map +1 -1
  45. package/dist/cli/commands/tasks.d.ts.map +1 -1
  46. package/dist/cli/commands/tasks.js +2 -4
  47. package/dist/cli/commands/tasks.js.map +1 -1
  48. package/dist/cli/commands/triage.d.ts.map +1 -1
  49. package/dist/cli/commands/triage.js +12 -98
  50. package/dist/cli/commands/triage.js.map +1 -1
  51. package/dist/cli/index.d.ts.map +1 -1
  52. package/dist/cli/index.js +2 -1
  53. package/dist/cli/index.js.map +1 -1
  54. package/dist/cli/output.d.ts.map +1 -1
  55. package/dist/cli/output.js +18 -4
  56. package/dist/cli/output.js.map +1 -1
  57. package/dist/daemon/routes/triage.ts +4 -70
  58. package/dist/parser/config.d.ts +106 -0
  59. package/dist/parser/config.d.ts.map +1 -1
  60. package/dist/parser/config.js +47 -0
  61. package/dist/parser/config.js.map +1 -1
  62. package/dist/parser/file-lock.d.ts +14 -0
  63. package/dist/parser/file-lock.d.ts.map +1 -0
  64. package/dist/parser/file-lock.js +124 -0
  65. package/dist/parser/file-lock.js.map +1 -0
  66. package/dist/parser/index.d.ts +1 -0
  67. package/dist/parser/index.d.ts.map +1 -1
  68. package/dist/parser/index.js +1 -0
  69. package/dist/parser/index.js.map +1 -1
  70. package/dist/parser/plan-document.d.ts +44 -0
  71. package/dist/parser/plan-document.d.ts.map +1 -1
  72. package/dist/parser/plan-document.js +76 -8
  73. package/dist/parser/plan-document.js.map +1 -1
  74. package/dist/parser/plans.d.ts.map +1 -1
  75. package/dist/parser/plans.js +28 -102
  76. package/dist/parser/plans.js.map +1 -1
  77. package/dist/parser/shadow.d.ts.map +1 -1
  78. package/dist/parser/shadow.js +11 -7
  79. package/dist/parser/shadow.js.map +1 -1
  80. package/dist/parser/yaml.d.ts.map +1 -1
  81. package/dist/parser/yaml.js +322 -297
  82. package/dist/parser/yaml.js.map +1 -1
  83. package/dist/ralph/events.d.ts.map +1 -1
  84. package/dist/ralph/events.js +24 -0
  85. package/dist/ralph/events.js.map +1 -1
  86. package/dist/ralph/index.d.ts +1 -1
  87. package/dist/ralph/index.d.ts.map +1 -1
  88. package/dist/ralph/index.js +1 -1
  89. package/dist/ralph/index.js.map +1 -1
  90. package/dist/ralph/subagent.d.ts +12 -1
  91. package/dist/ralph/subagent.d.ts.map +1 -1
  92. package/dist/ralph/subagent.js +22 -3
  93. package/dist/ralph/subagent.js.map +1 -1
  94. package/dist/schema/batch.d.ts +2 -0
  95. package/dist/schema/batch.d.ts.map +1 -1
  96. package/dist/schema/common.d.ts +6 -0
  97. package/dist/schema/common.d.ts.map +1 -1
  98. package/dist/schema/common.js +8 -0
  99. package/dist/schema/common.js.map +1 -1
  100. package/dist/schema/task.d.ts +22 -0
  101. package/dist/schema/task.d.ts.map +1 -1
  102. package/dist/schema/task.js +7 -0
  103. package/dist/schema/task.js.map +1 -1
  104. package/dist/sessions/store.d.ts +226 -1
  105. package/dist/sessions/store.d.ts.map +1 -1
  106. package/dist/sessions/store.js +712 -38
  107. package/dist/sessions/store.js.map +1 -1
  108. package/dist/sessions/types.d.ts +51 -2
  109. package/dist/sessions/types.d.ts.map +1 -1
  110. package/dist/sessions/types.js +25 -0
  111. package/dist/sessions/types.js.map +1 -1
  112. package/dist/strings/errors.d.ts +4 -0
  113. package/dist/strings/errors.d.ts.map +1 -1
  114. package/dist/strings/errors.js +2 -0
  115. package/dist/strings/errors.js.map +1 -1
  116. package/dist/strings/labels.d.ts +2 -0
  117. package/dist/strings/labels.d.ts.map +1 -1
  118. package/dist/strings/labels.js +2 -0
  119. package/dist/strings/labels.js.map +1 -1
  120. package/dist/triage/actions.d.ts +27 -0
  121. package/dist/triage/actions.d.ts.map +1 -0
  122. package/dist/triage/actions.js +95 -0
  123. package/dist/triage/actions.js.map +1 -0
  124. package/dist/triage/constants.d.ts +6 -0
  125. package/dist/triage/constants.d.ts.map +1 -0
  126. package/dist/triage/constants.js +7 -0
  127. package/dist/triage/constants.js.map +1 -0
  128. package/dist/triage/index.d.ts +3 -0
  129. package/dist/triage/index.d.ts.map +1 -0
  130. package/dist/triage/index.js +3 -0
  131. package/dist/triage/index.js.map +1 -0
  132. package/dist/utils/git.d.ts +2 -0
  133. package/dist/utils/git.d.ts.map +1 -1
  134. package/dist/utils/git.js +21 -5
  135. package/dist/utils/git.js.map +1 -1
  136. package/package.json +1 -1
  137. package/plugin/.claude-plugin/marketplace.json +1 -1
  138. package/plugin/.claude-plugin/plugin.json +1 -1
  139. package/plugin/plugins/kspec/skills/create-workflow/SKILL.md +235 -0
  140. package/plugin/plugins/kspec/skills/observations/SKILL.md +143 -0
  141. package/plugin/plugins/kspec/skills/plan/SKILL.md +343 -0
  142. package/plugin/plugins/kspec/skills/reflect/SKILL.md +161 -0
  143. package/plugin/plugins/kspec/skills/review/SKILL.md +230 -0
  144. package/plugin/plugins/kspec/skills/task-work/SKILL.md +319 -0
  145. package/plugin/plugins/kspec/skills/triage-automation/SKILL.md +140 -0
  146. package/plugin/plugins/kspec/skills/triage-inbox/SKILL.md +232 -0
  147. package/plugin/plugins/kspec/skills/writing-specs/SKILL.md +354 -0
  148. package/templates/agents-sections/03-task-lifecycle.md +2 -2
  149. package/templates/agents-sections/04-pr-workflow.md +3 -3
  150. package/templates/agents-sections/05-commit-convention.md +14 -0
  151. package/templates/skills/create-workflow/SKILL.md +228 -0
  152. package/templates/skills/manifest.yaml +45 -0
  153. package/templates/skills/observations/SKILL.md +137 -0
  154. package/templates/skills/plan/SKILL.md +336 -0
  155. package/templates/skills/reflect/SKILL.md +155 -0
  156. package/templates/skills/review/SKILL.md +223 -0
  157. package/templates/skills/task-work/SKILL.md +312 -0
  158. package/templates/skills/triage-automation/SKILL.md +134 -0
  159. package/templates/skills/triage-inbox/SKILL.md +225 -0
  160. package/templates/skills/writing-specs/SKILL.md +347 -0
@@ -109,14 +109,53 @@ async function copyDirRecursive(src, dest) {
109
109
  }
110
110
  }
111
111
  }
112
+ /**
113
+ * Check if all source entries exist in dest with identical content.
114
+ * Uses subset comparison: extra files in dest are ignored since
115
+ * copyDirRecursive is an overlay copy that doesn't delete extra files.
116
+ */
117
+ async function sourceMatchesDest(src, dest) {
118
+ try {
119
+ const srcEntries = await fs.readdir(src);
120
+ const destEntries = new Set(await fs.readdir(dest));
121
+ for (const name of srcEntries) {
122
+ if (!destEntries.has(name))
123
+ return false;
124
+ const srcPath = path.join(src, name);
125
+ const destPath = path.join(dest, name);
126
+ const srcStat = await fs.stat(srcPath);
127
+ const destStat = await fs.stat(destPath);
128
+ if (srcStat.isDirectory() && destStat.isDirectory()) {
129
+ if (!(await sourceMatchesDest(srcPath, destPath)))
130
+ return false;
131
+ }
132
+ else if (srcStat.isFile() && destStat.isFile()) {
133
+ // Use Buffer comparison for binary safety (assets/ may contain images)
134
+ const srcBuf = await fs.readFile(srcPath);
135
+ const destBuf = await fs.readFile(destPath);
136
+ if (!srcBuf.equals(destBuf))
137
+ return false;
138
+ }
139
+ else {
140
+ return false; // Type mismatch
141
+ }
142
+ }
143
+ return true;
144
+ }
145
+ catch (_err) {
146
+ return false;
147
+ }
148
+ }
112
149
  /**
113
150
  * Copy all files for a core skill from templates to .kspec/skills/<id>/.
114
151
  * Copies SKILL.md and any supporting directories (docs/, references/, etc.).
152
+ * Skips writing files when content is unchanged to avoid unnecessary git diffs.
115
153
  * AC: @core-skill-install ac-2
116
154
  */
117
155
  export async function copyCoreSkillFiles(skillId, targetDir) {
118
156
  const templatesDir = getTemplatesDir();
119
157
  const sourceDir = path.join(templatesDir, skillId);
158
+ let changed = false;
120
159
  // Copy SKILL.md — skip if template doesn't exist, propagate real errors
121
160
  const skillMdPath = path.join(sourceDir, "SKILL.md");
122
161
  let content;
@@ -125,13 +164,25 @@ export async function copyCoreSkillFiles(skillId, targetDir) {
125
164
  }
126
165
  catch (err) {
127
166
  if (err instanceof Error && "code" in err && err.code === "ENOENT") {
128
- return; // No SKILL.md means nothing to copy
167
+ return { changed: false }; // No SKILL.md means nothing to copy
129
168
  }
130
169
  throw err;
131
170
  }
132
- await fs.mkdir(targetDir, { recursive: true });
133
- await fs.writeFile(path.join(targetDir, "SKILL.md"), content, "utf-8");
134
- // Copy supporting directories recursively
171
+ // Compare before writing to avoid unnecessary git diffs
172
+ const targetSkillMd = path.join(targetDir, "SKILL.md");
173
+ let existingContent = null;
174
+ try {
175
+ existingContent = await fs.readFile(targetSkillMd, "utf-8");
176
+ }
177
+ catch {
178
+ // Target doesn't exist yet
179
+ }
180
+ if (existingContent !== content) {
181
+ await fs.mkdir(targetDir, { recursive: true });
182
+ await fs.writeFile(targetSkillMd, content, "utf-8");
183
+ changed = true;
184
+ }
185
+ // Copy supporting directories recursively, skipping when unchanged
135
186
  for (const dirName of SKILL_SUPPORTING_DIRS) {
136
187
  const srcSubDir = path.join(sourceDir, dirName);
137
188
  try {
@@ -144,8 +195,14 @@ export async function copyCoreSkillFiles(skillId, targetDir) {
144
195
  }
145
196
  throw err; // Propagate real I/O errors
146
197
  }
147
- await copyDirRecursive(srcSubDir, path.join(targetDir, dirName));
198
+ const destSubDir = path.join(targetDir, dirName);
199
+ if (await sourceMatchesDest(srcSubDir, destSubDir)) {
200
+ continue; // Content unchanged, skip copy
201
+ }
202
+ await copyDirRecursive(srcSubDir, destSubDir);
203
+ changed = true;
148
204
  }
205
+ return { changed };
149
206
  }
150
207
  // ============================================================================
151
208
  // Command Registration
@@ -1 +1 @@
1
- {"version":3,"file":"skill-install.js","sourceRoot":"","sources":["../../../src/cli/commands/skill-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-install.js","sourceRoot":"","sources":["../../../src/cli/commands/skill-install.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiazC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA42D3D"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6azC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA26D3D"}
@@ -2,6 +2,7 @@ import chalk from "chalk";
2
2
  import { markMutating } from "../command-annotations.js";
3
3
  import { checkSlugUniqueness, createNote, createTask, createTodo, deleteTask, getAuthor, initContext, loadAllItems, loadAllTasks, ReferenceIndex, saveTask, scanTestCoverage, syncSpecImplementationStatus, } from "../../parser/index.js";
4
4
  import { commitIfShadow } from "../../parser/shadow.js";
5
+ import { normalizeRefInput } from "../../schema/index.js";
5
6
  import { alignmentCheck, errors } from "../../strings/index.js";
6
7
  import { formatCommitGuidance, printCommitGuidance, } from "../../utils/commit.js";
7
8
  import { executeBatchOperation, formatBatchOutput } from "../batch.js";
@@ -11,6 +12,7 @@ import { annotateNotesWithSuperseded, error, formatTaskDetails, info, isJsonMode
11
12
  import { parseIntOption, validateEnumOption, validateSpecRef, } from "../validators.js";
12
13
  import { addListOptions, listTasksAction } from "./tasks.js";
13
14
  import { findClosestCommand } from "../suggest.js";
15
+ import { checkBudget, incrementBudget, isEndLoopRequested } from "../../sessions/store.js";
14
16
  /**
15
17
  * Find a task by reference with detailed error reporting.
16
18
  * Returns the task or exits with appropriate error.
@@ -102,46 +104,60 @@ async function setTaskFields(foundTask, ctx, tasks, items, _allMetaItems, index,
102
104
  updatedTask.title = options.title;
103
105
  changes.push("title");
104
106
  }
105
- if (options.specRef) {
106
- // Validate the spec ref exists and is a spec item
107
- const specResult = index.resolve(options.specRef);
108
- if (!specResult.ok) {
109
- return {
110
- success: false,
111
- error: errors.reference.specRefNotFound(options.specRef),
112
- };
107
+ if (options.specRef !== undefined) {
108
+ // Handle 'null' string to clear spec_ref
109
+ if (options.specRef === "null") {
110
+ updatedTask.spec_ref = null;
111
+ changes.push("spec_ref: cleared");
113
112
  }
114
- // Check it's not a task
115
- const isTask = tasks.some((t) => t._ulid === specResult.ulid);
116
- if (isTask) {
117
- return {
118
- success: false,
119
- error: errors.reference.specRefIsTask(options.specRef),
120
- };
113
+ else {
114
+ // Validate the spec ref exists and is a spec item
115
+ const specResult = index.resolve(options.specRef);
116
+ if (!specResult.ok) {
117
+ return {
118
+ success: false,
119
+ error: errors.reference.specRefNotFound(options.specRef),
120
+ };
121
+ }
122
+ // Check it's not a task
123
+ const isTask = tasks.some((t) => t._ulid === specResult.ulid);
124
+ if (isTask) {
125
+ return {
126
+ success: false,
127
+ error: errors.reference.specRefIsTask(options.specRef),
128
+ };
129
+ }
130
+ updatedTask.spec_ref = normalizeRefInput(options.specRef);
131
+ changes.push("spec_ref");
121
132
  }
122
- updatedTask.spec_ref = options.specRef;
123
- changes.push("spec_ref");
124
133
  }
125
- if (options.metaRef) {
126
- // Validate the meta ref exists and is a meta item
127
- const metaRefResult = index.resolve(options.metaRef);
128
- if (!metaRefResult.ok) {
129
- return {
130
- success: false,
131
- error: errors.reference.metaRefNotFound(options.metaRef),
132
- };
134
+ if (options.metaRef !== undefined) {
135
+ // Handle 'null' string to clear meta_ref
136
+ if (options.metaRef === "null") {
137
+ updatedTask.meta_ref = null;
138
+ changes.push("meta_ref: cleared");
133
139
  }
134
- // Check if the resolved item is a meta item (not a spec item or task)
135
- const isTask = tasks.some((t) => t._ulid === metaRefResult.ulid);
136
- const isSpecItem = items.some((i) => i._ulid === metaRefResult.ulid);
137
- if (isTask || isSpecItem) {
138
- return {
139
- success: false,
140
- error: errors.reference.metaRefPointsToSpec(options.metaRef),
141
- };
140
+ else {
141
+ // Validate the meta ref exists and is a meta item
142
+ const metaRefResult = index.resolve(options.metaRef);
143
+ if (!metaRefResult.ok) {
144
+ return {
145
+ success: false,
146
+ error: errors.reference.metaRefNotFound(options.metaRef),
147
+ };
148
+ }
149
+ // Check if the resolved item is a meta item (not a spec item or task)
150
+ const isTask = tasks.some((t) => t._ulid === metaRefResult.ulid);
151
+ const isSpecItem = items.some((i) => i._ulid === metaRefResult.ulid);
152
+ if (isTask || isSpecItem) {
153
+ return {
154
+ success: false,
155
+ error: errors.reference.metaRefPointsToSpec(options.metaRef),
156
+ };
157
+ }
158
+ updatedTask.meta_ref = normalizeRefInput(options.metaRef);
159
+ changes.push("meta_ref");
142
160
  }
143
- updatedTask.meta_ref = options.metaRef;
144
- changes.push("meta_ref");
145
161
  }
146
162
  if (options.planRef !== undefined) {
147
163
  // Handle 'null' string to clear plan_ref
@@ -175,7 +191,7 @@ async function setTaskFields(foundTask, ctx, tasks, items, _allMetaItems, index,
175
191
  error: `Plan reference not found: ${options.planRef}`,
176
192
  };
177
193
  }
178
- updatedTask.plan_ref = options.planRef;
194
+ updatedTask.plan_ref = normalizeRefInput(options.planRef);
179
195
  changes.push("plan_ref");
180
196
  }
181
197
  }
@@ -224,7 +240,7 @@ async function setTaskFields(foundTask, ctx, tasks, items, _allMetaItems, index,
224
240
  };
225
241
  }
226
242
  }
227
- updatedTask.depends_on = options.dependsOn.map((ref) => ref.startsWith("@") ? ref : `@${ref}`);
243
+ updatedTask.depends_on = options.dependsOn.map(normalizeRefInput);
228
244
  changes.push("depends_on");
229
245
  }
230
246
  // AC: @spec-task-clear-deps ac-1, ac-2 - Clear all dependencies
@@ -556,13 +572,13 @@ Examples:
556
572
  title: options.title,
557
573
  description: descriptionValue,
558
574
  type: options.type,
559
- spec_ref: options.specRef || null,
560
- meta_ref: options.metaRef || null,
561
- plan_ref: options.planRef || null,
575
+ spec_ref: options.specRef ? normalizeRefInput(options.specRef) : null,
576
+ meta_ref: options.metaRef ? normalizeRefInput(options.metaRef) : null,
577
+ plan_ref: options.planRef ? normalizeRefInput(options.planRef) : null,
562
578
  priority: priorityResult.value,
563
579
  slugs: options.slug ? [options.slug] : [],
564
580
  tags: parseTagsArray(options.tag),
565
- depends_on: (options.dependsOn || []).map((ref) => ref.startsWith("@") ? ref : `@${ref}`),
581
+ depends_on: (options.dependsOn || []).map(normalizeRefInput),
566
582
  automation: automationValue,
567
583
  };
568
584
  const newTask = createTask(input);
@@ -584,8 +600,8 @@ Examples:
584
600
  .description("Update task fields")
585
601
  .option("--refs <refs...>", "Update multiple tasks (AC: @spec-task-set-batch ac-1)")
586
602
  .option("--title <title>", "Update task title")
587
- .option("--spec-ref <ref>", "Link to spec item")
588
- .option("--meta-ref <ref>", "Link to meta item (workflow, agent, or convention)")
603
+ .option("--spec-ref <ref>", "Link to spec item (use 'null' to clear)")
604
+ .option("--meta-ref <ref>", "Link to meta item (use 'null' to clear)")
589
605
  .option("--plan-ref <ref>", "Link to plan (use 'null' to clear)")
590
606
  .option("--priority <n>", "Set priority (1-5)")
591
607
  .option("--slug <slug>", "Add a slug alias")
@@ -794,14 +810,47 @@ Examples:
794
810
  error(errors.status.cannotStart(foundTask.status));
795
811
  process.exit(EXIT_CODES.VALIDATION_FAILED); // Exit code 4 = invalid state
796
812
  }
813
+ // AC: @session-scoped-task-claiming ac-startable - warn if claimed by another session
814
+ const sessionId = process.env.KSPEC_SESSION_ID || null;
815
+ if (foundTask.session_id &&
816
+ sessionId &&
817
+ foundTask.session_id !== sessionId) {
818
+ warn(`Task was claimed by session ${foundTask.session_id.slice(0, 8)}...`);
819
+ }
820
+ // AC: @session-end-loop-signal ac-block-task - Block if end-loop requested
821
+ if (sessionId) {
822
+ const endLoopState = await isEndLoopRequested(ctx.specDir, sessionId);
823
+ if (endLoopState?.requested) {
824
+ error(`Cannot start task: loop is ending for session ${sessionId.slice(0, 8)}...` +
825
+ (endLoopState.reason ? ` Reason: ${endLoopState.reason}` : ""));
826
+ info("The current session has been signaled to end. Wrap up current work instead of starting new tasks.");
827
+ process.exit(EXIT_CODES.VALIDATION_FAILED);
828
+ }
829
+ }
830
+ // AC: @task-budget-enforcement ac-block-start, ac-no-session, ac-no-budget
831
+ // Check budget before starting — only when session is set
832
+ const budgetCheck = await checkBudget(ctx.specDir, sessionId || undefined);
833
+ if (!budgetCheck.allowed) {
834
+ error(budgetCheck.reason);
835
+ process.exit(EXIT_CODES.VALIDATION_FAILED);
836
+ }
797
837
  // Update status
838
+ // AC: @session-scoped-task-claiming ac-stamp, ac-no-env
798
839
  const updatedTask = {
799
840
  ...foundTask,
800
841
  status: "in_progress",
801
842
  started_at: new Date().toISOString(),
843
+ ...(sessionId ? { session_id: sessionId } : {}),
802
844
  };
803
845
  await saveTask(ctx, updatedTask);
804
846
  await commitIfShadow(ctx.shadow, "task-start", foundTask.slugs[0] || index.shortUlid(foundTask._ulid));
847
+ // AC: @task-budget-enforcement ac-increment, ac-resume-no-increment
848
+ // Increment budget counter after successful start.
849
+ // Resume case (already in_progress) returns early above, so this only
850
+ // runs for genuine pending→in_progress or needs_work→in_progress transitions.
851
+ if (sessionId) {
852
+ await incrementBudget(ctx.specDir, sessionId);
853
+ }
805
854
  success(`Started task: ${index.shortUlid(updatedTask._ulid)}`, {
806
855
  task: updatedTask,
807
856
  });
@@ -857,11 +906,12 @@ Examples:
857
906
  .option("--refs <refs...>", "Complete multiple tasks by ref")
858
907
  .option("--reason <reason>", "Completion reason/notes")
859
908
  .option("--skip-review", "Skip review requirement (requires --reason)")
860
- .option("--force", "Force completion even if blocked (AC: @task-commands ac-1)")
909
+ .option("--force", "Force completion from any state (bypasses submit requirement)")
861
910
  .option("--no-sync", "Skip syncing spec implementation status")
862
911
  .addHelpText("after", `
863
912
  Examples:
864
913
  $ kspec task complete @task-slug --reason "Merged in PR #123"
914
+ $ kspec task complete @task-slug --force --reason "Design task, no code to review"
865
915
  $ kspec task complete --refs @task1 @task2 --reason "Batch completion"`)
866
916
  .action(async (ref, options) => {
867
917
  try {
@@ -894,11 +944,10 @@ Examples:
894
944
  error: errors.status.completeAlreadyCompleted,
895
945
  };
896
946
  }
897
- // AC: @task-commands ac-1 - Allow --force to bypass blocked state
898
- // Handle blocked task with --force before other checks
899
- const forcingBlockedTask = foundTask.status === "blocked" && options.force;
947
+ // AC: @task-commands ac-1 - Allow --force to bypass all state checks
948
+ const forcingCompletion = options.force;
900
949
  // AC: @spec-completion-enforcement ac-7 - Allow skip-review bypass
901
- if (!options.skipReview && !forcingBlockedTask) {
950
+ if (!options.skipReview && !forcingCompletion) {
902
951
  // AC: @spec-completion-enforcement ac-2
903
952
  if (foundTask.status === "in_progress") {
904
953
  return {
@@ -943,10 +992,21 @@ Examples:
943
992
  const skipNote = createNote(`Completed with --skip-review: ${options.reason}`, getAuthor(ctx.config?.identity?.author));
944
993
  taskNotes = [...taskNotes, skipNote];
945
994
  }
946
- // AC: @task-commands ac-1 - Document force completion of blocked task
947
- if (forcingBlockedTask) {
948
- const blockedBy = foundTask.blocked_by.join("; ");
949
- const forceNote = createNote(`Completed with --force despite blocked state. Was blocked by: ${blockedBy || "(dependency-blocked)"}${options.reason ? `. Reason: ${options.reason}` : ""}`, getAuthor(ctx.config?.identity?.author));
995
+ // AC: @task-commands ac-1 - Document force completion from non-standard state
996
+ const forcedFromNonStandard = forcingCompletion &&
997
+ foundTask.status !== "pending_review";
998
+ let forceStateDetail;
999
+ if (forcedFromNonStandard) {
1000
+ forceStateDetail = `from ${foundTask.status} state`;
1001
+ if (foundTask.status === "blocked") {
1002
+ const blockedBy = foundTask.blocked_by.join("; ");
1003
+ forceStateDetail += `. Was blocked by: ${blockedBy || "(dependency-blocked)"}`;
1004
+ }
1005
+ let forceMessage = `Completed with --force ${forceStateDetail}`;
1006
+ if (options.reason) {
1007
+ forceMessage += `. Reason: ${options.reason}`;
1008
+ }
1009
+ const forceNote = createNote(forceMessage, getAuthor(ctx.config?.identity?.author));
950
1010
  taskNotes = [...taskNotes, forceNote];
951
1011
  }
952
1012
  // Update status
@@ -981,11 +1041,10 @@ Examples:
981
1041
  }
982
1042
  }
983
1043
  }
984
- // AC: @task-commands ac-1 - Show warning when force-completing blocked task
1044
+ // AC: @task-commands ac-1 - Show warning when force-completing from non-standard state
985
1045
  let warningMsg;
986
- if (forcingBlockedTask) {
987
- const blockedBy = foundTask.blocked_by.join("; ");
988
- warningMsg = `Task was blocked by: ${blockedBy || "(dependency-blocked)"}`;
1046
+ if (forcedFromNonStandard) {
1047
+ warningMsg = `Task was force-completed ${forceStateDetail}`;
989
1048
  if (!isJsonMode()) {
990
1049
  warn(warningMsg);
991
1050
  }
@@ -994,7 +1053,7 @@ Examples:
994
1053
  success: true,
995
1054
  message: `Completed task: ${index.shortUlid(updatedTask._ulid)}`,
996
1055
  data: updatedTask,
997
- ...(forcingBlockedTask && { warning: warningMsg }),
1056
+ ...(warningMsg && { warning: warningMsg }),
998
1057
  };
999
1058
  }
1000
1059
  catch (err) {
@@ -1043,6 +1102,7 @@ Examples:
1043
1102
  const updatedTask = {
1044
1103
  ...foundTask,
1045
1104
  status: "pending_review",
1105
+ submitted_at: new Date().toISOString(),
1046
1106
  };
1047
1107
  await saveTask(ctx, updatedTask);
1048
1108
  await commitIfShadow(ctx.shadow, "task-submit", foundTask.slugs[0] || index.shortUlid(foundTask._ulid));
@@ -1066,16 +1126,18 @@ Examples:
1066
1126
  const index = new ReferenceIndex(tasks, items);
1067
1127
  const foundTask = resolveTaskRef(ref, tasks, index);
1068
1128
  if (foundTask.status !== "pending_review") {
1069
- error(`Cannot transition task to needs_work from status: ${foundTask.status}. Task must be pending_review.`);
1129
+ error(errors.status.cannotNeedsWork(foundTask.status));
1070
1130
  process.exit(EXIT_CODES.VALIDATION_FAILED);
1071
1131
  }
1072
1132
  // Track fix cycle count from existing kickback notes
1073
1133
  const existingKickbacks = foundTask.notes.filter((n) => n.content.includes("[FIX_CYCLE:")).length;
1074
1134
  const cycleNumber = existingKickbacks + 1;
1075
1135
  const note = createNote(`[FIX_CYCLE: ${cycleNumber}] Review findings: ${options.reason}`, getAuthor(ctx.config?.identity?.author));
1136
+ // AC: @session-scoped-task-claiming ac-claim-clear
1076
1137
  const updatedTask = {
1077
1138
  ...foundTask,
1078
1139
  status: "needs_work",
1140
+ session_id: null,
1079
1141
  notes: [...foundTask.notes, note],
1080
1142
  };
1081
1143
  await saveTask(ctx, updatedTask);
@@ -1083,7 +1145,7 @@ Examples:
1083
1145
  success(`Kicked back task: ${index.shortUlid(updatedTask._ulid)} (fix cycle ${cycleNumber})`, { task: updatedTask });
1084
1146
  }
1085
1147
  catch (err) {
1086
- error("Failed to transition task to needs_work", err);
1148
+ error(errors.failures.needsWorkTask, err);
1087
1149
  process.exit(EXIT_CODES.ERROR);
1088
1150
  }
1089
1151
  });
@@ -1133,10 +1195,12 @@ Examples:
1133
1195
  warn("Task is not blocked");
1134
1196
  return;
1135
1197
  }
1198
+ // AC: @session-scoped-task-claiming ac-claim-clear
1136
1199
  const updatedTask = {
1137
1200
  ...foundTask,
1138
1201
  status: "pending",
1139
1202
  blocked_by: [],
1203
+ session_id: null,
1140
1204
  };
1141
1205
  await saveTask(ctx, updatedTask);
1142
1206
  await commitIfShadow(ctx.shadow, "task-unblock", foundTask.slugs[0] || index.shortUlid(foundTask._ulid));
@@ -1261,6 +1325,11 @@ Examples:
1261
1325
  updatedTask.blocked_by = [];
1262
1326
  clearedFields.push("blocked_by");
1263
1327
  }
1328
+ // AC: @session-scoped-task-claiming ac-claim-clear
1329
+ if (foundTask.session_id) {
1330
+ updatedTask.session_id = null;
1331
+ clearedFields.push("session_id");
1332
+ }
1264
1333
  // AC: @spec-task-reset ac-4 - Add note documenting the reset
1265
1334
  // AC: @spec-task-reset ac-author
1266
1335
  const noteContent = `Reset from ${previousStatus} to pending${cancelReasonText}`;