opencode-swarm 6.27.1 → 6.28.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 (2) hide show
  1. package/dist/index.js +11 -9
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -40332,11 +40332,11 @@ INPUT: [provide the complete plan content below]
40332
40332
  CONSTRAINT: Write EXACTLY the content provided. Do not modify, summarize, or interpret.
40333
40333
 
40334
40334
  TASK GRANULARITY RULES:
40335
- - SMALL task: 1 file, 1 function/class/component, 1 logical concern. Delegate as-is.
40336
- - MEDIUM task: If it touches >1 file, SPLIT into sequential file-scoped subtasks before writing to plan.
40337
- - LARGE task: MUST be decomposed before writing to plan. A LARGE task in the plan is a planning error.
40338
- - Litmus test: If you cannot write TASK + FILE + constraint in 3 bullet points, the task is too large. Split it.
40339
- - NEVER write a task with compound verbs: "implement X and add Y and update Z" = 3 tasks, not 1. Split before writing to plan.
40335
+ - SMALL task: 1-2 files, 1 logical concern. Delegate as-is.
40336
+ - MEDIUM task: 3-5 files within a single logical concern (e.g., implementation + test + type update). Delegate as-is.
40337
+ - LARGE task: 6+ files OR multiple unrelated concerns. SPLIT into logical units (not per-file) before writing to plan.
40338
+ - Litmus test: If the task has ONE clear purpose and the coder can hold the full context, it's fine. Split only when concerns are unrelated.
40339
+ - Compound verbs are OK when they describe a single logical change: "add validation to handler and update its test" = 1 task. "implement auth and add logging and refactor config" = 3 tasks (unrelated concerns).
40340
40340
  - Coder receives ONE task. You make ALL scope decisions in the plan. Coder makes zero scope decisions.
40341
40341
 
40342
40342
  PHASE COUNT GUIDANCE:
@@ -40815,7 +40815,7 @@ REVIEW CHECKLIST:
40815
40815
  - Dependencies: Are task dependencies correct? Will ordering work?
40816
40816
  - Risk: Are high-risk changes identified? Is there a rollback path?
40817
40817
  - AI-Slop Detection: Does the plan contain vague filler ("robust", "comprehensive", "leverage") without concrete specifics?
40818
- - Task Atomicity: Does any single task touch 2+ files or contain compound verbs ("implement X and add Y and update Z")? Flag as MAJOR \u2014 oversized tasks blow coder's context and cause downstream gate failures. Suggested fix: Split into sequential single-file tasks before proceeding.
40818
+ - Task Atomicity: Does any single task touch 6+ files or mix unrelated concerns ("implement auth and add logging and refactor config")? Flag as MAJOR \u2014 oversized tasks blow coder's context and cause downstream gate failures. Suggested fix: Split into logical units grouped by concern, not per-file subtasks.
40819
40819
  - Governance Compliance (conditional): If \`.swarm/context.md\` contains a \`## Project Governance\` section, read the MUST and SHOULD rules and validate the plan against them. MUST rule violations are CRITICAL severity. SHOULD rule violations are recommendation-level (note them but do not block approval). If no \`## Project Governance\` section exists in context.md, skip this check silently.
40820
40820
 
40821
40821
  ## PLAN ASSESSMENT DIMENSIONS
@@ -49557,7 +49557,8 @@ function createDelegationGateHook(config3, directory) {
49557
49557
  }
49558
49558
  }
49559
49559
  if (typeof subagentType === "string") {
49560
- const evidenceTaskId = getEvidenceTaskId(session, directory);
49560
+ const rawTaskId = directArgs?.task_id;
49561
+ const evidenceTaskId = typeof rawTaskId === "string" && rawTaskId.length <= 20 && /^\d+\.\d+$/.test(rawTaskId.trim()) ? rawTaskId.trim() : getEvidenceTaskId(session, directory);
49561
49562
  if (evidenceTaskId) {
49562
49563
  try {
49563
49564
  const turbo = hasActiveTurboMode();
@@ -49676,7 +49677,8 @@ function createDelegationGateHook(config3, directory) {
49676
49677
  }
49677
49678
  }
49678
49679
  {
49679
- const evidenceTaskId = getEvidenceTaskId(session, directory);
49680
+ const rawTaskId = directArgs?.task_id;
49681
+ const evidenceTaskId = typeof rawTaskId === "string" && rawTaskId.length <= 20 && /^\d+\.\d+$/.test(rawTaskId.trim()) ? rawTaskId.trim() : getEvidenceTaskId(session, directory);
49680
49682
  if (evidenceTaskId) {
49681
49683
  try {
49682
49684
  const turbo = hasActiveTurboMode();
@@ -52273,7 +52275,7 @@ function isWriteToEvidenceFile(input) {
52273
52275
  const rawFile = record3.file;
52274
52276
  const pathField = typeof rawPath === "string" ? rawPath.replace(/\\/g, "/") : undefined;
52275
52277
  const fileField = typeof rawFile === "string" ? rawFile.replace(/\\/g, "/") : undefined;
52276
- const evidenceRegex = /\.swarm\/evidence\/retro-[^/]+\/evidence\.json$/;
52278
+ const evidenceRegex = /\.swarm\/+evidence\/+/i;
52277
52279
  if (typeof pathField === "string" && evidenceRegex.test(pathField)) {
52278
52280
  return true;
52279
52281
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "6.27.1",
3
+ "version": "6.28.0",
4
4
  "description": "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",