opencode-swarm-plugin 0.17.1 → 0.19.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.
- package/.beads/issues.jsonl +95 -85
- package/.github/workflows/ci.yml +5 -1
- package/README.md +48 -4
- package/dist/index.js +2652 -2080
- package/dist/plugin.js +2302 -1725
- package/package.json +1 -1
- package/src/agent-mail.ts +13 -0
- package/src/anti-patterns.test.ts +1167 -0
- package/src/anti-patterns.ts +29 -11
- package/src/learning.ts +106 -0
- package/src/pattern-maturity.ts +51 -13
- package/src/plugin.ts +15 -3
- package/src/rate-limiter.ts +48 -4
- package/src/schemas/bead.ts +35 -4
- package/src/schemas/evaluation.ts +18 -6
- package/src/schemas/index.ts +25 -2
- package/src/schemas/task.ts +49 -21
- package/src/streams/debug.ts +101 -3
- package/src/streams/index.ts +87 -1
- package/src/streams/migrations.ts +46 -4
- package/src/streams/projections.ts +15 -0
- package/src/streams/store.integration.test.ts +110 -0
- package/src/streams/store.ts +447 -193
- package/src/structured.test.ts +1046 -0
- package/src/structured.ts +74 -27
- package/src/swarm-decompose.ts +912 -0
- package/src/swarm-orchestrate.ts +1869 -0
- package/src/swarm-prompts.ts +756 -0
- package/src/swarm-strategies.ts +407 -0
- package/src/swarm.ts +23 -3639
- package/src/tool-availability.ts +29 -6
- package/test-bug-fixes.ts +86 -0
package/.beads/issues.jsonl
CHANGED
|
@@ -18,17 +18,17 @@
|
|
|
18
18
|
{"id":"opencode-swarm-plugin-0bodc.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:23.726612-08:00","updated_at":"2025-12-09T10:00:26.219506-08:00","closed_at":"2025-12-09T10:00:26.219506-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0bodc.1","depends_on_id":"opencode-swarm-plugin-0bodc","type":"parent-child","created_at":"2025-12-09T10:00:23.72705-08:00","created_by":"daemon"}]}
|
|
19
19
|
{"id":"opencode-swarm-plugin-0bodc.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-09T10:00:23.772101-08:00","updated_at":"2025-12-09T10:00:26.249968-08:00","closed_at":"2025-12-09T10:00:26.249968-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0bodc.2","depends_on_id":"opencode-swarm-plugin-0bodc","type":"parent-child","created_at":"2025-12-09T10:00:23.772406-08:00","created_by":"daemon"}]}
|
|
20
20
|
{"id":"opencode-swarm-plugin-0bodc.3","title":"Subtask 3","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-09T10:00:23.815565-08:00","updated_at":"2025-12-09T10:00:26.281479-08:00","closed_at":"2025-12-09T10:00:26.281479-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0bodc.3","depends_on_id":"opencode-swarm-plugin-0bodc","type":"parent-child","created_at":"2025-12-09T10:00:23.815895-08:00","created_by":"daemon"}]}
|
|
21
|
-
{"id":"opencode-swarm-plugin-0bv4r","title":"Add validation to promotePattern state transition","description":"src/pattern-maturity.ts:266-282 - promotePattern throws on deprecated but silently returns on already proven. Consider warning or error for unexpected states like promoting from \"candidate\" without enough feedback.","status":"
|
|
21
|
+
{"id":"opencode-swarm-plugin-0bv4r","title":"Add validation to promotePattern state transition","description":"src/pattern-maturity.ts:266-282 - promotePattern throws on deprecated but silently returns on already proven. Consider warning or error for unexpected states like promoting from \"candidate\" without enough feedback.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:36.184348-08:00","updated_at":"2025-12-13T16:20:33.514538-08:00","closed_at":"2025-12-13T16:20:33.514538-08:00"}
|
|
22
22
|
{"id":"opencode-swarm-plugin-0giv","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:27.5822-08:00","updated_at":"2025-12-08T08:21:30.125084-08:00","closed_at":"2025-12-08T08:21:30.125084-08:00"}
|
|
23
23
|
{"id":"opencode-swarm-plugin-0h7kz","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:20:49.245547-08:00","updated_at":"2025-12-13T11:20:52.464106-08:00","closed_at":"2025-12-13T11:20:52.464106-08:00"}
|
|
24
|
-
{"id":"opencode-swarm-plugin-0idn1","title":"Document minSuccessRate default in formatSuccessfulPatternsForPrompt","description":"src/anti-patterns.ts:333 - minSuccessRate default 0.7 (70%) is arbitrary. Add JSDoc: \"/** @param minSuccessRate - Minimum success rate to include (default 0.7 = 70%, chosen to filter out patterns with marginal track records) */\"","status":"
|
|
24
|
+
{"id":"opencode-swarm-plugin-0idn1","title":"Document minSuccessRate default in formatSuccessfulPatternsForPrompt","description":"src/anti-patterns.ts:333 - minSuccessRate default 0.7 (70%) is arbitrary. Add JSDoc: \"/** @param minSuccessRate - Minimum success rate to include (default 0.7 = 70%, chosen to filter out patterns with marginal track records) */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:26.678439-08:00","updated_at":"2025-12-13T16:41:56.006348-08:00","closed_at":"2025-12-13T16:41:56.006348-08:00"}
|
|
25
25
|
{"id":"opencode-swarm-plugin-0jxx","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:16.923763-08:00","updated_at":"2025-12-08T08:22:19.339586-08:00","closed_at":"2025-12-08T08:22:19.339586-08:00"}
|
|
26
26
|
{"id":"opencode-swarm-plugin-0kb2","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:23:18.591779-08:00","updated_at":"2025-12-08T08:23:20.415392-08:00","closed_at":"2025-12-08T08:23:20.415392-08:00"}
|
|
27
27
|
{"id":"opencode-swarm-plugin-0khc","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:23.920316-08:00","updated_at":"2025-12-08T11:11:25.828401-08:00","closed_at":"2025-12-08T11:11:25.828401-08:00"}
|
|
28
28
|
{"id":"opencode-swarm-plugin-0khc.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:23.994204-08:00","updated_at":"2025-12-08T11:11:25.880828-08:00","closed_at":"2025-12-08T11:11:25.880828-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0khc.2","depends_on_id":"opencode-swarm-plugin-0khc","type":"parent-child","created_at":"2025-12-08T11:11:23.994475-08:00","created_by":"daemon"}]}
|
|
29
29
|
{"id":"opencode-swarm-plugin-0l14i","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:12:42.287672-08:00","updated_at":"2025-12-08T11:12:44.151565-08:00","closed_at":"2025-12-08T11:12:44.151565-08:00"}
|
|
30
30
|
{"id":"opencode-swarm-plugin-0l14i.1","title":"Only task","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T11:12:42.322958-08:00","updated_at":"2025-12-08T11:12:44.174169-08:00","closed_at":"2025-12-08T11:12:44.174169-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0l14i.1","depends_on_id":"opencode-swarm-plugin-0l14i","type":"parent-child","created_at":"2025-12-08T11:12:42.323335-08:00","created_by":"daemon"}]}
|
|
31
|
-
{"id":"opencode-swarm-plugin-0l5bq","title":"Add JSDoc to extractPatternsFromDescription regex patterns","description":"src/anti-patterns.ts:220-260 - strategyPatterns array has 12 regex patterns but no explanation of detection logic. Add comment: \"Detects common decomposition strategies via keyword matching. Not exhaustive - patterns can be manually created for novel strategies.\"","status":"
|
|
31
|
+
{"id":"opencode-swarm-plugin-0l5bq","title":"Add JSDoc to extractPatternsFromDescription regex patterns","description":"src/anti-patterns.ts:220-260 - strategyPatterns array has 12 regex patterns but no explanation of detection logic. Add comment: \"Detects common decomposition strategies via keyword matching. Not exhaustive - patterns can be manually created for novel strategies.\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:22.738997-08:00","updated_at":"2025-12-13T16:41:55.320002-08:00","closed_at":"2025-12-13T16:41:55.320002-08:00"}
|
|
32
32
|
{"id":"opencode-swarm-plugin-0lidx","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:41.181135-08:00","updated_at":"2025-12-08T11:12:43.741036-08:00","closed_at":"2025-12-08T11:12:43.741036-08:00"}
|
|
33
33
|
{"id":"opencode-swarm-plugin-0llr","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:42.509809-08:00","updated_at":"2025-12-07T19:56:44.737443-08:00","closed_at":"2025-12-07T19:56:44.737443-08:00"}
|
|
34
34
|
{"id":"opencode-swarm-plugin-0lo41","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:06:06.208543-08:00","updated_at":"2025-12-10T09:06:09.912935-08:00","closed_at":"2025-12-10T09:06:09.912935-08:00"}
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
{"id":"opencode-swarm-plugin-1dpc.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:19.498318-08:00","updated_at":"2025-12-08T08:23:19.595083-08:00","closed_at":"2025-12-08T08:23:19.595083-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-1dpc.2","depends_on_id":"opencode-swarm-plugin-1dpc","type":"parent-child","created_at":"2025-12-08T08:23:19.498652-08:00","created_by":"daemon"}]}
|
|
65
65
|
{"id":"opencode-swarm-plugin-1fga","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:11.347823-08:00","updated_at":"2025-12-08T07:49:11.427718-08:00","closed_at":"2025-12-08T07:49:11.427718-08:00"}
|
|
66
66
|
{"id":"opencode-swarm-plugin-1fj","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:33.890179-08:00","updated_at":"2025-12-07T19:37:36.077012-08:00","closed_at":"2025-12-07T19:37:36.077012-08:00"}
|
|
67
|
-
{"id":"opencode-swarm-plugin-1fskr","title":"Feature: Coordinator delegates planning to swarm/planner subagent","description":"## Problem\nCoordinators currently do planning inline, which:\n- Consumes main thread context with decomposition reasoning\n- Pollutes coordinator context with file contents, analysis, etc.\n- Makes long swarms hit context limits faster\n\n## Solution\nAdd a `swarm_delegate_planning` tool that:\n1. Creates a planning bead with full task context\n2. Spawns swarm/planner subagent with the bead\n3. Subagent returns ONLY structured BeadTree JSON\n4. Coordinator validates and creates beads from response\n\n## Implementation\n\n### New Tool: swarm_delegate_planning\n```typescript\ninterface DelegatePlanningArgs {\n task: string\n context?: string // Additional context to include\n max_subtasks?: number\n strategy?: \"auto\" | \"file-based\" | \"feature-based\" | \"risk-based\" | \"socratic\"\n}\n\ninterface DelegatePlanningResult {\n bead_tree: BeadTree // Validated decomposition\n planning_bead_id: string // For reference\n strategy_used: string\n}\n```\n\n### Workflow Change\n**Before (context-heavy):**\n```\nCoordinator:\n → swarm_select_strategy (inline)\n → swarm_plan_prompt (inline, dumps context)\n → Agent reasons about decomposition (inline)\n → swarm_validate_decomposition (inline)\n → beads_create_epic\n```\n\n**After (context-lean):**\n```\nCoordinator:\n → swarm_delegate_planning(task, context)\n └─ [Subagent does all planning work]\n └─ Returns only BeadTree JSON\n → beads_create_epic (from validated result)\n```\n\n### Benefits\n- Coordinator context stays lean (orchestration only)\n- Planning reasoning isolated in subagent\n- Subagent can use skills, search CASS, read files without polluting main thread\n- Failed planning doesn't corrupt coordinator state\n\n## Files to Modify\n- src/swarm.ts - Add swarm_delegate_planning tool\n- src/index.ts - Export new tool\n- examples/commands/swarm.md - Update coordinator workflow\n- global-skills/swarm-coordination/SKILL.md - Document pattern\n\n## Success Criteria\n- Coordinator can decompose complex tasks without context bloat\n- Planning failures don't crash coordinator\n- BeadTree validation happens before coordinator sees it\n- Backward compatible (existing tools still work)","status":"
|
|
67
|
+
{"id":"opencode-swarm-plugin-1fskr","title":"Feature: Coordinator delegates planning to swarm/planner subagent","description":"## Problem\nCoordinators currently do planning inline, which:\n- Consumes main thread context with decomposition reasoning\n- Pollutes coordinator context with file contents, analysis, etc.\n- Makes long swarms hit context limits faster\n\n## Solution\nAdd a `swarm_delegate_planning` tool that:\n1. Creates a planning bead with full task context\n2. Spawns swarm/planner subagent with the bead\n3. Subagent returns ONLY structured BeadTree JSON\n4. Coordinator validates and creates beads from response\n\n## Implementation\n\n### New Tool: swarm_delegate_planning\n```typescript\ninterface DelegatePlanningArgs {\n task: string\n context?: string // Additional context to include\n max_subtasks?: number\n strategy?: \"auto\" | \"file-based\" | \"feature-based\" | \"risk-based\" | \"socratic\"\n}\n\ninterface DelegatePlanningResult {\n bead_tree: BeadTree // Validated decomposition\n planning_bead_id: string // For reference\n strategy_used: string\n}\n```\n\n### Workflow Change\n**Before (context-heavy):**\n```\nCoordinator:\n → swarm_select_strategy (inline)\n → swarm_plan_prompt (inline, dumps context)\n → Agent reasons about decomposition (inline)\n → swarm_validate_decomposition (inline)\n → beads_create_epic\n```\n\n**After (context-lean):**\n```\nCoordinator:\n → swarm_delegate_planning(task, context)\n └─ [Subagent does all planning work]\n └─ Returns only BeadTree JSON\n → beads_create_epic (from validated result)\n```\n\n### Benefits\n- Coordinator context stays lean (orchestration only)\n- Planning reasoning isolated in subagent\n- Subagent can use skills, search CASS, read files without polluting main thread\n- Failed planning doesn't corrupt coordinator state\n\n## Files to Modify\n- src/swarm.ts - Add swarm_delegate_planning tool\n- src/index.ts - Export new tool\n- examples/commands/swarm.md - Update coordinator workflow\n- global-skills/swarm-coordination/SKILL.md - Document pattern\n\n## Success Criteria\n- Coordinator can decompose complex tasks without context bloat\n- Planning failures don't crash coordinator\n- BeadTree validation happens before coordinator sees it\n- Backward compatible (existing tools still work)","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-13T14:08:54.208003-08:00","updated_at":"2025-12-13T15:59:40.405459-08:00","closed_at":"2025-12-13T15:59:40.405459-08:00"}
|
|
68
68
|
{"id":"opencode-swarm-plugin-1gtm","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:39.569462-08:00","updated_at":"2025-12-08T08:11:42.010151-08:00","closed_at":"2025-12-08T08:11:42.010151-08:00"}
|
|
69
69
|
{"id":"opencode-swarm-plugin-1i8","title":"Test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:23:49.873224-08:00","updated_at":"2025-12-07T19:24:13.408304-08:00","closed_at":"2025-12-07T19:24:13.408304-08:00"}
|
|
70
70
|
{"id":"opencode-swarm-plugin-1j0t","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:49.618076-08:00","updated_at":"2025-12-08T07:46:49.644609-08:00","closed_at":"2025-12-08T07:46:49.644609-08:00"}
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
{"id":"opencode-swarm-plugin-2gp2","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T08:11:39.680689-08:00","updated_at":"2025-12-08T08:11:42.060492-08:00","closed_at":"2025-12-08T08:11:42.060492-08:00"}
|
|
131
131
|
{"id":"opencode-swarm-plugin-2h3o","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.619593-08:00","updated_at":"2025-12-08T11:11:25.389157-08:00","closed_at":"2025-12-08T11:11:25.389157-08:00"}
|
|
132
132
|
{"id":"opencode-swarm-plugin-2j38","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:24.714793-08:00","updated_at":"2025-12-08T11:10:27.316849-08:00","closed_at":"2025-12-08T11:10:27.316849-08:00"}
|
|
133
|
-
{"id":"opencode-swarm-plugin-2klp9","title":"Pattern: CSO - Claude Search Optimization for Skills","description":"## CSO - Claude Search Optimization (from obra/superpowers)\n\n**Purpose:** Claude reads skill descriptions to decide which skills to load. Make descriptions answer: \"Should I read this skill right now?\"\n\n### Description Field Format\n- Start with \"Use when...\" to focus on triggering conditions\n- Third-person only (injected into system prompt)\n- Include BOTH what it does AND when to use it\n- Max 1024 chars (aim for \u003c500)\n\n### Examples\n```yaml\n# ❌ BAD: Too abstract\ndescription: For async testing\n\n# ❌ BAD: First person\ndescription: I can help you with async tests\n\n# ❌ BAD: Technology-specific but skill isn't\ndescription: Use when tests use setTimeout and are flaky\n\n# ✅ GOOD: Trigger + problem + solution\ndescription: Use when tests have race conditions, timing dependencies, or pass/fail inconsistently - replaces arbitrary timeouts with condition polling\n```\n\n### Keyword Coverage\nUse words Claude would search for:\n- **Error messages:** \"Hook timed out\", \"ENOTEMPTY\", \"race condition\"\n- **Symptoms:** \"flaky\", \"hanging\", \"zombie\", \"pollution\"\n- **Synonyms:** \"timeout/hang/freeze\", \"cleanup/teardown/afterEach\"\n- **Tools:** Actual commands, library names, file types\n\n### Token Efficiency\n- getting-started workflows: \u003c150 words\n- Frequently-loaded skills: \u003c200 words\n- Other skills: \u003c500 words\n- Move details to tool --help\n- Use cross-references instead of repeating\n\n### Naming Conventions\n- Active voice, verb-first: `creating-skills` not `skill-creation`\n- Gerunds work well: `testing-skills`, `debugging-with-logs`\n- Name by what you DO: `condition-based-waiting` \u003e `async-test-helpers`\n\n**Full analysis:** .beads/analysis/skill-architecture-meta-skills.md","status":"
|
|
133
|
+
{"id":"opencode-swarm-plugin-2klp9","title":"Pattern: CSO - Claude Search Optimization for Skills","description":"## CSO - Claude Search Optimization (from obra/superpowers)\n\n**Purpose:** Claude reads skill descriptions to decide which skills to load. Make descriptions answer: \"Should I read this skill right now?\"\n\n### Description Field Format\n- Start with \"Use when...\" to focus on triggering conditions\n- Third-person only (injected into system prompt)\n- Include BOTH what it does AND when to use it\n- Max 1024 chars (aim for \u003c500)\n\n### Examples\n```yaml\n# ❌ BAD: Too abstract\ndescription: For async testing\n\n# ❌ BAD: First person\ndescription: I can help you with async tests\n\n# ❌ BAD: Technology-specific but skill isn't\ndescription: Use when tests use setTimeout and are flaky\n\n# ✅ GOOD: Trigger + problem + solution\ndescription: Use when tests have race conditions, timing dependencies, or pass/fail inconsistently - replaces arbitrary timeouts with condition polling\n```\n\n### Keyword Coverage\nUse words Claude would search for:\n- **Error messages:** \"Hook timed out\", \"ENOTEMPTY\", \"race condition\"\n- **Symptoms:** \"flaky\", \"hanging\", \"zombie\", \"pollution\"\n- **Synonyms:** \"timeout/hang/freeze\", \"cleanup/teardown/afterEach\"\n- **Tools:** Actual commands, library names, file types\n\n### Token Efficiency\n- getting-started workflows: \u003c150 words\n- Frequently-loaded skills: \u003c200 words\n- Other skills: \u003c500 words\n- Move details to tool --help\n- Use cross-references instead of repeating\n\n### Naming Conventions\n- Active voice, verb-first: `creating-skills` not `skill-creation`\n- Gerunds work well: `testing-skills`, `debugging-with-logs`\n- Name by what you DO: `condition-based-waiting` \u003e `async-test-helpers`\n\n**Full analysis:** .beads/analysis/skill-architecture-meta-skills.md","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-13T14:00:50.930936-08:00","updated_at":"2025-12-13T15:50:56.528937-08:00","closed_at":"2025-12-13T15:50:56.528937-08:00"}
|
|
134
134
|
{"id":"opencode-swarm-plugin-2kpi","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T11:12:40.799487-08:00","updated_at":"2025-12-08T11:12:43.550149-08:00","closed_at":"2025-12-08T11:12:43.550149-08:00"}
|
|
135
135
|
{"id":"opencode-swarm-plugin-2l1z","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:25.634298-08:00","updated_at":"2025-12-08T11:10:27.704419-08:00","closed_at":"2025-12-08T11:10:27.704419-08:00"}
|
|
136
136
|
{"id":"opencode-swarm-plugin-2l4d","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:09.9045-08:00","updated_at":"2025-12-08T08:25:12.384034-08:00","closed_at":"2025-12-08T08:25:12.384034-08:00"}
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
{"id":"opencode-swarm-plugin-3pj","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:35.468436-08:00","updated_at":"2025-12-07T19:37:36.793281-08:00","closed_at":"2025-12-07T19:37:36.793281-08:00"}
|
|
202
202
|
{"id":"opencode-swarm-plugin-3qp","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:09.845918-08:00","updated_at":"2025-12-07T19:39:11.927501-08:00","closed_at":"2025-12-07T19:39:11.927501-08:00"}
|
|
203
203
|
{"id":"opencode-swarm-plugin-3r550","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:56.39931-08:00","updated_at":"2025-12-08T11:12:58.421488-08:00","closed_at":"2025-12-08T11:12:58.421488-08:00"}
|
|
204
|
-
{"id":"opencode-swarm-plugin-3s3nr","title":"Gap: No pagination for large event reads","description":"src/streams/store.ts:214-263 - replayEvents() reads ALL events into memory without pagination. For large event logs (\u003e100k events), this could cause OOM. readEvents() has limit/offset but replayEvents doesn't use it. Should: paginate event replay (process in batches of 1000), add progress reporting, consider streaming API for large replays. Also affects debugEvents in debug.ts.","status":"
|
|
204
|
+
{"id":"opencode-swarm-plugin-3s3nr","title":"Gap: No pagination for large event reads","description":"src/streams/store.ts:214-263 - replayEvents() reads ALL events into memory without pagination. For large event logs (\u003e100k events), this could cause OOM. readEvents() has limit/offset but replayEvents doesn't use it. Should: paginate event replay (process in batches of 1000), add progress reporting, consider streaming API for large replays. Also affects debugEvents in debug.ts.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:25:10.536039-08:00","updated_at":"2025-12-13T16:20:31.328659-08:00","closed_at":"2025-12-13T16:20:31.328659-08:00"}
|
|
205
205
|
{"id":"opencode-swarm-plugin-3zw","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:09.954171-08:00","updated_at":"2025-12-07T19:39:11.975757-08:00","closed_at":"2025-12-07T19:39:11.975757-08:00"}
|
|
206
206
|
{"id":"opencode-swarm-plugin-4063b","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:16:36.180358-08:00","updated_at":"2025-12-13T11:16:40.104382-08:00","closed_at":"2025-12-13T11:16:40.104382-08:00"}
|
|
207
207
|
{"id":"opencode-swarm-plugin-40dw","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:30.93528-08:00","updated_at":"2025-12-08T09:09:33.280064-08:00","closed_at":"2025-12-08T09:09:33.280064-08:00"}
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
{"id":"opencode-swarm-plugin-4942","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:09.50503-08:00","updated_at":"2025-12-08T11:11:11.381465-08:00","closed_at":"2025-12-08T11:11:11.381465-08:00"}
|
|
225
225
|
{"id":"opencode-swarm-plugin-4bitt","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:20:46.452234-08:00","updated_at":"2025-12-13T11:20:51.060861-08:00","closed_at":"2025-12-13T11:20:51.060861-08:00"}
|
|
226
226
|
{"id":"opencode-swarm-plugin-4c0th","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T14:48:40.369138-08:00","updated_at":"2025-12-13T14:48:44.668923-08:00","closed_at":"2025-12-13T14:48:44.668923-08:00"}
|
|
227
|
-
{"id":"opencode-swarm-plugin-4cbdw","title":"Document schema_name enum values in structured_validate","description":"src/structured.ts:351-353 - schema_name enum [\"evaluation\", \"task_decomposition\", \"bead_tree\"] not documented. Add description: \"Schema to validate against (evaluation=agent self-eval, task_decomposition=swarm breakdown, bead_tree=epic+subtasks)\"","status":"
|
|
227
|
+
{"id":"opencode-swarm-plugin-4cbdw","title":"Document schema_name enum values in structured_validate","description":"src/structured.ts:351-353 - schema_name enum [\"evaluation\", \"task_decomposition\", \"bead_tree\"] not documented. Add description: \"Schema to validate against (evaluation=agent self-eval, task_decomposition=swarm breakdown, bead_tree=epic+subtasks)\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:54.29152-08:00","updated_at":"2025-12-13T16:45:46.595725-08:00","closed_at":"2025-12-13T16:45:46.595725-08:00"}
|
|
228
228
|
{"id":"opencode-swarm-plugin-4ctd","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.745673-08:00","updated_at":"2025-12-08T11:12:28.126517-08:00","closed_at":"2025-12-08T11:12:28.126517-08:00"}
|
|
229
229
|
{"id":"opencode-swarm-plugin-4d44w","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:07:22.27411-08:00","updated_at":"2025-12-10T09:07:25.689481-08:00","closed_at":"2025-12-10T09:07:25.689481-08:00"}
|
|
230
230
|
{"id":"opencode-swarm-plugin-4dyt","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:41.061421-08:00","updated_at":"2025-12-08T08:11:41.135147-08:00","closed_at":"2025-12-08T08:11:41.135147-08:00"}
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
{"id":"opencode-swarm-plugin-4rfx","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:23:18.358254-08:00","updated_at":"2025-12-08T08:23:20.235539-08:00","closed_at":"2025-12-08T08:23:20.235539-08:00"}
|
|
264
264
|
{"id":"opencode-swarm-plugin-4rfx.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:18.391813-08:00","updated_at":"2025-12-08T08:23:20.260453-08:00","closed_at":"2025-12-08T08:23:20.260453-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-4rfx.1","depends_on_id":"opencode-swarm-plugin-4rfx","type":"parent-child","created_at":"2025-12-08T08:23:18.392129-08:00","created_by":"daemon"}]}
|
|
265
265
|
{"id":"opencode-swarm-plugin-4rfx.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-08T08:23:18.423962-08:00","updated_at":"2025-12-08T08:23:20.285354-08:00","closed_at":"2025-12-08T08:23:20.285354-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-4rfx.2","depends_on_id":"opencode-swarm-plugin-4rfx","type":"parent-child","created_at":"2025-12-08T08:23:18.424275-08:00","created_by":"daemon"}]}
|
|
266
|
-
{"id":"opencode-swarm-plugin-4t3mp","title":"Extract magic number 10000 to constant in semantic-memory check","description":"src/tool-availability.ts:108 - bunx timeout 10000ms is magic number. Extract to constant: `const BUNX_TIMEOUT_MS = 10000;` for consistency with other timeouts.","status":"
|
|
266
|
+
{"id":"opencode-swarm-plugin-4t3mp","title":"Extract magic number 10000 to constant in semantic-memory check","description":"src/tool-availability.ts:108 - bunx timeout 10000ms is magic number. Extract to constant: `const BUNX_TIMEOUT_MS = 10000;` for consistency with other timeouts.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:06.018452-08:00","updated_at":"2025-12-13T16:41:51.721641-08:00","closed_at":"2025-12-13T16:41:51.721641-08:00"}
|
|
267
267
|
{"id":"opencode-swarm-plugin-4tyc","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T11:11:08.814454-08:00","updated_at":"2025-12-08T11:11:11.094826-08:00","closed_at":"2025-12-08T11:11:11.094826-08:00"}
|
|
268
268
|
{"id":"opencode-swarm-plugin-4uy9","title":"Implement Strategic Swarm Planner","description":"Add strategy selection, planning prompts, example agent, and learning integration for swarm decomposition","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:08:24.603771-08:00","updated_at":"2025-12-08T11:13:18.243383-08:00","closed_at":"2025-12-08T11:13:18.243383-08:00"}
|
|
269
269
|
{"id":"opencode-swarm-plugin-4uy9.1","title":"Add tests for swarm_select_strategy and swarm_plan_prompt","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T11:08:24.640194-08:00","updated_at":"2025-12-08T11:13:15.209806-08:00","closed_at":"2025-12-08T11:13:15.209806-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-4uy9.1","depends_on_id":"opencode-swarm-plugin-4uy9","type":"parent-child","created_at":"2025-12-08T11:08:24.640519-08:00","created_by":"daemon"}]}
|
|
@@ -351,14 +351,14 @@
|
|
|
351
351
|
{"id":"opencode-swarm-plugin-679z.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:40.165666-08:00","updated_at":"2025-12-08T08:11:42.205856-08:00","closed_at":"2025-12-08T08:11:42.205856-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-679z.1","depends_on_id":"opencode-swarm-plugin-679z","type":"parent-child","created_at":"2025-12-08T08:11:40.165959-08:00","created_by":"daemon"}]}
|
|
352
352
|
{"id":"opencode-swarm-plugin-679z.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-08T08:11:40.198674-08:00","updated_at":"2025-12-08T08:11:42.232434-08:00","closed_at":"2025-12-08T08:11:42.232434-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-679z.2","depends_on_id":"opencode-swarm-plugin-679z","type":"parent-child","created_at":"2025-12-08T08:11:40.198981-08:00","created_by":"daemon"}]}
|
|
353
353
|
{"id":"opencode-swarm-plugin-67l","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:34.107212-08:00","updated_at":"2025-12-07T19:37:36.183136-08:00","closed_at":"2025-12-07T19:37:36.183136-08:00"}
|
|
354
|
-
{"id":"opencode-swarm-plugin-68y4o","title":"Epic: Superpowers Pattern Integration - Verification, CSO, 3-Strike, Socratic","description":"## Goal\nIntegrate the best patterns from obra/superpowers analysis into opencode-swarm-plugin.\n\n## Features to Implement\n\n### 1. Verification Gate in swarm_complete\nAdd the Gate Function (IDENTIFY → RUN → READ → VERIFY → CLAIM) to swarm_complete:\n- Run UBS scan (already exists)\n- Run typecheck\n- Verify tests pass\n- Only then mark complete\n- Block completion if verification fails\n\n**Files:** src/swarm.ts (swarm_complete function)\n\n### 2. CSO Validation in skills_create\nAdd Claude Search Optimization validation when creating skills:\n- Description starts with \"Use when...\"\n- Description \u003c 500 chars (warn if \u003e 1024)\n- Third-person only (no \"I\", \"you\")\n- Contains trigger keywords\n- Name follows conventions (gerunds, verb-first)\n\n**Files:** src/skills.ts (skills_create function)\n\n### 3. 3-Strike Detection in debug-plus\nTrack fix attempts per issue. After 3 failures:\n- STOP and surface architecture question\n- Don't attempt Fix #4\n- Require human decision before continuing\n\n**Files:** examples/commands/debug-plus.md (or create if doesn't exist)\n\n### 4. Socratic Strategy for Swarm\nAdd \"socratic\" strategy to swarm decomposition:\n- Detect ambiguous tasks (no files, vague verbs, large scope)\n- One question at a time refinement\n- Multiple choice preferred\n- 200-300 word validation sections\n- Auto-transition to decomposition when validated\n\n**Files:** src/swarm.ts (swarm_select_strategy, swarm_plan_prompt)\n\n### 5. Coordinator Context Preservation Pattern\nUpdate swarm coordinator workflow to:\n- Create planning bead with full context FIRST\n- Delegate planning to subagent (not main thread)\n- Subagent returns structured BeadTree JSON\n- Coordinator validates and creates beads\n\n**Files:** examples/commands/swarm.md, global-skills/swarm-coordination/SKILL.md\n\n## Reference Documents\n- docs/analysis-socratic-planner-pattern.md\n- VERIFICATION_QUALITY_PATTERNS.md\n- docs/analysis/subagent-coordination-patterns.md\n- .beads/analysis/skill-architecture-meta-skills.md\n\n## Pattern Beads (for reference)\n- opencode-swarm-plugin-xwlda (Socratic Planner)\n- opencode-swarm-plugin-cyc8w (Verification Before Completion)\n- opencode-swarm-plugin-9lksy (3-Strike Architecture Rule)\n- opencode-swarm-plugin-2klp9 (CSO)\n\n## Success Criteria\n- swarm_complete blocks on failed verification\n- skills_create warns on poor CSO\n- debug-plus stops after 3 failed fixes\n- /swarm detects ambiguous tasks and refines them\n- Coordinator delegates planning to subagent","status":"
|
|
354
|
+
{"id":"opencode-swarm-plugin-68y4o","title":"Epic: Superpowers Pattern Integration - Verification, CSO, 3-Strike, Socratic","description":"## Goal\nIntegrate the best patterns from obra/superpowers analysis into opencode-swarm-plugin.\n\n## Features to Implement\n\n### 1. Verification Gate in swarm_complete\nAdd the Gate Function (IDENTIFY → RUN → READ → VERIFY → CLAIM) to swarm_complete:\n- Run UBS scan (already exists)\n- Run typecheck\n- Verify tests pass\n- Only then mark complete\n- Block completion if verification fails\n\n**Files:** src/swarm.ts (swarm_complete function)\n\n### 2. CSO Validation in skills_create\nAdd Claude Search Optimization validation when creating skills:\n- Description starts with \"Use when...\"\n- Description \u003c 500 chars (warn if \u003e 1024)\n- Third-person only (no \"I\", \"you\")\n- Contains trigger keywords\n- Name follows conventions (gerunds, verb-first)\n\n**Files:** src/skills.ts (skills_create function)\n\n### 3. 3-Strike Detection in debug-plus\nTrack fix attempts per issue. After 3 failures:\n- STOP and surface architecture question\n- Don't attempt Fix #4\n- Require human decision before continuing\n\n**Files:** examples/commands/debug-plus.md (or create if doesn't exist)\n\n### 4. Socratic Strategy for Swarm\nAdd \"socratic\" strategy to swarm decomposition:\n- Detect ambiguous tasks (no files, vague verbs, large scope)\n- One question at a time refinement\n- Multiple choice preferred\n- 200-300 word validation sections\n- Auto-transition to decomposition when validated\n\n**Files:** src/swarm.ts (swarm_select_strategy, swarm_plan_prompt)\n\n### 5. Coordinator Context Preservation Pattern\nUpdate swarm coordinator workflow to:\n- Create planning bead with full context FIRST\n- Delegate planning to subagent (not main thread)\n- Subagent returns structured BeadTree JSON\n- Coordinator validates and creates beads\n\n**Files:** examples/commands/swarm.md, global-skills/swarm-coordination/SKILL.md\n\n## Reference Documents\n- docs/analysis-socratic-planner-pattern.md\n- VERIFICATION_QUALITY_PATTERNS.md\n- docs/analysis/subagent-coordination-patterns.md\n- .beads/analysis/skill-architecture-meta-skills.md\n\n## Pattern Beads (for reference)\n- opencode-swarm-plugin-xwlda (Socratic Planner)\n- opencode-swarm-plugin-cyc8w (Verification Before Completion)\n- opencode-swarm-plugin-9lksy (3-Strike Architecture Rule)\n- opencode-swarm-plugin-2klp9 (CSO)\n\n## Success Criteria\n- swarm_complete blocks on failed verification\n- skills_create warns on poor CSO\n- debug-plus stops after 3 failed fixes\n- /swarm detects ambiguous tasks and refines them\n- Coordinator delegates planning to subagent","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-12-13T14:07:39.259162-08:00","updated_at":"2025-12-13T15:51:02.161099-08:00","closed_at":"2025-12-13T15:51:02.161099-08:00"}
|
|
355
355
|
{"id":"opencode-swarm-plugin-6ank","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:29.200873-08:00","updated_at":"2025-12-08T08:21:29.286191-08:00","closed_at":"2025-12-08T08:21:29.286191-08:00"}
|
|
356
356
|
{"id":"opencode-swarm-plugin-6bf0","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T08:11:39.059587-08:00","updated_at":"2025-12-08T08:11:41.716689-08:00","closed_at":"2025-12-08T08:11:41.716689-08:00"}
|
|
357
357
|
{"id":"opencode-swarm-plugin-6bq","title":"Test link","description":"[thread:test-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:36:39.895527-08:00","updated_at":"2025-12-08T08:36:25.487657-08:00","closed_at":"2025-12-08T08:36:25.487657-08:00"}
|
|
358
358
|
{"id":"opencode-swarm-plugin-6c2n","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.932844-08:00","updated_at":"2025-12-08T11:11:25.487338-08:00","closed_at":"2025-12-08T11:11:25.487338-08:00"}
|
|
359
359
|
{"id":"opencode-swarm-plugin-6cps","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.654233-08:00","updated_at":"2025-12-08T11:11:26.148419-08:00","closed_at":"2025-12-08T11:11:26.148419-08:00"}
|
|
360
360
|
{"id":"opencode-swarm-plugin-6dcg","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:49.735967-08:00","updated_at":"2025-12-08T07:46:51.96445-08:00","closed_at":"2025-12-08T07:46:51.96445-08:00"}
|
|
361
|
-
{"id":"opencode-swarm-plugin-6efn9","title":"Document why GET instead of HEAD in urlReachable","description":"src/tool-availability.ts:64-68 - Comment says \"Use GET instead of HEAD - some servers don't support HEAD\" but doesn't clarify that we check .ok, not response body. Add: \"We only check response.ok status, not body content, so GET has minimal overhead vs HEAD.\"","status":"
|
|
361
|
+
{"id":"opencode-swarm-plugin-6efn9","title":"Document why GET instead of HEAD in urlReachable","description":"src/tool-availability.ts:64-68 - Comment says \"Use GET instead of HEAD - some servers don't support HEAD\" but doesn't clarify that we check .ok, not response body. Add: \"We only check response.ok status, not body content, so GET has minimal overhead vs HEAD.\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:04.446096-08:00","updated_at":"2025-12-13T16:41:51.189901-08:00","closed_at":"2025-12-13T16:41:51.189901-08:00"}
|
|
362
362
|
{"id":"opencode-swarm-plugin-6eg","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:35.586075-08:00","updated_at":"2025-12-07T19:37:36.81509-08:00","closed_at":"2025-12-07T19:37:36.81509-08:00"}
|
|
363
363
|
{"id":"opencode-swarm-plugin-6ep7","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T08:11:38.996265-08:00","updated_at":"2025-12-08T08:11:41.663466-08:00","closed_at":"2025-12-08T08:11:41.663466-08:00"}
|
|
364
364
|
{"id":"opencode-swarm-plugin-6ib2a","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:12:42.179637-08:00","updated_at":"2025-12-08T11:12:44.081038-08:00","closed_at":"2025-12-08T11:12:44.081038-08:00"}
|
|
@@ -397,7 +397,7 @@
|
|
|
397
397
|
{"id":"opencode-swarm-plugin-75cl","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:53:43.905176-08:00","updated_at":"2025-12-08T07:53:46.313642-08:00","closed_at":"2025-12-08T07:53:46.313642-08:00"}
|
|
398
398
|
{"id":"opencode-swarm-plugin-75x7","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T07:49:10.547159-08:00","updated_at":"2025-12-08T07:49:12.461308-08:00","closed_at":"2025-12-08T07:49:12.461308-08:00"}
|
|
399
399
|
{"id":"opencode-swarm-plugin-75x7.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:10.614977-08:00","updated_at":"2025-12-08T07:49:12.512968-08:00","closed_at":"2025-12-08T07:49:12.512968-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-75x7.2","depends_on_id":"opencode-swarm-plugin-75x7","type":"parent-child","created_at":"2025-12-08T07:49:10.615324-08:00","created_by":"daemon"}]}
|
|
400
|
-
{"id":"opencode-swarm-plugin-76d9t","title":"Extract magic number 2000 to constant in tool-availability.ts","description":"src/tool-availability.ts:58 - Default timeout 2000ms is magic number. Extract to constant: `const DEFAULT_URL_TIMEOUT_MS = 2000;` for clarity and reusability.","status":"
|
|
400
|
+
{"id":"opencode-swarm-plugin-76d9t","title":"Extract magic number 2000 to constant in tool-availability.ts","description":"src/tool-availability.ts:58 - Default timeout 2000ms is magic number. Extract to constant: `const DEFAULT_URL_TIMEOUT_MS = 2000;` for clarity and reusability.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:01.336168-08:00","updated_at":"2025-12-13T16:41:50.541178-08:00","closed_at":"2025-12-13T16:41:50.541178-08:00"}
|
|
401
401
|
{"id":"opencode-swarm-plugin-76wq","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:26.848144-08:00","updated_at":"2025-12-08T08:21:29.687811-08:00","closed_at":"2025-12-08T08:21:29.687811-08:00"}
|
|
402
402
|
{"id":"opencode-swarm-plugin-77ka","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:39.150819-08:00","updated_at":"2025-12-08T08:11:41.769041-08:00","closed_at":"2025-12-08T08:11:41.769041-08:00"}
|
|
403
403
|
{"id":"opencode-swarm-plugin-79i","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:36:07.224015-08:00","updated_at":"2025-12-07T19:36:08.874819-08:00","closed_at":"2025-12-07T19:36:08.874819-08:00"}
|
|
@@ -483,13 +483,13 @@
|
|
|
483
483
|
{"id":"opencode-swarm-plugin-8i74.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:50.393371-08:00","updated_at":"2025-12-08T07:46:52.364985-08:00","closed_at":"2025-12-08T07:46:52.364985-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-8i74.3","depends_on_id":"opencode-swarm-plugin-8i74","type":"parent-child","created_at":"2025-12-08T07:46:50.393722-08:00","created_by":"daemon"}]}
|
|
484
484
|
{"id":"opencode-swarm-plugin-8i74.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:50.431219-08:00","updated_at":"2025-12-08T07:46:52.392735-08:00","closed_at":"2025-12-08T07:46:52.392735-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-8i74.4","depends_on_id":"opencode-swarm-plugin-8i74","type":"parent-child","created_at":"2025-12-08T07:46:50.431596-08:00","created_by":"daemon"}]}
|
|
485
485
|
{"id":"opencode-swarm-plugin-8j4v","title":"Debug test","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:48.012695-08:00","updated_at":"2025-12-07T19:39:53.542819-08:00","closed_at":"2025-12-07T19:39:53.542819-08:00"}
|
|
486
|
-
{"id":"opencode-swarm-plugin-8kiel","title":"Gap: No migration strategy from MCP to event-sourced","description":"src/streams/agent-mail.ts - No migration path documented or implemented for users moving from MCP-based agent-mail to embedded PGLite. Need: migration tool to export MCP data and import as events, documentation on migration steps, backward compatibility layer, or at minimum clear upgrade guide. Consider: \"migrate-from-mcp\" command, schema version detection, auto-migration on first run.","status":"
|
|
486
|
+
{"id":"opencode-swarm-plugin-8kiel","title":"Gap: No migration strategy from MCP to event-sourced","description":"src/streams/agent-mail.ts - No migration path documented or implemented for users moving from MCP-based agent-mail to embedded PGLite. Need: migration tool to export MCP data and import as events, documentation on migration steps, backward compatibility layer, or at minimum clear upgrade guide. Consider: \"migrate-from-mcp\" command, schema version detection, auto-migration on first run.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:25:00.37956-08:00","updated_at":"2025-12-13T16:42:00.823655-08:00","closed_at":"2025-12-13T16:42:00.823655-08:00"}
|
|
487
487
|
{"id":"opencode-swarm-plugin-8lig","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.517101-08:00","updated_at":"2025-12-08T11:12:27.978547-08:00","closed_at":"2025-12-08T11:12:27.978547-08:00"}
|
|
488
488
|
{"id":"opencode-swarm-plugin-8noh","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:53:45.63765-08:00","updated_at":"2025-12-08T07:53:45.716599-08:00","closed_at":"2025-12-08T07:53:45.716599-08:00"}
|
|
489
|
-
{"id":"opencode-swarm-plugin-8npbb","title":"rate-limiter.ts:328 - Opportunistic cleanup without bounds","description":"rate-limiter.ts:328 - SqliteRateLimiter cleanup happens 1% of the time but could delete large datasets without limit or batching. On large DBs, this blocks recordRequest. Suggested fix: Add LIMIT clause or batch deletion.","status":"
|
|
489
|
+
{"id":"opencode-swarm-plugin-8npbb","title":"rate-limiter.ts:328 - Opportunistic cleanup without bounds","description":"rate-limiter.ts:328 - SqliteRateLimiter cleanup happens 1% of the time but could delete large datasets without limit or batching. On large DBs, this blocks recordRequest. Suggested fix: Add LIMIT clause or batch deletion.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-10T09:06:18.513101-08:00","updated_at":"2025-12-13T15:59:42.483297-08:00","closed_at":"2025-12-13T15:59:42.483297-08:00"}
|
|
490
490
|
{"id":"opencode-swarm-plugin-8p4","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-07T19:39:10.060249-08:00","updated_at":"2025-12-07T19:39:12.022444-08:00","closed_at":"2025-12-07T19:39:12.022444-08:00"}
|
|
491
491
|
{"id":"opencode-swarm-plugin-8pyb","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:30.014902-08:00","updated_at":"2025-12-08T08:14:31.732051-08:00","closed_at":"2025-12-08T08:14:31.732051-08:00"}
|
|
492
|
-
{"id":"opencode-swarm-plugin-8qe8e","title":"Add JSDoc examples to CriterionEvaluation","description":"src/schemas/evaluation.ts:19-24 - CriterionEvaluationSchema lacks usage example. Add JSDoc with example: `{ passed: true, feedback: \"All types validated\", score: 0.95 }`","status":"
|
|
492
|
+
{"id":"opencode-swarm-plugin-8qe8e","title":"Add JSDoc examples to CriterionEvaluation","description":"src/schemas/evaluation.ts:19-24 - CriterionEvaluationSchema lacks usage example. Add JSDoc with example: `{ passed: true, feedback: \"All types validated\", score: 0.95 }`","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:13.139472-08:00","updated_at":"2025-12-13T16:48:07.364425-08:00","closed_at":"2025-12-13T16:48:07.364425-08:00"}
|
|
493
493
|
{"id":"opencode-swarm-plugin-8rl6e","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:41.420444-08:00","updated_at":"2025-12-08T11:12:43.835874-08:00","closed_at":"2025-12-08T11:12:43.835874-08:00"}
|
|
494
494
|
{"id":"opencode-swarm-plugin-8td","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:39:10.72267-08:00","updated_at":"2025-12-07T19:39:12.284908-08:00","closed_at":"2025-12-07T19:39:12.284908-08:00"}
|
|
495
495
|
{"id":"opencode-swarm-plugin-8thxw","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.786941-08:00","updated_at":"2025-12-09T10:00:25.916352-08:00","closed_at":"2025-12-09T10:00:25.916352-08:00"}
|
|
@@ -501,7 +501,7 @@
|
|
|
501
501
|
{"id":"opencode-swarm-plugin-93e","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:19.580617-08:00","updated_at":"2025-12-07T19:39:21.044657-08:00","closed_at":"2025-12-07T19:39:21.044657-08:00"}
|
|
502
502
|
{"id":"opencode-swarm-plugin-94mr","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.633998-08:00","updated_at":"2025-12-08T07:49:12.12296-08:00","closed_at":"2025-12-08T07:49:12.12296-08:00"}
|
|
503
503
|
{"id":"opencode-swarm-plugin-94qw","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:56.998023-08:00","updated_at":"2025-12-08T08:56:58.751714-08:00","closed_at":"2025-12-08T08:56:58.751714-08:00"}
|
|
504
|
-
{"id":"opencode-swarm-plugin-95o6e","title":"Add better error message for empty response in structured_validate","description":"src/structured.ts:374-385 - When JSON extraction fails, error just shows \"JSON extraction failed\". Add check for empty/whitespace-only input and provide specific message: \"Response is empty or contains only whitespace\"","status":"
|
|
504
|
+
{"id":"opencode-swarm-plugin-95o6e","title":"Add better error message for empty response in structured_validate","description":"src/structured.ts:374-385 - When JSON extraction fails, error just shows \"JSON extraction failed\". Add check for empty/whitespace-only input and provide specific message: \"Response is empty or contains only whitespace\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:51.941683-08:00","updated_at":"2025-12-13T16:45:46.102955-08:00","closed_at":"2025-12-13T16:45:46.102955-08:00"}
|
|
505
505
|
{"id":"opencode-swarm-plugin-95z7","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:10:54.38177-08:00","updated_at":"2025-12-08T11:10:56.238892-08:00","closed_at":"2025-12-08T11:10:56.238892-08:00"}
|
|
506
506
|
{"id":"opencode-swarm-plugin-96mg","title":"Ordered subtasks epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:09.574357-08:00","updated_at":"2025-12-08T11:11:11.432404-08:00","closed_at":"2025-12-08T11:11:11.432404-08:00"}
|
|
507
507
|
{"id":"opencode-swarm-plugin-96mg.1","title":"First","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:09.608926-08:00","updated_at":"2025-12-08T11:11:11.457203-08:00","closed_at":"2025-12-08T11:11:11.457203-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-96mg.1","depends_on_id":"opencode-swarm-plugin-96mg","type":"parent-child","created_at":"2025-12-08T11:11:09.609228-08:00","created_by":"daemon"}]}
|
|
@@ -531,7 +531,7 @@
|
|
|
531
531
|
{"id":"opencode-swarm-plugin-9gks","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:11:41.194407-08:00","updated_at":"2025-12-08T08:11:41.390014-08:00","closed_at":"2025-12-08T08:11:41.390014-08:00"}
|
|
532
532
|
{"id":"opencode-swarm-plugin-9gks.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:41.227583-08:00","updated_at":"2025-12-08T08:11:41.313181-08:00","closed_at":"2025-12-08T08:11:41.313181-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-9gks.1","depends_on_id":"opencode-swarm-plugin-9gks","type":"parent-child","created_at":"2025-12-08T08:11:41.227892-08:00","created_by":"daemon"}]}
|
|
533
533
|
{"id":"opencode-swarm-plugin-9gks.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:41.260544-08:00","updated_at":"2025-12-08T08:11:41.363657-08:00","closed_at":"2025-12-08T08:11:41.363657-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-9gks.2","depends_on_id":"opencode-swarm-plugin-9gks","type":"parent-child","created_at":"2025-12-08T08:11:41.260862-08:00","created_by":"daemon"}]}
|
|
534
|
-
{"id":"opencode-swarm-plugin-9gyl9","title":"Document maturity multiplier rationale in getMaturityMultiplier","description":"src/pattern-maturity.ts:319-327 - Multipliers (candidate: 0.5, established: 1.0, proven: 1.5, deprecated: 0) not explained. Add JSDoc: \"Multipliers chosen to: heavily penalize deprecated (0), slightly boost proven (1.5x), penalize unvalidated candidates (0.5x)\"","status":"
|
|
534
|
+
{"id":"opencode-swarm-plugin-9gyl9","title":"Document maturity multiplier rationale in getMaturityMultiplier","description":"src/pattern-maturity.ts:319-327 - Multipliers (candidate: 0.5, established: 1.0, proven: 1.5, deprecated: 0) not explained. Add JSDoc: \"Multipliers chosen to: heavily penalize deprecated (0), slightly boost proven (1.5x), penalize unvalidated candidates (0.5x)\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:39.554601-08:00","updated_at":"2025-12-13T16:20:32.852341-08:00","closed_at":"2025-12-13T16:20:32.852341-08:00"}
|
|
535
535
|
{"id":"opencode-swarm-plugin-9h949","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:20:47.215626-08:00","updated_at":"2025-12-13T11:20:51.517622-08:00","closed_at":"2025-12-13T11:20:51.517622-08:00"}
|
|
536
536
|
{"id":"opencode-swarm-plugin-9hea","title":"Ordered subtasks epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:24.107092-08:00","updated_at":"2025-12-08T11:11:25.938473-08:00","closed_at":"2025-12-08T11:11:25.938473-08:00"}
|
|
537
537
|
{"id":"opencode-swarm-plugin-9hea.1","title":"First","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.145132-08:00","updated_at":"2025-12-08T11:11:25.963881-08:00","closed_at":"2025-12-08T11:11:25.963881-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-9hea.1","depends_on_id":"opencode-swarm-plugin-9hea","type":"parent-child","created_at":"2025-12-08T11:11:24.145473-08:00","created_by":"daemon"}]}
|
|
@@ -547,7 +547,7 @@
|
|
|
547
547
|
{"id":"opencode-swarm-plugin-9ioz","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:43.947868-08:00","updated_at":"2025-12-07T19:56:45.455609-08:00","closed_at":"2025-12-07T19:56:45.455609-08:00"}
|
|
548
548
|
{"id":"opencode-swarm-plugin-9itda","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.953258-08:00","updated_at":"2025-12-09T10:00:25.985697-08:00","closed_at":"2025-12-09T10:00:25.985697-08:00"}
|
|
549
549
|
{"id":"opencode-swarm-plugin-9khpl","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:06:06.9783-08:00","updated_at":"2025-12-10T09:06:07.013143-08:00","closed_at":"2025-12-10T09:06:07.013143-08:00"}
|
|
550
|
-
{"id":"opencode-swarm-plugin-9lksy","title":"Pattern: 3-Strike Architecture Rule - Question Fundamentals After 3 Failures","description":"## 3-Strike Architecture Rule (from obra/superpowers)\n\n**Iron Law:** If 3+ fixes have failed, you have an architectural problem, not a bug.\n\n### The Rule\n```\nIF 3+ fixes have failed:\n STOP → Question the architecture\n DON'T attempt Fix #4\n Discuss with human partner\n\nThis is NOT a failed hypothesis.\nThis is a WRONG ARCHITECTURE.\n```\n\n### Pattern Indicators\n- Each fix reveals new shared state/coupling/problem in different place\n- Fixes require \"massive refactoring\" to implement\n- Each fix creates new symptoms elsewhere\n- \"Sticking with it through sheer inertia\"\n\n### What To Do\n1. STOP and question fundamentals\n2. Is this pattern fundamentally sound?\n3. Should we refactor architecture vs. continue fixing symptoms?\n4. Discuss with human partner before attempting more fixes\n\n### 4-Phase Debugging Framework\n| Phase | Key Activities | Success Criteria |\n|-------|---------------|------------------|\n| 1. Root Cause | Read errors, reproduce, check changes, trace data flow | Understand WHAT and WHY |\n| 2. Pattern Analysis | Find working examples, compare, identify differences | Know what's different |\n| 3. Hypothesis | Form single theory, test minimally, one variable | Confirmed or new hypothesis |\n| 4. Implementation | Create test, fix, verify | Bug resolved |\n| **4.5. Architecture** | If 3+ failures: STOP, question pattern | Discuss with human |\n\n### Key Quote\n\"Random fixes waste time and create new bugs. Quick patches mask underlying issues. Systematic debugging is FASTER than guess-and-check thrashing.\"\n\n**Full analysis:** VERIFICATION_QUALITY_PATTERNS.md","status":"
|
|
550
|
+
{"id":"opencode-swarm-plugin-9lksy","title":"Pattern: 3-Strike Architecture Rule - Question Fundamentals After 3 Failures","description":"## 3-Strike Architecture Rule (from obra/superpowers)\n\n**Iron Law:** If 3+ fixes have failed, you have an architectural problem, not a bug.\n\n### The Rule\n```\nIF 3+ fixes have failed:\n STOP → Question the architecture\n DON'T attempt Fix #4\n Discuss with human partner\n\nThis is NOT a failed hypothesis.\nThis is a WRONG ARCHITECTURE.\n```\n\n### Pattern Indicators\n- Each fix reveals new shared state/coupling/problem in different place\n- Fixes require \"massive refactoring\" to implement\n- Each fix creates new symptoms elsewhere\n- \"Sticking with it through sheer inertia\"\n\n### What To Do\n1. STOP and question fundamentals\n2. Is this pattern fundamentally sound?\n3. Should we refactor architecture vs. continue fixing symptoms?\n4. Discuss with human partner before attempting more fixes\n\n### 4-Phase Debugging Framework\n| Phase | Key Activities | Success Criteria |\n|-------|---------------|------------------|\n| 1. Root Cause | Read errors, reproduce, check changes, trace data flow | Understand WHAT and WHY |\n| 2. Pattern Analysis | Find working examples, compare, identify differences | Know what's different |\n| 3. Hypothesis | Form single theory, test minimally, one variable | Confirmed or new hypothesis |\n| 4. Implementation | Create test, fix, verify | Bug resolved |\n| **4.5. Architecture** | If 3+ failures: STOP, question pattern | Discuss with human |\n\n### Key Quote\n\"Random fixes waste time and create new bugs. Quick patches mask underlying issues. Systematic debugging is FASTER than guess-and-check thrashing.\"\n\n**Full analysis:** VERIFICATION_QUALITY_PATTERNS.md","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-12-13T14:00:30.082677-08:00","updated_at":"2025-12-13T15:50:53.766873-08:00","closed_at":"2025-12-13T15:50:53.766873-08:00"}
|
|
551
551
|
{"id":"opencode-swarm-plugin-9m1x9","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:20:49.895996-08:00","updated_at":"2025-12-13T11:20:52.545509-08:00","closed_at":"2025-12-13T11:20:52.545509-08:00"}
|
|
552
552
|
{"id":"opencode-swarm-plugin-9mc1","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:56.068796-08:00","updated_at":"2025-12-08T08:56:58.30395-08:00","closed_at":"2025-12-08T08:56:58.30395-08:00"}
|
|
553
553
|
{"id":"opencode-swarm-plugin-9mjt","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:56:44.363301-08:00","updated_at":"2025-12-07T19:56:44.53648-08:00","closed_at":"2025-12-07T19:56:44.53648-08:00"}
|
|
@@ -570,7 +570,7 @@
|
|
|
570
570
|
{"id":"opencode-swarm-plugin-9wo","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:18.299301-08:00","updated_at":"2025-12-07T19:39:20.43669-08:00","closed_at":"2025-12-07T19:39:20.43669-08:00"}
|
|
571
571
|
{"id":"opencode-swarm-plugin-9wofd","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:08:32.646896-08:00","updated_at":"2025-12-10T09:08:35.879026-08:00","closed_at":"2025-12-10T09:08:35.879026-08:00"}
|
|
572
572
|
{"id":"opencode-swarm-plugin-9yct","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:57.344571-08:00","updated_at":"2025-12-08T08:56:57.424671-08:00","closed_at":"2025-12-08T08:56:57.424671-08:00"}
|
|
573
|
-
{"id":"opencode-swarm-plugin-9yo1u","title":"Pattern: TDD for Documentation - Test Skills Before Writing","description":"## TDD for Documentation (from obra/superpowers)\n\n**Core Insight:** If you didn't watch an agent fail without the skill, you don't know if the skill teaches the right thing.\n\n### TDD Mapping\n| TDD Concept | Skill Creation |\n|-------------|----------------|\n| Test case | Pressure scenario with subagent |\n| Production code | SKILL.md document |\n| Test fails (RED) | Agent violates rule without skill |\n| Test passes (GREEN) | Agent complies with skill present |\n| Refactor | Close loopholes while maintaining compliance |\n\n### The Iron Law\n```\nNO SKILL WITHOUT A FAILING TEST FIRST\n```\n\nApplies to NEW skills AND EDITS to existing skills.\n\n### RED-GREEN-REFACTOR for Skills\n**RED (Baseline):**\n1. Run pressure scenario WITHOUT skill\n2. Document exact rationalizations verbatim\n3. Note specific violations\n\n**GREEN (Write Skill):**\n1. Write skill addressing observed failures\n2. Run same scenario WITH skill\n3. Verify agent now complies\n\n**REFACTOR (Close Loopholes):**\n1. Find new rationalizations\n2. Add explicit counters\n3. Re-verify compliance\n\n### Testing by Skill Type\n- **Discipline-enforcing:** Academic questions + pressure scenarios + combined pressures\n- **Technique skills:** Application scenarios + variations + missing info tests\n- **Pattern skills:** Recognition + application + counter-examples\n- **Reference skills:** Retrieval + application + gap testing\n\n### Bulletproofing Against Rationalization\n- Close every loophole explicitly\n- Address \"spirit vs letter\" arguments early\n- Build rationalization table from baseline testing\n- Create red flags list for self-checking\n\n**Full analysis:** .beads/analysis/skill-architecture-meta-skills.md","status":"
|
|
573
|
+
{"id":"opencode-swarm-plugin-9yo1u","title":"Pattern: TDD for Documentation - Test Skills Before Writing","description":"## TDD for Documentation (from obra/superpowers)\n\n**Core Insight:** If you didn't watch an agent fail without the skill, you don't know if the skill teaches the right thing.\n\n### TDD Mapping\n| TDD Concept | Skill Creation |\n|-------------|----------------|\n| Test case | Pressure scenario with subagent |\n| Production code | SKILL.md document |\n| Test fails (RED) | Agent violates rule without skill |\n| Test passes (GREEN) | Agent complies with skill present |\n| Refactor | Close loopholes while maintaining compliance |\n\n### The Iron Law\n```\nNO SKILL WITHOUT A FAILING TEST FIRST\n```\n\nApplies to NEW skills AND EDITS to existing skills.\n\n### RED-GREEN-REFACTOR for Skills\n**RED (Baseline):**\n1. Run pressure scenario WITHOUT skill\n2. Document exact rationalizations verbatim\n3. Note specific violations\n\n**GREEN (Write Skill):**\n1. Write skill addressing observed failures\n2. Run same scenario WITH skill\n3. Verify agent now complies\n\n**REFACTOR (Close Loopholes):**\n1. Find new rationalizations\n2. Add explicit counters\n3. Re-verify compliance\n\n### Testing by Skill Type\n- **Discipline-enforcing:** Academic questions + pressure scenarios + combined pressures\n- **Technique skills:** Application scenarios + variations + missing info tests\n- **Pattern skills:** Recognition + application + counter-examples\n- **Reference skills:** Retrieval + application + gap testing\n\n### Bulletproofing Against Rationalization\n- Close every loophole explicitly\n- Address \"spirit vs letter\" arguments early\n- Build rationalization table from baseline testing\n- Create red flags list for self-checking\n\n**Full analysis:** .beads/analysis/skill-architecture-meta-skills.md","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-13T14:01:01.518288-08:00","updated_at":"2025-12-13T15:50:55.951299-08:00","closed_at":"2025-12-13T15:50:55.951299-08:00"}
|
|
574
574
|
{"id":"opencode-swarm-plugin-9zy1","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T11:11:08.072584-08:00","updated_at":"2025-12-08T11:11:10.722977-08:00","closed_at":"2025-12-08T11:11:10.722977-08:00"}
|
|
575
575
|
{"id":"opencode-swarm-plugin-a1j","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:34.676752-08:00","updated_at":"2025-12-07T19:37:36.40688-08:00","closed_at":"2025-12-07T19:37:36.40688-08:00"}
|
|
576
576
|
{"id":"opencode-swarm-plugin-a1q2","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.705459-08:00","updated_at":"2025-12-08T07:49:12.14698-08:00","closed_at":"2025-12-08T07:49:12.14698-08:00"}
|
|
@@ -582,12 +582,12 @@
|
|
|
582
582
|
{"id":"opencode-swarm-plugin-a347","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T08:36:17.512906-08:00","updated_at":"2025-12-08T08:36:19.481274-08:00","closed_at":"2025-12-08T08:36:19.481274-08:00"}
|
|
583
583
|
{"id":"opencode-swarm-plugin-a3fa","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:05:34.668388-08:00","updated_at":"2025-12-08T08:05:34.745926-08:00","closed_at":"2025-12-08T08:05:34.745926-08:00"}
|
|
584
584
|
{"id":"opencode-swarm-plugin-a6lo","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.861491-08:00","updated_at":"2025-12-08T11:11:26.310192-08:00","closed_at":"2025-12-08T11:11:26.310192-08:00"}
|
|
585
|
-
{"id":"opencode-swarm-plugin-a6rl7","title":"Mandate from Heaven: Agent Voting System","description":"Build a collective intelligence system where agents file and vote on ideas, tips, lore, snippets, and feature requests. High-consensus items become 'mandates' that influence future agent behavior via semantic memory.","status":"
|
|
585
|
+
{"id":"opencode-swarm-plugin-a6rl7","title":"Mandate from Heaven: Agent Voting System","description":"Build a collective intelligence system where agents file and vote on ideas, tips, lore, snippets, and feature requests. High-consensus items become 'mandates' that influence future agent behavior via semantic memory.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T14:56:58.000088-08:00","updated_at":"2025-12-13T15:51:03.366671-08:00","closed_at":"2025-12-13T15:51:03.366671-08:00"}
|
|
586
586
|
{"id":"opencode-swarm-plugin-a6rl7.1","title":"Core schemas and types for mandate system","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-13T14:56:58.053657-08:00","updated_at":"2025-12-13T14:59:07.218098-08:00","closed_at":"2025-12-13T14:59:07.218098-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-a6rl7.1","depends_on_id":"opencode-swarm-plugin-a6rl7","type":"parent-child","created_at":"2025-12-13T14:56:58.055878-08:00","created_by":"daemon"}]}
|
|
587
587
|
{"id":"opencode-swarm-plugin-a6rl7.2","title":"Mandate storage with semantic-memory backend","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T14:56:58.111874-08:00","updated_at":"2025-12-13T15:05:05.736212-08:00","closed_at":"2025-12-13T15:05:05.736212-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-a6rl7.2","depends_on_id":"opencode-swarm-plugin-a6rl7","type":"parent-child","created_at":"2025-12-13T14:56:58.112928-08:00","created_by":"daemon"}]}
|
|
588
588
|
{"id":"opencode-swarm-plugin-a6rl7.3","title":"Mandate promotion engine with decay","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T14:56:58.164309-08:00","updated_at":"2025-12-13T15:05:08.587143-08:00","closed_at":"2025-12-13T15:05:08.587143-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-a6rl7.3","depends_on_id":"opencode-swarm-plugin-a6rl7","type":"parent-child","created_at":"2025-12-13T14:56:58.165879-08:00","created_by":"daemon"}]}
|
|
589
|
-
{"id":"opencode-swarm-plugin-a6rl7.4","title":"Plugin tools for mandate operations","description":"","status":"
|
|
590
|
-
{"id":"opencode-swarm-plugin-a6rl7.5","title":"Integration tests and plugin export","description":"","status":"
|
|
589
|
+
{"id":"opencode-swarm-plugin-a6rl7.4","title":"Plugin tools for mandate operations","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T14:56:58.225915-08:00","updated_at":"2025-12-13T15:50:50.367358-08:00","closed_at":"2025-12-13T15:50:50.367358-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-a6rl7.4","depends_on_id":"opencode-swarm-plugin-a6rl7","type":"parent-child","created_at":"2025-12-13T14:56:58.227213-08:00","created_by":"daemon"}]}
|
|
590
|
+
{"id":"opencode-swarm-plugin-a6rl7.5","title":"Integration tests and plugin export","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T14:56:58.282544-08:00","updated_at":"2025-12-13T15:51:04.411257-08:00","closed_at":"2025-12-13T15:51:04.411257-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-a6rl7.5","depends_on_id":"opencode-swarm-plugin-a6rl7","type":"parent-child","created_at":"2025-12-13T14:56:58.283786-08:00","created_by":"daemon"}]}
|
|
591
591
|
{"id":"opencode-swarm-plugin-a76x","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T08:21:26.918472-08:00","updated_at":"2025-12-08T08:21:29.744733-08:00","closed_at":"2025-12-08T08:21:29.744733-08:00"}
|
|
592
592
|
{"id":"opencode-swarm-plugin-a8y","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:39:10.635641-08:00","updated_at":"2025-12-07T19:39:12.218959-08:00","closed_at":"2025-12-07T19:39:12.218959-08:00"}
|
|
593
593
|
{"id":"opencode-swarm-plugin-a8y.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:10.693537-08:00","updated_at":"2025-12-07T19:39:12.2636-08:00","closed_at":"2025-12-07T19:39:12.2636-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-a8y.2","depends_on_id":"opencode-swarm-plugin-a8y","type":"parent-child","created_at":"2025-12-07T19:39:10.693862-08:00","created_by":"daemon"}]}
|
|
@@ -623,11 +623,11 @@
|
|
|
623
623
|
{"id":"opencode-swarm-plugin-b0ydv","title":"Create TDD skill with lore from prime knowledge","description":"Created .opencode/skills/tdd/SKILL.md with RED-GREEN-REFACTOR workflow and lore from Kent Beck, Michael Feathers, Martin Fowler, and Ousterhout's counterpoint.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T09:12:37.165045-08:00","updated_at":"2025-12-13T09:12:40.904565-08:00","closed_at":"2025-12-13T09:12:40.904565-08:00"}
|
|
624
624
|
{"id":"opencode-swarm-plugin-b1hf","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:40.14326-08:00","updated_at":"2025-12-08T11:11:41.771573-08:00","closed_at":"2025-12-08T11:11:41.771573-08:00"}
|
|
625
625
|
{"id":"opencode-swarm-plugin-b1wpc","title":"swarm.ts:1620-1670 - runUbsScan doesn't validate JSON structure","description":"swarm.ts:1620-1670 - runUbsScan parses JSON but doesn't validate with schema. If UBS changes output format, could return malformed data or throw cryptic errors. Suggested fix: Define Zod schema for UBS output and validate.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:33.466723-08:00","updated_at":"2025-12-10T11:56:17.052815-08:00","closed_at":"2025-12-10T11:56:17.052815-08:00"}
|
|
626
|
-
{"id":"opencode-swarm-plugin-b22qj","title":"Gap: No transaction rollback error handling in appendEvents","description":"src/streams/store.ts:68-94 - appendEvents() has try/catch with ROLLBACK but if ROLLBACK itself fails (e.g., connection lost), that error is swallowed. Should log rollback failures. Also, if updateMaterializedViews fails mid-transaction, some events may be in inconsistent state. Consider: logging rollback errors, emitting error events, or adding retry logic.","status":"
|
|
626
|
+
{"id":"opencode-swarm-plugin-b22qj","title":"Gap: No transaction rollback error handling in appendEvents","description":"src/streams/store.ts:68-94 - appendEvents() has try/catch with ROLLBACK but if ROLLBACK itself fails (e.g., connection lost), that error is swallowed. Should log rollback failures. Also, if updateMaterializedViews fails mid-transaction, some events may be in inconsistent state. Consider: logging rollback errors, emitting error events, or adding retry logic.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:24:56.23944-08:00","updated_at":"2025-12-13T16:06:34.991434-08:00","closed_at":"2025-12-13T16:06:34.991434-08:00"}
|
|
627
627
|
{"id":"opencode-swarm-plugin-b39i","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T11:11:38.123705-08:00","updated_at":"2025-12-08T11:11:40.7258-08:00","closed_at":"2025-12-08T11:11:40.7258-08:00"}
|
|
628
628
|
{"id":"opencode-swarm-plugin-b3pr","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:17.77563-08:00","updated_at":"2025-12-08T08:23:20.062473-08:00","closed_at":"2025-12-08T08:23:20.062473-08:00"}
|
|
629
629
|
{"id":"opencode-swarm-plugin-b40","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:52.696949-08:00","updated_at":"2025-12-07T19:34:54.75136-08:00","closed_at":"2025-12-07T19:34:54.75136-08:00"}
|
|
630
|
-
{"id":"opencode-swarm-plugin-b4y3u","title":"Feature: Deep semantic-memory integration throughout plugin","description":"## Vision\nMake semantic-memory a first-class citizen in the plugin, not just an available tool.\n\n## Integration Points\n\n### 1. Swarm Learning\n- After swarm_complete: auto-store learnings about what worked/failed\n- After 3-strike: store architectural insights\n- Pattern maturity transitions: store why patterns got promoted/deprecated\n\n### 2. Decomposition\n- Before decomposing: query semantic-memory for similar past tasks\n- Store successful decomposition strategies with task characteristics\n- Learn which strategies work for which task types\n\n### 3. Skills\n- When skill is used successfully: reinforce in memory\n- When skill fails to help: store negative signal\n- Auto-suggest skills based on memory of past similar situations\n\n### 4. Error Handling\n- Store error patterns and their solutions\n- Query memory when hitting errors (before CASS)\n- Build project-specific error knowledge base\n\n### 5. Beads\n- Store context when closing beads (what was learned)\n- Query memory when starting similar beads\n- Track which approaches worked for which problem types\n\n## Implementation Ideas\n\n### Auto-store on key events\n```typescript\n// In swarm_complete\nif (success) {\n semantic_memory_store({\n information: `Task \"${title}\" succeeded with strategy \"${strategy}\". Key insight: ${summary}`,\n metadata: `swarm, ${strategy}, success`\n })\n}\n\n// In 3-strike detection\nsemantic_memory_store({\n information: `Architecture problem in ${bead_id}: ${prompt}. Required human decision.`,\n metadata: `architecture, 3-strike, ${bead_id}`\n})\n```\n\n### Auto-query before actions\n```typescript\n// In swarm_decompose\nconst memories = await semantic_memory_find({\n query: task,\n limit: 3\n})\n// Include relevant memories in decomposition context\n```\n\n### Validation on retrieval\n```typescript\n// When memory helps solve a problem\nsemantic_memory_validate({ id: memory.id }) // Reset decay timer\n```\n\n## Success Criteria\n- Every swarm completion stores a learning\n- Decomposition queries memory before CASS\n- Error patterns accumulate and help future debugging\n- Memory decay keeps knowledge fresh and relevant","status":"
|
|
630
|
+
{"id":"opencode-swarm-plugin-b4y3u","title":"Feature: Deep semantic-memory integration throughout plugin","description":"## Vision\nMake semantic-memory a first-class citizen in the plugin, not just an available tool.\n\n## Integration Points\n\n### 1. Swarm Learning\n- After swarm_complete: auto-store learnings about what worked/failed\n- After 3-strike: store architectural insights\n- Pattern maturity transitions: store why patterns got promoted/deprecated\n\n### 2. Decomposition\n- Before decomposing: query semantic-memory for similar past tasks\n- Store successful decomposition strategies with task characteristics\n- Learn which strategies work for which task types\n\n### 3. Skills\n- When skill is used successfully: reinforce in memory\n- When skill fails to help: store negative signal\n- Auto-suggest skills based on memory of past similar situations\n\n### 4. Error Handling\n- Store error patterns and their solutions\n- Query memory when hitting errors (before CASS)\n- Build project-specific error knowledge base\n\n### 5. Beads\n- Store context when closing beads (what was learned)\n- Query memory when starting similar beads\n- Track which approaches worked for which problem types\n\n## Implementation Ideas\n\n### Auto-store on key events\n```typescript\n// In swarm_complete\nif (success) {\n semantic_memory_store({\n information: `Task \"${title}\" succeeded with strategy \"${strategy}\". Key insight: ${summary}`,\n metadata: `swarm, ${strategy}, success`\n })\n}\n\n// In 3-strike detection\nsemantic_memory_store({\n information: `Architecture problem in ${bead_id}: ${prompt}. Required human decision.`,\n metadata: `architecture, 3-strike, ${bead_id}`\n})\n```\n\n### Auto-query before actions\n```typescript\n// In swarm_decompose\nconst memories = await semantic_memory_find({\n query: task,\n limit: 3\n})\n// Include relevant memories in decomposition context\n```\n\n### Validation on retrieval\n```typescript\n// When memory helps solve a problem\nsemantic_memory_validate({ id: memory.id }) // Reset decay timer\n```\n\n## Success Criteria\n- Every swarm completion stores a learning\n- Decomposition queries memory before CASS\n- Error patterns accumulate and help future debugging\n- Memory decay keeps knowledge fresh and relevant","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-13T14:18:23.293815-08:00","updated_at":"2025-12-13T16:05:13.309264-08:00","closed_at":"2025-12-13T16:05:13.309264-08:00"}
|
|
631
631
|
{"id":"opencode-swarm-plugin-b5m","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:10.175896-08:00","updated_at":"2025-12-07T19:39:12.06669-08:00","closed_at":"2025-12-07T19:39:12.06669-08:00"}
|
|
632
632
|
{"id":"opencode-swarm-plugin-b6ff","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:24.911696-08:00","updated_at":"2025-12-08T11:10:27.394162-08:00","closed_at":"2025-12-08T11:10:27.394162-08:00"}
|
|
633
633
|
{"id":"opencode-swarm-plugin-b74w","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:24.853218-08:00","updated_at":"2025-12-08T11:10:27.368339-08:00","closed_at":"2025-12-08T11:10:27.368339-08:00"}
|
|
@@ -660,12 +660,12 @@
|
|
|
660
660
|
{"id":"opencode-swarm-plugin-bsdi","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T07:53:44.245806-08:00","updated_at":"2025-12-08T07:53:46.503005-08:00","closed_at":"2025-12-08T07:53:46.503005-08:00"}
|
|
661
661
|
{"id":"opencode-swarm-plugin-bsuvl","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:20:46.23906-08:00","updated_at":"2025-12-13T11:20:50.884161-08:00","closed_at":"2025-12-13T11:20:50.884161-08:00"}
|
|
662
662
|
{"id":"opencode-swarm-plugin-bv3m","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:05:33.148679-08:00","updated_at":"2025-12-08T08:05:35.457241-08:00","closed_at":"2025-12-08T08:05:35.457241-08:00"}
|
|
663
|
-
{"id":"opencode-swarm-plugin-bvot5","title":"Document regex limitations in attemptJsonRepair","description":"src/structured.ts:249-272 - attemptJsonRepair has comment \"This is a simple heuristic - won't work for all cases\" but doesn't list known limitations. Add JSDoc: \"Limitations: single quotes in nested objects, escaped quotes in keys, multiline string detection\"","status":"
|
|
663
|
+
{"id":"opencode-swarm-plugin-bvot5","title":"Document regex limitations in attemptJsonRepair","description":"src/structured.ts:249-272 - attemptJsonRepair has comment \"This is a simple heuristic - won't work for all cases\" but doesn't list known limitations. Add JSDoc: \"Limitations: single quotes in nested objects, escaped quotes in keys, multiline string detection\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:47.470646-08:00","updated_at":"2025-12-13T16:45:44.852448-08:00","closed_at":"2025-12-13T16:45:44.852448-08:00"}
|
|
664
664
|
{"id":"opencode-swarm-plugin-bvrh","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T09:09:31.796296-08:00","updated_at":"2025-12-08T09:09:33.605943-08:00","closed_at":"2025-12-08T09:09:33.605943-08:00"}
|
|
665
665
|
{"id":"opencode-swarm-plugin-bvrh.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:31.869253-08:00","updated_at":"2025-12-08T09:09:33.656157-08:00","closed_at":"2025-12-08T09:09:33.656157-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-bvrh.2","depends_on_id":"opencode-swarm-plugin-bvrh","type":"parent-child","created_at":"2025-12-08T09:09:31.869579-08:00","created_by":"daemon"}]}
|
|
666
666
|
{"id":"opencode-swarm-plugin-bvvt","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:09.579794-08:00","updated_at":"2025-12-08T08:25:12.218334-08:00","closed_at":"2025-12-08T08:25:12.218334-08:00"}
|
|
667
667
|
{"id":"opencode-swarm-plugin-bxai","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.405415-08:00","updated_at":"2025-12-08T07:49:11.962035-08:00","closed_at":"2025-12-08T07:49:11.962035-08:00"}
|
|
668
|
-
{"id":"opencode-swarm-plugin-byhfs","title":"Extract magic number 0.01 epsilon to constant in pattern-maturity.ts","description":"src/pattern-maturity.ts:167 - `epsilon = 0.01` for float comparison is magic number. Extract to module constant: `const FLOAT_EPSILON = 0.01;` and document: \"Tolerance for floating-point comparisons\"","status":"
|
|
668
|
+
{"id":"opencode-swarm-plugin-byhfs","title":"Extract magic number 0.01 epsilon to constant in pattern-maturity.ts","description":"src/pattern-maturity.ts:167 - `epsilon = 0.01` for float comparison is magic number. Extract to module constant: `const FLOAT_EPSILON = 0.01;` and document: \"Tolerance for floating-point comparisons\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:29.965468-08:00","updated_at":"2025-12-13T16:41:56.538935-08:00","closed_at":"2025-12-13T16:41:56.538935-08:00"}
|
|
669
669
|
{"id":"opencode-swarm-plugin-byj9","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:18.947426-08:00","updated_at":"2025-12-08T08:23:20.618013-08:00","closed_at":"2025-12-08T08:23:20.618013-08:00"}
|
|
670
670
|
{"id":"opencode-swarm-plugin-byx","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:39:10.518007-08:00","updated_at":"2025-12-07T19:39:12.13146-08:00","closed_at":"2025-12-07T19:39:12.13146-08:00"}
|
|
671
671
|
{"id":"opencode-swarm-plugin-byx.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:10.54688-08:00","updated_at":"2025-12-07T19:39:12.15257-08:00","closed_at":"2025-12-07T19:39:12.15257-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-byx.1","depends_on_id":"opencode-swarm-plugin-byx","type":"parent-child","created_at":"2025-12-07T19:39:10.547179-08:00","created_by":"daemon"}]}
|
|
@@ -735,7 +735,7 @@
|
|
|
735
735
|
{"id":"opencode-swarm-plugin-cxss9.2","title":"Rewrite bin/swarm.ts with clack - setup, doctor, init, version commands","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-09T09:26:03.400398-08:00","updated_at":"2025-12-09T09:31:15.343298-08:00","closed_at":"2025-12-09T09:31:15.343298-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-cxss9.2","depends_on_id":"opencode-swarm-plugin-cxss9","type":"parent-child","created_at":"2025-12-09T09:26:03.400797-08:00","created_by":"daemon"}]}
|
|
736
736
|
{"id":"opencode-swarm-plugin-cxss9.3","title":"Update README with new CLI usage and screenshots","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T09:26:03.441881-08:00","updated_at":"2025-12-09T09:32:20.702615-08:00","closed_at":"2025-12-09T09:32:20.702615-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-cxss9.3","depends_on_id":"opencode-swarm-plugin-cxss9","type":"parent-child","created_at":"2025-12-09T09:26:03.442265-08:00","created_by":"daemon"}]}
|
|
737
737
|
{"id":"opencode-swarm-plugin-cy71","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:27.854814-08:00","updated_at":"2025-12-08T08:21:27.88217-08:00","closed_at":"2025-12-08T08:21:27.88217-08:00"}
|
|
738
|
-
{"id":"opencode-swarm-plugin-cyc8w","title":"Pattern: Verification Before Completion - Evidence Before Claims","description":"## Verification Before Completion (from obra/superpowers)\n\n**Iron Law:** NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE\n\n### The Gate Function\nBEFORE claiming ANY status or expressing satisfaction:\n1. **IDENTIFY** - What command proves this claim?\n2. **RUN** - Execute the FULL command (fresh, complete)\n3. **READ** - Full output, check exit code, count failures\n4. **VERIFY** - Does output confirm the claim?\n5. **ONLY THEN** - Make the claim\n\n**Skip any step = lying, not verifying**\n\n### Red Flags (STOP IMMEDIATELY)\n- Using \"should\", \"probably\", \"seems to\"\n- Expressing satisfaction before verification (\"Great!\", \"Perfect!\", \"Done!\")\n- About to commit/push/PR without verification\n- Trusting agent success reports\n- Relying on partial verification\n- Thinking \"just this once\"\n- **ANY wording implying success without having run verification**\n\n### Common Failures Table\n| Claim | Requires | Not Sufficient |\n|-------|----------|----------------|\n| Tests pass | Test command output: 0 failures | Previous run, \"should pass\" |\n| Build succeeds | Build command: exit 0 | Linter passing |\n| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |\n| Agent completed | VCS diff shows changes | Agent reports \"success\" |\n\n### Key Quote\n\"Claiming work is complete without verification is dishonesty, not efficiency.\"\n\n**Full analysis:** VERIFICATION_QUALITY_PATTERNS.md","status":"
|
|
738
|
+
{"id":"opencode-swarm-plugin-cyc8w","title":"Pattern: Verification Before Completion - Evidence Before Claims","description":"## Verification Before Completion (from obra/superpowers)\n\n**Iron Law:** NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE\n\n### The Gate Function\nBEFORE claiming ANY status or expressing satisfaction:\n1. **IDENTIFY** - What command proves this claim?\n2. **RUN** - Execute the FULL command (fresh, complete)\n3. **READ** - Full output, check exit code, count failures\n4. **VERIFY** - Does output confirm the claim?\n5. **ONLY THEN** - Make the claim\n\n**Skip any step = lying, not verifying**\n\n### Red Flags (STOP IMMEDIATELY)\n- Using \"should\", \"probably\", \"seems to\"\n- Expressing satisfaction before verification (\"Great!\", \"Perfect!\", \"Done!\")\n- About to commit/push/PR without verification\n- Trusting agent success reports\n- Relying on partial verification\n- Thinking \"just this once\"\n- **ANY wording implying success without having run verification**\n\n### Common Failures Table\n| Claim | Requires | Not Sufficient |\n|-------|----------|----------------|\n| Tests pass | Test command output: 0 failures | Previous run, \"should pass\" |\n| Build succeeds | Build command: exit 0 | Linter passing |\n| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |\n| Agent completed | VCS diff shows changes | Agent reports \"success\" |\n\n### Key Quote\n\"Claiming work is complete without verification is dishonesty, not efficiency.\"\n\n**Full analysis:** VERIFICATION_QUALITY_PATTERNS.md","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-12-13T14:00:18.604763-08:00","updated_at":"2025-12-13T15:50:52.929605-08:00","closed_at":"2025-12-13T15:50:52.929605-08:00"}
|
|
739
739
|
{"id":"opencode-swarm-plugin-cz40","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T08:23:17.156935-08:00","updated_at":"2025-12-08T08:23:19.744801-08:00","closed_at":"2025-12-08T08:23:19.744801-08:00"}
|
|
740
740
|
{"id":"opencode-swarm-plugin-czxx","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:39.285554-08:00","updated_at":"2025-12-08T11:11:41.20997-08:00","closed_at":"2025-12-08T11:11:41.20997-08:00"}
|
|
741
741
|
{"id":"opencode-swarm-plugin-czxx.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:39.329633-08:00","updated_at":"2025-12-08T11:11:41.23602-08:00","closed_at":"2025-12-08T11:11:41.23602-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-czxx.1","depends_on_id":"opencode-swarm-plugin-czxx","type":"parent-child","created_at":"2025-12-08T11:11:39.329975-08:00","created_by":"daemon"}]}
|
|
@@ -758,7 +758,7 @@
|
|
|
758
758
|
{"id":"opencode-swarm-plugin-d4j7","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T11:11:22.375891-08:00","updated_at":"2025-12-08T11:11:25.209658-08:00","closed_at":"2025-12-08T11:11:25.209658-08:00"}
|
|
759
759
|
{"id":"opencode-swarm-plugin-d5wi","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:42.679043-08:00","updated_at":"2025-12-07T19:56:44.826201-08:00","closed_at":"2025-12-07T19:56:44.826201-08:00"}
|
|
760
760
|
{"id":"opencode-swarm-plugin-d61a","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:23.158865-08:00","updated_at":"2025-12-08T11:11:25.676049-08:00","closed_at":"2025-12-08T11:11:25.676049-08:00"}
|
|
761
|
-
{"id":"opencode-swarm-plugin-d7age","title":"Gap: Integer overflow risk in timestamp conversions","description":"src/streams/store.ts:169,180 - Parsing timestamps as integers: `parseInt(row.timestamp)`. PostgreSQL BIGINT can exceed JavaScript's MAX_SAFE_INTEGER (2^53-1). Year 2286+ timestamps will overflow. Should: use BigInt for timestamp handling, or document acceptable timestamp range. Low priority but good to note for long-lived systems.","status":"
|
|
761
|
+
{"id":"opencode-swarm-plugin-d7age","title":"Gap: Integer overflow risk in timestamp conversions","description":"src/streams/store.ts:169,180 - Parsing timestamps as integers: `parseInt(row.timestamp)`. PostgreSQL BIGINT can exceed JavaScript's MAX_SAFE_INTEGER (2^53-1). Year 2286+ timestamps will overflow. Should: use BigInt for timestamp handling, or document acceptable timestamp range. Low priority but good to note for long-lived systems.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-13T09:25:29.654739-08:00","updated_at":"2025-12-13T16:20:35.022602-08:00","closed_at":"2025-12-13T16:20:35.022602-08:00"}
|
|
762
762
|
{"id":"opencode-swarm-plugin-d7el","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:57:06.921129-08:00","updated_at":"2025-12-07T19:57:08.670603-08:00","closed_at":"2025-12-07T19:57:08.670603-08:00"}
|
|
763
763
|
{"id":"opencode-swarm-plugin-d7el.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:06.989286-08:00","updated_at":"2025-12-07T19:57:08.716627-08:00","closed_at":"2025-12-07T19:57:08.716627-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-d7el.2","depends_on_id":"opencode-swarm-plugin-d7el","type":"parent-child","created_at":"2025-12-07T19:57:06.989588-08:00","created_by":"daemon"}]}
|
|
764
764
|
{"id":"opencode-swarm-plugin-d7hbl","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T11:12:41.478935-08:00","updated_at":"2025-12-08T11:12:43.861846-08:00","closed_at":"2025-12-08T11:12:43.861846-08:00"}
|
|
@@ -786,7 +786,7 @@
|
|
|
786
786
|
{"id":"opencode-swarm-plugin-dl17","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:55.165899-08:00","updated_at":"2025-12-08T08:56:57.785281-08:00","closed_at":"2025-12-08T08:56:57.785281-08:00"}
|
|
787
787
|
{"id":"opencode-swarm-plugin-dmt","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:18.777024-08:00","updated_at":"2025-12-07T19:39:18.800362-08:00","closed_at":"2025-12-07T19:39:18.800362-08:00"}
|
|
788
788
|
{"id":"opencode-swarm-plugin-doe","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:36:07.043805-08:00","updated_at":"2025-12-07T19:36:08.828395-08:00","closed_at":"2025-12-07T19:36:08.828395-08:00"}
|
|
789
|
-
{"id":"opencode-swarm-plugin-dqeye","title":"Add JSDoc to schema export file","description":"src/schemas/index.ts:1-78 - File lacks JSDoc describing export groups and their purposes. Add module-level JSDoc explaining that this is the central export point for all schema definitions used in the plugin.","status":"
|
|
789
|
+
{"id":"opencode-swarm-plugin-dqeye","title":"Add JSDoc to schema export file","description":"src/schemas/index.ts:1-78 - File lacks JSDoc describing export groups and their purposes. Add module-level JSDoc explaining that this is the central export point for all schema definitions used in the plugin.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:04.359624-08:00","updated_at":"2025-12-13T16:48:09.917903-08:00","closed_at":"2025-12-13T16:48:09.917903-08:00"}
|
|
790
790
|
{"id":"opencode-swarm-plugin-dqhn","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:19.288326-08:00","updated_at":"2025-12-08T08:23:19.369593-08:00","closed_at":"2025-12-08T08:23:19.369593-08:00"}
|
|
791
791
|
{"id":"opencode-swarm-plugin-dqi","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:36:08.183959-08:00","updated_at":"2025-12-07T19:36:08.363064-08:00","closed_at":"2025-12-07T19:36:08.363064-08:00"}
|
|
792
792
|
{"id":"opencode-swarm-plugin-dqi.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:36:08.217008-08:00","updated_at":"2025-12-07T19:36:08.292055-08:00","closed_at":"2025-12-07T19:36:08.292055-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-dqi.1","depends_on_id":"opencode-swarm-plugin-dqi","type":"parent-child","created_at":"2025-12-07T19:36:08.217302-08:00","created_by":"daemon"}]}
|
|
@@ -853,7 +853,7 @@
|
|
|
853
853
|
{"id":"opencode-swarm-plugin-evr9p.3","title":"Deduplicate YAML parser in scripts","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-12T21:14:02.144137-08:00","updated_at":"2025-12-12T21:19:54.453324-08:00","closed_at":"2025-12-12T21:19:54.453324-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-evr9p.3","depends_on_id":"opencode-swarm-plugin-evr9p","type":"parent-child","created_at":"2025-12-12T21:14:02.145641-08:00","created_by":"daemon"}]}
|
|
854
854
|
{"id":"opencode-swarm-plugin-evr9p.4","title":"Improve global-skills quality","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-12T21:14:02.192572-08:00","updated_at":"2025-12-12T21:22:50.299557-08:00","closed_at":"2025-12-12T21:22:50.299557-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-evr9p.4","depends_on_id":"opencode-swarm-plugin-evr9p","type":"parent-child","created_at":"2025-12-12T21:14:02.19349-08:00","created_by":"daemon"}]}
|
|
855
855
|
{"id":"opencode-swarm-plugin-ewj","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:36:07.981146-08:00","updated_at":"2025-12-07T19:36:09.265125-08:00","closed_at":"2025-12-07T19:36:09.265125-08:00"}
|
|
856
|
-
{"id":"opencode-swarm-plugin-ewrdy","title":"Document bead ID regex pattern meaning","description":"src/schemas/bead.ts:45 - Regex pattern `/^[a-z0-9]+(-[a-z0-9]+)+(\\.\\d+)?$/` is not explained. Add inline comment explaining: \"project-slug-hash format (e.g., 'my-project-abc12') with optional subtask index (.1, .2)\"","status":"
|
|
856
|
+
{"id":"opencode-swarm-plugin-ewrdy","title":"Document bead ID regex pattern meaning","description":"src/schemas/bead.ts:45 - Regex pattern `/^[a-z0-9]+(-[a-z0-9]+)+(\\.\\d+)?$/` is not explained. Add inline comment explaining: \"project-slug-hash format (e.g., 'my-project-abc12') with optional subtask index (.1, .2)\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:06.693646-08:00","updated_at":"2025-12-13T16:48:09.415056-08:00","closed_at":"2025-12-13T16:48:09.415056-08:00"}
|
|
857
857
|
{"id":"opencode-swarm-plugin-ezaw","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T11:11:22.419192-08:00","updated_at":"2025-12-08T11:11:25.235336-08:00","closed_at":"2025-12-08T11:11:25.235336-08:00"}
|
|
858
858
|
{"id":"opencode-swarm-plugin-f1qn","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:12.33332-08:00","updated_at":"2025-12-07T19:41:14.106583-08:00","closed_at":"2025-12-07T19:41:14.106583-08:00"}
|
|
859
859
|
{"id":"opencode-swarm-plugin-f1wl","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:23.050848-08:00","updated_at":"2025-12-08T11:11:25.59273-08:00","closed_at":"2025-12-08T11:11:25.59273-08:00"}
|
|
@@ -868,7 +868,7 @@
|
|
|
868
868
|
{"id":"opencode-swarm-plugin-f8553","title":"rate-limiter.ts:383-410 - Missing bound checks in checkWindow SQL queries","description":"rate-limiter.ts:383-410 - checkWindow SQL queries don't validate query result before accessing .count or .timestamp properties. If query fails or returns unexpected shape, undefined access occurs. Suggested fix: Add null checks and validation.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:22.687466-08:00","updated_at":"2025-12-10T11:58:24.449815-08:00","closed_at":"2025-12-10T11:58:24.449815-08:00"}
|
|
869
869
|
{"id":"opencode-swarm-plugin-f8em","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:55.57952-08:00","updated_at":"2025-12-08T08:56:58.050301-08:00","closed_at":"2025-12-08T08:56:58.050301-08:00"}
|
|
870
870
|
{"id":"opencode-swarm-plugin-f8u","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-07T19:37:34.46912-08:00","updated_at":"2025-12-07T19:37:36.362352-08:00","closed_at":"2025-12-07T19:37:36.362352-08:00"}
|
|
871
|
-
{"id":"opencode-swarm-plugin-f9u7d","title":"Gap: No connection timeout or query timeout","description":"src/streams/index.ts:68 - PGLite instance created with no timeout configuration. Long-running queries could hang indefinitely. Should configure: query timeout (e.g., 30s), statement timeout, connection timeout. PGLite may support options in constructor - check docs. Also: add timeout wrapper around critical operations for fail-fast behavior.","status":"
|
|
871
|
+
{"id":"opencode-swarm-plugin-f9u7d","title":"Gap: No connection timeout or query timeout","description":"src/streams/index.ts:68 - PGLite instance created with no timeout configuration. Long-running queries could hang indefinitely. Should configure: query timeout (e.g., 30s), statement timeout, connection timeout. PGLite may support options in constructor - check docs. Also: add timeout wrapper around critical operations for fail-fast behavior.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:25:17.064162-08:00","updated_at":"2025-12-13T16:06:35.828834-08:00","closed_at":"2025-12-13T16:06:35.828834-08:00"}
|
|
872
872
|
{"id":"opencode-swarm-plugin-facfz","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:20:46.952066-08:00","updated_at":"2025-12-13T11:20:51.328037-08:00","closed_at":"2025-12-13T11:20:51.328037-08:00"}
|
|
873
873
|
{"id":"opencode-swarm-plugin-faza","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:27.215365-08:00","updated_at":"2025-12-08T11:12:28.812764-08:00","closed_at":"2025-12-08T11:12:28.812764-08:00"}
|
|
874
874
|
{"id":"opencode-swarm-plugin-fb1d","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:42.650227-08:00","updated_at":"2025-12-07T19:56:44.803013-08:00","closed_at":"2025-12-07T19:56:44.803013-08:00"}
|
|
@@ -894,13 +894,13 @@
|
|
|
894
894
|
{"id":"opencode-swarm-plugin-fn2a3.3","title":"Create plugin wrapper template generator","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-09T12:44:59.511026-08:00","updated_at":"2025-12-09T12:52:13.47915-08:00","closed_at":"2025-12-09T12:52:13.47915-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fn2a3.3","depends_on_id":"opencode-swarm-plugin-fn2a3","type":"parent-child","created_at":"2025-12-09T12:44:59.511712-08:00","created_by":"daemon"}]}
|
|
895
895
|
{"id":"opencode-swarm-plugin-fn2a3.4","title":"Update setup command to generate new plugin wrapper","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T12:44:59.559682-08:00","updated_at":"2025-12-09T12:53:13.282356-08:00","closed_at":"2025-12-09T12:53:13.282356-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fn2a3.4","depends_on_id":"opencode-swarm-plugin-fn2a3","type":"parent-child","created_at":"2025-12-09T12:44:59.560036-08:00","created_by":"daemon"}]}
|
|
896
896
|
{"id":"opencode-swarm-plugin-fn2a3.5","title":"Export tool registry from source modules","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-09T12:44:59.609125-08:00","updated_at":"2025-12-09T12:46:18.092813-08:00","closed_at":"2025-12-09T12:46:18.092813-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fn2a3.5","depends_on_id":"opencode-swarm-plugin-fn2a3","type":"parent-child","created_at":"2025-12-09T12:44:59.609492-08:00","created_by":"daemon"}]}
|
|
897
|
-
{"id":"opencode-swarm-plugin-fnup6","title":"Add timestamp field to EvaluationRequest","description":"src/schemas/evaluation.ts:77-82 - EvaluationRequestSchema missing timestamp field that other schemas have. Consider adding `.optional()` timestamp for tracking when evaluation was requested.","status":"
|
|
897
|
+
{"id":"opencode-swarm-plugin-fnup6","title":"Add timestamp field to EvaluationRequest","description":"src/schemas/evaluation.ts:77-82 - EvaluationRequestSchema missing timestamp field that other schemas have. Consider adding `.optional()` timestamp for tracking when evaluation was requested.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:17.623103-08:00","updated_at":"2025-12-13T16:45:51.784813-08:00","closed_at":"2025-12-13T16:45:51.784813-08:00"}
|
|
898
898
|
{"id":"opencode-swarm-plugin-fo9z","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:53:43.635138-08:00","updated_at":"2025-12-08T07:53:46.190181-08:00","closed_at":"2025-12-08T07:53:46.190181-08:00"}
|
|
899
899
|
{"id":"opencode-swarm-plugin-foht","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T11:11:07.341455-08:00","updated_at":"2025-12-08T11:11:10.086863-08:00","closed_at":"2025-12-08T11:11:10.086863-08:00"}
|
|
900
900
|
{"id":"opencode-swarm-plugin-fomf","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.714274-08:00","updated_at":"2025-12-08T11:12:28.097683-08:00","closed_at":"2025-12-08T11:12:28.097683-08:00"}
|
|
901
901
|
{"id":"opencode-swarm-plugin-fqo6m","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:16:36.039029-08:00","updated_at":"2025-12-13T11:16:40.062465-08:00","closed_at":"2025-12-13T11:16:40.062465-08:00"}
|
|
902
902
|
{"id":"opencode-swarm-plugin-frk9","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T08:25:09.263281-08:00","updated_at":"2025-12-08T08:25:12.049893-08:00","closed_at":"2025-12-08T08:25:12.049893-08:00"}
|
|
903
|
-
{"id":"opencode-swarm-plugin-fst9c","title":"Event-Sourced Agent Mail with PGLite","description":"Replace MCP-based agent mail with embedded PGLite database using Durable Streams protocol (Electric SQL). Same tool API, offset-based resumability, crash recovery, full audit trail, no external dependencies.\n\nReference: github.com/durable-streams/durable-streams\n\nKey changes from original plan:\n- Using Durable Streams protocol instead of custom event sourcing\n- Offset format: `\u003cread-seq\u003e_\u003cbyte-offset\u003e` (lexicographically sortable)\n- Recovery: scan files to reconcile with metadata on startup\n- Long-poll support for live tailing","status":"
|
|
903
|
+
{"id":"opencode-swarm-plugin-fst9c","title":"Event-Sourced Agent Mail with PGLite","description":"Replace MCP-based agent mail with embedded PGLite database using Durable Streams protocol (Electric SQL). Same tool API, offset-based resumability, crash recovery, full audit trail, no external dependencies.\n\nReference: github.com/durable-streams/durable-streams\n\nKey changes from original plan:\n- Using Durable Streams protocol instead of custom event sourcing\n- Offset format: `\u003cread-seq\u003e_\u003cbyte-offset\u003e` (lexicographically sortable)\n- Recovery: scan files to reconcile with metadata on startup\n- Long-poll support for live tailing","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T08:47:30.814673-08:00","updated_at":"2025-12-13T15:51:21.968873-08:00","closed_at":"2025-12-13T15:51:21.968873-08:00"}
|
|
904
904
|
{"id":"opencode-swarm-plugin-fst9c.1","title":"PGLite Foundation + Event Schema","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-13T08:47:30.870657-08:00","updated_at":"2025-12-13T08:49:03.269255-08:00","closed_at":"2025-12-13T08:49:03.269255-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fst9c.1","depends_on_id":"opencode-swarm-plugin-fst9c","type":"parent-child","created_at":"2025-12-13T08:47:30.871568-08:00","created_by":"daemon"}]}
|
|
905
905
|
{"id":"opencode-swarm-plugin-fst9c.2","title":"Event Store Implementation","description":"TDD: Implement Durable Streams-compliant event store with PGLite\n\nTest-first approach:\n1. Write unit tests for events.ts (schemas, createEvent, isEventType)\n2. Write unit tests for store.ts (append, read, replay)\n3. Write integration tests for full flow\n4. Implement to make tests pass\n\nKey features:\n- Offset format: `\u003cread-seq\u003e_\u003cbyte-offset\u003e` (16-char zero-padded)\n- append() with sequence coordination\n- read() with offset-based resumability \n- Crash recovery: scan to reconcile metadata\n- Long-poll support for live tailing\n\nReference: github.com/durable-streams/durable-streams PROTOCOL.md","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T08:47:30.926284-08:00","updated_at":"2025-12-13T09:01:37.573559-08:00","closed_at":"2025-12-13T09:01:37.573559-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fst9c.2","depends_on_id":"opencode-swarm-plugin-fst9c","type":"parent-child","created_at":"2025-12-13T08:47:30.927781-08:00","created_by":"daemon"}]}
|
|
906
906
|
{"id":"opencode-swarm-plugin-fst9c.3","title":"Projections Layer","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T08:47:30.97906-08:00","updated_at":"2025-12-13T09:01:38.193937-08:00","closed_at":"2025-12-13T09:01:38.193937-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fst9c.3","depends_on_id":"opencode-swarm-plugin-fst9c","type":"parent-child","created_at":"2025-12-13T08:47:30.980628-08:00","created_by":"daemon"}]}
|
|
@@ -916,7 +916,7 @@
|
|
|
916
916
|
{"id":"opencode-swarm-plugin-fw0sj.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:57.616248-08:00","updated_at":"2025-12-08T11:12:57.695802-08:00","closed_at":"2025-12-08T11:12:57.695802-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fw0sj.1","depends_on_id":"opencode-swarm-plugin-fw0sj","type":"parent-child","created_at":"2025-12-08T11:12:57.616605-08:00","created_by":"daemon"}]}
|
|
917
917
|
{"id":"opencode-swarm-plugin-fw0sj.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:57.64759-08:00","updated_at":"2025-12-08T11:12:57.742226-08:00","closed_at":"2025-12-08T11:12:57.742226-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fw0sj.2","depends_on_id":"opencode-swarm-plugin-fw0sj","type":"parent-child","created_at":"2025-12-08T11:12:57.6479-08:00","created_by":"daemon"}]}
|
|
918
918
|
{"id":"opencode-swarm-plugin-fw10","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:30.62651-08:00","updated_at":"2025-12-08T09:09:33.111246-08:00","closed_at":"2025-12-08T09:09:33.111246-08:00"}
|
|
919
|
-
{"id":"opencode-swarm-plugin-fwovc","title":"Add JSDoc to TaskDecomposition.reasoning field","description":"src/schemas/task.ts:59 - `reasoning` field has inline comment \"Why this decomposition\" but should be JSDoc for IDE tooltips. Add: \"/** Rationale for this decomposition strategy */\"","status":"
|
|
919
|
+
{"id":"opencode-swarm-plugin-fwovc","title":"Add JSDoc to TaskDecomposition.reasoning field","description":"src/schemas/task.ts:59 - `reasoning` field has inline comment \"Why this decomposition\" but should be JSDoc for IDE tooltips. Add: \"/** Rationale for this decomposition strategy */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:25.735267-08:00","updated_at":"2025-12-13T16:45:49.106586-08:00","closed_at":"2025-12-13T16:45:49.106586-08:00"}
|
|
920
920
|
{"id":"opencode-swarm-plugin-fwtl","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T11:11:38.057567-08:00","updated_at":"2025-12-08T11:11:40.675781-08:00","closed_at":"2025-12-08T11:11:40.675781-08:00"}
|
|
921
921
|
{"id":"opencode-swarm-plugin-fxbr","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:12:26.678108-08:00","updated_at":"2025-12-08T11:12:28.511904-08:00","closed_at":"2025-12-08T11:12:28.511904-08:00"}
|
|
922
922
|
{"id":"opencode-swarm-plugin-fxbr.1","title":"Edit src/a.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:26.712588-08:00","updated_at":"2025-12-08T11:12:28.537154-08:00","closed_at":"2025-12-08T11:12:28.537154-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fxbr.1","depends_on_id":"opencode-swarm-plugin-fxbr","type":"parent-child","created_at":"2025-12-08T11:12:26.712874-08:00","created_by":"daemon"}]}
|
|
@@ -993,7 +993,7 @@
|
|
|
993
993
|
{"id":"opencode-swarm-plugin-h1u","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:52.210601-08:00","updated_at":"2025-12-07T19:34:54.432701-08:00","closed_at":"2025-12-07T19:34:54.432701-08:00"}
|
|
994
994
|
{"id":"opencode-swarm-plugin-h2ban","title":"Gap: Memory leak potential in Map-based caching","description":"src/streams/index.ts:50,53 - instances and schemaInitialized Maps grow unbounded if many different projectPaths are used (e.g., scanning many repos). Should: implement LRU eviction, max cache size, or TTL for unused instances. Also: closeDatabase() is provided but nothing calls it automatically - consider idle timeout to auto-close.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:25:36.484187-08:00","updated_at":"2025-12-13T09:55:54.155264-08:00","closed_at":"2025-12-13T09:55:54.155264-08:00"}
|
|
995
995
|
{"id":"opencode-swarm-plugin-h2vh","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:25.457831-08:00","updated_at":"2025-12-08T11:10:27.67778-08:00","closed_at":"2025-12-08T11:10:27.67778-08:00"}
|
|
996
|
-
{"id":"opencode-swarm-plugin-h2wai","title":"Add JSDoc to fallbackBehaviors explaining usage","description":"src/tool-availability.ts:217-225 - fallbackBehaviors object lacks JSDoc. Add: \"/** Human-readable descriptions of graceful degradation behavior when tools are unavailable. Shown to users in warnings and tool status output. */\"","status":"
|
|
996
|
+
{"id":"opencode-swarm-plugin-h2wai","title":"Add JSDoc to fallbackBehaviors explaining usage","description":"src/tool-availability.ts:217-225 - fallbackBehaviors object lacks JSDoc. Add: \"/** Human-readable descriptions of graceful degradation behavior when tools are unavailable. Shown to users in warnings and tool status output. */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:10.385729-08:00","updated_at":"2025-12-13T16:41:52.233653-08:00","closed_at":"2025-12-13T16:41:52.233653-08:00"}
|
|
997
997
|
{"id":"opencode-swarm-plugin-h3hd","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T07:53:43.602181-08:00","updated_at":"2025-12-08T07:53:46.165814-08:00","closed_at":"2025-12-08T07:53:46.165814-08:00"}
|
|
998
998
|
{"id":"opencode-swarm-plugin-h51i","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T07:46:51.097293-08:00","updated_at":"2025-12-08T07:46:51.315935-08:00","closed_at":"2025-12-08T07:46:51.315935-08:00"}
|
|
999
999
|
{"id":"opencode-swarm-plugin-h51i.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:51.133344-08:00","updated_at":"2025-12-08T07:46:51.227943-08:00","closed_at":"2025-12-08T07:46:51.227943-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-h51i.1","depends_on_id":"opencode-swarm-plugin-h51i","type":"parent-child","created_at":"2025-12-08T07:46:51.133688-08:00","created_by":"daemon"}]}
|
|
@@ -1002,13 +1002,13 @@
|
|
|
1002
1002
|
{"id":"opencode-swarm-plugin-h6vwp","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T11:18:42.779305-08:00","updated_at":"2025-12-13T11:18:46.484286-08:00","closed_at":"2025-12-13T11:18:46.484286-08:00"}
|
|
1003
1003
|
{"id":"opencode-swarm-plugin-h7gn","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:08.376379-08:00","updated_at":"2025-12-08T11:11:10.883411-08:00","closed_at":"2025-12-08T11:11:10.883411-08:00"}
|
|
1004
1004
|
{"id":"opencode-swarm-plugin-h7n9n","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:06:08.716598-08:00","updated_at":"2025-12-10T09:06:08.845582-08:00","closed_at":"2025-12-10T09:06:08.845582-08:00"}
|
|
1005
|
-
{"id":"opencode-swarm-plugin-hbag9","title":"Gap: No schema version migration system","description":"src/streams/index.ts:131-211 - initializeSchema() uses CREATE TABLE IF NOT EXISTS but no version tracking or migration system. If schema changes in future (add column, change index), existing databases won't upgrade. Should: add schema_version table, track current version, run migrations on version mismatch, provide rollback capability. See tools like node-pg-migrate or implement simple version check.","status":"
|
|
1005
|
+
{"id":"opencode-swarm-plugin-hbag9","title":"Gap: No schema version migration system","description":"src/streams/index.ts:131-211 - initializeSchema() uses CREATE TABLE IF NOT EXISTS but no version tracking or migration system. If schema changes in future (add column, change index), existing databases won't upgrade. Should: add schema_version table, track current version, run migrations on version mismatch, provide rollback capability. See tools like node-pg-migrate or implement simple version check.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:25:24.051926-08:00","updated_at":"2025-12-13T15:51:25.795239-08:00","closed_at":"2025-12-13T15:51:25.795239-08:00"}
|
|
1006
1006
|
{"id":"opencode-swarm-plugin-hbvv","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:10:26.909761-08:00","updated_at":"2025-12-08T11:10:27.107928-08:00","closed_at":"2025-12-08T11:10:27.107928-08:00"}
|
|
1007
1007
|
{"id":"opencode-swarm-plugin-hbvv.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:26.944206-08:00","updated_at":"2025-12-08T11:10:27.030987-08:00","closed_at":"2025-12-08T11:10:27.030987-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-hbvv.1","depends_on_id":"opencode-swarm-plugin-hbvv","type":"parent-child","created_at":"2025-12-08T11:10:26.944752-08:00","created_by":"daemon"}]}
|
|
1008
1008
|
{"id":"opencode-swarm-plugin-hbvv.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:26.977042-08:00","updated_at":"2025-12-08T11:10:27.082296-08:00","closed_at":"2025-12-08T11:10:27.082296-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-hbvv.2","depends_on_id":"opencode-swarm-plugin-hbvv","type":"parent-child","created_at":"2025-12-08T11:10:26.977472-08:00","created_by":"daemon"}]}
|
|
1009
1009
|
{"id":"opencode-swarm-plugin-hd81j","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:18:42.380734-08:00","updated_at":"2025-12-13T11:18:46.305204-08:00","closed_at":"2025-12-13T11:18:46.305204-08:00"}
|
|
1010
1010
|
{"id":"opencode-swarm-plugin-hejy","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:23.290114-08:00","updated_at":"2025-12-08T11:11:25.728542-08:00","closed_at":"2025-12-08T11:11:25.728542-08:00"}
|
|
1011
|
-
{"id":"opencode-swarm-plugin-helin","title":"Document subtask index in SubtaskDependency","description":"src/schemas/task.ts:46-47 - `from` and `to` fields say \"subtask index\" but don't clarify zero-based. Add: \"/** Zero-based subtask index */\"","status":"
|
|
1011
|
+
{"id":"opencode-swarm-plugin-helin","title":"Document subtask index in SubtaskDependency","description":"src/schemas/task.ts:46-47 - `from` and `to` fields say \"subtask index\" but don't clarify zero-based. Add: \"/** Zero-based subtask index */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:24.053154-08:00","updated_at":"2025-12-13T16:45:48.648104-08:00","closed_at":"2025-12-13T16:45:48.648104-08:00"}
|
|
1012
1012
|
{"id":"opencode-swarm-plugin-hgks","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:28.769438-08:00","updated_at":"2025-12-08T08:14:31.115138-08:00","closed_at":"2025-12-08T08:14:31.115138-08:00"}
|
|
1013
1013
|
{"id":"opencode-swarm-plugin-hh5mf","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T11:16:37.463069-08:00","updated_at":"2025-12-13T11:16:40.618038-08:00","closed_at":"2025-12-13T11:16:40.618038-08:00"}
|
|
1014
1014
|
{"id":"opencode-swarm-plugin-hh5mf.1","title":"Edit src/a.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:16:37.516054-08:00","updated_at":"2025-12-13T11:16:40.663289-08:00","closed_at":"2025-12-13T11:16:40.663289-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-hh5mf.1","depends_on_id":"opencode-swarm-plugin-hh5mf","type":"parent-child","created_at":"2025-12-13T11:16:37.516849-08:00","created_by":"daemon"}]}
|
|
@@ -1040,7 +1040,7 @@
|
|
|
1040
1040
|
{"id":"opencode-swarm-plugin-hwkw","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:27.977487-08:00","updated_at":"2025-12-08T08:21:30.235317-08:00","closed_at":"2025-12-08T08:21:30.235317-08:00"}
|
|
1041
1041
|
{"id":"opencode-swarm-plugin-hxjpi","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:08:31.67785-08:00","updated_at":"2025-12-10T09:08:35.265628-08:00","closed_at":"2025-12-10T09:08:35.265628-08:00"}
|
|
1042
1042
|
{"id":"opencode-swarm-plugin-hygj","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:17.054995-08:00","updated_at":"2025-12-08T08:22:19.388286-08:00","closed_at":"2025-12-08T08:22:19.388286-08:00"}
|
|
1043
|
-
{"id":"opencode-swarm-plugin-hyj89","title":"Add module-level JSDoc to structured.ts","description":"src/structured.ts:1-12 - Good module doc but missing usage guidance. Add: \"Usage: 1) structured_extract_json for raw extraction, 2) structured_validate for schema validation, 3) structured_parse_* for typed parsing\"","status":"
|
|
1043
|
+
{"id":"opencode-swarm-plugin-hyj89","title":"Add module-level JSDoc to structured.ts","description":"src/structured.ts:1-12 - Good module doc but missing usage guidance. Add: \"Usage: 1) structured_extract_json for raw extraction, 2) structured_validate for schema validation, 3) structured_parse_* for typed parsing\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:36.497225-08:00","updated_at":"2025-12-13T16:45:42.956445-08:00","closed_at":"2025-12-13T16:45:42.956445-08:00"}
|
|
1044
1044
|
{"id":"opencode-swarm-plugin-i04xf","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:08:31.916345-08:00","updated_at":"2025-12-10T09:08:35.373271-08:00","closed_at":"2025-12-10T09:08:35.373271-08:00"}
|
|
1045
1045
|
{"id":"opencode-swarm-plugin-i1ef","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-07T19:39:29.83577-08:00","updated_at":"2025-12-07T19:39:31.515373-08:00","closed_at":"2025-12-07T19:39:31.515373-08:00"}
|
|
1046
1046
|
{"id":"opencode-swarm-plugin-i2pf","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:39:30.024399-08:00","updated_at":"2025-12-07T19:39:31.62471-08:00","closed_at":"2025-12-07T19:39:31.62471-08:00"}
|
|
@@ -1048,7 +1048,7 @@
|
|
|
1048
1048
|
{"id":"opencode-swarm-plugin-i3xt","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:50.858823-08:00","updated_at":"2025-12-08T07:46:52.507243-08:00","closed_at":"2025-12-08T07:46:52.507243-08:00"}
|
|
1049
1049
|
{"id":"opencode-swarm-plugin-i41","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:34.076515-08:00","updated_at":"2025-12-07T19:37:36.161986-08:00","closed_at":"2025-12-07T19:37:36.161986-08:00"}
|
|
1050
1050
|
{"id":"opencode-swarm-plugin-i5nrg","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:55.519759-08:00","updated_at":"2025-12-08T11:12:58.065517-08:00","closed_at":"2025-12-08T11:12:58.065517-08:00"}
|
|
1051
|
-
{"id":"opencode-swarm-plugin-i6dpl","title":"Add usage example to resetToolCache JSDoc","description":"src/tool-availability.ts:369-372 - resetToolCache says \"for testing\" but doesn't explain when else to use. Add: \"/** Reset tool cache. Use in tests, or when tool availability may have changed (e.g., after installing a tool). */\"","status":"
|
|
1051
|
+
{"id":"opencode-swarm-plugin-i6dpl","title":"Add usage example to resetToolCache JSDoc","description":"src/tool-availability.ts:369-372 - resetToolCache says \"for testing\" but doesn't explain when else to use. Add: \"/** Reset tool cache. Use in tests, or when tool availability may have changed (e.g., after installing a tool). */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:13.17266-08:00","updated_at":"2025-12-13T16:41:53.358205-08:00","closed_at":"2025-12-13T16:41:53.358205-08:00"}
|
|
1052
1052
|
{"id":"opencode-swarm-plugin-i6odv","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-10T09:06:05.747258-08:00","updated_at":"2025-12-10T09:06:09.673753-08:00","closed_at":"2025-12-10T09:06:09.673753-08:00"}
|
|
1053
1053
|
{"id":"opencode-swarm-plugin-i7yl2","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:12:56.80513-08:00","updated_at":"2025-12-08T11:12:58.656807-08:00","closed_at":"2025-12-08T11:12:58.656807-08:00"}
|
|
1054
1054
|
{"id":"opencode-swarm-plugin-i7yl2.1","title":"Only task","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T11:12:56.835116-08:00","updated_at":"2025-12-08T11:12:58.68216-08:00","closed_at":"2025-12-08T11:12:58.68216-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-i7yl2.1","depends_on_id":"opencode-swarm-plugin-i7yl2","type":"parent-child","created_at":"2025-12-08T11:12:56.835409-08:00","created_by":"daemon"}]}
|
|
@@ -1066,12 +1066,12 @@
|
|
|
1066
1066
|
{"id":"opencode-swarm-plugin-idou.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:07.186768-08:00","updated_at":"2025-12-07T19:57:08.865323-08:00","closed_at":"2025-12-07T19:57:08.865323-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-idou.3","depends_on_id":"opencode-swarm-plugin-idou","type":"parent-child","created_at":"2025-12-07T19:57:07.187083-08:00","created_by":"daemon"}]}
|
|
1067
1067
|
{"id":"opencode-swarm-plugin-idou.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:07.218669-08:00","updated_at":"2025-12-07T19:57:08.887737-08:00","closed_at":"2025-12-07T19:57:08.887737-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-idou.4","depends_on_id":"opencode-swarm-plugin-idou","type":"parent-child","created_at":"2025-12-07T19:57:07.222363-08:00","created_by":"daemon"}]}
|
|
1068
1068
|
{"id":"opencode-swarm-plugin-idz7","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.61777-08:00","updated_at":"2025-12-08T11:11:26.259353-08:00","closed_at":"2025-12-08T11:11:26.259353-08:00"}
|
|
1069
|
-
{"id":"opencode-swarm-plugin-ierlm","title":"Simplify double destructuring in structured_parse_evaluation","description":"src/structured.ts:444 - `(v as { passed: boolean }).passed` type assertion is verbose. Since we've validated with EvaluationSchema, use type guard or cast validated earlier: `const criterion = v as CriterionEvaluation; criterion.passed`","status":"
|
|
1069
|
+
{"id":"opencode-swarm-plugin-ierlm","title":"Simplify double destructuring in structured_parse_evaluation","description":"src/structured.ts:444 - `(v as { passed: boolean }).passed` type assertion is verbose. Since we've validated with EvaluationSchema, use type guard or cast validated earlier: `const criterion = v as CriterionEvaluation; criterion.passed`","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:57.069749-08:00","updated_at":"2025-12-13T16:45:47.110329-08:00","closed_at":"2025-12-13T16:45:47.110329-08:00"}
|
|
1070
1070
|
{"id":"opencode-swarm-plugin-if1q","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:14:29.562596-08:00","updated_at":"2025-12-08T08:14:31.381744-08:00","closed_at":"2025-12-08T08:14:31.381744-08:00"}
|
|
1071
1071
|
{"id":"opencode-swarm-plugin-if1q.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:29.594846-08:00","updated_at":"2025-12-08T08:14:31.404566-08:00","closed_at":"2025-12-08T08:14:31.404566-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-if1q.1","depends_on_id":"opencode-swarm-plugin-if1q","type":"parent-child","created_at":"2025-12-08T08:14:29.595146-08:00","created_by":"daemon"}]}
|
|
1072
1072
|
{"id":"opencode-swarm-plugin-if1q.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-08T08:14:29.624489-08:00","updated_at":"2025-12-08T08:14:31.42969-08:00","closed_at":"2025-12-08T08:14:31.42969-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-if1q.2","depends_on_id":"opencode-swarm-plugin-if1q","type":"parent-child","created_at":"2025-12-08T08:14:29.624781-08:00","created_by":"daemon"}]}
|
|
1073
1073
|
{"id":"opencode-swarm-plugin-if3v","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:53.346318-08:00","updated_at":"2025-12-08T11:10:55.820026-08:00","closed_at":"2025-12-08T11:10:55.820026-08:00"}
|
|
1074
|
-
{"id":"opencode-swarm-plugin-ifb8b","title":"Gap: Insufficient logging/observability","description":"src/streams/store.ts, agent-mail.ts - No logging for critical operations: event appends, materialized view updates, database errors, conflicts detected. Makes debugging production issues hard. Should add structured logging (console.error/warn at minimum) for: database connection errors, event append failures, projection update failures, conflict detection, reservation operations. Consider: log levels (info/warn/error), context fields (projectKey, agentName, eventType).","status":"
|
|
1074
|
+
{"id":"opencode-swarm-plugin-ifb8b","title":"Gap: Insufficient logging/observability","description":"src/streams/store.ts, agent-mail.ts - No logging for critical operations: event appends, materialized view updates, database errors, conflicts detected. Makes debugging production issues hard. Should add structured logging (console.error/warn at minimum) for: database connection errors, event append failures, projection update failures, conflict detection, reservation operations. Consider: log levels (info/warn/error), context fields (projectKey, agentName, eventType).","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:25:07.066447-08:00","updated_at":"2025-12-13T16:06:34.32075-08:00","closed_at":"2025-12-13T16:06:34.32075-08:00"}
|
|
1075
1075
|
{"id":"opencode-swarm-plugin-ihjia","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T14:48:41.498669-08:00","updated_at":"2025-12-13T14:48:45.245218-08:00","closed_at":"2025-12-13T14:48:45.245218-08:00"}
|
|
1076
1076
|
{"id":"opencode-swarm-plugin-ijyv","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:56:56.579396-08:00","updated_at":"2025-12-08T08:56:58.480064-08:00","closed_at":"2025-12-08T08:56:58.480064-08:00"}
|
|
1077
1077
|
{"id":"opencode-swarm-plugin-ijyv.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:56.641855-08:00","updated_at":"2025-12-08T08:56:58.530793-08:00","closed_at":"2025-12-08T08:56:58.530793-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ijyv.2","depends_on_id":"opencode-swarm-plugin-ijyv","type":"parent-child","created_at":"2025-12-08T08:56:56.642441-08:00","created_by":"daemon"}]}
|
|
@@ -1144,20 +1144,20 @@
|
|
|
1144
1144
|
{"id":"opencode-swarm-plugin-k8d","title":"Docker integration test infrastructure","description":"Create Docker-based integration test environment with real beads CLI and Agent Mail server for testing all plugin modules without mocks","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:24:22.198656-08:00","updated_at":"2025-12-08T08:35:24.03232-08:00","closed_at":"2025-12-08T08:35:24.03232-08:00"}
|
|
1145
1145
|
{"id":"opencode-swarm-plugin-k93","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-07T19:39:10.444177-08:00","updated_at":"2025-12-07T19:39:12.109004-08:00","closed_at":"2025-12-07T19:39:12.109004-08:00"}
|
|
1146
1146
|
{"id":"opencode-swarm-plugin-k96p","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:08.442437-08:00","updated_at":"2025-12-08T11:11:10.936726-08:00","closed_at":"2025-12-08T11:11:10.936726-08:00"}
|
|
1147
|
-
{"id":"opencode-swarm-plugin-k9jxm","title":"Extract magic number 9 to constant in recordPatternObservation","description":"src/anti-patterns.ts:189 - `.slice(-9)` to keep last 10 examples (9 + new = 10) is not obvious. Extract to constant: `const MAX_EXAMPLE_BEADS = 10;` and use `slice(-(MAX_EXAMPLE_BEADS - 1))`","status":"
|
|
1147
|
+
{"id":"opencode-swarm-plugin-k9jxm","title":"Extract magic number 9 to constant in recordPatternObservation","description":"src/anti-patterns.ts:189 - `.slice(-9)` to keep last 10 examples (9 + new = 10) is not obvious. Extract to constant: `const MAX_EXAMPLE_BEADS = 10;` and use `slice(-(MAX_EXAMPLE_BEADS - 1))`","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:19.594675-08:00","updated_at":"2025-12-13T16:41:54.755714-08:00","closed_at":"2025-12-13T16:41:54.755714-08:00"}
|
|
1148
1148
|
{"id":"opencode-swarm-plugin-kaj5o","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T11:12:55.432953-08:00","updated_at":"2025-12-08T11:12:57.998991-08:00","closed_at":"2025-12-08T11:12:57.998991-08:00"}
|
|
1149
1149
|
{"id":"opencode-swarm-plugin-kci6","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:53:44.191794-08:00","updated_at":"2025-12-08T07:53:46.477523-08:00","closed_at":"2025-12-08T07:53:46.477523-08:00"}
|
|
1150
1150
|
{"id":"opencode-swarm-plugin-kcm4","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:16.997856-08:00","updated_at":"2025-12-08T08:22:19.364091-08:00","closed_at":"2025-12-08T08:22:19.364091-08:00"}
|
|
1151
1151
|
{"id":"opencode-swarm-plugin-ke2","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:53.703355-08:00","updated_at":"2025-12-07T19:34:55.270106-08:00","closed_at":"2025-12-07T19:34:55.270106-08:00"}
|
|
1152
1152
|
{"id":"opencode-swarm-plugin-ke73t","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:16:38.210712-08:00","updated_at":"2025-12-13T11:16:41.094483-08:00","closed_at":"2025-12-13T11:16:41.094483-08:00"}
|
|
1153
|
-
{"id":"opencode-swarm-plugin-kg04n","title":"Production-Ready Swarm Mail + Skills Integration","description":"Fix 18 production readiness gaps in Swarm Mail (error handling, race conditions, logging, timeouts, pagination, cleanup) and update CLI prompts/templates to leverage global skills effectively","status":"
|
|
1153
|
+
{"id":"opencode-swarm-plugin-kg04n","title":"Production-Ready Swarm Mail + Skills Integration","description":"Fix 18 production readiness gaps in Swarm Mail (error handling, race conditions, logging, timeouts, pagination, cleanup) and update CLI prompts/templates to leverage global skills effectively","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T09:50:37.986193-08:00","updated_at":"2025-12-13T16:45:57.642789-08:00","closed_at":"2025-12-13T16:45:57.642789-08:00"}
|
|
1154
1154
|
{"id":"opencode-swarm-plugin-kg04n.1","title":"Fix database singleton: error handling, race condition, process exit handlers","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T09:50:38.047239-08:00","updated_at":"2025-12-13T10:00:16.730133-08:00","closed_at":"2025-12-13T10:00:16.730133-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-kg04n.1","depends_on_id":"opencode-swarm-plugin-kg04n","type":"parent-child","created_at":"2025-12-13T09:50:38.048675-08:00","created_by":"daemon"}]}
|
|
1155
|
-
{"id":"opencode-swarm-plugin-kg04n.2","title":"Fix store.ts: transaction rollback, N+1 queries, pagination","description":"","status":"
|
|
1156
|
-
{"id":"opencode-swarm-plugin-kg04n.3","title":"Add logging, timeouts, and reservation cleanup","description":"","status":"
|
|
1157
|
-
{"id":"opencode-swarm-plugin-kg04n.4","title":"Add schema migration system","description":"","status":"
|
|
1158
|
-
{"id":"opencode-swarm-plugin-kg04n.5","title":"Add performance monitoring and thread safety docs","description":"","status":"
|
|
1155
|
+
{"id":"opencode-swarm-plugin-kg04n.2","title":"Fix store.ts: transaction rollback, N+1 queries, pagination","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T09:50:38.103935-08:00","updated_at":"2025-12-13T15:59:41.133577-08:00","closed_at":"2025-12-13T15:59:41.133577-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-kg04n.2","depends_on_id":"opencode-swarm-plugin-kg04n","type":"parent-child","created_at":"2025-12-13T09:50:38.105771-08:00","created_by":"daemon"}]}
|
|
1156
|
+
{"id":"opencode-swarm-plugin-kg04n.3","title":"Add logging, timeouts, and reservation cleanup","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T09:50:38.162535-08:00","updated_at":"2025-12-13T15:59:41.674936-08:00","closed_at":"2025-12-13T15:59:41.674936-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-kg04n.3","depends_on_id":"opencode-swarm-plugin-kg04n","type":"parent-child","created_at":"2025-12-13T09:50:38.163973-08:00","created_by":"daemon"}]}
|
|
1157
|
+
{"id":"opencode-swarm-plugin-kg04n.4","title":"Add schema migration system","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T09:50:38.223066-08:00","updated_at":"2025-12-13T16:45:52.324654-08:00","closed_at":"2025-12-13T16:45:52.324654-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-kg04n.4","depends_on_id":"opencode-swarm-plugin-kg04n","type":"parent-child","created_at":"2025-12-13T09:50:38.224391-08:00","created_by":"daemon"}]}
|
|
1158
|
+
{"id":"opencode-swarm-plugin-kg04n.5","title":"Add performance monitoring and thread safety docs","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T09:50:38.282357-08:00","updated_at":"2025-12-13T16:41:58.122669-08:00","closed_at":"2025-12-13T16:41:58.122669-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-kg04n.5","depends_on_id":"opencode-swarm-plugin-kg04n","type":"parent-child","created_at":"2025-12-13T09:50:38.283586-08:00","created_by":"daemon"}]}
|
|
1159
1159
|
{"id":"opencode-swarm-plugin-kg04n.6","title":"Update CLI prompts to leverage global skills","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T09:50:38.335876-08:00","updated_at":"2025-12-13T09:54:29.523416-08:00","closed_at":"2025-12-13T09:54:29.523416-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-kg04n.6","depends_on_id":"opencode-swarm-plugin-kg04n","type":"parent-child","created_at":"2025-12-13T09:50:38.336793-08:00","created_by":"daemon"}]}
|
|
1160
|
-
{"id":"opencode-swarm-plugin-kg04n.7","title":"Document MCP migration path and update README","description":"","status":"
|
|
1160
|
+
{"id":"opencode-swarm-plugin-kg04n.7","title":"Document MCP migration path and update README","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-13T09:50:38.389891-08:00","updated_at":"2025-12-13T16:41:59.947546-08:00","closed_at":"2025-12-13T16:41:59.947546-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-kg04n.7","depends_on_id":"opencode-swarm-plugin-kg04n","type":"parent-child","created_at":"2025-12-13T09:50:38.391664-08:00","created_by":"daemon"}]}
|
|
1161
1161
|
{"id":"opencode-swarm-plugin-kgj","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-07T19:36:06.845975-08:00","updated_at":"2025-12-07T19:36:08.783931-08:00","closed_at":"2025-12-07T19:36:08.783931-08:00"}
|
|
1162
1162
|
{"id":"opencode-swarm-plugin-kgre1","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-10T09:06:07.299289-08:00","updated_at":"2025-12-10T09:06:10.298015-08:00","closed_at":"2025-12-10T09:06:10.298015-08:00"}
|
|
1163
1163
|
{"id":"opencode-swarm-plugin-kh6l","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:36:18.341237-08:00","updated_at":"2025-12-08T08:36:19.969457-08:00","closed_at":"2025-12-08T08:36:19.969457-08:00"}
|
|
@@ -1175,14 +1175,14 @@
|
|
|
1175
1175
|
{"id":"opencode-swarm-plugin-knh71.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-13T11:20:48.424697-08:00","updated_at":"2025-12-13T11:20:51.935658-08:00","closed_at":"2025-12-13T11:20:51.935658-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-knh71.2","depends_on_id":"opencode-swarm-plugin-knh71","type":"parent-child","created_at":"2025-12-13T11:20:48.4254-08:00","created_by":"daemon"}]}
|
|
1176
1176
|
{"id":"opencode-swarm-plugin-knh71.3","title":"Subtask 3","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T11:20:48.479193-08:00","updated_at":"2025-12-13T11:20:51.973575-08:00","closed_at":"2025-12-13T11:20:51.973575-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-knh71.3","depends_on_id":"opencode-swarm-plugin-knh71","type":"parent-child","created_at":"2025-12-13T11:20:48.479959-08:00","created_by":"daemon"}]}
|
|
1177
1177
|
{"id":"opencode-swarm-plugin-kptb","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-07T19:41:10.637373-08:00","updated_at":"2025-12-07T19:41:13.253191-08:00","closed_at":"2025-12-07T19:41:13.253191-08:00"}
|
|
1178
|
-
{"id":"opencode-swarm-plugin-kr0ue","title":"Document shared_context usage pattern","description":"src/schemas/task.ts:62 - `shared_context` field comment \"Context to pass to all agents\" is vague. Add example: \"/** Shared context for all agents (e.g., API contracts, shared types, project conventions) */\"","status":"
|
|
1178
|
+
{"id":"opencode-swarm-plugin-kr0ue","title":"Document shared_context usage pattern","description":"src/schemas/task.ts:62 - `shared_context` field comment \"Context to pass to all agents\" is vague. Add example: \"/** Shared context for all agents (e.g., API contracts, shared types, project conventions) */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:27.641899-08:00","updated_at":"2025-12-13T16:45:49.63414-08:00","closed_at":"2025-12-13T16:45:49.63414-08:00"}
|
|
1179
1179
|
{"id":"opencode-swarm-plugin-ksf8","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.941287-08:00","updated_at":"2025-12-08T11:11:25.542086-08:00","closed_at":"2025-12-08T11:11:25.542086-08:00"}
|
|
1180
1180
|
{"id":"opencode-swarm-plugin-ksju","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:29.209169-08:00","updated_at":"2025-12-07T19:39:31.293491-08:00","closed_at":"2025-12-07T19:39:31.293491-08:00"}
|
|
1181
1181
|
{"id":"opencode-swarm-plugin-ku18","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:21:28.450162-08:00","updated_at":"2025-12-08T08:21:30.491525-08:00","closed_at":"2025-12-08T08:21:30.491525-08:00"}
|
|
1182
1182
|
{"id":"opencode-swarm-plugin-kuy2","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T09:09:31.591559-08:00","updated_at":"2025-12-08T09:09:33.474734-08:00","closed_at":"2025-12-08T09:09:33.474734-08:00"}
|
|
1183
1183
|
{"id":"opencode-swarm-plugin-kxnv","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:23.357335-08:00","updated_at":"2025-12-08T11:11:25.755985-08:00","closed_at":"2025-12-08T11:11:25.755985-08:00"}
|
|
1184
1184
|
{"id":"opencode-swarm-plugin-kyd8","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.571863-08:00","updated_at":"2025-12-08T11:11:25.310068-08:00","closed_at":"2025-12-08T11:11:25.310068-08:00"}
|
|
1185
|
-
{"id":"opencode-swarm-plugin-kzs3m","title":"Gap: Reservation expiry not enforced on read","description":"src/streams/projections.ts:215-242 - getActiveReservations() filters by expires_at \u003e now, but expired reservations are never cleaned up from DB. Over time, reservations table grows with expired entries. Should: add cleanup job to DELETE expired reservations, or VACUUM old data. Consider: periodic cleanup on health check, TTL-based auto-deletion, or expose cleanup API.","status":"
|
|
1185
|
+
{"id":"opencode-swarm-plugin-kzs3m","title":"Gap: Reservation expiry not enforced on read","description":"src/streams/projections.ts:215-242 - getActiveReservations() filters by expires_at \u003e now, but expired reservations are never cleaned up from DB. Over time, reservations table grows with expired entries. Should: add cleanup job to DELETE expired reservations, or VACUUM old data. Consider: periodic cleanup on health check, TTL-based auto-deletion, or expose cleanup API.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:25:39.780369-08:00","updated_at":"2025-12-13T15:51:25.259688-08:00","closed_at":"2025-12-13T15:51:25.259688-08:00"}
|
|
1186
1186
|
{"id":"opencode-swarm-plugin-kzyo","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T08:56:55.201159-08:00","updated_at":"2025-12-08T08:56:57.826934-08:00","closed_at":"2025-12-08T08:56:57.826934-08:00"}
|
|
1187
1187
|
{"id":"opencode-swarm-plugin-l0nf","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T08:05:32.672544-08:00","updated_at":"2025-12-08T08:05:35.160106-08:00","closed_at":"2025-12-08T08:05:35.160106-08:00"}
|
|
1188
1188
|
{"id":"opencode-swarm-plugin-l1l","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-07T19:39:09.442299-08:00","updated_at":"2025-12-07T19:39:11.67709-08:00","closed_at":"2025-12-07T19:39:11.67709-08:00"}
|
|
@@ -1193,7 +1193,7 @@
|
|
|
1193
1193
|
{"id":"opencode-swarm-plugin-l3hj","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-07T19:56:43.04206-08:00","updated_at":"2025-12-07T19:56:45.007684-08:00","closed_at":"2025-12-07T19:56:45.007684-08:00"}
|
|
1194
1194
|
{"id":"opencode-swarm-plugin-l3zw","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:28.705221-08:00","updated_at":"2025-12-08T08:21:30.697066-08:00","closed_at":"2025-12-08T08:21:30.697066-08:00"}
|
|
1195
1195
|
{"id":"opencode-swarm-plugin-l436","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T08:21:27.649303-08:00","updated_at":"2025-12-08T08:21:30.152076-08:00","closed_at":"2025-12-08T08:21:30.152076-08:00"}
|
|
1196
|
-
{"id":"opencode-swarm-plugin-l5i5e","title":"Add validation message for datetime schema","description":"src/schemas/bead.ts:51-53 - datetime schemas have default Zod error messages. Add custom message: `.datetime({ offset: true, message: \"Must be ISO-8601 with timezone\" })`","status":"
|
|
1196
|
+
{"id":"opencode-swarm-plugin-l5i5e","title":"Add validation message for datetime schema","description":"src/schemas/bead.ts:51-53 - datetime schemas have default Zod error messages. Add custom message: `.datetime({ offset: true, message: \"Must be ISO-8601 with timezone\" })`","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:08.592079-08:00","updated_at":"2025-12-13T16:48:08.881079-08:00","closed_at":"2025-12-13T16:48:08.881079-08:00"}
|
|
1197
1197
|
{"id":"opencode-swarm-plugin-l5ya","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.338829-08:00","updated_at":"2025-12-08T11:12:27.840456-08:00","closed_at":"2025-12-08T11:12:27.840456-08:00"}
|
|
1198
1198
|
{"id":"opencode-swarm-plugin-l6ce","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:23.548007-08:00","updated_at":"2025-12-08T11:11:25.671739-08:00","closed_at":"2025-12-08T11:11:25.671739-08:00"}
|
|
1199
1199
|
{"id":"opencode-swarm-plugin-l78f","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:26.681415-08:00","updated_at":"2025-12-08T11:10:28.233685-08:00","closed_at":"2025-12-08T11:10:28.233685-08:00"}
|
|
@@ -1208,7 +1208,7 @@
|
|
|
1208
1208
|
{"id":"opencode-swarm-plugin-lib","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:37:35.075852-08:00","updated_at":"2025-12-07T19:37:36.603302-08:00","closed_at":"2025-12-07T19:37:36.603302-08:00"}
|
|
1209
1209
|
{"id":"opencode-swarm-plugin-lifp9","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:20:47.300698-08:00","updated_at":"2025-12-13T11:20:51.556708-08:00","closed_at":"2025-12-13T11:20:51.556708-08:00"}
|
|
1210
1210
|
{"id":"opencode-swarm-plugin-lit5","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:30.797757-08:00","updated_at":"2025-12-08T09:09:33.183527-08:00","closed_at":"2025-12-08T09:09:33.183527-08:00"}
|
|
1211
|
-
{"id":"opencode-swarm-plugin-ljchj","title":"Add minimum observation threshold to formatMaturityForPrompt","description":"src/pattern-maturity.ts:337-354 - formatMaturityForPrompt shows percentages even for 1 observation (100% from 1 sample is misleading). Add check: if total \u0026lt; 3, show \"Limited data (N observations)\" instead of percentages.","status":"
|
|
1211
|
+
{"id":"opencode-swarm-plugin-ljchj","title":"Add minimum observation threshold to formatMaturityForPrompt","description":"src/pattern-maturity.ts:337-354 - formatMaturityForPrompt shows percentages even for 1 observation (100% from 1 sample is misleading). Add check: if total \u0026lt; 3, show \"Limited data (N observations)\" instead of percentages.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:42.236056-08:00","updated_at":"2025-12-13T16:20:31.992553-08:00","closed_at":"2025-12-13T16:20:31.992553-08:00"}
|
|
1212
1212
|
{"id":"opencode-swarm-plugin-ll15","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:22:18.723191-08:00","updated_at":"2025-12-08T08:22:18.922132-08:00","closed_at":"2025-12-08T08:22:18.922132-08:00"}
|
|
1213
1213
|
{"id":"opencode-swarm-plugin-ll15.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:18.756408-08:00","updated_at":"2025-12-08T08:22:18.841276-08:00","closed_at":"2025-12-08T08:22:18.841276-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ll15.1","depends_on_id":"opencode-swarm-plugin-ll15","type":"parent-child","created_at":"2025-12-08T08:22:18.756747-08:00","created_by":"daemon"}]}
|
|
1214
1214
|
{"id":"opencode-swarm-plugin-ll15.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:18.788908-08:00","updated_at":"2025-12-08T08:22:18.895654-08:00","closed_at":"2025-12-08T08:22:18.895654-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ll15.2","depends_on_id":"opencode-swarm-plugin-ll15","type":"parent-child","created_at":"2025-12-08T08:22:18.789319-08:00","created_by":"daemon"}]}
|
|
@@ -1263,7 +1263,7 @@
|
|
|
1263
1263
|
{"id":"opencode-swarm-plugin-m945","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:23:18.494405-08:00","updated_at":"2025-12-08T08:23:20.338516-08:00","closed_at":"2025-12-08T08:23:20.338516-08:00"}
|
|
1264
1264
|
{"id":"opencode-swarm-plugin-m945.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:18.559296-08:00","updated_at":"2025-12-08T08:23:20.39017-08:00","closed_at":"2025-12-08T08:23:20.39017-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-m945.2","depends_on_id":"opencode-swarm-plugin-m945","type":"parent-child","created_at":"2025-12-08T08:23:18.559728-08:00","created_by":"daemon"}]}
|
|
1265
1265
|
{"id":"opencode-swarm-plugin-ma95","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T08:22:17.171295-08:00","updated_at":"2025-12-08T08:22:19.435433-08:00","closed_at":"2025-12-08T08:22:19.435433-08:00"}
|
|
1266
|
-
{"id":"opencode-swarm-plugin-manrh","title":"Gap: No performance monitoring or slow query logging","description":"All query operations - No timing instrumentation to detect slow queries. In production, you'd want to know which operations are taking \u003e1s. Should: add query timing wrapper, log slow queries (\u003e100ms threshold), emit metrics for appendEvent, readEvents, projection updates. Consider: performance.now() wrapper, histogram of query times, alerting on P99 latency.","status":"
|
|
1266
|
+
{"id":"opencode-swarm-plugin-manrh","title":"Gap: No performance monitoring or slow query logging","description":"All query operations - No timing instrumentation to detect slow queries. In production, you'd want to know which operations are taking \u003e1s. Should: add query timing wrapper, log slow queries (\u003e100ms threshold), emit metrics for appendEvent, readEvents, projection updates. Consider: performance.now() wrapper, histogram of query times, alerting on P99 latency.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-13T09:25:32.95699-08:00","updated_at":"2025-12-13T16:41:59.389137-08:00","closed_at":"2025-12-13T16:41:59.389137-08:00"}
|
|
1267
1267
|
{"id":"opencode-swarm-plugin-mb56","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:22:17.82073-08:00","updated_at":"2025-12-08T08:22:19.66901-08:00","closed_at":"2025-12-08T08:22:19.66901-08:00"}
|
|
1268
1268
|
{"id":"opencode-swarm-plugin-mb56.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:17.890421-08:00","updated_at":"2025-12-08T08:22:19.723982-08:00","closed_at":"2025-12-08T08:22:19.723982-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-mb56.2","depends_on_id":"opencode-swarm-plugin-mb56","type":"parent-child","created_at":"2025-12-08T08:22:17.890835-08:00","created_by":"daemon"}]}
|
|
1269
1269
|
{"id":"opencode-swarm-plugin-mbkma","title":"Ordered subtasks epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T11:16:37.734961-08:00","updated_at":"2025-12-13T11:16:40.838801-08:00","closed_at":"2025-12-13T11:16:40.838801-08:00"}
|
|
@@ -1289,7 +1289,7 @@
|
|
|
1289
1289
|
{"id":"opencode-swarm-plugin-mo2a","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:17.537916-08:00","updated_at":"2025-12-08T08:23:19.944563-08:00","closed_at":"2025-12-08T08:23:19.944563-08:00"}
|
|
1290
1290
|
{"id":"opencode-swarm-plugin-mp8b","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T08:05:33.3177-08:00","updated_at":"2025-12-08T08:05:35.533355-08:00","closed_at":"2025-12-08T08:05:35.533355-08:00"}
|
|
1291
1291
|
{"id":"opencode-swarm-plugin-mqd8n","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:07:22.208873-08:00","updated_at":"2025-12-10T09:07:25.655029-08:00","closed_at":"2025-12-10T09:07:25.655029-08:00"}
|
|
1292
|
-
{"id":"opencode-swarm-plugin-mqhmm","title":"Document extraction strategy priority order","description":"src/structured.ts:118-190 - extractJsonFromText tries 6 strategies but priority reasoning not documented. Add JSDoc: \"Strategies tried in order: 1) direct parse (fastest), 2-3) code blocks (common), 4-5) brace matching (resilient), 6) repair (last resort)\"","status":"
|
|
1292
|
+
{"id":"opencode-swarm-plugin-mqhmm","title":"Document extraction strategy priority order","description":"src/structured.ts:118-190 - extractJsonFromText tries 6 strategies but priority reasoning not documented. Add JSDoc: \"Strategies tried in order: 1) direct parse (fastest), 2-3) code blocks (common), 4-5) brace matching (resilient), 6) repair (last resort)\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:42.644422-08:00","updated_at":"2025-12-13T16:45:43.863641-08:00","closed_at":"2025-12-13T16:45:43.863641-08:00"}
|
|
1293
1293
|
{"id":"opencode-swarm-plugin-mquw","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:28.67798-08:00","updated_at":"2025-12-08T08:14:31.039942-08:00","closed_at":"2025-12-08T08:14:31.039942-08:00"}
|
|
1294
1294
|
{"id":"opencode-swarm-plugin-mrlu","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:16.613409-08:00","updated_at":"2025-12-08T08:22:19.162032-08:00","closed_at":"2025-12-08T08:22:19.162032-08:00"}
|
|
1295
1295
|
{"id":"opencode-swarm-plugin-msud","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T09:09:31.67052-08:00","updated_at":"2025-12-08T09:09:33.50072-08:00","closed_at":"2025-12-08T09:09:33.50072-08:00"}
|
|
@@ -1318,7 +1318,7 @@
|
|
|
1318
1318
|
{"id":"opencode-swarm-plugin-n7y8","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-07T19:56:42.357122-08:00","updated_at":"2025-12-07T19:56:44.652083-08:00","closed_at":"2025-12-07T19:56:44.652083-08:00"}
|
|
1319
1319
|
{"id":"opencode-swarm-plugin-n80p","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:05:34.450922-08:00","updated_at":"2025-12-08T08:05:36.101564-08:00","closed_at":"2025-12-08T08:05:36.101564-08:00"}
|
|
1320
1320
|
{"id":"opencode-swarm-plugin-nc95","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T07:46:48.649826-08:00","updated_at":"2025-12-08T07:46:51.486879-08:00","closed_at":"2025-12-08T07:46:51.486879-08:00"}
|
|
1321
|
-
{"id":"opencode-swarm-plugin-ncmif","title":"Integrate superpowers verification \u0026 quality patterns","description":"Add Verification Gate to swarm_complete, CSO validation to skills_create, 3-Strike Detection, Socratic strategy for swarm decomposition, and coordinator context preservation pattern. Based on analysis of obra/superpowers repo.","status":"
|
|
1321
|
+
{"id":"opencode-swarm-plugin-ncmif","title":"Integrate superpowers verification \u0026 quality patterns","description":"Add Verification Gate to swarm_complete, CSO validation to skills_create, 3-Strike Detection, Socratic strategy for swarm decomposition, and coordinator context preservation pattern. Based on analysis of obra/superpowers repo.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T14:09:25.492623-08:00","updated_at":"2025-12-13T15:50:51.023656-08:00","closed_at":"2025-12-13T15:50:51.023656-08:00"}
|
|
1322
1322
|
{"id":"opencode-swarm-plugin-ncmif.1","title":"Add CSO validation to skills_create","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T14:09:25.550394-08:00","updated_at":"2025-12-13T14:18:35.456019-08:00","closed_at":"2025-12-13T14:18:35.456019-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ncmif.1","depends_on_id":"opencode-swarm-plugin-ncmif","type":"parent-child","created_at":"2025-12-13T14:09:25.55131-08:00","created_by":"daemon"}]}
|
|
1323
1323
|
{"id":"opencode-swarm-plugin-ncmif.2","title":"Add Verification Gate + Socratic strategy to swarm.ts","description":"COMPLETED: Added Verification Gate to swarm_complete.\n\nImplements the Gate Function (IDENTIFY → RUN → READ → VERIFY → CLAIM):\n1. UBS scan (existing)\n2. Typecheck verification (new) - runs tsc --noEmit\n3. Test verification (new) - runs tests for touched files\n\nAll steps must pass before bead can be closed. Adds skip_verification param for escape hatch.\n\nFiles modified:\n- src/swarm.ts: Added runTypecheckVerification(), runTestVerification(), runVerificationGate(), updated swarm_complete tool","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-13T14:09:25.600836-08:00","updated_at":"2025-12-13T14:49:56.515815-08:00","closed_at":"2025-12-13T14:49:56.515815-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ncmif.2","depends_on_id":"opencode-swarm-plugin-ncmif","type":"parent-child","created_at":"2025-12-13T14:09:25.601585-08:00","created_by":"daemon"}]}
|
|
1324
1324
|
{"id":"opencode-swarm-plugin-ncmif.3","title":"Implement 3-Strike Detection","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T14:09:25.654605-08:00","updated_at":"2025-12-13T14:18:37.578898-08:00","closed_at":"2025-12-13T14:18:37.578898-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ncmif.3","depends_on_id":"opencode-swarm-plugin-ncmif","type":"parent-child","created_at":"2025-12-13T14:09:25.655388-08:00","created_by":"daemon"}]}
|
|
@@ -1330,7 +1330,7 @@
|
|
|
1330
1330
|
{"id":"opencode-swarm-plugin-nl35","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:42.450565-08:00","updated_at":"2025-12-07T19:56:44.715664-08:00","closed_at":"2025-12-07T19:56:44.715664-08:00"}
|
|
1331
1331
|
{"id":"opencode-swarm-plugin-nl4d","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.534719-08:00","updated_at":"2025-12-08T07:49:12.03954-08:00","closed_at":"2025-12-08T07:49:12.03954-08:00"}
|
|
1332
1332
|
{"id":"opencode-swarm-plugin-nncr","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:07.94483-08:00","updated_at":"2025-12-08T11:11:10.366924-08:00","closed_at":"2025-12-08T11:11:10.366924-08:00"}
|
|
1333
|
-
{"id":"opencode-swarm-plugin-nnu9l","title":"Pattern: Defense-in-Depth - 4 Layers of Validation","description":"## Defense-in-Depth Validation (from obra/superpowers)\n\n**Core Principle:** Single validation = \"We fixed the bug\". Multiple layers = \"We made the bug structurally impossible.\"\n\n### The 4 Layers\n**Layer 1: Entry Point Validation**\n- Reject obviously invalid input at API boundary\n- Check: not empty, exists, is correct type\n\n**Layer 2: Business Logic Validation**\n- Ensure data makes sense for this operation\n- Check: required fields, valid ranges, business rules\n\n**Layer 3: Environment Guards**\n- Prevent dangerous operations in specific contexts\n- Example: Refuse git init outside temp dir during tests\n\n**Layer 4: Debug Instrumentation**\n- Capture context for forensics\n- Log: directory, cwd, environment, stack trace\n\n### Why All 4 Layers\nAll four layers are necessary because:\n- Different code paths bypass entry validation\n- Mocks bypass business logic checks\n- Edge cases on different platforms need environment guards\n- Debug logging identifies structural misuse\n\n### Application Process\nWhen you find a bug:\n1. **Trace the data flow** - Where does bad value originate? Where used?\n2. **Map all checkpoints** - List every point data passes through\n3. **Add validation at each layer** - Entry, business, environment, debug\n4. **Test each layer** - Try to bypass layer 1, verify layer 2 catches it\n\n### Real Example\nBug: Empty `projectDir` caused `git init` in source code\n\nLayers added:\n- Layer 1: `Project.create()` validates not empty/exists/writable\n- Layer 2: `WorkspaceManager` validates projectDir not empty\n- Layer 3: `WorktreeManager` refuses git init outside tmpdir in tests\n- Layer 4: Stack trace logging before git init\n\nResult: 1847 tests passed, bug impossible to reproduce\n\n**Full analysis:** VERIFICATION_QUALITY_PATTERNS.md","status":"
|
|
1333
|
+
{"id":"opencode-swarm-plugin-nnu9l","title":"Pattern: Defense-in-Depth - 4 Layers of Validation","description":"## Defense-in-Depth Validation (from obra/superpowers)\n\n**Core Principle:** Single validation = \"We fixed the bug\". Multiple layers = \"We made the bug structurally impossible.\"\n\n### The 4 Layers\n**Layer 1: Entry Point Validation**\n- Reject obviously invalid input at API boundary\n- Check: not empty, exists, is correct type\n\n**Layer 2: Business Logic Validation**\n- Ensure data makes sense for this operation\n- Check: required fields, valid ranges, business rules\n\n**Layer 3: Environment Guards**\n- Prevent dangerous operations in specific contexts\n- Example: Refuse git init outside temp dir during tests\n\n**Layer 4: Debug Instrumentation**\n- Capture context for forensics\n- Log: directory, cwd, environment, stack trace\n\n### Why All 4 Layers\nAll four layers are necessary because:\n- Different code paths bypass entry validation\n- Mocks bypass business logic checks\n- Edge cases on different platforms need environment guards\n- Debug logging identifies structural misuse\n\n### Application Process\nWhen you find a bug:\n1. **Trace the data flow** - Where does bad value originate? Where used?\n2. **Map all checkpoints** - List every point data passes through\n3. **Add validation at each layer** - Entry, business, environment, debug\n4. **Test each layer** - Try to bypass layer 1, verify layer 2 catches it\n\n### Real Example\nBug: Empty `projectDir` caused `git init` in source code\n\nLayers added:\n- Layer 1: `Project.create()` validates not empty/exists/writable\n- Layer 2: `WorkspaceManager` validates projectDir not empty\n- Layer 3: `WorktreeManager` refuses git init outside tmpdir in tests\n- Layer 4: Stack trace logging before git init\n\nResult: 1847 tests passed, bug impossible to reproduce\n\n**Full analysis:** VERIFICATION_QUALITY_PATTERNS.md","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-13T14:01:12.487844-08:00","updated_at":"2025-12-13T15:50:55.223043-08:00","closed_at":"2025-12-13T15:50:55.223043-08:00"}
|
|
1334
1334
|
{"id":"opencode-swarm-plugin-nnv5p","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:55.33813-08:00","updated_at":"2025-12-08T11:12:57.866074-08:00","closed_at":"2025-12-08T11:12:57.866074-08:00"}
|
|
1335
1335
|
{"id":"opencode-swarm-plugin-npe6t","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-13T11:18:43.352641-08:00","updated_at":"2025-12-13T11:18:46.618244-08:00","closed_at":"2025-12-13T11:18:46.618244-08:00"}
|
|
1336
1336
|
{"id":"opencode-swarm-plugin-nq1t","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:10.023307-08:00","updated_at":"2025-12-08T07:49:12.276319-08:00","closed_at":"2025-12-08T07:49:12.276319-08:00"}
|
|
@@ -1362,7 +1362,7 @@
|
|
|
1362
1362
|
{"id":"opencode-swarm-plugin-o6s","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-07T19:39:18.006147-08:00","updated_at":"2025-12-07T19:39:20.281664-08:00","closed_at":"2025-12-07T19:39:20.281664-08:00"}
|
|
1363
1363
|
{"id":"opencode-swarm-plugin-o7ab8","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:57.123784-08:00","updated_at":"2025-12-08T11:12:58.860702-08:00","closed_at":"2025-12-08T11:12:58.860702-08:00"}
|
|
1364
1364
|
{"id":"opencode-swarm-plugin-o7u8","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:16.889028-08:00","updated_at":"2025-12-08T08:22:19.315049-08:00","closed_at":"2025-12-08T08:22:19.315049-08:00"}
|
|
1365
|
-
{"id":"opencode-swarm-plugin-o8i7h","title":"Extract magic number 200 to constant in structured.ts","description":"src/structured.ts:329 - Magic number 200 for preview length. Extract to constant: `const RAW_INPUT_PREVIEW_LENGTH = 200;` and use it on lines 329, 380.","status":"
|
|
1365
|
+
{"id":"opencode-swarm-plugin-o8i7h","title":"Extract magic number 200 to constant in structured.ts","description":"src/structured.ts:329 - Magic number 200 for preview length. Extract to constant: `const RAW_INPUT_PREVIEW_LENGTH = 200;` and use it on lines 329, 380.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:49.829007-08:00","updated_at":"2025-12-13T16:45:45.52985-08:00","closed_at":"2025-12-13T16:45:45.52985-08:00"}
|
|
1366
1366
|
{"id":"opencode-swarm-plugin-o8rvk","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T14:48:43.757273-08:00","updated_at":"2025-12-13T14:48:43.885987-08:00","closed_at":"2025-12-13T14:48:43.885987-08:00"}
|
|
1367
1367
|
{"id":"opencode-swarm-plugin-o971j","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:18:41.364171-08:00","updated_at":"2025-12-13T11:18:45.726564-08:00","closed_at":"2025-12-13T11:18:45.726564-08:00"}
|
|
1368
1368
|
{"id":"opencode-swarm-plugin-oa82","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:53.435018-08:00","updated_at":"2025-12-08T11:10:55.847654-08:00","closed_at":"2025-12-08T11:10:55.847654-08:00"}
|
|
@@ -1438,12 +1438,12 @@
|
|
|
1438
1438
|
{"id":"opencode-swarm-plugin-pk6.2","title":"Second","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:35.19197-08:00","updated_at":"2025-12-07T19:37:36.687027-08:00","closed_at":"2025-12-07T19:37:36.687027-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-pk6.2","depends_on_id":"opencode-swarm-plugin-pk6","type":"parent-child","created_at":"2025-12-07T19:37:35.192252-08:00","created_by":"daemon"}]}
|
|
1439
1439
|
{"id":"opencode-swarm-plugin-pk6.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:35.219292-08:00","updated_at":"2025-12-07T19:37:36.708239-08:00","closed_at":"2025-12-07T19:37:36.708239-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-pk6.3","depends_on_id":"opencode-swarm-plugin-pk6","type":"parent-child","created_at":"2025-12-07T19:37:35.219606-08:00","created_by":"daemon"}]}
|
|
1440
1440
|
{"id":"opencode-swarm-plugin-pk6.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:35.24747-08:00","updated_at":"2025-12-07T19:37:36.729939-08:00","closed_at":"2025-12-07T19:37:36.729939-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-pk6.4","depends_on_id":"opencode-swarm-plugin-pk6","type":"parent-child","created_at":"2025-12-07T19:37:35.247773-08:00","created_by":"daemon"}]}
|
|
1441
|
-
{"id":"opencode-swarm-plugin-pkguj","title":"Document PatternKind vs is_negative field relationship","description":"src/anti-patterns.ts:32-35 - DecompositionPatternSchema has both `kind: \"anti_pattern\"` and `is_negative: true` which seem redundant. Add JSDoc clarifying: \"/** kind tracks pattern lifecycle (pattern→anti_pattern), is_negative is a derived boolean flag for quick filtering */\"","status":"
|
|
1441
|
+
{"id":"opencode-swarm-plugin-pkguj","title":"Document PatternKind vs is_negative field relationship","description":"src/anti-patterns.ts:32-35 - DecompositionPatternSchema has both `kind: \"anti_pattern\"` and `is_negative: true` which seem redundant. Add JSDoc clarifying: \"/** kind tracks pattern lifecycle (pattern→anti_pattern), is_negative is a derived boolean flag for quick filtering */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:16.47239-08:00","updated_at":"2025-12-13T16:41:54.120691-08:00","closed_at":"2025-12-13T16:41:54.120691-08:00"}
|
|
1442
1442
|
{"id":"opencode-swarm-plugin-pne89","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:23.415605-08:00","updated_at":"2025-12-09T10:00:26.122015-08:00","closed_at":"2025-12-09T10:00:26.122015-08:00"}
|
|
1443
1443
|
{"id":"opencode-swarm-plugin-pnzl","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:08.062458-08:00","updated_at":"2025-12-08T11:11:10.417441-08:00","closed_at":"2025-12-08T11:11:10.417441-08:00"}
|
|
1444
1444
|
{"id":"opencode-swarm-plugin-po6t","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:11.036931-08:00","updated_at":"2025-12-07T19:41:13.502931-08:00","closed_at":"2025-12-07T19:41:13.502931-08:00"}
|
|
1445
|
-
{"id":"opencode-swarm-plugin-poiyi","title":"Document EffortLevel time ranges in schema comment","description":"src/schemas/task.ts:12-17 - Time ranges only in inline comments. Move to JSDoc for better IDE support: \"/** Effort estimation: trivial (\u003c 5 min), small (5-30 min), medium (30 min - 2 hours), large (2+ hours) */\"","status":"
|
|
1446
|
-
{"id":"opencode-swarm-plugin-ppyaf","title":"Clarify dependencies default value behavior","description":"src/schemas/bead.ts:55 - `dependencies` uses `.optional().default([])` which is redundant - optional with default is always present. Change to just `.default([])` for clarity.","status":"
|
|
1445
|
+
{"id":"opencode-swarm-plugin-poiyi","title":"Document EffortLevel time ranges in schema comment","description":"src/schemas/task.ts:12-17 - Time ranges only in inline comments. Move to JSDoc for better IDE support: \"/** Effort estimation: trivial (\u003c 5 min), small (5-30 min), medium (30 min - 2 hours), large (2+ hours) */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:20.198569-08:00","updated_at":"2025-12-13T16:45:47.639416-08:00","closed_at":"2025-12-13T16:45:47.639416-08:00"}
|
|
1446
|
+
{"id":"opencode-swarm-plugin-ppyaf","title":"Clarify dependencies default value behavior","description":"src/schemas/bead.ts:55 - `dependencies` uses `.optional().default([])` which is redundant - optional with default is always present. Change to just `.default([])` for clarity.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:09.341547-08:00","updated_at":"2025-12-13T16:48:08.412935-08:00","closed_at":"2025-12-13T16:48:08.412935-08:00"}
|
|
1447
1447
|
{"id":"opencode-swarm-plugin-pqe1f","title":"agent-mail.ts:122-131 - Non-atomic session state save","description":"agent-mail.ts:122-131 - saveSessionState() writes directly to target file without atomic write-then-rename pattern. Could corrupt state if process crashes mid-write. Suggested fix: Write to temp file, then rename atomically.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:01.116799-08:00","updated_at":"2025-12-13T08:52:55.939004-08:00","closed_at":"2025-12-13T08:52:55.939004-08:00"}
|
|
1448
1448
|
{"id":"opencode-swarm-plugin-pqrsv","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:18:44.21406-08:00","updated_at":"2025-12-13T11:18:47.262919-08:00","closed_at":"2025-12-13T11:18:47.262919-08:00"}
|
|
1449
1449
|
{"id":"opencode-swarm-plugin-prx0","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.332649-08:00","updated_at":"2025-12-08T11:11:25.183868-08:00","closed_at":"2025-12-08T11:11:25.183868-08:00"}
|
|
@@ -1472,27 +1472,27 @@
|
|
|
1472
1472
|
{"id":"opencode-swarm-plugin-qayj","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:41:12.931142-08:00","updated_at":"2025-12-07T19:41:13.125635-08:00","closed_at":"2025-12-07T19:41:13.125635-08:00"}
|
|
1473
1473
|
{"id":"opencode-swarm-plugin-qayj.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:12.964246-08:00","updated_at":"2025-12-07T19:41:13.053518-08:00","closed_at":"2025-12-07T19:41:13.053518-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qayj.1","depends_on_id":"opencode-swarm-plugin-qayj","type":"parent-child","created_at":"2025-12-07T19:41:12.964549-08:00","created_by":"daemon"}]}
|
|
1474
1474
|
{"id":"opencode-swarm-plugin-qayj.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:12.999044-08:00","updated_at":"2025-12-07T19:41:13.103098-08:00","closed_at":"2025-12-07T19:41:13.103098-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qayj.2","depends_on_id":"opencode-swarm-plugin-qayj","type":"parent-child","created_at":"2025-12-07T19:41:12.99937-08:00","created_by":"daemon"}]}
|
|
1475
|
-
{"id":"opencode-swarm-plugin-qb5pt","title":"Document weight field decay semantics","description":"src/schemas/evaluation.ts:34-35 - weight comment \"lower = less reliable\" could be more specific. Change to: \"/** Current weight after 90-day half-life decay (0-1, 1=recent/validated, 0=old/unreliable) */\"","status":"
|
|
1475
|
+
{"id":"opencode-swarm-plugin-qb5pt","title":"Document weight field decay semantics","description":"src/schemas/evaluation.ts:34-35 - weight comment \"lower = less reliable\" could be more specific. Change to: \"/** Current weight after 90-day half-life decay (0-1, 1=recent/validated, 0=old/unreliable) */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:15.949005-08:00","updated_at":"2025-12-13T16:48:06.823057-08:00","closed_at":"2025-12-13T16:48:06.823057-08:00"}
|
|
1476
1476
|
{"id":"opencode-swarm-plugin-qcf4","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:16.554185-08:00","updated_at":"2025-12-08T08:22:19.137592-08:00","closed_at":"2025-12-08T08:22:19.137592-08:00"}
|
|
1477
1477
|
{"id":"opencode-swarm-plugin-qfjv","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:05:33.26168-08:00","updated_at":"2025-12-08T08:05:35.508416-08:00","closed_at":"2025-12-08T08:05:35.508416-08:00"}
|
|
1478
1478
|
{"id":"opencode-swarm-plugin-qgd2n","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:16:36.35338-08:00","updated_at":"2025-12-13T11:16:40.1931-08:00","closed_at":"2025-12-13T11:16:40.1931-08:00"}
|
|
1479
|
-
{"id":"opencode-swarm-plugin-qgt38","title":"Document SubtaskSpec estimated_complexity scale","description":"src/schemas/bead.ts:106 - `estimated_complexity: z.number().int().min(1).max(5)` - scale meaning not documented. Add JSDoc: \"/** Complexity estimate (1=trivial, 5=very complex) */\"","status":"
|
|
1480
|
-
{"id":"opencode-swarm-plugin-qhj39","title":"Codebase Quality Analysis and Improvement Ideas","description":"Parallel analysis of opencode-swarm-plugin codebase across multiple dimensions: architecture, testing, performance, error handling, and code organization","status":"
|
|
1481
|
-
{"id":"opencode-swarm-plugin-qhj39.1","title":"Architecture and Module Design Analysis","description":"","status":"
|
|
1482
|
-
{"id":"opencode-swarm-plugin-qhj39.2","title":"Testing Coverage and Quality Analysis","description":"","status":"
|
|
1483
|
-
{"id":"opencode-swarm-plugin-qhj39.3","title":"Error Handling and Resilience Analysis","description":"","status":"
|
|
1484
|
-
{"id":"opencode-swarm-plugin-qhj39.4","title":"Performance and Resource Management Analysis","description":"","status":"
|
|
1485
|
-
{"id":"opencode-swarm-plugin-qhj39.5","title":"Synthesis: Prioritized Improvement Roadmap","description":"","status":"
|
|
1479
|
+
{"id":"opencode-swarm-plugin-qgt38","title":"Document SubtaskSpec estimated_complexity scale","description":"src/schemas/bead.ts:106 - `estimated_complexity: z.number().int().min(1).max(5)` - scale meaning not documented. Add JSDoc: \"/** Complexity estimate (1=trivial, 5=very complex) */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:10.789511-08:00","updated_at":"2025-12-13T16:48:07.924735-08:00","closed_at":"2025-12-13T16:48:07.924735-08:00"}
|
|
1480
|
+
{"id":"opencode-swarm-plugin-qhj39","title":"Codebase Quality Analysis and Improvement Ideas","description":"Parallel analysis of opencode-swarm-plugin codebase across multiple dimensions: architecture, testing, performance, error handling, and code organization","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T13:46:33.460464-08:00","updated_at":"2025-12-13T16:35:47.684376-08:00","closed_at":"2025-12-13T16:35:47.684376-08:00"}
|
|
1481
|
+
{"id":"opencode-swarm-plugin-qhj39.1","title":"Architecture and Module Design Analysis","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T13:46:33.527617-08:00","updated_at":"2025-12-13T16:14:01.218929-08:00","closed_at":"2025-12-13T16:14:01.218929-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qhj39.1","depends_on_id":"opencode-swarm-plugin-qhj39","type":"parent-child","created_at":"2025-12-13T13:46:33.528576-08:00","created_by":"daemon"}]}
|
|
1482
|
+
{"id":"opencode-swarm-plugin-qhj39.2","title":"Testing Coverage and Quality Analysis","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T13:46:33.587114-08:00","updated_at":"2025-12-13T16:14:02.185091-08:00","closed_at":"2025-12-13T16:14:02.185091-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qhj39.2","depends_on_id":"opencode-swarm-plugin-qhj39","type":"parent-child","created_at":"2025-12-13T13:46:33.587953-08:00","created_by":"daemon"}]}
|
|
1483
|
+
{"id":"opencode-swarm-plugin-qhj39.3","title":"Error Handling and Resilience Analysis","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T13:46:33.638663-08:00","updated_at":"2025-12-13T16:14:02.957291-08:00","closed_at":"2025-12-13T16:14:02.957291-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qhj39.3","depends_on_id":"opencode-swarm-plugin-qhj39","type":"parent-child","created_at":"2025-12-13T13:46:33.639443-08:00","created_by":"daemon"}]}
|
|
1484
|
+
{"id":"opencode-swarm-plugin-qhj39.4","title":"Performance and Resource Management Analysis","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T13:46:33.692921-08:00","updated_at":"2025-12-13T16:14:03.860041-08:00","closed_at":"2025-12-13T16:14:03.860041-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qhj39.4","depends_on_id":"opencode-swarm-plugin-qhj39","type":"parent-child","created_at":"2025-12-13T13:46:33.693758-08:00","created_by":"daemon"}]}
|
|
1485
|
+
{"id":"opencode-swarm-plugin-qhj39.5","title":"Synthesis: Prioritized Improvement Roadmap","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T13:46:33.748664-08:00","updated_at":"2025-12-13T16:35:46.458137-08:00","closed_at":"2025-12-13T16:35:46.458137-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qhj39.5","depends_on_id":"opencode-swarm-plugin-qhj39","type":"parent-child","created_at":"2025-12-13T13:46:33.749458-08:00","created_by":"daemon"}]}
|
|
1486
1486
|
{"id":"opencode-swarm-plugin-qhr0","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T08:22:16.521307-08:00","updated_at":"2025-12-08T08:22:19.112363-08:00","closed_at":"2025-12-08T08:22:19.112363-08:00"}
|
|
1487
|
-
{"id":"opencode-swarm-plugin-qkscs","title":"Production Hardening: Logging, Cleanup, and N+1 Fixes","description":"Fix 3 production readiness gaps in Swarm Mail to improve reliability and debuggability","status":"
|
|
1488
|
-
{"id":"opencode-swarm-plugin-qkscs.1","title":"Fix N+1 queries in store.ts message and reservation handlers","description":"","status":"
|
|
1489
|
-
{"id":"opencode-swarm-plugin-qkscs.2","title":"Implement expired reservation cleanup in projections.ts","description":"","status":"
|
|
1490
|
-
{"id":"opencode-swarm-plugin-qkscs.3","title":"Add structured logging for critical operations","description":"","status":"
|
|
1487
|
+
{"id":"opencode-swarm-plugin-qkscs","title":"Production Hardening: Logging, Cleanup, and N+1 Fixes","description":"Fix 3 production readiness gaps in Swarm Mail to improve reliability and debuggability","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T13:27:21.122378-08:00","updated_at":"2025-12-13T15:51:22.811521-08:00","closed_at":"2025-12-13T15:51:22.811521-08:00"}
|
|
1488
|
+
{"id":"opencode-swarm-plugin-qkscs.1","title":"Fix N+1 queries in store.ts message and reservation handlers","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T13:27:21.179002-08:00","updated_at":"2025-12-13T15:51:23.583961-08:00","closed_at":"2025-12-13T15:51:23.583961-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qkscs.1","depends_on_id":"opencode-swarm-plugin-qkscs","type":"parent-child","created_at":"2025-12-13T13:27:21.180631-08:00","created_by":"daemon"}]}
|
|
1489
|
+
{"id":"opencode-swarm-plugin-qkscs.2","title":"Implement expired reservation cleanup in projections.ts","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T13:27:21.234033-08:00","updated_at":"2025-12-13T15:51:24.090427-08:00","closed_at":"2025-12-13T15:51:24.090427-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qkscs.2","depends_on_id":"opencode-swarm-plugin-qkscs","type":"parent-child","created_at":"2025-12-13T13:27:21.235438-08:00","created_by":"daemon"}]}
|
|
1490
|
+
{"id":"opencode-swarm-plugin-qkscs.3","title":"Add structured logging for critical operations","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T13:27:21.287551-08:00","updated_at":"2025-12-13T15:51:24.600571-08:00","closed_at":"2025-12-13T15:51:24.600571-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-qkscs.3","depends_on_id":"opencode-swarm-plugin-qkscs","type":"parent-child","created_at":"2025-12-13T13:27:21.288503-08:00","created_by":"daemon"}]}
|
|
1491
1491
|
{"id":"opencode-swarm-plugin-ql5z","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T08:14:28.392972-08:00","updated_at":"2025-12-08T08:14:30.889299-08:00","closed_at":"2025-12-08T08:14:30.889299-08:00"}
|
|
1492
1492
|
{"id":"opencode-swarm-plugin-qlrp","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:55.899992-08:00","updated_at":"2025-12-08T08:56:58.219456-08:00","closed_at":"2025-12-08T08:56:58.219456-08:00"}
|
|
1493
1493
|
{"id":"opencode-swarm-plugin-qlzm","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:25.282262-08:00","updated_at":"2025-12-08T11:10:27.598379-08:00","closed_at":"2025-12-08T11:10:27.598379-08:00"}
|
|
1494
1494
|
{"id":"opencode-swarm-plugin-qmh5","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:05:33.074979-08:00","updated_at":"2025-12-08T08:05:35.431897-08:00","closed_at":"2025-12-08T08:05:35.431897-08:00"}
|
|
1495
|
-
{"id":"opencode-swarm-plugin-qmkwc","title":"Add JSDoc to plugin.ts exports","description":"src/plugin.ts:1-12 - File has warning about exports but no JSDoc explaining why. Add: \"/** CRITICAL: Only export the plugin function. OpenCode plugin loader calls all exports as functions, so exporting classes/constants will cause load failures. */\"","status":"
|
|
1495
|
+
{"id":"opencode-swarm-plugin-qmkwc","title":"Add JSDoc to plugin.ts exports","description":"src/plugin.ts:1-12 - File has warning about exports but no JSDoc explaining why. Add: \"/** CRITICAL: Only export the plugin function. OpenCode plugin loader calls all exports as functions, so exporting classes/constants will cause load failures. */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:59.660536-08:00","updated_at":"2025-12-13T16:41:57.162635-08:00","closed_at":"2025-12-13T16:41:57.162635-08:00"}
|
|
1496
1496
|
{"id":"opencode-swarm-plugin-qmq6","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:09.691145-08:00","updated_at":"2025-12-08T08:25:12.302074-08:00","closed_at":"2025-12-08T08:25:12.302074-08:00"}
|
|
1497
1497
|
{"id":"opencode-swarm-plugin-qnng","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:38.46203-08:00","updated_at":"2025-12-08T11:11:40.909868-08:00","closed_at":"2025-12-08T11:11:40.909868-08:00"}
|
|
1498
1498
|
{"id":"opencode-swarm-plugin-qpa0","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:53:43.832175-08:00","updated_at":"2025-12-08T07:53:46.263135-08:00","closed_at":"2025-12-08T07:53:46.263135-08:00"}
|
|
@@ -1510,7 +1510,7 @@
|
|
|
1510
1510
|
{"id":"opencode-swarm-plugin-r4ur.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:39.707223-08:00","updated_at":"2025-12-08T11:11:41.589205-08:00","closed_at":"2025-12-08T11:11:41.589205-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-r4ur.3","depends_on_id":"opencode-swarm-plugin-r4ur","type":"parent-child","created_at":"2025-12-08T11:11:39.707548-08:00","created_by":"daemon"}]}
|
|
1511
1511
|
{"id":"opencode-swarm-plugin-r4ur.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:39.738254-08:00","updated_at":"2025-12-08T11:11:41.627948-08:00","closed_at":"2025-12-08T11:11:41.627948-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-r4ur.4","depends_on_id":"opencode-swarm-plugin-r4ur","type":"parent-child","created_at":"2025-12-08T11:11:39.738606-08:00","created_by":"daemon"}]}
|
|
1512
1512
|
{"id":"opencode-swarm-plugin-r4v5","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:27.336024-08:00","updated_at":"2025-12-08T08:21:30.013866-08:00","closed_at":"2025-12-08T08:21:30.013866-08:00"}
|
|
1513
|
-
{"id":"opencode-swarm-plugin-r5glh","title":"Add constraint between status and blockers fields","description":"src/schemas/task.ts:107-111 - AgentProgressSchema has `status: \"blocked\"` and `blockers` array but no validation linking them. Add `.refine()` to require blockers when status is blocked.","status":"
|
|
1513
|
+
{"id":"opencode-swarm-plugin-r5glh","title":"Add constraint between status and blockers fields","description":"src/schemas/task.ts:107-111 - AgentProgressSchema has `status: \"blocked\"` and `blockers` array but no validation linking them. Add `.refine()` to require blockers when status is blocked.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:34.320563-08:00","updated_at":"2025-12-13T16:45:51.156357-08:00","closed_at":"2025-12-13T16:45:51.156357-08:00"}
|
|
1514
1514
|
{"id":"opencode-swarm-plugin-r603","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:10.962513-08:00","updated_at":"2025-12-07T19:41:13.452949-08:00","closed_at":"2025-12-07T19:41:13.452949-08:00"}
|
|
1515
1515
|
{"id":"opencode-swarm-plugin-r628","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T07:46:49.427816-08:00","updated_at":"2025-12-08T07:46:51.876555-08:00","closed_at":"2025-12-08T07:46:51.876555-08:00"}
|
|
1516
1516
|
{"id":"opencode-swarm-plugin-r71uk","title":"Ordered subtasks epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T14:48:42.732193-08:00","updated_at":"2025-12-13T14:48:45.827165-08:00","closed_at":"2025-12-13T14:48:45.827165-08:00"}
|
|
@@ -1547,7 +1547,7 @@
|
|
|
1547
1547
|
{"id":"opencode-swarm-plugin-ryzv","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:43.146246-08:00","updated_at":"2025-12-07T19:56:43.167763-08:00","closed_at":"2025-12-07T19:56:43.167763-08:00"}
|
|
1548
1548
|
{"id":"opencode-swarm-plugin-s0ah","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:10.991261-08:00","updated_at":"2025-12-08T08:25:12.921305-08:00","closed_at":"2025-12-08T08:25:12.921305-08:00"}
|
|
1549
1549
|
{"id":"opencode-swarm-plugin-s0fr","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:40.824343-08:00","updated_at":"2025-12-08T08:11:42.592959-08:00","closed_at":"2025-12-08T08:11:42.592959-08:00"}
|
|
1550
|
-
{"id":"opencode-swarm-plugin-s4xfg","title":"Simplify errorBullets initialization in StructuredValidationError","description":"src/structured.ts:47 - `this.errorBullets = zodError ? formatZodErrors(zodError) : [message];` could use nullish coalescing for clarity: `this.errorBullets = zodError ? formatZodErrors(zodError) : [message];` (no change needed, but could assign in constructor params for cleaner code)","status":"
|
|
1550
|
+
{"id":"opencode-swarm-plugin-s4xfg","title":"Simplify errorBullets initialization in StructuredValidationError","description":"src/structured.ts:47 - `this.errorBullets = zodError ? formatZodErrors(zodError) : [message];` could use nullish coalescing for clarity: `this.errorBullets = zodError ? formatZodErrors(zodError) : [message];` (no change needed, but could assign in constructor params for cleaner code)","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:39.878643-08:00","updated_at":"2025-12-13T16:45:43.398628-08:00","closed_at":"2025-12-13T16:45:43.398628-08:00"}
|
|
1551
1551
|
{"id":"opencode-swarm-plugin-s5eh","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:07.355512-08:00","updated_at":"2025-12-07T19:57:08.933805-08:00","closed_at":"2025-12-07T19:57:08.933805-08:00"}
|
|
1552
1552
|
{"id":"opencode-swarm-plugin-s5nu","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:48.728004-08:00","updated_at":"2025-12-08T07:46:51.543929-08:00","closed_at":"2025-12-08T07:46:51.543929-08:00"}
|
|
1553
1553
|
{"id":"opencode-swarm-plugin-s680v","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-13T11:20:48.188738-08:00","updated_at":"2025-12-13T11:20:51.812623-08:00","closed_at":"2025-12-13T11:20:51.812623-08:00"}
|
|
@@ -1571,7 +1571,7 @@
|
|
|
1571
1571
|
{"id":"opencode-swarm-plugin-shmi","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T09:09:32.700868-08:00","updated_at":"2025-12-08T09:09:32.892363-08:00","closed_at":"2025-12-08T09:09:32.892363-08:00"}
|
|
1572
1572
|
{"id":"opencode-swarm-plugin-shmi.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:32.732667-08:00","updated_at":"2025-12-08T09:09:32.8181-08:00","closed_at":"2025-12-08T09:09:32.8181-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-shmi.1","depends_on_id":"opencode-swarm-plugin-shmi","type":"parent-child","created_at":"2025-12-08T09:09:32.733006-08:00","created_by":"daemon"}]}
|
|
1573
1573
|
{"id":"opencode-swarm-plugin-shmi.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:32.766428-08:00","updated_at":"2025-12-08T09:09:32.867989-08:00","closed_at":"2025-12-08T09:09:32.867989-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-shmi.2","depends_on_id":"opencode-swarm-plugin-shmi","type":"parent-child","created_at":"2025-12-08T09:09:32.768721-08:00","created_by":"daemon"}]}
|
|
1574
|
-
{"id":"opencode-swarm-plugin-simya","title":"Pattern: Fresh Subagent Per Task - No Context Pollution","description":"## Fresh Subagent Per Task (from obra/superpowers)\n\n**Core Principle:** Each agent starts clean, reads requirements, executes, reports back. No context pollution.\n\n### Why Fresh Subagents\n- TDD comes naturally (no accumulated assumptions)\n- Parallel-safe (subagents don't interfere)\n- Catches issues early (code review after each task)\n- Cheaper than debugging cascading failures\n\n### Subagent-Driven Development Workflow\n1. Load plan, create TodoWrite\n2. For each task:\n - Dispatch implementation subagent\n - Dispatch code-reviewer subagent\n - Fix issues from review (dispatch fix subagent, NOT manual)\n - Mark complete\n3. Final review of entire implementation\n4. Use finishing-a-development-branch skill\n\n### Agent Prompt Best Practices\n**1. Focused** - One clear problem domain\n```\n❌ \"Fix all the tests\"\n✓ \"Fix agent-tool-abort.test.ts\"\n```\n\n**2. Self-contained** - All context needed\n```\n❌ \"Fix the race condition\"\n✓ \"Fix the 3 failing tests in src/agents/agent-tool-abort.test.ts:\n 1. 'should abort tool with partial output capture'...\"\n```\n\n**3. Specific about output**\n```\n❌ \"Fix it\"\n✓ \"Return: Summary of root cause and what you fixed\"\n```\n\n**4. Constraints** - Prevent scope creep\n```\n✓ \"Do NOT just increase timeouts - find the real issue\"\n✓ \"Don't refactor - minimal changes to make tests pass\"\n```\n\n### Red Flags\n- Skip code review between tasks\n- Proceed with unfixed Critical issues\n- Dispatch multiple implementation subagents in parallel (conflicts)\n- Fix subagent failures manually (context pollution)\n\n**Full analysis:** docs/analysis/subagent-coordination-patterns.md","status":"
|
|
1574
|
+
{"id":"opencode-swarm-plugin-simya","title":"Pattern: Fresh Subagent Per Task - No Context Pollution","description":"## Fresh Subagent Per Task (from obra/superpowers)\n\n**Core Principle:** Each agent starts clean, reads requirements, executes, reports back. No context pollution.\n\n### Why Fresh Subagents\n- TDD comes naturally (no accumulated assumptions)\n- Parallel-safe (subagents don't interfere)\n- Catches issues early (code review after each task)\n- Cheaper than debugging cascading failures\n\n### Subagent-Driven Development Workflow\n1. Load plan, create TodoWrite\n2. For each task:\n - Dispatch implementation subagent\n - Dispatch code-reviewer subagent\n - Fix issues from review (dispatch fix subagent, NOT manual)\n - Mark complete\n3. Final review of entire implementation\n4. Use finishing-a-development-branch skill\n\n### Agent Prompt Best Practices\n**1. Focused** - One clear problem domain\n```\n❌ \"Fix all the tests\"\n✓ \"Fix agent-tool-abort.test.ts\"\n```\n\n**2. Self-contained** - All context needed\n```\n❌ \"Fix the race condition\"\n✓ \"Fix the 3 failing tests in src/agents/agent-tool-abort.test.ts:\n 1. 'should abort tool with partial output capture'...\"\n```\n\n**3. Specific about output**\n```\n❌ \"Fix it\"\n✓ \"Return: Summary of root cause and what you fixed\"\n```\n\n**4. Constraints** - Prevent scope creep\n```\n✓ \"Do NOT just increase timeouts - find the real issue\"\n✓ \"Don't refactor - minimal changes to make tests pass\"\n```\n\n### Red Flags\n- Skip code review between tasks\n- Proceed with unfixed Critical issues\n- Dispatch multiple implementation subagents in parallel (conflicts)\n- Fix subagent failures manually (context pollution)\n\n**Full analysis:** docs/analysis/subagent-coordination-patterns.md","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-12-13T14:00:40.843556-08:00","updated_at":"2025-12-13T15:50:54.544856-08:00","closed_at":"2025-12-13T15:50:54.544856-08:00"}
|
|
1575
1575
|
{"id":"opencode-swarm-plugin-sjl8","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T11:11:39.199339-08:00","updated_at":"2025-12-08T11:11:41.183854-08:00","closed_at":"2025-12-08T11:11:41.183854-08:00"}
|
|
1576
1576
|
{"id":"opencode-swarm-plugin-sln6c","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:43.027099-08:00","updated_at":"2025-12-08T11:12:43.100181-08:00","closed_at":"2025-12-08T11:12:43.100181-08:00"}
|
|
1577
1577
|
{"id":"opencode-swarm-plugin-slxb","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:56:56.672463-08:00","updated_at":"2025-12-08T08:56:58.554736-08:00","closed_at":"2025-12-08T08:56:58.554736-08:00"}
|
|
@@ -1679,12 +1679,12 @@
|
|
|
1679
1679
|
{"id":"opencode-swarm-plugin-u3q34.4","title":"Update src/swarm.ts integration points","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T10:46:25.848869-08:00","updated_at":"2025-12-13T11:07:53.078537-08:00","closed_at":"2025-12-13T11:07:53.078537-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-u3q34.4","depends_on_id":"opencode-swarm-plugin-u3q34","type":"parent-child","created_at":"2025-12-13T10:46:25.849699-08:00","created_by":"daemon"}]}
|
|
1680
1680
|
{"id":"opencode-swarm-plugin-u3q34.5","title":"Update tool-availability.ts and supporting modules","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T10:46:25.897832-08:00","updated_at":"2025-12-13T11:07:53.974396-08:00","closed_at":"2025-12-13T11:07:53.974396-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-u3q34.5","depends_on_id":"opencode-swarm-plugin-u3q34","type":"parent-child","created_at":"2025-12-13T10:46:25.898654-08:00","created_by":"daemon"}]}
|
|
1681
1681
|
{"id":"opencode-swarm-plugin-u3q34.6","title":"Migrate tests from agent-mail to swarm-mail","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T10:46:25.947081-08:00","updated_at":"2025-12-13T11:07:54.960497-08:00","closed_at":"2025-12-13T11:07:54.960497-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-u3q34.6","depends_on_id":"opencode-swarm-plugin-u3q34","type":"parent-child","created_at":"2025-12-13T10:46:25.94776-08:00","created_by":"daemon"}]}
|
|
1682
|
-
{"id":"opencode-swarm-plugin-u3q34.7","title":"Remove old agent-mail.ts and update documentation","description":"","status":"
|
|
1682
|
+
{"id":"opencode-swarm-plugin-u3q34.7","title":"Remove old agent-mail.ts and update documentation","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-13T10:46:25.99697-08:00","updated_at":"2025-12-13T16:42:01.379047-08:00","closed_at":"2025-12-13T16:42:01.379047-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-u3q34.7","depends_on_id":"opencode-swarm-plugin-u3q34","type":"parent-child","created_at":"2025-12-13T10:46:25.997868-08:00","created_by":"daemon"}]}
|
|
1683
1683
|
{"id":"opencode-swarm-plugin-u4cv","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:05.799579-08:00","updated_at":"2025-12-07T19:57:08.192357-08:00","closed_at":"2025-12-07T19:57:08.192357-08:00"}
|
|
1684
1684
|
{"id":"opencode-swarm-plugin-u4w6a","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T11:12:55.402022-08:00","updated_at":"2025-12-08T11:12:57.960131-08:00","closed_at":"2025-12-08T11:12:57.960131-08:00"}
|
|
1685
1685
|
{"id":"opencode-swarm-plugin-u5lz","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.831249-08:00","updated_at":"2025-12-08T07:49:12.197825-08:00","closed_at":"2025-12-08T07:49:12.197825-08:00"}
|
|
1686
|
-
{"id":"opencode-swarm-plugin-u5m4w","title":"Document state transition side effects in updatePatternMaturity","description":"src/pattern-maturity.ts:222-255 - updatePatternMaturity has side effects (sets promoted_at, deprecated_at) but not documented. Add JSDoc: \"Tracks state transitions by setting promoted_at/deprecated_at timestamps on first entry into proven/deprecated states.\"","status":"
|
|
1687
|
-
{"id":"opencode-swarm-plugin-u6gys","title":"Document reservation_ids relationship to Agent Mail","description":"src/schemas/task.ts:85 - `reservation_ids` lacks context. Add JSDoc: \"/** Agent Mail reservation IDs for file locking (used to release locks on completion) */\"","status":"
|
|
1686
|
+
{"id":"opencode-swarm-plugin-u5m4w","title":"Document state transition side effects in updatePatternMaturity","description":"src/pattern-maturity.ts:222-255 - updatePatternMaturity has side effects (sets promoted_at, deprecated_at) but not documented. Add JSDoc: \"Tracks state transitions by setting promoted_at/deprecated_at timestamps on first entry into proven/deprecated states.\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:33.62453-08:00","updated_at":"2025-12-13T16:20:34.138638-08:00","closed_at":"2025-12-13T16:20:34.138638-08:00"}
|
|
1687
|
+
{"id":"opencode-swarm-plugin-u6gys","title":"Document reservation_ids relationship to Agent Mail","description":"src/schemas/task.ts:85 - `reservation_ids` lacks context. Add JSDoc: \"/** Agent Mail reservation IDs for file locking (used to release locks on completion) */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:32.169242-08:00","updated_at":"2025-12-13T16:45:50.582038-08:00","closed_at":"2025-12-13T16:45:50.582038-08:00"}
|
|
1688
1688
|
{"id":"opencode-swarm-plugin-u7mg","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:24.182806-08:00","updated_at":"2025-12-08T11:11:26.017819-08:00","closed_at":"2025-12-08T11:11:26.017819-08:00"}
|
|
1689
1689
|
{"id":"opencode-swarm-plugin-u7mg.1","title":"Edit src/a.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.221224-08:00","updated_at":"2025-12-09T09:34:43.345951-08:00","closed_at":"2025-12-09T09:34:43.345951-08:00"}
|
|
1690
1690
|
{"id":"opencode-swarm-plugin-u82u","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:10.790425-08:00","updated_at":"2025-12-07T19:41:13.346845-08:00","closed_at":"2025-12-07T19:41:13.346845-08:00"}
|
|
@@ -1828,14 +1828,14 @@
|
|
|
1828
1828
|
{"id":"opencode-swarm-plugin-wt6tx","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:06:06.254613-08:00","updated_at":"2025-12-10T09:06:09.947925-08:00","closed_at":"2025-12-10T09:06:09.947925-08:00"}
|
|
1829
1829
|
{"id":"opencode-swarm-plugin-wtuz","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:36:16.464088-08:00","updated_at":"2025-12-08T08:36:19.116376-08:00","closed_at":"2025-12-08T08:36:19.116376-08:00"}
|
|
1830
1830
|
{"id":"opencode-swarm-plugin-wua","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-07T19:37:34.785248-08:00","updated_at":"2025-12-07T19:37:36.428883-08:00","closed_at":"2025-12-07T19:37:36.428883-08:00"}
|
|
1831
|
-
{"id":"opencode-swarm-plugin-wuhvb","title":"Add safety check to findBalancedBraces depth","description":"src/structured.ts:195-238 - findBalancedBraces has no max depth check. If depth goes negative or exceeds reasonable limit (e.g., 100), it could indicate malformed input. Add early return for depth \u0026lt; 0 or depth \u0026gt; 100.","status":"
|
|
1831
|
+
{"id":"opencode-swarm-plugin-wuhvb","title":"Add safety check to findBalancedBraces depth","description":"src/structured.ts:195-238 - findBalancedBraces has no max depth check. If depth goes negative or exceeds reasonable limit (e.g., 100), it could indicate malformed input. Add early return for depth \u0026lt; 0 or depth \u0026gt; 100.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:45.256712-08:00","updated_at":"2025-12-13T16:45:44.387924-08:00","closed_at":"2025-12-13T16:45:44.387924-08:00"}
|
|
1832
1832
|
{"id":"opencode-swarm-plugin-wv4f","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:17.36199-08:00","updated_at":"2025-12-08T08:22:17.38879-08:00","closed_at":"2025-12-08T08:22:17.38879-08:00"}
|
|
1833
1833
|
{"id":"opencode-swarm-plugin-wwqt","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:05:34.579904-08:00","updated_at":"2025-12-08T08:05:36.125724-08:00","closed_at":"2025-12-08T08:05:36.125724-08:00"}
|
|
1834
1834
|
{"id":"opencode-swarm-plugin-wytl","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:05:32.855796-08:00","updated_at":"2025-12-08T08:05:35.266626-08:00","closed_at":"2025-12-08T08:05:35.266626-08:00"}
|
|
1835
1835
|
{"id":"opencode-swarm-plugin-wzbh","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:53:45.286939-08:00","updated_at":"2025-12-08T07:53:46.997846-08:00","closed_at":"2025-12-08T07:53:46.997846-08:00"}
|
|
1836
1836
|
{"id":"opencode-swarm-plugin-wzk5","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T09:09:30.46577-08:00","updated_at":"2025-12-08T09:09:33.012614-08:00","closed_at":"2025-12-08T09:09:33.012614-08:00"}
|
|
1837
1837
|
{"id":"opencode-swarm-plugin-x0c9z","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-13T11:18:41.528371-08:00","updated_at":"2025-12-13T11:18:45.857664-08:00","closed_at":"2025-12-13T11:18:45.857664-08:00"}
|
|
1838
|
-
{"id":"opencode-swarm-plugin-x3231","title":"Gap: No thread safety documentation for PGLite singleton","description":"src/streams/index.ts - No documentation on whether PGLite is thread-safe or if concurrent queries from multiple async operations are safe. Node.js is single-threaded but async operations can interleave. Should: document PGLite's concurrency model, test concurrent appendEvent calls, verify transaction isolation, add test for race conditions under load.","status":"
|
|
1838
|
+
{"id":"opencode-swarm-plugin-x3231","title":"Gap: No thread safety documentation for PGLite singleton","description":"src/streams/index.ts - No documentation on whether PGLite is thread-safe or if concurrent queries from multiple async operations are safe. Node.js is single-threaded but async operations can interleave. Should: document PGLite's concurrency model, test concurrent appendEvent calls, verify transaction isolation, add test for race conditions under load.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-13T09:25:42.564807-08:00","updated_at":"2025-12-13T16:41:58.684039-08:00","closed_at":"2025-12-13T16:41:58.684039-08:00"}
|
|
1839
1839
|
{"id":"opencode-swarm-plugin-x36x","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:48.799533-08:00","updated_at":"2025-12-08T07:46:51.571401-08:00","closed_at":"2025-12-08T07:46:51.571401-08:00"}
|
|
1840
1840
|
{"id":"opencode-swarm-plugin-x3k9p","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:18:44.399589-08:00","updated_at":"2025-12-13T11:18:47.306187-08:00","closed_at":"2025-12-13T11:18:47.306187-08:00"}
|
|
1841
1841
|
{"id":"opencode-swarm-plugin-x4ce1","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:08:32.289945-08:00","updated_at":"2025-12-10T09:08:35.611893-08:00","closed_at":"2025-12-10T09:08:35.611893-08:00"}
|
|
@@ -1859,7 +1859,17 @@
|
|
|
1859
1859
|
{"id":"opencode-swarm-plugin-x9lag.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:07:23.996286-08:00","updated_at":"2025-12-10T09:07:26.550723-08:00","closed_at":"2025-12-10T09:07:26.550723-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-x9lag.3","depends_on_id":"opencode-swarm-plugin-x9lag","type":"parent-child","created_at":"2025-12-10T09:07:23.997403-08:00","created_by":"daemon"}]}
|
|
1860
1860
|
{"id":"opencode-swarm-plugin-x9lag.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:07:24.037782-08:00","updated_at":"2025-12-10T09:07:26.589046-08:00","closed_at":"2025-12-10T09:07:26.589046-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-x9lag.4","depends_on_id":"opencode-swarm-plugin-x9lag","type":"parent-child","created_at":"2025-12-10T09:07:24.041396-08:00","created_by":"daemon"}]}
|
|
1861
1861
|
{"id":"opencode-swarm-plugin-xbil","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:53:43.773303-08:00","updated_at":"2025-12-08T07:53:46.23941-08:00","closed_at":"2025-12-08T07:53:46.23941-08:00"}
|
|
1862
|
-
{"id":"opencode-swarm-plugin-xc4po","title":"Add JSDoc to DecomposedSubtask.risks field","description":"src/schemas/task.ts:38 - `risks` field lacks description. Add JSDoc: \"/** Potential risks or complications (e.g., 'tight coupling', 'data migration required') */\"","status":"
|
|
1862
|
+
{"id":"opencode-swarm-plugin-xc4po","title":"Add JSDoc to DecomposedSubtask.risks field","description":"src/schemas/task.ts:38 - `risks` field lacks description. Add JSDoc: \"/** Potential risks or complications (e.g., 'tight coupling', 'data migration required') */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:22.374689-08:00","updated_at":"2025-12-13T16:45:48.108316-08:00","closed_at":"2025-12-13T16:45:48.108316-08:00"}
|
|
1863
|
+
{"id":"opencode-swarm-plugin-xcavl","title":"Codebase Health: Split swarm.ts, fix bugs, add tests","description":"Critical improvements identified from analysis: split god module, fix data integrity bugs, add missing test coverage","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-13T16:57:57.93951-08:00","updated_at":"2025-12-13T17:21:15.826931-08:00","closed_at":"2025-12-13T17:21:15.826931-08:00"}
|
|
1864
|
+
{"id":"opencode-swarm-plugin-xcavl.1","title":"Split swarm.ts: Extract swarm-strategies.ts","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T16:57:57.99498-08:00","updated_at":"2025-12-13T17:21:12.619794-08:00","closed_at":"2025-12-13T17:21:12.619794-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.1","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:57.99606-08:00","created_by":"daemon"}]}
|
|
1865
|
+
{"id":"opencode-swarm-plugin-xcavl.2","title":"Split swarm.ts: Extract swarm-decompose.ts","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T16:57:58.047931-08:00","updated_at":"2025-12-13T17:21:13.275233-08:00","closed_at":"2025-12-13T17:21:13.275233-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.2","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:58.048892-08:00","created_by":"daemon"}]}
|
|
1866
|
+
{"id":"opencode-swarm-plugin-xcavl.3","title":"Split swarm.ts: Extract swarm-prompts.ts","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T16:57:58.105828-08:00","updated_at":"2025-12-13T17:21:13.835048-08:00","closed_at":"2025-12-13T17:21:13.835048-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.3","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:58.107241-08:00","created_by":"daemon"}]}
|
|
1867
|
+
{"id":"opencode-swarm-plugin-xcavl.4","title":"Split swarm.ts: Extract swarm-orchestrate.ts","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T16:57:58.157999-08:00","updated_at":"2025-12-13T17:21:14.461773-08:00","closed_at":"2025-12-13T17:21:14.461773-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.4","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:58.159412-08:00","created_by":"daemon"}]}
|
|
1868
|
+
{"id":"opencode-swarm-plugin-xcavl.5","title":"Fix transaction rollback error propagation","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T16:57:58.21724-08:00","updated_at":"2025-12-13T17:05:47.103573-08:00","closed_at":"2025-12-13T17:05:47.103573-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.5","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:58.218636-08:00","created_by":"daemon"}]}
|
|
1869
|
+
{"id":"opencode-swarm-plugin-xcavl.6","title":"Make file reservation idempotent with ON CONFLICT","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T16:57:58.269982-08:00","updated_at":"2025-12-13T17:05:47.675583-08:00","closed_at":"2025-12-13T17:05:47.675583-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.6","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:58.27125-08:00","created_by":"daemon"}]}
|
|
1870
|
+
{"id":"opencode-swarm-plugin-xcavl.7","title":"Add tests for structured.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T16:57:58.323033-08:00","updated_at":"2025-12-13T17:05:48.48549-08:00","closed_at":"2025-12-13T17:05:48.48549-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.7","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:58.324485-08:00","created_by":"daemon"}]}
|
|
1871
|
+
{"id":"opencode-swarm-plugin-xcavl.8","title":"Add tests for anti-patterns.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T16:57:58.376043-08:00","updated_at":"2025-12-13T17:05:49.201843-08:00","closed_at":"2025-12-13T17:05:49.201843-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.8","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:58.377102-08:00","created_by":"daemon"}]}
|
|
1872
|
+
{"id":"opencode-swarm-plugin-xcavl.9","title":"Fix CI to run integration tests","description":"## Changes Made\n\nAdded integration test step to CI workflow (.github/workflows/ci.yml):\n\n**Before:**\n- Only ran unit tests (`bun run test`)\n\n**After:**\n- Runs unit tests (step: \"Run unit tests\")\n- Runs integration tests (step: \"Run integration tests\") with 10-minute timeout\n\n## Implementation Details\n\n1. **Single job approach:** Both unit and integration tests run in the same job sequentially\n2. **Timeout:** Integration tests have `timeout-minutes: 10` to prevent hanging\n3. **Fail fast:** If either test suite fails, the build fails (default behavior)\n4. **Verified:** \n - 10 integration test files exist in src/\n - `test:integration` script exists in package.json\n - Script uses vitest with proper config (vitest.integration.config.ts)\n - Tests run serially to avoid race conditions\n\n## Success Criteria Met\n- ✅ CI runs both unit and integration tests\n- ✅ Build fails if either test suite fails (continue-on-error is false by default)\n- ✅ Integration tests have reasonable timeout (10 min)\n\n## Workflow Structure\n```yaml\n- Run unit tests (bun run test)\n- Run integration tests (bun run test:integration, timeout: 10 min)\n```\n\nBoth steps must pass for CI to succeed.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T16:57:58.429642-08:00","updated_at":"2025-12-13T17:05:49.697088-08:00","closed_at":"2025-12-13T17:05:49.697088-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-xcavl.9","depends_on_id":"opencode-swarm-plugin-xcavl","type":"parent-child","created_at":"2025-12-13T16:57:58.430689-08:00","created_by":"daemon"}]}
|
|
1863
1873
|
{"id":"opencode-swarm-plugin-xdstu","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:18:44.585559-08:00","updated_at":"2025-12-13T11:18:47.343607-08:00","closed_at":"2025-12-13T11:18:47.343607-08:00"}
|
|
1864
1874
|
{"id":"opencode-swarm-plugin-xfs29","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:08:33.821533-08:00","updated_at":"2025-12-10T09:08:36.641013-08:00","closed_at":"2025-12-10T09:08:36.641013-08:00"}
|
|
1865
1875
|
{"id":"opencode-swarm-plugin-xid","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:52.617824-08:00","updated_at":"2025-12-07T19:34:54.705834-08:00","closed_at":"2025-12-07T19:34:54.705834-08:00"}
|
|
@@ -1880,7 +1890,7 @@
|
|
|
1880
1890
|
{"id":"opencode-swarm-plugin-xvy2","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T08:56:56.367536-08:00","updated_at":"2025-12-08T08:56:58.354937-08:00","closed_at":"2025-12-08T08:56:58.354937-08:00"}
|
|
1881
1891
|
{"id":"opencode-swarm-plugin-xw8p","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:42.883419-08:00","updated_at":"2025-12-07T19:56:44.943175-08:00","closed_at":"2025-12-07T19:56:44.943175-08:00"}
|
|
1882
1892
|
{"id":"opencode-swarm-plugin-xwb7","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:39.379835-08:00","updated_at":"2025-12-08T08:11:41.909086-08:00","closed_at":"2025-12-08T08:11:41.909086-08:00"}
|
|
1883
|
-
{"id":"opencode-swarm-plugin-xwlda","title":"Pattern: Socratic Planner - Transform Ideas into Executable Plans","description":"## Socratic Planner Pattern (from obra/superpowers)\n\nTwo-phase workflow that transforms rough ideas into executable implementation plans:\n\n### Phase 1: Brainstorming (Socratic Refinement)\n- **One question at a time** - Never overwhelm with multiple questions\n- **Multiple choice preferred** - Easier to answer than open-ended\n- **Project context first** - Check files/docs/commits before asking\n- **2-3 alternatives with trade-offs** - Lead with recommendation + reasoning\n- **Incremental validation (200-300 words)** - Present design in digestible sections\n- **YAGNI ruthlessly** - Remove unnecessary features\n\n### Phase 2: Writing Plans (Zero-Context Execution)\n- **Bite-sized tasks (2-5 min each)** - Each step is ONE action\n- **Zero context assumption** - Write for \"junior engineer with poor taste, no judgment, no project context\"\n- **Exact file paths always** - `src/auth/login.py:45-67` not \"update the auth flow\"\n- **Complete code in plans** - Don't say \"add validation\" - show the exact code\n- **DRY, YAGNI, TDD** - Enforce in every task\n- **Frequent commits** - Every task ends with a commit\n\n### Integration\nBrainstorming → Design Doc → Git Worktree → Writing Plans → Execution (subagent-driven OR batch)\n\n### Key Insight\nThe two-phase split serves context preservation: brainstorming keeps context lean (200-300 word checkpoints), plans are context-free and reusable across agents/sessions.\n\n**Full analysis:** docs/analysis-socratic-planner-pattern.md","status":"
|
|
1893
|
+
{"id":"opencode-swarm-plugin-xwlda","title":"Pattern: Socratic Planner - Transform Ideas into Executable Plans","description":"## Socratic Planner Pattern (from obra/superpowers)\n\nTwo-phase workflow that transforms rough ideas into executable implementation plans:\n\n### Phase 1: Brainstorming (Socratic Refinement)\n- **One question at a time** - Never overwhelm with multiple questions\n- **Multiple choice preferred** - Easier to answer than open-ended\n- **Project context first** - Check files/docs/commits before asking\n- **2-3 alternatives with trade-offs** - Lead with recommendation + reasoning\n- **Incremental validation (200-300 words)** - Present design in digestible sections\n- **YAGNI ruthlessly** - Remove unnecessary features\n\n### Phase 2: Writing Plans (Zero-Context Execution)\n- **Bite-sized tasks (2-5 min each)** - Each step is ONE action\n- **Zero context assumption** - Write for \"junior engineer with poor taste, no judgment, no project context\"\n- **Exact file paths always** - `src/auth/login.py:45-67` not \"update the auth flow\"\n- **Complete code in plans** - Don't say \"add validation\" - show the exact code\n- **DRY, YAGNI, TDD** - Enforce in every task\n- **Frequent commits** - Every task ends with a commit\n\n### Integration\nBrainstorming → Design Doc → Git Worktree → Writing Plans → Execution (subagent-driven OR batch)\n\n### Key Insight\nThe two-phase split serves context preservation: brainstorming keeps context lean (200-300 word checkpoints), plans are context-free and reusable across agents/sessions.\n\n**Full analysis:** docs/analysis-socratic-planner-pattern.md","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-12-13T14:00:08.183656-08:00","updated_at":"2025-12-13T15:50:52.088177-08:00","closed_at":"2025-12-13T15:50:52.088177-08:00"}
|
|
1884
1894
|
{"id":"opencode-swarm-plugin-xwz1","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:26.372159-08:00","updated_at":"2025-12-08T11:12:28.359777-08:00","closed_at":"2025-12-08T11:12:28.359777-08:00"}
|
|
1885
1895
|
{"id":"opencode-swarm-plugin-xx0","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:36:06.643828-08:00","updated_at":"2025-12-07T19:36:08.701265-08:00","closed_at":"2025-12-07T19:36:08.701265-08:00"}
|
|
1886
1896
|
{"id":"opencode-swarm-plugin-y0gg","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:07.967823-08:00","updated_at":"2025-12-08T11:11:10.647724-08:00","closed_at":"2025-12-08T11:11:10.647724-08:00"}
|
|
@@ -1909,7 +1919,7 @@
|
|
|
1909
1919
|
{"id":"opencode-swarm-plugin-ygpl","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:26.265071-08:00","updated_at":"2025-12-08T11:12:26.289606-08:00","closed_at":"2025-12-08T11:12:26.289606-08:00"}
|
|
1910
1920
|
{"id":"opencode-swarm-plugin-ygpma","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:16:38.610431-08:00","updated_at":"2025-12-13T11:16:41.177098-08:00","closed_at":"2025-12-13T11:16:41.177098-08:00"}
|
|
1911
1921
|
{"id":"opencode-swarm-plugin-yhvo","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:41:12.082709-08:00","updated_at":"2025-12-07T19:41:13.923772-08:00","closed_at":"2025-12-07T19:41:13.923772-08:00"}
|
|
1912
|
-
{"id":"opencode-swarm-plugin-yi3ke","title":"Document warnMissingTool deduplication strategy","description":"src/tool-availability.ts:301-310 - warnMissingTool uses Set for deduplication but comment doesn't explain why. Add JSDoc: \"/** Logs warning once per tool per session. Uses Set to prevent spam when tool is checked repeatedly. */\"","status":"
|
|
1922
|
+
{"id":"opencode-swarm-plugin-yi3ke","title":"Document warnMissingTool deduplication strategy","description":"src/tool-availability.ts:301-310 - warnMissingTool uses Set for deduplication but comment doesn't explain why. Add JSDoc: \"/** Logs warning once per tool per session. Uses Set to prevent spam when tool is checked repeatedly. */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:07:11.393397-08:00","updated_at":"2025-12-13T16:41:52.798405-08:00","closed_at":"2025-12-13T16:41:52.798405-08:00"}
|
|
1913
1923
|
{"id":"opencode-swarm-plugin-yih","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:36:06.525069-08:00","updated_at":"2025-12-07T19:36:08.634794-08:00","closed_at":"2025-12-07T19:36:08.634794-08:00"}
|
|
1914
1924
|
{"id":"opencode-swarm-plugin-yj2i","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:28.55214-08:00","updated_at":"2025-12-08T08:14:30.988935-08:00","closed_at":"2025-12-08T08:14:30.988935-08:00"}
|
|
1915
1925
|
{"id":"opencode-swarm-plugin-yo4","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-07T19:36:06.212343-08:00","updated_at":"2025-12-07T19:36:08.45342-08:00","closed_at":"2025-12-07T19:36:08.45342-08:00"}
|
|
@@ -1933,7 +1943,7 @@
|
|
|
1933
1943
|
{"id":"opencode-swarm-plugin-z41xe","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T11:16:35.211913-08:00","updated_at":"2025-12-13T11:16:39.567258-08:00","closed_at":"2025-12-13T11:16:39.567258-08:00"}
|
|
1934
1944
|
{"id":"opencode-swarm-plugin-z4bc","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:09.542895-08:00","updated_at":"2025-12-08T08:25:12.189207-08:00","closed_at":"2025-12-08T08:25:12.189207-08:00"}
|
|
1935
1945
|
{"id":"opencode-swarm-plugin-z7bu","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:28.356112-08:00","updated_at":"2025-12-08T08:14:30.865474-08:00","closed_at":"2025-12-08T08:14:30.865474-08:00"}
|
|
1936
|
-
{"id":"opencode-swarm-plugin-z8rkb","title":"Add validation for SpawnedAgent.agent_name format","description":"src/schemas/task.ts:81 - `agent_name` is plain string but Agent Mail uses specific format (e.g., \"BlueLake\"). Add regex validation or comment: \"/** Agent Mail name (e.g., 'BlueLake', 'CrimsonRiver') */\"","status":"
|
|
1946
|
+
{"id":"opencode-swarm-plugin-z8rkb","title":"Add validation for SpawnedAgent.agent_name format","description":"src/schemas/task.ts:81 - `agent_name` is plain string but Agent Mail uses specific format (e.g., \"BlueLake\"). Add regex validation or comment: \"/** Agent Mail name (e.g., 'BlueLake', 'CrimsonRiver') */\"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:30.499386-08:00","updated_at":"2025-12-13T16:45:50.112928-08:00","closed_at":"2025-12-13T16:45:50.112928-08:00"}
|
|
1937
1947
|
{"id":"opencode-swarm-plugin-z8td","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:17.11505-08:00","updated_at":"2025-12-08T08:22:19.411331-08:00","closed_at":"2025-12-08T08:22:19.411331-08:00"}
|
|
1938
1948
|
{"id":"opencode-swarm-plugin-z9yl","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:28.946829-08:00","updated_at":"2025-12-08T08:21:30.752391-08:00","closed_at":"2025-12-08T08:21:30.752391-08:00"}
|
|
1939
1949
|
{"id":"opencode-swarm-plugin-zasi","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:28.739509-08:00","updated_at":"2025-12-08T08:14:31.090283-08:00","closed_at":"2025-12-08T08:14:31.090283-08:00"}
|
|
@@ -1945,7 +1955,7 @@
|
|
|
1945
1955
|
{"id":"opencode-swarm-plugin-zi7n","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T08:36:16.30257-08:00","updated_at":"2025-12-08T08:36:19.014772-08:00","closed_at":"2025-12-08T08:36:19.014772-08:00"}
|
|
1946
1956
|
{"id":"opencode-swarm-plugin-zj6j9","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:57.222284-08:00","updated_at":"2025-12-08T11:12:58.884345-08:00","closed_at":"2025-12-08T11:12:58.884345-08:00"}
|
|
1947
1957
|
{"id":"opencode-swarm-plugin-zjku","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:29.199507-08:00","updated_at":"2025-12-08T08:14:31.307698-08:00","closed_at":"2025-12-08T08:14:31.307698-08:00"}
|
|
1948
|
-
{"id":"opencode-swarm-plugin-zmzuw","title":"Gap: N+1 query in handleMessageSent","description":"src/streams/store.ts:360-395 - handleMessageSent() loops through recipients and inserts one-by-one with separate queries. For messages with many recipients, this is N+1 pattern. Should use bulk INSERT with VALUES (...), (...), (...) or INSERT ... SELECT. Similar issue in handleFileReserved (lines 398-416) which loops through paths.","status":"
|
|
1958
|
+
{"id":"opencode-swarm-plugin-zmzuw","title":"Gap: N+1 query in handleMessageSent","description":"src/streams/store.ts:360-395 - handleMessageSent() loops through recipients and inserts one-by-one with separate queries. For messages with many recipients, this is N+1 pattern. Should use bulk INSERT with VALUES (...), (...), (...) or INSERT ... SELECT. Similar issue in handleFileReserved (lines 398-416) which loops through paths.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-13T09:25:14.000433-08:00","updated_at":"2025-12-13T16:06:33.70323-08:00","closed_at":"2025-12-13T16:06:33.70323-08:00"}
|
|
1949
1959
|
{"id":"opencode-swarm-plugin-zn4of","title":"Review skill-builder PR branch","description":"Analyze skill-builder PR branch for errors, omissions, improvements, oversights, gaps, and ideas. READ-ONLY code review - no modifications.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-12T21:05:18.645731-08:00","updated_at":"2025-12-12T21:17:59.05899-08:00","closed_at":"2025-12-12T21:17:59.05899-08:00"}
|
|
1950
1960
|
{"id":"opencode-swarm-plugin-zn4of.1","title":"Review src/skills.ts core module","description":"READ-ONLY review of src/skills.ts (1356 lines). Analyzing: security (path traversal, script execution), bugs (__dirname in ES modules, iteration errors), missing features, code quality. Found critical __dirname bug and TypeScript config issue.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-12T21:05:18.691442-08:00","updated_at":"2025-12-12T21:08:55.61161-08:00","closed_at":"2025-12-12T21:08:55.61161-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-zn4of.1","depends_on_id":"opencode-swarm-plugin-zn4of","type":"parent-child","created_at":"2025-12-12T21:05:18.693109-08:00","created_by":"daemon"}]}
|
|
1951
1961
|
{"id":"opencode-swarm-plugin-zn4of.2","title":"Review global-skills definitions","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-12T21:05:18.739019-08:00","updated_at":"2025-12-12T21:07:06.557236-08:00","closed_at":"2025-12-12T21:07:06.557236-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-zn4of.2","depends_on_id":"opencode-swarm-plugin-zn4of","type":"parent-child","created_at":"2025-12-12T21:05:18.740085-08:00","created_by":"daemon"}]}
|