From 62e81b720eb4ffcfce062bec42c9f520783e8c77 Mon Sep 17 00:00:00 2001 From: dan Date: Sun, 11 Jan 2026 21:23:48 -0800 Subject: [PATCH] bd sync: 2026-01-11 21:23:48 --- .beads/.local_version | 2 +- .beads/issues.jsonl | 23 +++++++++++++++++++++-- .beads/last-touched | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/.beads/.local_version b/.beads/.local_version index 3010923..421ab54 100644 --- a/.beads/.local_version +++ b/.beads/.local_version @@ -1 +1 @@ -0.46.0 +0.47.0 diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 71ccbd1..a7e1fea 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -15,10 +15,12 @@ {"id":"skills-1n3","title":"Set up agent skills for Gemini CLI","description":"The AI agent skills (worklog, web-search, etc.) configured in .skills are not currently working when using the Gemini CLI. \\n\\nObserved behavior:\\n- 'worklog' command not found even after 'direnv reload'.\\n- .envrc sources ~/proj/skills/bin/use-skills.sh, but skills are not accessible in the Gemini agent session.\\n\\nNeed to:\\n1. Investigate how Gemini CLI loads its environment compared to Claude Code.\\n2. Update 'use-skills.sh' or direnv configuration to support Gemini CLI.\\n3. Ensure skill symlinks/binaries are correctly in the PATH for Gemini.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-22T17:39:28.106296919-05:00","updated_at":"2025-12-28T22:28:49.781533243-05:00","closed_at":"2025-12-28T22:28:49.781533243-05:00","close_reason":"No MCP/extensions. Gemini CLI lacks native skill support (feature request #11506 pending). Current workaround: GEMINI.md references skill paths for manual reading. Revisit when native support lands."} {"id":"skills-1qz","title":"Design: Token and cost budgets per agent","description":"Prevent token blowup footgun. Implement: hard budgets per agent and per run, limit context sizes, separate heavy/light agents, queueing with backpressure, retry with idempotency tokens. Plan-and-Execute pattern: expensive model plans, cheap models execute (90% cost reduction). From research synthesis.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T15:41:00.383262566-08:00","created_by":"dan","updated_at":"2026-01-10T15:41:00.383262566-08:00","dependencies":[{"issue_id":"skills-1qz","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.383903314-08:00","created_by":"dan"}]} {"id":"skills-20s","title":"Compare BOUNDARIES.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:53.585115099-08:00","updated_at":"2025-12-03T20:19:28.442646801-08:00","closed_at":"2025-12-03T20:19:28.442646801-08:00","dependencies":[{"issue_id":"skills-20s","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:53.586442134-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"skills-21ka","title":"Design HQ SKILL.md - orchestration instructions","description":"Write the core skill file that teaches agents to orchestrate.\n\nContents:\n- When to use HQ mode\n- How to read bd ready and pick work\n- How to spawn workers (Task tool? claude CLI?)\n- How to monitor progress (worker status, bd comments)\n- How to handle review cycles (approve/reject/iterate)\n- When to use orch for second opinions\n- Error handling and escalation\n\nOutput: skills/hq/SKILL.md","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-11T21:06:34.882938854-08:00","created_by":"dan","updated_at":"2026-01-11T21:06:34.882938854-08:00"} {"id":"skills-25l","title":"Create orch skill for multi-model consensus","description":"Build a skill that exposes orch CLI capabilities to agents for querying multiple AI models","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-30T15:43:49.209528963-08:00","updated_at":"2025-11-30T15:47:36.608887453-08:00","closed_at":"2025-11-30T15:47:36.608887453-08:00"} {"id":"skills-266","title":"Add error context to date parsing in types.nim:111","description":"[ERROR] MED - Date parsing can fail on malformed JSON input with unhelpful error. parse() throws on invalid format, caller gets generic parse error. Wrap in try/except with context.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T18:50:53.753668466-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.742536448-08:00","closed_at":"2026-01-10T20:37:04.742536448-08:00","close_reason":"Implemented consistent error handling strategy"} {"id":"skills-2hp","title":"Define agent autonomy policy for skills","description":"Disagreement in consensus:\n\nGPT: Stricter determinism to prevent 'agent drift'\nGemini: skill: should be a hint, agent can deviate if skill fails\n\nOptions:\n1. Constraint (must use skill, fail if broken)\n2. Heuristic (should use, can justify deviation)\n3. Configurable per-proto or per-step\n\nUX consideration: agents stuck in loops trying broken skills.\n\nNeeds decision before widespread adoption.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-23T19:49:59.73500059-05:00","updated_at":"2025-12-29T14:37:35.335994418-05:00","closed_at":"2025-12-29T14:37:35.335994418-05:00","close_reason":"Parked: waiting on gastown (Steve Yegge's orchestration layer for beads). Revisit when gastown lands."} {"id":"skills-2k0","title":"Reframe elevation as scaffolding","description":"Elevation pipeline is over-optimistic. Auto-generation will produce garbage.\n\nReframe:\n- Rename to 'Pattern Extraction' or 'Skill Drafting'\n- Output is skeleton/scaffold, not complete skill\n- Require N\u003e=3 similar executions before suggesting\n- Generate promotion checklist:\n - Preconditions\n - Inputs/outputs contract\n - Failure modes observed\n - Determinism score\n- Generate tests as part of elevation\n\nHuman-in-the-loop is mandatory, not optional.\n\nFrom consensus: both models flagged as medium severity.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:49:48.373417035-05:00","updated_at":"2025-12-29T13:55:35.820906687-05:00","closed_at":"2025-12-29T13:55:35.820906687-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed."} +{"id":"skills-2l4e","title":"HQ: Orchestrator skill for multi-agent coordination","description":"**Status: Design/Exploration**\n\n## Vision\n\n`hq` is a skill that teaches any capable coding agent to act as an orchestrator - coordinating workers, managing tasks, and handling review cycles.\n\nNot a new binary. A skill that leverages existing tools:\n- `bd` - issue tracking\n- `worker` - lifecycle management \n- `review-gate` - quality enforcement\n- `orch` - multi-model consensus\n\n## Naming\n\n`hq` = headquarters. Short (2 chars), fits existing naming:\n- `bd` (2) - beads\n- `hq` (2) - headquarters\n- `orch` (4) - multi-model\n- `worker` (6) - lifecycle\n\n## Architecture\n\n```\nORCHESTRATOR = Agent + Tools + Skills + Context\n\nTools: bd, worker, review-gate, orch\nSkills: hq (how to orchestrate)\nContext: .beads/, .worker-state/, repo state\nAgent: Claude (or any capable LLM)\n```\n\nThe orchestrator IS the conversation. User talks to agent, agent has tools to spawn/manage workers.\n\n## Triggers (all supported)\n\n1. **bd issue** - `bd ready` shows work, orchestrator picks it up\n2. **Natural language** - User says \"implement feature X\"\n3. **Scheduled/ambient** - Future: cron-like \"check for work\"\n\n## How It Works\n\n```\nUser: \"Implement dark mode for settings page\"\n │\n ▼\nOrchestrator (Claude with hq skill):\n ├── Check bd for existing issue (or create one)\n ├── Decompose if needed (single task or multiple?)\n ├── worker spawn task-001\n ├── Invoke worker Claude (Task tool / claude CLI)\n ├── Monitor via worker status\n ├── Handle review (approve/request-changes)\n ├── worker merge on approval\n └── Report back to user\n```\n\n## Skill Structure\n\n```\nskills/hq/\n├── SKILL.md # Core orchestration instructions\n├── scripts/\n│ └── hq-status # Quick view: bd + worker + review state\n└── templates/\n └── worker-system.md # System prompt for spawned workers\n```\n\n## Key Decisions (TBD)\n\n1. **Worker invocation**: Task tool subagent? `claude` CLI? Manual?\n2. **Decomposition**: When to split into multiple workers?\n3. **Review policy**: Auto-approve simple tasks? Always human?\n4. **Failure handling**: Retry? Escalate? Reassign?\n\n## Related\n\n- Worker CLI: src/worker.nim (built, working)\n- Review-gate: skills/review-gate/ (built, needs deployment)\n- Benchmark harness: skills-qng9 (design phase)\n\n## Prior Art Considered\n\n- Strix (ambient AI assistant)\n- Helm (taken - K8s package manager)\n- Various agent frameworks (CrewAI, LangGraph, etc.)\n\nOur approach: CLI tools + state files + skills (no daemons)","status":"open","priority":2,"issue_type":"feature","created_at":"2026-01-11T20:52:42.131018989-08:00","created_by":"dan","updated_at":"2026-01-11T20:52:42.131018989-08:00","dependencies":[{"issue_id":"skills-2l4e","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-11T20:58:56.699198314-08:00","created_by":"dan"},{"issue_id":"skills-2l4e","depends_on_id":"skills-21ka","type":"blocks","created_at":"2026-01-11T21:07:47.572946645-08:00","created_by":"dan"},{"issue_id":"skills-2l4e","depends_on_id":"skills-cg7c","type":"blocks","created_at":"2026-01-11T21:07:47.651118411-08:00","created_by":"dan"},{"issue_id":"skills-2l4e","depends_on_id":"skills-3j55","type":"blocks","created_at":"2026-01-11T21:07:47.745402558-08:00","created_by":"dan"},{"issue_id":"skills-2l4e","depends_on_id":"skills-iusu","type":"blocks","created_at":"2026-01-11T21:07:47.839898058-08:00","created_by":"dan"}],"comments":[{"id":1,"issue_id":"skills-2l4e","author":"dan","text":"Test comment from agent - exploring messaging","created_at":"2026-01-12T05:03:58Z"}]} {"id":"skills-2wjp","title":"Log parseInt failures in getBranchStatus instead of silent discard","description":"[ERROR] LOW git.nim:139-143 - parseInt failures silently discarded. Return (0,0) explicitly with comment, or log the parse failure.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:52:14.359878211-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.762486765-08:00","closed_at":"2026-01-10T20:37:04.762486765-08:00","close_reason":"Implemented consistent error handling strategy"} {"id":"skills-2xc","title":"Extract date format constant in types.nim","description":"[SMELL] LOW - Date format 'yyyy-MM-dd HH:mm:sszzz' hardcoded in toJson/fromJson. Extract to const DateFormat* or use times.IsoDateTimeFormat.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T18:50:53.896053988-08:00","created_by":"dan","updated_at":"2026-01-10T20:53:25.756173382-08:00","closed_at":"2026-01-10T20:53:25.756173382-08:00","close_reason":"ContextDateFormat already extracted in error handling refactor"} {"id":"skills-2xo","title":"Add README.md for web-search skill","description":"web-search skill has SKILL.md and scripts but no README.md. AGENTS.md says README.md is for humans, contains installation instructions, usage examples, prerequisites.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:14.26066025-08:00","updated_at":"2025-12-28T22:37:48.324822157-05:00","closed_at":"2025-12-28T22:37:48.324822157-05:00","close_reason":"Added README.md with prerequisites, usage examples, and cross-references","dependencies":[{"issue_id":"skills-2xo","depends_on_id":"skills-vb5","type":"blocks","created_at":"2025-11-30T12:01:30.240439018-08:00","created_by":"daemon","metadata":"{}"}]} @@ -27,6 +29,8 @@ {"id":"skills-3d9o","title":"Extract branchName() and worktreePath() helpers in git.nim","description":"[REDUNDANCY] MED git.nim:36,59,89 - Branch pattern 'feat/{taskId}' repeated 3 times. Worktree path repeated at 37,53. Extract helpers: proc branchName(taskId): string and proc worktreePath(taskId): string.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T19:52:13.458091312-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.357072712-08:00","closed_at":"2026-01-10T20:32:28.357072712-08:00","close_reason":"Created utils.nim with common helpers"} {"id":"skills-3em","title":"Prototype elevation pipeline","description":"Build pipeline: successful molecule → skill draft\n1. On molecule close, option to 'elevate'\n2. Analyze squashed trace\n3. Extract generalizable pattern\n4. Generate SKILL.md draft\n5. Human approval gate\n\nStart simple: script that takes squashed molecule ID and outputs draft SKILL.md\n\nMigrated from dotfiles-2p2.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:21:08.208885336-05:00","updated_at":"2025-12-29T13:55:35.80560789-05:00","closed_at":"2025-12-29T13:55:35.80560789-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-3em","depends_on_id":"skills-jeb","type":"blocks","created_at":"2025-12-23T19:21:50.034640219-05:00","created_by":"dan"},{"issue_id":"skills-3em","depends_on_id":"skills-2k0","type":"blocks","created_at":"2025-12-23T19:50:10.516122892-05:00","created_by":"daemon"}]} {"id":"skills-3gk","title":"Research: Cross-agent hook alternatives","description":"Claude Code has hooks (Stop, SessionStart, etc.) for mechanical enforcement. Other agents don't.\n\nResearch alternatives for cross-agent quality gates:\n\n1. **External wrapper** - Script that launches agent, monitors output, gates exit\n2. **Protocol-based** - Agent follows instructions in AGENTS.md, posts to state store\n3. **Orchestrator pattern** - Meta-agent spawns worker + reviewer, enforces gate\n4. **Hybrid** - Hooks where available, protocol elsewhere\n\nEvaluate:\n- Enforcement strength (mechanical vs cooperative)\n- Implementation complexity\n- Agent compatibility\n- Failure modes\n\nOutput: Comparison doc with recommendation","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T17:14:20.433319252-08:00","created_by":"dan","updated_at":"2026-01-09T19:33:36.683960774-08:00","closed_at":"2026-01-09T19:33:36.683960774-08:00","close_reason":"Consolidated into skills-8sj"} +{"id":"skills-3ib6","title":"Create initial scenario suite (easy/medium/hard)","description":"Write 6-9 scenarios across difficulty levels:\n\nEasy (clear spec, single file):\n- Add factorial function\n- Fix typo in config\n- Add CLI flag\n\nMedium (requires understanding context):\n- Refactor function to use new pattern\n- Add caching to existing endpoint\n- Write tests for existing code\n\nHard (ambiguous, multi-file, debugging):\n- Fix race condition\n- Migrate to new library version\n- Resolve conflicting requirements","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T16:19:46.322151154-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.581305762-08:00","closed_at":"2026-01-11T16:38:26.581305762-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-3ib6","depends_on_id":"skills-ig7w","type":"blocks","created_at":"2026-01-11T16:20:20.771085983-08:00","created_by":"dan"}]} +{"id":"skills-3j55","title":"Create hq-status script","description":"Unified status view across all coordination layers.\n\nShows:\n- bd ready (available work)\n- worker status (active workers)\n- review-gate status (pending reviews)\n- Recent bd comments (coordination messages)\n\nUsage: hq-status [--json]\n\nOutput: skills/hq/scripts/hq-status","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-11T21:06:34.998651979-08:00","created_by":"dan","updated_at":"2026-01-11T21:06:34.998651979-08:00"} {"id":"skills-3ja","title":"Design: Cross-agent quality gate architecture","description":"Design a quality gate pattern that works regardless of agent.\n\nRequirements:\n- Worker agent can be Claude, Gemini, OpenCode, etc.\n- Reviewer agent can be any capable model\n- Gate blocks completion until reviewer approves\n- Circuit breakers prevent infinite loops\n- Works in autonomous/unattended scenarios\n\nBuilding on alice/idle research (docs/research/idle-alice-quality-gate.md):\n- alice uses Claude hooks + jwz state\n- We need agent-agnostic equivalent\n\nConsiderations:\n- State management: jwz vs beads vs simple files\n- Enforcement: mechanical vs protocol-based\n- Reviewer selection: orch consensus vs single model\n- Activation: opt-in prefix vs context-based\n\nOutput: Architecture doc with component design","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T17:14:20.657906484-08:00","created_by":"dan","updated_at":"2026-01-09T19:33:36.694607649-08:00","closed_at":"2026-01-09T19:33:36.694607649-08:00","close_reason":"Consolidated into skills-8sj"} {"id":"skills-3o7","title":"Fix ai-skills.nix missing sha256 hash","description":"modules/ai-skills.nix:16 has empty sha256 placeholder for opencode-skills npm package. Either get actual hash or remove/comment out the incomplete fetchFromNpm approach.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-30T11:58:24.404929863-08:00","updated_at":"2025-11-30T12:12:39.372107348-08:00","closed_at":"2025-11-30T12:12:39.372107348-08:00"} {"id":"skills-3uv9","title":"Consider logging cleanup failures in removeWorktree/removeBranch","description":"[ERROR] LOW git.nim:55,60,62 - Cleanup operations ignore failures. May leave orphaned resources. Consider logging failures for debugging.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:52:14.792134512-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.764769727-08:00","closed_at":"2026-01-10T20:37:04.764769727-08:00","close_reason":"Implemented consistent error handling strategy"} @@ -35,12 +39,14 @@ {"id":"skills-4oj","title":"Design: Worker state machine (ASSIGNED→WORKING→REVIEW→MERGED)","description":"Design: Worker state machine\n\nImplementation: Nim (state enum, transition guards)\nDesign doc: docs/design/worker-state-machine.md\n\nStates:\n- ASSIGNED → WORKING → IN_REVIEW → APPROVED → COMPLETED\n- CONFLICTED (rebase conflict)\n- FAILED (error or cancel)\n\nKey patterns:\n- Compare-and-set with BEGIN IMMEDIATE\n- STALE computed from heartbeat age (not persistent)\n- State derived from SQLite, JSON cache optional\n\nSee: skills-q40 for language decision","design":"docs/design/worker-state-machine.md","notes":"Design complete. 8 states: IDLE → ASSIGNED → WORKING → IN_REVIEW → APPROVED → COMPLETED, plus STALE and FAILED. File-based coordination using atomic rename pattern. Stale detection via heartbeat + PID checks. Integrates with review-gate, message passing, and branch isolation.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T13:55:23.733457598-08:00","created_by":"dan","updated_at":"2026-01-10T21:29:25.694381309-08:00","closed_at":"2026-01-10T21:29:25.694381309-08:00","close_reason":"Implemented in worker CLI - spawn, status, state machine, branch isolation all working","dependencies":[{"issue_id":"skills-4oj","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:55:23.743143692-08:00","created_by":"dan"}]} {"id":"skills-4pw","title":"spec-review: Expand NFR checklist in prompts","description":"Current prompts mention 'performance, security, accessibility' but miss many critical NFRs.\n\nExpand to include:\n- Security (authn/authz, secrets, threat model)\n- Privacy/compliance (GDPR, PII)\n- Observability (logging, metrics, tracing)\n- Reliability (SLOs, failure modes)\n- Rollout/rollback strategy\n- Migration/backfill\n- Data retention/lifecycle\n- Cost constraints","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-15T00:23:24.485420922-08:00","updated_at":"2025-12-15T14:03:46.508452685-08:00","closed_at":"2025-12-15T14:03:46.508452685-08:00"} {"id":"skills-4u0","title":"Skills + Molecules Integration","description":"Integrate skills system with beads molecules.\n\nKey concepts from consensus brainstorm:\n1. Skills = procedural knowledge (HOW), Molecules = work tracking (WHAT)\n2. Link via skill: field in molecule nodes\n3. Wisps as execution traces for debugging/replay\n4. Elevation pipeline: successful molecule → auto-generate skill draft\n5. Skills as transition middleware (on_enter/on_exit hooks)\n\nImplementation phases:\n- Phase 1: Document findings (ADR)\n- Phase 2: Wisp execution trace format\n- Phase 3: Elevation pipeline prototype\n- Phase 4: Test on real skill (worklog)\n\nMigrated from dotfiles-jjb.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T19:20:19.818455543-05:00","updated_at":"2025-12-29T13:55:35.782406912-05:00","closed_at":"2025-12-29T13:55:35.782406912-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-4u0","depends_on_id":"skills-rex","type":"blocks","created_at":"2025-12-23T19:22:10.725578029-05:00","created_by":"dan"},{"issue_id":"skills-4u0","depends_on_id":"skills-vpy","type":"blocks","created_at":"2025-12-23T19:23:18.166650023-05:00","created_by":"dan"},{"issue_id":"skills-4u0","depends_on_id":"skills-u3d","type":"blocks","created_at":"2025-12-23T19:23:28.59360697-05:00","created_by":"dan"}]} +{"id":"skills-4ufc","title":"Design: Event notification vs polling for agent coordination","description":"From orch architecture review.\n\nCurrent: Agents poll (worker status, bd list) to check state.\n\nOptions:\nA) Keep polling - simple, stateless, fits \"Lego brick\" philosophy\nB) File watcher (inotify) - wake agents when state changes\nC) Simple webhook/callback - agent registers interest\nD) bd watch command - blocking wait for changes\n\nTradeoffs:\n- Polling: simple but wasteful, latency\n- Events: efficient but complex, requires daemon/watcher\n\nRecommendation needed: Is polling sufficient for our scale?","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-11T21:12:44.663641501-08:00","created_by":"dan","updated_at":"2026-01-11T21:12:44.663641501-08:00","dependencies":[{"issue_id":"skills-4ufc","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-11T21:13:02.855845254-08:00","created_by":"dan"}]} {"id":"skills-4yn","title":"Decide on screenshot-latest skill deployment","description":"DEPLOYED.md shows screenshot-latest as 'Not yet deployed - Pending decision'. Low risk skill that finds existing files. Need to decide whether to deploy or archive.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:33.099790809-08:00","updated_at":"2025-12-28T20:55:18.515543619-05:00","closed_at":"2025-12-28T20:55:18.515543619-05:00","close_reason":"Decided to deploy - low risk, useful for avoiding path typing. Added to dotfiles claude.nix."} {"id":"skills-53k","title":"Design graph-based doc discovery","description":"How does doc-review find and traverse documentation?\n\nApproach: Start from README.md or AGENTS.md, graph out from there.\n\nDesign questions:\n- Parse markdown links to find related docs?\n- Follow only relative links or also section references?\n- How to handle circular references?\n- Depth limit or exhaustive traversal?\n- What about orphan docs not linked from root?\n- How to represent the graph for chunking decisions?\n\nConsiderations:\n- Large repos may have hundreds of markdown files\n- Not all .md files are \"documentation\" (changelogs, templates, etc.)\n- Some docs are generated and shouldn't be patched\n\nDeliverable: Algorithm/pseudocode for doc discovery + chunking strategy.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-04T14:02:13.316843518-08:00","updated_at":"2025-12-04T16:43:58.277061015-08:00","closed_at":"2025-12-04T16:43:58.277061015-08:00"} {"id":"skills-5ax","title":"Remove unused imports in db.nim","description":"[DEAD] LOW db.nim:9 - strformat and strutils imported but unused. Compiler warns about this. Remove unused imports.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T18:52:39.57837921-08:00","created_by":"dan","updated_at":"2026-01-10T20:41:09.693199485-08:00","closed_at":"2026-01-10T20:41:09.693199485-08:00","close_reason":"Dead code cleanup complete"} {"id":"skills-5hb","title":"spec-review: Add Prerequisites section documenting dependencies","description":"SKILL.md and process docs assume orch is installed, prompt files exist, models are available, but none of this is documented.\n\nAdd:\n- orch install instructions/link\n- Required env vars and model availability\n- Prompt file locations\n- Expected repo structure (specs/ convention)\n- Troubleshooting section for common failures","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-15T00:23:23.030537501-08:00","updated_at":"2025-12-15T01:12:36.457092612-08:00","closed_at":"2025-12-15T01:12:36.457092612-08:00"} {"id":"skills-5ji","title":"Design: Ephemeral namespaced environments","description":"Solve shared state pollution footgun. Each worker branch gets: namespaced DB (schema prefix or separate DB), isolated Redis namespace, separate queues, namespaced feature flags. Agents never touch shared prod-like state. Idempotent migrations and fixture loaders. From HN practitioner feedback on database isolation.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T15:41:00.720141358-08:00","created_by":"dan","updated_at":"2026-01-10T15:41:00.720141358-08:00","dependencies":[{"issue_id":"skills-5ji","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.721467429-08:00","created_by":"dan"}]} {"id":"skills-5kv","title":"Document beads vs tissue split during emes testing","description":"During emes testing on ops-jrz1:\n- Local dev: beads (skills repo, dotfiles, etc.)\n- ops-jrz1: tissue (emes ecosystem testing)\n\nNeed to document:\n- Which tracker for which repos\n- How to context-switch mentally\n- Whether to bridge or keep separate\n- Exit criteria: when do we converge?","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T16:03:45.493255636-08:00","created_by":"dan","updated_at":"2026-01-09T19:59:37.885799343-08:00","closed_at":"2026-01-09T19:59:37.885799343-08:00","close_reason":"Superseded by abstract layer approach - memory layer abstracts beads/tissue"} +{"id":"skills-5ry7","title":"Worker done fails: worktree path is relative, not absolute","description":"## Bug\nWhen running `worker done` from inside a worktree, the rebase fails because the stored worktree path is relative.\n\n## Reproduction\n1. worker spawn test-001\n2. cd worktrees/test-001\n3. (make changes, commit)\n4. worker done\n\n## Error\n```\nfatal: cannot change to 'worktrees/test-001': No such file or directory\n```\n\n## Root Cause\n- `createWorkerContext` stores whatever path is passed (relative)\n- `done` uses `ctx.worktree` for git operations\n- When running from inside worktree, relative path doesn't resolve\n\n## Existing tests don't catch this\ntest-worker.sh bypasses `done` by manually setting state to IN_REVIEW.\n\n## Fix Options\n1. Store absolute path in context (cleanest)\n2. Resolve path in `done` relative to repo root\n3. Always run git operations from repo root\n\n## Found By\nSpike: skills-6n4u - manually testing Claude in worker context","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-11T16:47:13.026059242-08:00","created_by":"dan","updated_at":"2026-01-11T19:15:34.945684191-08:00","closed_at":"2026-01-11T19:15:34.945684191-08:00","close_reason":"Fixed in utils.nim - worktreePath now returns absolute path using findMainRepoDir()"} {"id":"skills-5tq","title":"LSP diagnostic harvest → auto-create beads","description":"Periodic/nightly headless LSP scan that:\n- Gathers diagnostics (unused vars, type errors, deprecations, lint warnings)\n- Groups by subsystem/module\n- Auto-creates beads with severity thresholds\n- Enables 'refactor quests' - parent bead with children per symbol\n\nRun via CI or cron, feed results back into beads automatically.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-24T02:29:56.191762416-05:00","updated_at":"2025-12-24T02:29:56.191762416-05:00","dependencies":[{"issue_id":"skills-5tq","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.471853411-05:00","created_by":"daemon"}]} {"id":"skills-5v8","title":"Replace SKILL.md with upstream version","description":"Upstream has 644 lines vs our 122. Missing: self-test questions, notes quality checks, token checkpointing, database selection, field usage table, lifecycle workflow, common patterns, troubleshooting","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-03T20:15:53.025829293-08:00","updated_at":"2025-12-03T20:16:20.470185004-08:00","closed_at":"2025-12-03T20:16:20.470185004-08:00","dependencies":[{"issue_id":"skills-5v8","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:53.027601712-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"skills-5vg","title":"spec-review: Add context/assumptions step to prompts","description":"Reviews can become speculative without establishing context first.\n\nAdd to prompts:\n- List assumptions being made\n- Distinguish: missing from doc vs implied vs out of scope\n- Ask clarifying questions if critical context missing","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:25.681448596-08:00","updated_at":"2025-12-15T14:06:15.415750911-08:00","closed_at":"2025-12-15T14:06:15.415750911-08:00"} @@ -51,8 +57,10 @@ {"id":"skills-6fu","title":"Research: State management for cross-agent workflows","description":"Evaluate state management options for cross-agent coordination.\n\nOptions:\n1. **jwz** - emes tool, append-only JSONL, git-mergeable, Zig\n2. **beads** - Our tool, graph-based issues, Rust\n3. **Simple files** - JSON/JSONL in .state/ directory\n4. **Environment variables** - Ephemeral session state\n\nCriteria:\n- Cross-agent access (all can read/write via CLI)\n- Git compatibility (mergeable, not conflicting)\n- Persistence (session vs permanent)\n- Query capability (search, filter)\n- Complexity (dependencies, setup)\n\nContext:\n- beads for persistent issues/work\n- jwz for transient session coordination\n- May need both for different purposes\n\nOutput: Recommendation on state management strategy","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T17:14:20.971160754-08:00","created_by":"dan","updated_at":"2026-01-09T19:33:36.714686046-08:00","closed_at":"2026-01-09T19:33:36.714686046-08:00","close_reason":"Consolidated into skills-8sj"} {"id":"skills-6gw","title":"Add artifact provenance to traces","description":"Current: files_created lists paths only.\nProblem: Can't detect regressions or validate outputs.\n\nAdd:\n- Content hash (sha256)\n- File size\n- For modifications: git_diff_summary (files changed, line counts)\n\nExample:\n outputs:\n artifacts:\n - path: docs/worklogs/...\n sha256: abc123...\n size: 1234\n action: created|modified\n\nEnables: diff traces, regression testing, validation.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:49:48.654952533-05:00","updated_at":"2025-12-29T13:55:35.827778174-05:00","closed_at":"2025-12-29T13:55:35.827778174-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed."} {"id":"skills-6jw","title":"spec-review: Add severity labeling to prompts and reviews","description":"Reviews produce flat lists mixing blockers with minor nits. Hard to make decisions.\n\nAdd to prompts:\n- Require severity labels: Blocker / High / Medium / Low\n- Sort output by severity\n- Include impact and likelihood for each issue","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-15T00:23:23.334156366-08:00","updated_at":"2025-12-15T13:00:32.678573181-08:00","closed_at":"2025-12-15T13:00:32.678573181-08:00"} +{"id":"skills-6n4u","title":"Spike: manually test Claude in worker context","description":"Simple experiment - no harness, no automation.\n\n## Goal\nLearn what happens when Claude tries to complete a task using the worker system.\n\n## Steps\n1. Set up a simple fixture (python-math-lib exists)\n2. worker spawn test-spike\n3. cd into worktree\n4. Invoke Claude with task: \"Add a factorial function to src/math_utils.py\"\n5. Include system context about worker commands (start, done, heartbeat)\n6. Watch what happens\n\n## Observe\n- Does Claude understand the worker flow?\n- Does it run worker start / worker done correctly?\n- Does it complete the task?\n- How many turns? What goes wrong?\n- What prompting helps?\n\n## Output\nNotes on what worked, what didn't, what's needed.\nInform whether we need the full harness or something simpler.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T16:38:49.022489161-08:00","created_by":"dan","updated_at":"2026-01-11T19:15:47.037731412-08:00","closed_at":"2026-01-11T19:15:47.037731412-08:00","close_reason":"Spike completed successfully.\n\nObservations:\n1. Worker flow works: spawn → start → work → done → approve → merge\n2. Found and fixed bug: relative worktree paths (skills-5ry7)\n3. Claude (me) completed the task using worker CLI without special prompting\n4. ~7 tool calls to complete simple task\n5. Test script needed sqlite3 in PATH - added check\n\nThe worker system is functional for basic agent tasks."} {"id":"skills-6x1","title":"Epic: emes plugin architecture alignment","description":"Convert skills to emes-style plugin architecture for portability across Claude Code, Gemini, and VPS deployment (ops-jrz1).\n\n**emes tools (evil-mind-evil-sword org):**\n- tissue: Git-native issue tracking (machine-first)\n- idle: Quality gate (blocks exit until reviewer approves)\n- jwz: Async messaging with identity/git context\n- marketplace: Plugin distribution registry\n\n**Conversion work:**\n1. Add .claude-plugin/plugin.json to each skill\n2. Restructure: SKILL.md → skills/\u003cname\u003e.md (auto-discovery)\n3. Add hooks/ where applicable (quality gates)\n4. Create marketplace.json registry\n5. Test with ops-jrz1 deployment\n\n**Key principles from emes:**\n- Pull context on-demand (not big upfront injections)\n- Mechanical enforcement via hooks (not prompts)\n- References over inline content\n- Machine-first interfaces (JSON output)\n\n**Candidates for conversion:**\n- orch (simple CLI wrapper)\n- worklog (scripts + templates)\n- code-review (has lenses, might want hooks)\n- ops-review (same pattern)","status":"closed","priority":2,"issue_type":"epic","created_at":"2026-01-09T10:59:12.291560832-08:00","created_by":"dan","updated_at":"2026-01-09T17:14:41.429380141-08:00","closed_at":"2026-01-09T17:14:41.429380141-08:00","close_reason":"Dual-publish complete. Ongoing cross-agent work continues under skills-hf1"} {"id":"skills-73yu","title":"Validate taskId to prevent path traversal and command injection","description":"[SECURITY] HIGH git.nim:36,37,53,59,89 - taskId used unsanitized in branch names and file paths. If taskId contains '../' or shell metacharacters, could escape worktree dir. Validate taskId matches safe pattern (alphanumeric + dash/underscore only).","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-10T19:52:13.24918965-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.374723485-08:00","closed_at":"2026-01-10T20:32:28.374723485-08:00","close_reason":"Created utils.nim with common helpers"} +{"id":"skills-7a00","title":"Add LLM-as-judge verification","description":"Use an LLM to evaluate task completion quality.\n\nComponents:\n- Judge prompt template\n- Rubric format (list of criteria)\n- Scoring mechanism (0-1 per criterion, aggregate)\n- Model selection (haiku for cost, sonnet for quality)\n\nShould take: task description, rubric, code diff/result\nShould output: score, reasoning, pass/fail per criterion","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T16:19:45.933759107-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.564395054-08:00","closed_at":"2026-01-11T16:38:26.564395054-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-7a00","depends_on_id":"skills-y0p0","type":"blocks","created_at":"2026-01-11T16:20:20.700175136-08:00","created_by":"dan"}]} {"id":"skills-7bu","title":"Add atomic file operations to update scripts","description":"Files affected:\n- skills/update-opencode/scripts/update-nix-file.sh\n- .specify/scripts/bash/update-agent-context.sh\n\nIssues:\n- Uses sed -i which can corrupt on error\n- No rollback mechanism despite creating backups\n- Unsafe regex patterns with complex escaping\n\nFix:\n- Write to temp file, then atomic mv\n- Validate output before replacing original\n- Add rollback on failure\n\nSeverity: MEDIUM","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-24T02:51:02.334416215-05:00","updated_at":"2026-01-03T12:08:56.822659199-08:00","closed_at":"2026-01-03T12:08:56.822659199-08:00","close_reason":"Implemented atomic updates using temp files and traps in update-nix-file.sh, update-agent-context.sh, and deploy-skill.sh. Added validation before replacing original files."} {"id":"skills-7n4","title":"Design: Rollback strategy for failed workers","description":"Consensus gap: No rollback strategy. Handle: stuck workers, rejected reviews, merge conflicts. Branch archive/delete, state reset for re-assignment, evidence preservation for debugging.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T13:55:24.144602107-08:00","created_by":"dan","updated_at":"2026-01-10T13:55:24.144602107-08:00","dependencies":[{"issue_id":"skills-7n4","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:55:24.147809879-08:00","created_by":"dan"}]} {"id":"skills-7s0","title":"Compare STATIC_DATA.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:55.193704589-08:00","updated_at":"2025-12-03T20:19:29.659256809-08:00","closed_at":"2025-12-03T20:19:29.659256809-08:00","dependencies":[{"issue_id":"skills-7s0","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:55.195160705-08:00","created_by":"daemon","metadata":"{}"}]} @@ -64,6 +72,7 @@ {"id":"skills-8d4","title":"Compare CLI_REFERENCE.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:53.268324087-08:00","updated_at":"2025-12-03T20:17:26.552616779-08:00","closed_at":"2025-12-03T20:17:26.552616779-08:00","dependencies":[{"issue_id":"skills-8d4","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:53.27265681-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"skills-8d9","title":"Add conversational patterns to orch skill","description":"## Context\nThe orch skill currently documents consensus and single-shot chat, but doesn't\nteach agents how to use orch for multi-turn conversations with external AIs.\n\n## Goal\nAdd documentation and patterns for agent-driven conversations where the calling\nagent (Claude Code) orchestrates multi-turn dialogues using orch primitives.\n\n## Patterns to document\n\n### Session-based multi-turn\n```bash\n# Initial query\nRESPONSE=$(orch chat \"Analyze this\" --model claude --format json)\nSESSION=$(echo \"$RESPONSE\" | jq -r .session_id)\n\n# Continue conversation\norch chat \"Elaborate on X\" --model claude --session $SESSION\n\n# Inspect state\norch sessions info $SESSION\norch sessions show $SESSION --last 2 --format text\n```\n\n### Cross-model dialogue\n```bash\n# Get one model's take\nCLAUDE=$(orch chat \"Review this\" --model claude --format json)\nCLAUDE_SAYS=$(echo \"$CLAUDE\" | jq -r '.responses[0].content')\n\n# Ask another model to respond\norch chat \"Claude said: $CLAUDE_SAYS\n\nWhat's your perspective?\" --model gemini\n```\n\n### When to use conversations vs consensus\n- Consensus: quick parallel opinions on a decision\n- Conversation: deeper exploration, follow-up questions, iterative refinement\n\n## Files\n- skills/orch/SKILL.md\n\n## Related\n- orch-c3r: Design: Session introspection for agent-driven conversations (in orch repo)","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-18T19:57:28.201494288-08:00","updated_at":"2025-12-29T15:34:16.254181578-05:00","closed_at":"2025-12-29T15:34:16.254181578-05:00","close_reason":"Added conversational patterns section to orch SKILL.md: sessions, cross-model dialogue, iterative refinement, consensus vs chat guidance."} {"id":"skills-8fd","title":"Extract common transaction helper for transition functions","description":"[REDUNDANCY] MED state.nim:31-74,76-114 - transition() and transitionToFailed() have near-identical structure. Extract common helper: withTransaction(db, taskId, body) or similar.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T19:49:51.205903331-08:00","created_by":"dan","updated_at":"2026-01-11T15:38:00.484878468-08:00","closed_at":"2026-01-11T15:38:00.484878468-08:00","close_reason":"Closed"} +{"id":"skills-8hyz","title":"Design: Context pruning for bd comments","description":"From orch consensus on bd comments as message layer.\n\nProblem: As agents add comments, context size grows unbounded.\n\nSolutions to design:\n1. bd comments --last N (filter to recent)\n2. bd comments --since \"1 hour ago\"\n3. Periodic \"summary\" comments that checkpoint state\n4. Archive old comments to separate file\n5. bd comments --summarize (LLM summary of thread)\n\nThis enables bd comments to be the inter-agent message layer without context explosion.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-11T21:12:44.58624337-08:00","created_by":"dan","updated_at":"2026-01-11T21:12:44.58624337-08:00","dependencies":[{"issue_id":"skills-8hyz","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-11T21:13:02.76668676-08:00","created_by":"dan"}]} {"id":"skills-8la4","title":"Consider moving query procs from state.nim to db.nim","description":"[BOUNDARY] LOW state.nim:116-180 - getState, getWorker, getAllWorkers are query/repository functions in state machine module. Consider moving to db.nim or queries.nim.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:49:54.753594572-08:00","created_by":"dan","updated_at":"2026-01-10T19:49:54.753594572-08:00"} {"id":"skills-8ma","title":"worklog skill: remove org-mode references, use markdown instead","description":"The worklog skill currently references org-mode format (.org files) in the template and instructions. Update to use markdown (.md) instead:\n\n1. Update ~/.claude/skills/worklog/templates/worklog-template.org → worklog-template.md\n2. Convert org-mode syntax to markdown (#+TITLE → # Title, * → ##, etc.)\n3. Update skill instructions to reference .md files\n4. Update suggest-filename.sh to output .md extension\n\nContext: org-mode is less widely supported than markdown in tooling and editors.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-31T08:43:55.761429693-05:00","created_by":"dan","updated_at":"2026-01-02T00:13:05.338810905-05:00","closed_at":"2026-01-02T00:13:05.338810905-05:00","close_reason":"Migrated worklog skill from org-mode to markdown. Template, scripts, and SKILL.md updated. Backward compatible with existing .org files."} {"id":"skills-8nl","title":"Fix: Gemini path restrictions for skills (skills-bo8)","description":"Concrete fix for Gemini not reading ~/.claude/skills/.\n\n## Problem\nGemini's ReadFile tool restricts to workspace directories.\nSymlinked ~/.claude/skills/ is blocked.\n\n## Options\n\n### A: Copy skills into workspace\n- Add skills/ to project repos\n- Pro: Works immediately\n- Con: Duplication, sync issues\n\n### B: Shell workaround in skill\n- Use \\`cat\\` instead of ReadFile\n- Pro: No duplication\n- Con: Fragile, skill must know about limitation\n\n### C: Configure Gemini allowed paths\n- Research if Gemini has path config\n- Pro: Clean solution\n- Con: May not exist\n\n### D: MCP server for skills\n- Skills exposed via MCP\n- Pro: Agent-agnostic\n- Con: Complexity, user said not interested in MCP\n\n## Deliverable\nWorking solution for Gemini to read skills","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T19:32:57.683370528-08:00","created_by":"dan","updated_at":"2026-01-09T19:35:28.05552467-08:00","closed_at":"2026-01-09T19:35:28.05552467-08:00","close_reason":"Fix found: Gemini includeDirectories setting"} @@ -93,6 +102,7 @@ {"id":"skills-9ny","title":"Add schema migration pattern for future DB changes","description":"[EVOLVE] MED db.nim:92 - schema_version='1' exists but no migration logic. initSchema() always runs full schema. Add version check + migration proc pattern for ALTER TABLE scenarios.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T18:52:38.470894574-08:00","created_by":"dan","updated_at":"2026-01-11T15:38:00.492927833-08:00","closed_at":"2026-01-11T15:38:00.492927833-08:00","close_reason":"Closed"} {"id":"skills-a0x","title":"spec-review: Add traceability requirements across artifacts","description":"Prompts don't enforce spec → plan → tasks linkage. Drift can occur without detection.\n\nAdd:\n- Require trace matrix or linkage in reviews\n- Each plan item should reference spec requirement\n- Each task should reference plan item\n- Flag unmapped items and extra scope","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:25.270581198-08:00","updated_at":"2025-12-15T14:05:48.196356786-08:00","closed_at":"2025-12-15T14:05:48.196356786-08:00"} {"id":"skills-a23","title":"Update main README to list all 9 skills","description":"Main README.md 'Skills Included' section only lists worklog and update-spec-kit. Repo actually has 9 skills: template, worklog, update-spec-kit, screenshot-latest, niri-window-capture, tufte-press, update-opencode, web-research, web-search.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:14.042397754-08:00","updated_at":"2025-12-28T22:08:02.074758486-05:00","closed_at":"2025-12-28T22:08:02.074758486-05:00","close_reason":"Updated README with table listing all 14 skills (5 deployed, 8 available, 1 development template)","dependencies":[{"issue_id":"skills-a23","depends_on_id":"skills-4yn","type":"blocks","created_at":"2025-11-30T12:01:30.306742184-08:00","created_by":"daemon","metadata":"{}"}]} +{"id":"skills-a6mz","title":"Build property-based verification","description":"Verification checks that can be automated:\n- file_exists, dir_exists\n- function_defined (AST parsing)\n- tests_pass (run pytest/npm test/etc)\n- compiles (language-specific)\n- no_new_lint_errors\n- git_state (branch merged, worktree cleaned, etc)\n\nShould be composable and extensible.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T16:19:45.54512229-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.547049098-08:00","closed_at":"2026-01-11T16:38:26.547049098-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-a6mz","depends_on_id":"skills-y0p0","type":"blocks","created_at":"2026-01-11T16:20:20.641495149-08:00","created_by":"dan"}]} {"id":"skills-al5","title":"Consider repo-setup-verification skill","description":"The dotfiles repo has a repo-setup-prompt.md verification checklist that could become a skill.\n\n**Source**: ~/proj/dotfiles/docs/repo-setup-prompt.md\n\n**What it does**:\n- Verifies .envrc has use_api_keys and skills loading\n- Checks .skills manifest exists with appropriate skills\n- Optionally checks beads setup\n- Verifies API keys are loaded\n\n**As a skill it could**:\n- Be invoked to audit any repo's agent setup\n- Offer to fix missing pieces\n- Provide consistent onboarding for new repos\n\n**Questions**:\n- Is this better as a skill vs a slash command?\n- Should it auto-fix or just report?\n- Does it belong in skills repo or dotfiles?","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-06T12:38:32.561337354-08:00","updated_at":"2025-12-28T22:22:57.639520516-05:00","closed_at":"2025-12-28T22:22:57.639520516-05:00","close_reason":"Decided: keep as prompt doc in dotfiles, not a skill. Claude can read it when asked. No wrapper benefit, and it's dotfiles-specific setup (not general skill). ai-tools-doctor handles version checking separately."} {"id":"skills-audh","title":"Use parseEnum for heartbeat status instead of case statement","description":"[SMELL] LOW worker.nim:276-280 - Status string parsed with case statement with silent fallback. Use parseEnum or direct HeartbeatStatus input, error on invalid.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:11.408603257-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.025667838-08:00","closed_at":"2026-01-11T15:46:39.025667838-08:00","close_reason":"Closed"} {"id":"skills-bcu","title":"Design doc-review skill","description":"# doc-review skill\n\nFight documentation drift with a non-interactive review process that generates patchfiles for human review.\n\n## Problem\n- No consistent documentation system across repos\n- Stale content accumulates\n- Structural inconsistencies (docs not optimized for agents)\n\n## Envisioned Workflow\n\n```bash\n# Phase 1: Generate patches (non-interactive, use spare credits, test models)\ndoc-review scan ~/proj/foo --model claude-sonnet --output /tmp/foo-patches/\n\n# Phase 2: Review patches (interactive session)\ncd ~/proj/foo\nclaude # human reviews patches, applies selectively\n```\n\n## Design Decisions Made\n\n- **Trigger**: Manual invocation (not CI). Use case includes burning extra LLM credits, testing models repeatably.\n- **Source of truth**: Style guide embedded in prompt template. Blessed defaults, overridable per-repo.\n- **Output**: Patchfiles for human review in interactive Claude session.\n- **Chunking**: Based on absolute size, not file count. Logical chunks easy for Claude to review.\n- **Scope detection**: Graph-based discovery starting from README.md or AGENTS.md, not glob-all-markdown.\n\n## Open Design Work\n\n### Agent-Friendly Doc Conventions (needs brainstorming)\nWhat makes docs agent-readable?\n- Explicit context (no \"as mentioned above\")\n- Clear section headers for navigation\n- Self-contained sections\n- Consistent terminology\n- Front-loaded summaries\n- ???\n\n### Prompt Content\nFull design round needed on:\n- What conventions to enforce\n- How to express them in prompt\n- Examples of \"good\" vs \"bad\"\n\n### Graph-Based Discovery\nHow does traversal work?\n- Parse links from README/AGENTS.md?\n- Follow relative markdown links?\n- Depth limit?\n\n## Skill Structure (tentative)\n```\nskills/doc-review/\n├── prompt.md # Core review instructions + style guide\n├── scan.sh # Orchestrates: find docs → invoke claude → emit patches\n└── README.md\n```\n\n## Out of Scope (for now)\n- Cross-repo standardization (broader than skills repo)\n- CI integration\n- Auto-apply without human review","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-04T14:01:43.305653729-08:00","updated_at":"2025-12-04T16:44:03.468118288-08:00","closed_at":"2025-12-04T16:44:03.468118288-08:00","dependencies":[{"issue_id":"skills-bcu","depends_on_id":"skills-1ig","type":"blocks","created_at":"2025-12-04T14:02:17.144414636-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-bcu","depends_on_id":"skills-53k","type":"blocks","created_at":"2025-12-04T14:02:17.164968463-08:00","created_by":"daemon","metadata":"{}"}]} @@ -105,6 +115,7 @@ {"id":"skills-bww","title":"Benchmark AT-SPI overhead and coverage","description":"## Goal\nMeasure AT-SPI's runtime overhead and coverage across apps.\n\n## Prerequisites\n- Enable `services.gnome.at-spi2-core.enable = true` in NixOS\n- Set `QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1` for Qt apps\n- Rebuild and re-login\n\n## Overhead benchmarks\n1. **Startup time**: App launch with/without AT-SPI\n2. **Memory**: RSS delta with AT-SPI enabled\n3. **CPU**: Idle CPU with AT-SPI bus running\n4. **UI latency**: Input-to-paint latency (if measurable)\n\n## Coverage audit\nFor each app, document:\n- Does it expose accessibility tree?\n- How complete is the tree? (all elements vs partial)\n- Are coordinates accurate?\n- Are element types/roles correct?\n\n### Apps to test\n- [ ] Firefox\n- [ ] Ghostty terminal\n- [ ] Nautilus/file manager\n- [ ] VS Code / Electron app\n- [ ] A Qt app (if any installed)\n\n## Query benchmarks\n- Time to enumerate all elements in a window\n- Time to find element by role/name\n- Memory overhead of pyatspi queries\n\n## Depends on\n- skills-pdg (Enable AT-SPI for UI tree access)","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-17T14:13:21.599259773-08:00","updated_at":"2025-12-17T14:13:21.599259773-08:00","dependencies":[{"issue_id":"skills-bww","depends_on_id":"skills-pdg","type":"blocks","created_at":"2025-12-17T14:13:41.633210539-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"skills-byq","title":"Integrate: review-gate with worker primitives","description":"Connect existing review-gate CLI with new worker system.\n\n## Current state\nreview-gate CLI exists with:\n- check/enable/approve/reject\n- Circuit breaker (3 strikes)\n- Stop hook integration (for Claude)\n\n## Integration needed\n- worker spawn enables review-gate automatically\n- worker status shows review state\n- worker approve/reject wraps review-gate\n- Evidence artifacts feed into review-gate\n\n## File coordination\n.worker-state/X.json includes:\n - review_session_id (links to .review-state/)\n - needs_review: true/false\n - review_status: pending/approved/rejected","notes":"MVP Tier 1: Wire review-gate to worker state machine","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T12:15:04.625083755-08:00","created_by":"dan","updated_at":"2026-01-10T23:24:21.172713875-08:00","closed_at":"2026-01-10T23:24:21.172713875-08:00","close_reason":"Integrated review-gate with worker: spawn enables review, status/show display review state, approve/reject update review-gate, cancel/merge clean up review state","dependencies":[{"issue_id":"skills-byq","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.376067847-08:00","created_by":"dan"}]} {"id":"skills-cc0","title":"spec-review: Add anti-hallucination constraints to prompts","description":"Models may paraphrase and present as quotes, or invent requirements/risks not in the doc.\n\nAdd:\n- 'Quotes must be verbatim'\n- 'Do not assume technologies/constraints not stated'\n- 'If missing info, list as open questions rather than speculating'","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:26.045478292-08:00","updated_at":"2025-12-15T14:07:19.556888057-08:00","closed_at":"2025-12-15T14:07:19.556888057-08:00"} +{"id":"skills-cg7c","title":"Design worker system prompt template","description":"Create the system prompt/context that spawned workers receive.\n\nContents:\n- Role definition (you are a worker agent)\n- Task context (from bd issue or description)\n- Available tools (worker start/done/heartbeat, bd comments)\n- Completion criteria\n- How to signal blockers/questions\n- How to hand off for review\n\nOutput: skills/hq/templates/worker-system.md","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-11T21:06:34.943983399-08:00","created_by":"dan","updated_at":"2026-01-11T21:06:34.943983399-08:00"} {"id":"skills-cjx","title":"Create spec-review skill for orch + spec-kit integration","description":"A new skill that integrates orch multi-model consensus with spec-kit workflows.\n\n**Purpose**: Use different models/temps/stances to review spec-kit artifacts before phase transitions.\n\n**Proposed commands**:\n- /spec-review.spec - Critique current spec for completeness, ambiguity, gaps\n- /spec-review.plan - Evaluate architecture decisions in plan\n- /spec-review.gate - Go/no-go consensus before phase transition\n\n**Structure**:\n```\nskills/spec-review/\n├── SKILL.md\n├── commands/\n│ ├── spec.md\n│ ├── plan.md\n│ └── gate.md\n└── prompts/\n └── ...\n```\n\n**Key design points**:\n- Finds spec/plan files from current branch or specs/ directory\n- Invokes orch with appropriate prompt, models, stances\n- Presents consensus/critique results\n- AI reviewing AI is valuable redundancy (different models/temps/stances)\n\n**Dependencies**:\n- orch CLI must be available (blocked on dotfiles-3to)\n- spec-kit project structure conventions","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-14T17:50:13.22879874-08:00","updated_at":"2025-12-15T00:10:23.122342449-08:00","closed_at":"2025-12-15T00:10:23.122342449-08:00"} {"id":"skills-cnc","title":"Add direnv helper for per-repo skill deployment","description":"Create sourceable helper script and documentation for the standard per-repo skill deployment pattern using direnv + nix build.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-30T12:19:20.71056749-08:00","updated_at":"2025-11-30T12:37:47.22638278-08:00","closed_at":"2025-11-30T12:37:47.22638278-08:00"} {"id":"skills-czz","title":"Research OpenCode agents for skill integration","description":"DEPLOYMENT.md:218 has TODO to research OpenCode agents. Need to understand how Build/Plan/custom agents work and whether skills need agent-specific handling.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:24.855701141-08:00","updated_at":"2025-12-28T20:48:58.373191479-05:00","closed_at":"2025-12-28T20:48:58.373191479-05:00","close_reason":"Researched OpenCode agents - documented in DEPLOYMENT.md. Skills deploy globally, permissions control per-agent access."} @@ -148,7 +159,9 @@ {"id":"skills-hx1n","title":"Return status from startGlobalHeartbeat when already running","description":"[ERROR] LOW heartbeat.nim:107-108 - startGlobalHeartbeat silently returns if already running. Return bool or log that heartbeat is already active.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:46.122435219-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.031696989-08:00","closed_at":"2026-01-11T15:46:39.031696989-08:00","close_reason":"Closed"} {"id":"skills-ib9u","title":"Remove unused times import in heartbeat.nim","description":"[DEAD] LOW heartbeat.nim:11 - times module imported but unused. Compiler warns about this. Remove unused import.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:45.346709427-08:00","created_by":"dan","updated_at":"2026-01-10T20:24:43.679084215-08:00","closed_at":"2026-01-10T20:24:43.679084215-08:00","close_reason":"Fixed: removed unused times import in heartbeat.nim rewrite"} {"id":"skills-idb","title":"Handle concurrency and multi-agent execution","description":"Not addressed in ADR. Questions:\n\n- What happens when two agents run same skill on same mol step?\n- How to handle partial failures and resumptions?\n- Trace merging: append-only log vs latest-wins?\n\nNeeds:\n- execution_id and parent_execution_id in traces\n- Step completion idempotency declaration\n- Define how multiple traces attach to one mol node\n\nCan defer until basic integration works.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-23T19:49:59.608603168-05:00","updated_at":"2025-12-29T14:37:35.350225933-05:00","closed_at":"2025-12-29T14:37:35.350225933-05:00","close_reason":"Parked: waiting on gastown (Steve Yegge's orchestration layer for beads). Revisit when gastown lands."} +{"id":"skills-ig7w","title":"Design scenario definition format (YAML schema)","description":"Define the YAML schema for scenario definitions.\n\nFields needed:\n- id, difficulty, fixture reference\n- task description (the prompt)\n- timeout\n- execution mode (scripted vs live)\n- verification criteria (properties, llm_judge rubric, golden files, human_required)\n\nOutput: docs/adr or schema file defining the format","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T16:19:44.839350531-08:00","created_by":"dan","updated_at":"2026-01-11T16:24:19.03696019-08:00","closed_at":"2026-01-11T16:24:19.03696019-08:00","close_reason":"Schema defined in docs/specs/scenario-schema.md with 3 example scenarios"} {"id":"skills-itwv","title":"Optimize isInWorktree to avoid full context parse","description":"[SMELL] LOW context.nim:41 - isInWorktree parses entire JSON just to return bool. Add findContextPath() returning Option[string], use in both places.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.716351254-08:00","created_by":"dan","updated_at":"2026-01-10T20:10:03.716351254-08:00"} +{"id":"skills-iusu","title":"Evaluate bd comments as message layer","description":"Can bd comments replace the designed message passing layer (skills-ms5)?\n\nEvaluate:\n- Append-only thread per issue ✓\n- JSON output available ✓\n- Context size concerns (many comments = big context)\n- Need --last N filtering?\n- Need summary/archival feature?\n- Cross-agent compatibility (any agent with bd access)\n\nCompare with skills-ms5 JSONL design.\nRecommend: extend bd or keep separate?\n\nIf bd works, can close skills-ms5 as \"solved by bd comments\"","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T21:06:35.055196887-08:00","created_by":"dan","updated_at":"2026-01-11T21:23:19.256166666-08:00","closed_at":"2026-01-11T21:23:19.256166666-08:00","close_reason":"Evaluation complete - orch consensus (flash-or, gemini, gpt, qwen) unanimously supports bd comments with --last N filtering and periodic summarization","comments":[{"id":2,"issue_id":"skills-iusu","author":"dan","text":"ORCH CONSENSUS RESULT (flash-or, gemini, gpt, qwen):\nUnanimous support for Option A - use bd comments as message layer.\n\nKey recommendations:\n- Add --last N filtering for context management\n- Use structured prefixes (status:, agent:, plan:)\n- Periodic summarization comments\n- No need for separate JSONL layer\n\nRecommendation: Close skills-ms5 as 'solved by bd comments' after implementing context management features in bd.","created_at":"2026-01-12T05:12:44Z"}]} {"id":"skills-j2a","title":"worklog: consolidate git commands into extract-metrics.sh","description":"Context Gathering section has raw git commands, but extract-metrics.sh also exists. Feature envy - split logic. Move all git context gathering into the script, skill makes single call. Found by smells lens review.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T02:03:16.478103649-05:00","updated_at":"2025-12-27T10:11:48.158176684-05:00","closed_at":"2025-12-27T10:11:48.158176684-05:00","close_reason":"Closed"} {"id":"skills-jbo","title":"Skills: verify symbols via LSP before suggesting","description":"Inversion: let LSP answer facts, let models answer strategy.\n\nBefore Claude suggests using a function/type:\n- Verify existence via workspace/symbol or go-to-definition\n- If not found, propose alternatives that ARE found\n- Gather definition, references, inferred types, diagnostics as context\n\nReduces hallucinated APIs and grounds patches in reality.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-24T02:29:56.391182872-05:00","updated_at":"2025-12-24T02:29:56.391182872-05:00","dependencies":[{"issue_id":"skills-jbo","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.529604354-05:00","created_by":"daemon"}]} {"id":"skills-jeb","title":"Define wisp execution trace format","description":"Design structured format for skill execution traces in wisps:\n- skill_version (git SHA + flake hash)\n- inputs (context refs, env vars)\n- tool_calls [{cmd, args, exit_code, duration}]\n- checkpoints [{step, summary, timestamp}]\n- outputs (file diffs or refs)\n\nEnable: replay, diff traces, regression testing\n\nMigrated from dotfiles-ub9.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:20:57.896088397-05:00","updated_at":"2025-12-29T13:55:35.797116947-05:00","closed_at":"2025-12-29T13:55:35.797116947-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-jeb","depends_on_id":"skills-hin","type":"blocks","created_at":"2025-12-23T19:21:39.588011474-05:00","created_by":"dan"},{"issue_id":"skills-jeb","depends_on_id":"skills-gq9","type":"blocks","created_at":"2025-12-23T19:50:10.069841366-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-be3","type":"blocks","created_at":"2025-12-23T19:50:10.117400312-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-ty7","type":"blocks","created_at":"2025-12-23T19:50:10.163656807-05:00","created_by":"daemon"},{"issue_id":"skills-jeb","depends_on_id":"skills-6gw","type":"blocks","created_at":"2025-12-23T19:50:10.202702536-05:00","created_by":"daemon"}]} @@ -166,7 +179,7 @@ {"id":"skills-m0e2","title":"Write developer docs for compiling/deployment workflow","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T23:14:36.685506396-08:00","created_by":"dan","updated_at":"2026-01-11T15:34:20.579336918-08:00","closed_at":"2026-01-11T15:34:20.579336918-08:00","close_reason":"Closed"} {"id":"skills-m21","title":"Apply niri-window-capture code review recommendations","description":"CODE-REVIEW-niri-window-capture.md identifies action items: add dependency checks to scripts, improve error handling for niri failures, add screenshot directory validation, implement rate limiting. See High/Medium priority sections.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:24.648846875-08:00","updated_at":"2025-12-28T20:16:53.914141949-05:00","closed_at":"2025-12-28T20:16:53.914141949-05:00","close_reason":"Implemented all 4 high-priority recommendations from code review: dependency checks, directory validation, error handling, audit logging"} {"id":"skills-mjf","title":"Design: Portable adversarial reviewer","description":"Design a reviewer agent/skill that can run on any capable model.\n\nalice is Claude Opus with specific tools. We need:\n- Model-agnostic reviewer prompt/instructions\n- Tool requirements (read-only: Read, Grep, Glob, Bash)\n- Integration with orch for multi-model consensus\n- Decision format (APPROVED/ISSUES)\n- Issue filing (beads or tissue)\n\nKey principles from alice:\n- Work for the USER, not the agent\n- Assume errors exist, find them\n- Steel-man then attack\n- Seek second opinions\n\nOutput: Reviewer skill spec that works across agents","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-09T17:14:20.778647076-08:00","created_by":"dan","updated_at":"2026-01-09T19:59:37.80146821-08:00","closed_at":"2026-01-09T19:59:37.80146821-08:00","close_reason":"Covered in architecture design doc - adversarial reviewer section"} -{"id":"skills-ms5","title":"Design: Local message passing layer","description":"Design: Local message passing layer\n\nImplementation: Nim (tiny_sqlite, channels)\nDesign doc: docs/design/message-passing-layer.md (v4)\n\nKey components:\n- SQLite WAL mode as source of truth\n- Heartbeat thread with own connection + channel control\n- Task claims with lease expiry\n- At-least-once delivery with explicit ack\n- JSONL export for debugging\n\nSee: skills-q40 for language decision","design":"docs/design/message-passing-layer.md","notes":"DESIGN UPDATED v2: SQLite as primary storage (not JSONL+flock). After orch consensus (3 models unanimous), aligned with Beads approach. Key change: SQLite with BEGIN IMMEDIATE for atomic writes, WAL mode for concurrency. JSONL becomes read-only export for debugging. See docs/design/message-passing-layer.md and message-passing-comparison.md.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T13:24:21.597509853-08:00","created_by":"dan","updated_at":"2026-01-10T18:04:18.389932002-08:00","dependencies":[{"issue_id":"skills-ms5","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:24:36.033492407-08:00","created_by":"dan"}]} +{"id":"skills-ms5","title":"Design: Local message passing layer","description":"Design: Local message passing layer\n\nImplementation: Nim (tiny_sqlite, channels)\nDesign doc: docs/design/message-passing-layer.md (v4)\n\nKey components:\n- SQLite WAL mode as source of truth\n- Heartbeat thread with own connection + channel control\n- Task claims with lease expiry\n- At-least-once delivery with explicit ack\n- JSONL export for debugging\n\nSee: skills-q40 for language decision","design":"docs/design/message-passing-layer.md","notes":"DESIGN UPDATED v2: SQLite as primary storage (not JSONL+flock). After orch consensus (3 models unanimous), aligned with Beads approach. Key change: SQLite with BEGIN IMMEDIATE for atomic writes, WAL mode for concurrency. JSONL becomes read-only export for debugging. See docs/design/message-passing-layer.md and message-passing-comparison.md.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T13:24:21.597509853-08:00","created_by":"dan","updated_at":"2026-01-11T21:23:19.067533522-08:00","closed_at":"2026-01-11T21:23:19.067533522-08:00","close_reason":"Solved by bd comments approach - orch consensus unanimously supported using existing bd comments instead of building separate JSONL layer","dependencies":[{"issue_id":"skills-ms5","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:24:36.033492407-08:00","created_by":"dan"}]} {"id":"skills-mx3","title":"spec-review: Define consensus thresholds and decision rules","description":"'Use judgment' for mixed results leads to inconsistent decisions.\n\nDefine:\n- What constitutes consensus (2/3? unanimous?)\n- How to handle NEUTRAL votes\n- Tie-break rules\n- When human override is acceptable and how to document it","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-15T00:23:24.121175736-08:00","updated_at":"2025-12-15T13:58:04.339283238-08:00","closed_at":"2025-12-15T13:58:04.339283238-08:00"} {"id":"skills-n3qp","title":"Use case-insensitive conflict detection in rebaseOnIntegration","description":"[SMELL] MED git.nim:70 - Checks 'CONFLICT' and 'conflict' separately with fragile string matching. Use output.toLowerAscii().contains(\"conflict\") for robustness.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T19:52:13.875954227-08:00","created_by":"dan","updated_at":"2026-01-10T20:55:02.354755642-08:00","closed_at":"2026-01-10T20:55:02.354755642-08:00","close_reason":"P2 bugs fixed"} {"id":"skills-n6zf","title":"Add error handling for heartbeat thread startup","description":"[ERROR] MED heartbeat.nim:41,70-80 - No error handling for thread startup. openBusDb can fail (crashes thread silently), createThread could fail. Add try/except in thread body, return success indicator.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T19:54:44.891259041-08:00","created_by":"dan","updated_at":"2026-01-10T20:24:43.776180211-08:00","closed_at":"2026-01-10T20:24:43.776180211-08:00","close_reason":"Fixed: added try/except for openBusDb in heartbeatWorker thread"} @@ -182,13 +195,15 @@ {"id":"skills-qeh","title":"Add README.md for web-research skill","description":"web-research skill has SKILL.md and scripts but no README.md. AGENTS.md says README.md is for humans, contains installation instructions, usage examples, prerequisites.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:14.475647113-08:00","updated_at":"2025-12-28T22:37:48.339288261-05:00","closed_at":"2025-12-28T22:37:48.339288261-05:00","close_reason":"Added README.md with prerequisites, usage examples, and cross-references","dependencies":[{"issue_id":"skills-qeh","depends_on_id":"skills-vb5","type":"blocks","created_at":"2025-11-30T12:01:30.278784381-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"skills-qekj","title":"Start heartbeat before state transition in start command","description":"[ERROR] MED worker.nim:202-206 - Heartbeat started after state transition. If heartbeat fails, worker is WORKING but not heartbeating. Start heartbeat before transition, or handle failure by reverting state.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T20:12:10.656162605-08:00","created_by":"dan","updated_at":"2026-01-10T20:55:02.327535804-08:00","closed_at":"2026-01-10T20:55:02.327535804-08:00","close_reason":"P2 bugs fixed"} {"id":"skills-qiq0","title":"Extract DefaultRemote and IntegrationBranch constants","description":"[EVOLVE] LOW git.nim - 'origin' remote and 'integration' branch hardcoded throughout (lines 40,66,67,93,96,97,109,133). Extract to constants in types.nim.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T19:52:14.580188398-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.36719341-08:00","closed_at":"2026-01-10T20:32:28.36719341-08:00","close_reason":"Created utils.nim with common helpers"} +{"id":"skills-qng9","title":"Agent capability benchmark harness","description":"**Status: Design/Brainstorming** - exploring approaches before building\n\n## Vision\nTest and benchmark agent capability on real software engineering tasks.\nEnable private evals on our actual workflows.\n\n## Key Questions (unresolved)\n1. What's the simplest thing that teaches us something?\n2. What's the orchestrator? CLI? Daemon? Just \"invoke claude with context\"?\n3. Where does task decomposition happen?\n4. How much infrastructure do we need vs. just trying things?\n\n## Approaches Considered\n\n### A) Full harness (designed, not built)\n- Scenario YAML schema (done: docs/specs/scenario-schema.md)\n- Verification pipeline: properties → LLM-judge → human\n- Scripted mode (integration) + Live mode (real agents)\n- Benchmarking dimensions\n- **Risk**: Over-engineered before we know what we need\n\n### B) Minimal spike (proposed)\n- Simple script: try-task.sh \"task description\" fixture/\n- Manually invoke Claude in worker context\n- See what happens, learn, iterate\n- **Benefit**: Fast learning, no premature abstraction\n\n### C) Middle ground\n- Start with B, grow toward A based on learnings\n\n## Artifacts Created (exploratory)\n- docs/specs/scenario-schema.md - YAML schema (may simplify)\n- tests/scenarios/{easy,medium,hard}/*.yaml - Example scenarios\n- tests/fixtures/ - Test fixture stubs\n\n## Next Step\nSpike: Actually try running Claude on a task in worker context.\nLearn what works, what breaks, what's needed.\n\n## Related\n- Worker CLI: src/worker.nim (built)\n- Review-gate: skills/review-gate/ (built)\n- Orchestrator: NOT BUILT (shape unknown)","status":"open","priority":2,"issue_type":"epic","created_at":"2026-01-11T16:19:22.737836269-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:40.60324944-08:00"} {"id":"skills-r3k","title":"Extract helper for repetitive null-check pattern in poll()","description":"[SMELL] LOW db.nim:167-176 - Same null-check pattern repeated 5 times. Extract helper: proc optField[T](row, idx): Option[T]","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T18:52:40.828545508-08:00","created_by":"dan","updated_at":"2026-01-11T15:34:20.547557264-08:00","closed_at":"2026-01-11T15:34:20.547557264-08:00","close_reason":"Closed"} {"id":"skills-r5c","title":"Extract shared logging library from scripts","description":"Duplicated logging/color functions across multiple scripts:\n- bin/deploy-skill.sh\n- skills/tufte-press/scripts/generate-and-build.sh\n- Other .specify scripts\n\nPattern repeated:\n- info(), warn(), error() functions\n- Color definitions (RED, GREEN, etc.)\n- Same 15-20 lines in each file\n\nFix:\n- Create scripts/common-logging.sh\n- Source from all scripts that need it\n- Estimated reduction: 30+ lines of duplication\n\nSeverity: MEDIUM","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T02:50:58.324852578-05:00","updated_at":"2025-12-29T18:48:20.448077879-05:00","closed_at":"2025-12-29T18:48:20.448077879-05:00","close_reason":"Minimal duplication: only 2 files with different logging styles. Shared library overhead not justified."} {"id":"skills-r62","title":"Design: Role + Veto pattern","description":"Some agents do, some agents can only block.\n\n## Pattern (from GPT brainstorm)\nRole specialization with cross-cutting veto powers:\n- Claude = spec/architecture (can veto incoherent APIs)\n- Codex = implementation (fast edits, compilation focus)\n- Gemini = repo archaeologist (searches long-range coupling)\n- Security agent = can't code, can only BLOCK\n\nKey: some agents can't 'do' but can block.\n\n## Implementation\n- worker veto X \"reason\" - block without doing\n- Reviewer agents have veto-only mode\n- Veto writes rejection to .worker-state/X.json\n- Worker must address veto before proceeding\n\n## Benefits\n- Prevents groupthink\n- Security review can't 'fix' things (no scope creep)\n- Clear separation of concerns","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T12:14:51.397604607-08:00","created_by":"dan","updated_at":"2026-01-10T12:14:51.397604607-08:00","dependencies":[{"issue_id":"skills-r62","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.205645756-08:00","created_by":"dan"}]} {"id":"skills-rex","title":"Test integration on worklog skill","description":"Use worklog skill as first real test case:\n- Create wisp for worklog execution\n- Capture execution trace\n- Test squash → digest\n- Validate trace format captures enough info for replay\n\nMigrated from dotfiles-drs.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:21:18.75525644-05:00","updated_at":"2025-12-29T13:55:35.814174815-05:00","closed_at":"2025-12-29T13:55:35.814174815-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed.","dependencies":[{"issue_id":"skills-rex","depends_on_id":"skills-3em","type":"blocks","created_at":"2025-12-23T19:22:00.34922734-05:00","created_by":"dan"}]} {"id":"skills-roq","title":"Design: Branch-per-worker isolation","description":"Each worker operates on its own git branch for code isolation.\n\n## Pattern\n- worker spawn creates branch: worker/\u003cid\u003e\n- Worker does all work on that branch\n- On completion, branch ready for review/merge\n- Orchestrator or human merges to main\n\n## Benefits\n- Clean isolation between parallel workers\n- Easy rollback (just delete branch)\n- Familiar git workflow\n- No conflicts during work\n\n## Implementation\nworker spawn:\n 1. git checkout -b worker/\u003cid\u003e\n 2. Run agent\n 3. Agent commits to branch\n 4. On completion, branch stays for review\n\nworker merge \u003cid\u003e:\n 1. Review diff\n 2. Merge to main (or rolling branch)\n 3. Delete worker branch\n\n## Open Questions\n- Merge from main during work? (rebase vs merge)\n- Rolling branch pattern? (main \u003c- rolling \u003c- workers)","design":"docs/design/branch-per-worker.md","notes":"Design complete. Key decisions: (1) type/task-id naming (not worker-id), (2) git worktrees for parallel agents, (3) rolling integration branch before main, (4) orchestrator creates branches, (5) trivial conflict auto-resolve, semantic escalates, (6) SQLite=process truth, Git=code truth, (7) serialize cross-worker deps, (8) archive failed branches. See orch consensus with flash-or/gemini/gpt.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T13:24:21.364434026-08:00","created_by":"dan","updated_at":"2026-01-10T21:29:25.697839488-08:00","closed_at":"2026-01-10T21:29:25.697839488-08:00","close_reason":"Implemented in worker CLI - spawn, status, state machine, branch isolation all working","dependencies":[{"issue_id":"skills-roq","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:24:35.976245936-08:00","created_by":"dan"}]} {"id":"skills-rpf","title":"Implement playwright-visit skill for browser automation","description":"## Overview\nBrowser automation skill using Playwright to visit web pages, take screenshots, and extract content.\n\n## Key Findings (from dotfiles investigation)\n\n### Working Setup\n- Use `python312Packages.playwright` from nixpkgs (handles Node driver binary patching for NixOS)\n- Use `executable_path='/run/current-system/sw/bin/chromium'` to use system chromium\n- No `playwright install` needed - no browser binary downloads\n\n### Profile Behavior\n- Fresh/blank profile every launch by default\n- No cookies, history, or logins from user's browser\n- Can persist state with `storage_state` parameter if needed\n\n### Example Code\n```python\nfrom playwright.sync_api import sync_playwright\n\nwith sync_playwright() as p:\n browser = p.chromium.launch(\n executable_path='/run/current-system/sw/bin/chromium',\n headless=True\n )\n page = browser.new_page()\n page.goto('https://example.com')\n print(page.title())\n browser.close()\n```\n\n### Why Not uv/pip?\n- Playwright pip package bundles a Node.js driver binary\n- NixOS can't run dynamically linked executables without patching\n- nixpkgs playwright handles this properly\n\n## Implementation Plan\n1. Create `skills/playwright-visit/` directory\n2. Add flake.nix with devShell providing playwright\n3. Create CLI script with subcommands:\n - `screenshot \u003curl\u003e \u003coutput.png\u003e` - capture page\n - `text \u003curl\u003e` - extract text content \n - `html \u003curl\u003e` - get rendered HTML\n - `pdf \u003curl\u003e \u003coutput.pdf\u003e` - save as PDF\n4. Create skill definition for Claude Code integration\n5. Document usage in skill README\n\n## Dependencies\n- nixpkgs python312Packages.playwright\n- System chromium (already in dotfiles)\n\n## Related\n- dotfiles issue dotfiles-m09 (playwright skill request)","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-16T16:02:28.577381007-08:00","updated_at":"2025-12-29T00:09:50.681141882-05:00","closed_at":"2025-12-29T00:09:50.681141882-05:00","close_reason":"Implemented: SKILL.md, visit.py CLI (screenshot/text/html/pdf), flake.nix devShell, README. Network down so couldn't test devShell build, but code complete."} -{"id":"skills-s6y","title":"Multi-agent orchestration: Lego brick architecture","description":"Multi-agent orchestration: Lego brick architecture\n\nCoordinate 2-4 AI coding agents with human oversight.\n\nLanguage: Nim (ORC, cligen, tiny_sqlite) - see skills-q40\n\nCore components:\n- Worker state machine (skills-4oj)\n- Message passing layer (skills-ms5) \n- Branch-per-worker isolation (skills-roq)\n- Worker CLI primitives (skills-sse)\n- Human observability (skills-yak)\n- Review-gate integration (skills-byq)\n\nDesign docs: docs/design/\n- mvp-scope.md (v3)\n- message-passing-layer.md (v4)\n- worker-cli-primitives.md (v3)\n- worker-state-machine.md\n- branch-per-worker.md\n- human-observability.md","status":"in_progress","priority":1,"issue_type":"epic","created_at":"2026-01-10T12:14:16.141746066-08:00","created_by":"dan","updated_at":"2026-01-11T00:11:49.50673558-08:00"} +{"id":"skills-s2bt","title":"Document: State machine invariants for worker lifecycle","description":"From orch architecture review.\n\nProblem: Without explicit invariants, agents drift into inconsistent states.\n\nDocument:\n- Allowed state transitions (already in code, need docs)\n- Invariants: \"no merge unless review-gate approved AND state=APPROVED\"\n- Cross-tool consistency: bd status + worker status + review-gate must agree\n- Error states and recovery paths\n\nOutput: docs/design/worker-state-invariants.md\n\nThis helps HQ skill teach correct behavior.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-11T21:12:44.826250888-08:00","created_by":"dan","updated_at":"2026-01-11T21:12:44.826250888-08:00","dependencies":[{"issue_id":"skills-s2bt","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-11T21:13:03.057397183-08:00","created_by":"dan"}]} +{"id":"skills-s6y","title":"Multi-agent orchestration: Lego brick architecture","description":"Multi-agent orchestration: Lego brick architecture\n\nCoordinate 2-4 AI coding agents with human oversight.\n\nLanguage: Nim (ORC, cligen, tiny_sqlite) - see skills-q40\n\nCore components:\n- Worker state machine (skills-4oj)\n- Message passing layer (skills-ms5) \n- Branch-per-worker isolation (skills-roq)\n- Worker CLI primitives (skills-sse)\n- Human observability (skills-yak)\n- Review-gate integration (skills-byq)\n\nDesign docs: docs/design/\n- mvp-scope.md (v3)\n- message-passing-layer.md (v4)\n- worker-cli-primitives.md (v3)\n- worker-state-machine.md\n- branch-per-worker.md\n- human-observability.md","status":"closed","priority":1,"issue_type":"epic","created_at":"2026-01-10T12:14:16.141746066-08:00","created_by":"dan","updated_at":"2026-01-11T21:23:19.461560217-08:00","closed_at":"2026-01-11T21:23:19.461560217-08:00","close_reason":"MVP complete: worker CLI, state machine, review-gate, branch isolation all implemented. Architecture validated by orch consensus. Unblocking design/research tasks."} {"id":"skills-s92","title":"Add tests for config injection (deploy-skill.sh)","description":"File: bin/deploy-skill.sh (lines 112-137)\n\nCritical logic with NO test coverage:\n- Idempotency (running twice should be safe)\n- Correct brace matching in Nix\n- Syntax validity of injected config\n- Rollback on failure\n\nRisk: MEDIUM-HIGH - can break dotfiles Nix config\n\nFix:\n- Test idempotent injection\n- Validate Nix syntax after injection\n- Test with malformed input\n\nSeverity: MEDIUM","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-24T02:51:01.314513824-05:00","updated_at":"2026-01-06T16:29:18.728097676-08:00","closed_at":"2026-01-06T16:29:18.728097676-08:00","close_reason":"21 tests added covering idempotency, brace preservation, inject_home_file wrapper, edge cases"} {"id":"skills-sh6","title":"Research: OpenHands iterative refinement pattern","description":"Document OpenHands SDK patterns for our architecture.\n\n## Iterative Refinement Loop\n1. Worker agent does work\n2. Critique agent evaluates (correctness, quality, completeness)\n3. If not good → worker tries again with feedback\n4. Repeat until standard met\n\n## Parallel Agent Orchestration\n- Git-based coordination (not direct communication)\n- Each agent works on own branch\n- PRs to intermediate 'rolling branch'\n- Human reviews and merges\n- Agents pull latest, handle conflicts\n\n## Key Quote\n'Don't expect 100% automation—tasks are 80-90% automatable.\nYou need a human who understands full context.'\n\n## Mapping to Our Architecture\n- Worker = their refactoring agent\n- Reviewer = their critique agent\n- review-gate = their quality threshold\n- Human orchestrator = their human on rolling branch\n\n## Sources\n- https://openhands.dev/blog/automating-massive-refactors-with-parallel-agents\n- https://arxiv.org/abs/2511.03690\n- https://docs.openhands.dev/sdk","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T12:24:02.368542878-08:00","created_by":"dan","updated_at":"2026-01-10T12:24:02.368542878-08:00","dependencies":[{"issue_id":"skills-sh6","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:24:07.013388857-08:00","created_by":"dan"}]} {"id":"skills-sisi","title":"Extract MaxSummaryLen constant for description truncation","description":"[SMELL] LOW worker.nim:101 - Description truncated at magic number 30. Extract: const MaxSummaryLen = 30","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:11.153123047-08:00","created_by":"dan","updated_at":"2026-01-10T20:12:11.153123047-08:00"} @@ -205,14 +220,18 @@ {"id":"skills-uz4","title":"Compare RESUMABILITY.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:54.897754095-08:00","updated_at":"2025-12-03T20:19:29.384645842-08:00","closed_at":"2025-12-03T20:19:29.384645842-08:00","dependencies":[{"issue_id":"skills-uz4","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:54.899671178-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"skills-v6p","title":"Move Message type from db.nim to types.nim","description":"[COUPLING] LOW db.nim:130-141 - Message type defined in db.nim but other types are in types.nim. Move for consistency.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T18:52:41.927231152-08:00","created_by":"dan","updated_at":"2026-01-10T18:52:41.927231152-08:00"} {"id":"skills-vb5","title":"Resolve web search design questions","description":"web_search_brainstorm.md has unanswered design questions: single smart skill vs explicit flags, specific sources priority, raw links vs summaries. Need user input to finalize web-search/web-research direction.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-30T11:58:33.482270742-08:00","updated_at":"2025-12-28T22:21:05.814118092-05:00","closed_at":"2025-12-28T22:21:05.814118092-05:00","close_reason":"Resolved: keep 2 skills, web-search for OpenCode only (Claude has built-in), web-research for both. Source filtering via WebSearch domains. Summaries by default."} +{"id":"skills-vdup","title":"Design: Retry limits and escalation policy","description":"From orch architecture review.\n\nProblem: Agent can enter \"loop of death\" - repeatedly spawning workers that fail.\n\nNeed:\n- Max retries per task before escalation\n- Escalation path (to human? to different agent?)\n- \"Circuit breaker\" pattern at orchestration level\n- Configurable per-task or global limits\n\nRelated: \n- skills-1jc (stuck agent detection)\n- review-gate circuit breaker (exists, 3 attempts)\n\nHQ skill should include: \"If task fails N times, escalate to human\"","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-11T21:12:44.745049544-08:00","created_by":"dan","updated_at":"2026-01-11T21:12:44.745049544-08:00","dependencies":[{"issue_id":"skills-vdup","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-11T21:13:02.95738684-08:00","created_by":"dan"}]} {"id":"skills-vjm","title":"Refactor update-agent-context.sh: reduce nesting depth","description":"File: .specify/scripts/bash/update-agent-context.sh\n\nIssues:\n- update_existing_agent_file() has 4-level deep nesting (lines 360-499)\n- State machine with multiple variables: in_tech_section, in_changes_section, tech_entries_added\n- 70+ lines of while loop processing\n\nFix:\n- Extract file processing to separate function\n- Consider sed/awk for line-based transformations\n- Use guard clauses to reduce nesting\n\nSeverity: HIGH","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T02:50:57.874439288-05:00","updated_at":"2025-12-25T01:44:58.38265672-05:00","closed_at":"2025-12-25T01:44:58.38265672-05:00","close_reason":"update-agent-context.sh is .specify upstream code, not maintained here"} {"id":"skills-vpy","title":"Design checklist support for skills","description":"Design how checklists fit into the skills system.\n\nQuestions:\n- Skill-as-checklist (SKILL.md with just items, no scripts)?\n- Separate checklist format?\n- Trigger conditions in frontmatter?\n- Integration with bd audit for tracking?\n\nTiers considered:\n1. AGENTS.md (simplest, no tracking)\n2. Skill-as-checklist (deployed, invokable)\n3. Proto (full tracking, overhead)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T17:59:09.569427412-05:00","updated_at":"2025-12-29T13:55:35.848981398-05:00","closed_at":"2025-12-29T13:55:35.848981398-05:00","close_reason":"Parked with ADR-001: skills-molecules integration deferred. Current simpler approach (skills as standalone) works well. Revisit when complex orchestration needed."} {"id":"skills-vuj2","title":"Add validateTaskId() at CLI entry points","description":"[SECURITY] MED worker.nim - taskId from CLI args used without validation. Add validateTaskId() check in each command. Related to skills-73yu (git.nim validation).","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T20:12:10.919427534-08:00","created_by":"dan","updated_at":"2026-01-10T20:32:28.382482296-08:00","closed_at":"2026-01-10T20:32:28.382482296-08:00","close_reason":"Created utils.nim with common helpers"} +{"id":"skills-w9a4","title":"Design: Garbage collection / janitor for orphaned workers","description":"From orch architecture review consensus.\n\nProblem: Workers can crash, worktrees can hang, locks can be abandoned.\n\nNeed:\n- Detect orphaned worktrees (no heartbeat, stale state)\n- Clean up abandoned locks\n- Prune old/dead worker state from DB\n- Maybe a \"janitor\" that runs periodically or on-demand\n\nRelated: skills-7n4 (rollback strategy), worker staleness detection (exists)\n\nCommands to add:\n- worker cleanup --stale-days=7\n- worker gc (garbage collect)","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-11T21:12:44.530555957-08:00","created_by":"dan","updated_at":"2026-01-11T21:12:44.530555957-08:00","dependencies":[{"issue_id":"skills-w9a4","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-11T21:13:02.689965819-08:00","created_by":"dan"}]} {"id":"skills-wm9","title":"Research Steve Yegge's orchestration work","description":"Steve Yegge is working on something new related to AI orchestration. Research what it is and how it might inform our skills+molecules integration design.\n\nBlocks: skills-hin (ADR finalization)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T02:41:47.848905848-05:00","updated_at":"2025-12-24T02:42:24.40239935-05:00","closed_at":"2025-12-24T02:42:24.40239935-05:00","close_reason":"Not needed - just parking the ADR work"} +{"id":"skills-wsk7","title":"Add benchmarking metrics collection","description":"Track metrics across runs for comparison:\n\nMetrics:\n- pass_rate (completion)\n- quality_score (LLM judge)\n- cost (tokens in/out)\n- latency (time to complete)\n- efficiency (tool calls, iterations)\n\nDimensions to sweep:\n- model\n- system prompt variant\n- tool configuration\n- context strategy\n\nOutput: structured results (JSON/CSV) for analysis","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-11T16:19:46.710599693-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.601801894-08:00","closed_at":"2026-01-11T16:38:26.601801894-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-wsk7","depends_on_id":"skills-y0p0","type":"blocks","created_at":"2026-01-11T16:20:20.844989131-08:00","created_by":"dan"}]} {"id":"skills-x2l","title":"Investigate hooks for parallel orch queries","description":"When using orch skill, it would be useful to spin off multiple model queries in parallel automatically (e.g., gemini + gpt simultaneously). Explore if Claude Code hooks can trigger parallel background processes when the orch skill is invoked.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-06T19:29:00.165752425-08:00","updated_at":"2025-12-29T15:49:43.831970326-05:00","closed_at":"2025-12-29T15:49:43.831970326-05:00","close_reason":"Investigated. Hooks are synchronous with 60s timeout - unsuitable for background orch queries. Alternatives: (1) SessionStart hook for initial consensus, (2) Explicit skill invocation, (3) PostToolUse for validation. orch consensus already runs models in parallel internally."} {"id":"skills-x33","title":"Add tests for branch name generation","description":"File: .specify/scripts/bash/create-new-feature.sh (lines 137-181)\n\nCritical logic with NO test coverage:\n- Word filtering with stop-words\n- Acronym detection\n- Unicode/special character handling\n- Max length boundary (244 bytes)\n- Empty/single-word descriptions\n\nRisk: HIGH - affects all branch creation\n\nFix:\n- Create test suite with edge cases\n- Test stop-word filtering accuracy\n- Test boundary conditions\n\nSeverity: HIGH","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T02:51:00.311664646-05:00","updated_at":"2026-01-02T00:53:35.147800477-05:00","closed_at":"2026-01-02T00:53:35.147800477-05:00","close_reason":"Created test suite with 27 tests covering stop words, acronyms, word limits, special chars, unicode, edge cases, and fallback logic"} {"id":"skills-xcl","title":"Handle malformed JSON in poll() payload parsing","description":"[ERROR] HIGH db.nim:174 - parseJson() can raise on malformed payload, crashes entire poll(). Wrap in try/except, log warning, skip or set payload to none.","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-10T18:52:36.218439497-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.74037114-08:00","closed_at":"2026-01-10T20:37:04.74037114-08:00","close_reason":"Implemented consistent error handling strategy"} {"id":"skills-xgh0","title":"Add taskId context to parseState error propagation","description":"[ERROR] LOW state.nim:49,90,138,167 - parseState can raise ValueError without context. Catch and re-raise with taskId for debugging.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:49:55.572986746-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:25.462176005-08:00","closed_at":"2026-01-10T20:37:25.462176005-08:00","close_reason":"P4 low priority - stack trace provides context, error message is clear"} +{"id":"skills-y0p0","title":"Build scenario harness runner (scripted mode)","description":"Build the core harness that can:\n1. Load scenario definitions\n2. Set up isolated environment (temp git repo from fixture)\n3. Execute scripted agent actions\n4. Collect results\n\nStart with scripted mode - deterministic, fast, for integration testing.\nLive mode (real agents) comes later.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T16:19:45.197998259-08:00","created_by":"dan","updated_at":"2026-01-11T16:38:26.529958787-08:00","closed_at":"2026-01-11T16:38:26.529958787-08:00","close_reason":"Pausing - need to validate approach with simpler spike first","dependencies":[{"issue_id":"skills-y0p0","depends_on_id":"skills-ig7w","type":"blocks","created_at":"2026-01-11T16:20:20.575936533-08:00","created_by":"dan"}]} {"id":"skills-y3f2","title":"Agent commands fail when run from worktree (DB path issue)","description":"Agent commands (fail, done, heartbeat) are designed to run from worktrees but openBusDb() uses relative path .worker-state/bus.db which resolves relative to the worktree, not the main repo. Need to either: (1) store main repo path in context, (2) use git to find main worktree, or (3) use absolute paths.","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-11T00:22:52.854016416-08:00","created_by":"dan","updated_at":"2026-01-11T00:25:38.389318829-08:00","closed_at":"2026-01-11T00:25:38.389318829-08:00","close_reason":"Fixed: agent commands now use getMainRepoBusDbPath() to find the DB in the main repo when running from worktrees"} {"id":"skills-y76g","title":"Extract render() from status() proc in worker.nim","description":"[BLOAT] LOW worker.nim:49-119 - status() is 70 lines with nested render(). Extract render() to module level or split table formatting into helper.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:11.728628111-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.011202031-08:00","closed_at":"2026-01-11T15:46:39.011202031-08:00","close_reason":"Closed"} {"id":"skills-yak","title":"Design: Human observability (status command)","description":"Design: Human observability (status command)\n\nImplementation: Nim (table formatting, watch mode)\nDesign doc: docs/design/human-observability.md\n\nFeatures:\n- worker status - Dashboard table\n- worker show \u003cid\u003e - Detailed view\n- --watch mode - Refresh every 2s\n- --json output for scripting\n- Stale detection: 30s WARN, 100s STALE, 5m DEAD\n\nSee: skills-q40 for language decision","design":"docs/design/human-observability.md","notes":"Design complete. Kubectl/docker-style CLI observability. Commands: status (dashboard table), show (detail view), logs (message history), stats (metrics). Stale detection: 3x heartbeat=WARN, 10x=STALE. Watch mode with --watch. Color-coded states. MVP: status + show; defer logs/stats/TUI.","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T13:55:23.910743917-08:00","created_by":"dan","updated_at":"2026-01-10T21:29:25.675678164-08:00","closed_at":"2026-01-10T21:29:25.675678164-08:00","close_reason":"Implemented in worker CLI - spawn, status, state machine, branch isolation all working","dependencies":[{"issue_id":"skills-yak","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T13:55:23.912386443-08:00","created_by":"dan"}]} diff --git a/.beads/last-touched b/.beads/last-touched index 0c9da2a..68adbf8 100644 --- a/.beads/last-touched +++ b/.beads/last-touched @@ -1 +1 @@ -skills-8la4 +skills-s6y