diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 8545b9f..a22a892 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -1,4 +1,4 @@ -{"id":"skills-05ah","title":"Define error handling strategy and apply consistently","description":"Establish consistent error handling pattern:\n\n1. Define strategy:\n - Boundary operations wrap errors with context (file, taskId, operation)\n - Use existing exception types (GitError, DbError, etc.)\n - Log to stderr with consistent format: 'ERROR: {operation}: {message}'\n\n2. Apply to:\n - db.nim: poll() JSON parsing, openBusDb(), tryClaim()\n - git.nim: fetch failures, cleanup operations\n - context.nim: writeContext(), readContext()\n - state.nim: parseState() calls\n - heartbeat.nim: thread startup\n\nConsolidates: skills-xcl, skills-266, skills-8xv, skills-8vdo, skills-n6zf, skills-tdfm, skills-koes, skills-xgh0, skills-8bi, skills-2wjp, skills-3uv9\n\nParent: skills-g2wa","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-10T20:18:49.538009153-08:00","created_by":"dan","updated_at":"2026-01-10T20:18:49.538009153-08:00"} +{"id":"skills-05ah","title":"Define error handling strategy and apply consistently","description":"Establish consistent error handling pattern:\n\n1. Define strategy:\n - Boundary operations wrap errors with context (file, taskId, operation)\n - Use existing exception types (GitError, DbError, etc.)\n - Log to stderr with consistent format: 'ERROR: {operation}: {message}'\n\n2. Apply to:\n - db.nim: poll() JSON parsing, openBusDb(), tryClaim()\n - git.nim: fetch failures, cleanup operations\n - context.nim: writeContext(), readContext()\n - state.nim: parseState() calls\n - heartbeat.nim: thread startup\n\nConsolidates: skills-xcl, skills-266, skills-8xv, skills-8vdo, skills-n6zf, skills-tdfm, skills-koes, skills-xgh0, skills-8bi, skills-2wjp, skills-3uv9\n\nParent: skills-g2wa","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T20:18:49.538009153-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.729200121-08:00","closed_at":"2026-01-10T20:37:04.729200121-08:00","close_reason":"Implemented consistent error handling strategy"} {"id":"skills-0dxd","title":"Define StaleLevel enum instead of string returns","description":"[EVOLVE] LOW state.nim:225-241 - staleLevel() returns strings ('ok','WARN','STALE','DEAD') instead of enum. Define StaleLevel enum in types.nim for type safety.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:49:53.935566122-08:00","created_by":"dan","updated_at":"2026-01-10T19:49:53.935566122-08:00"} {"id":"skills-0f1","title":"Per-repo LSP profiles in Nix flakes","description":"Define language servers, versions, and settings pinned per repo in flake.nix.\n\nBenefits:\n- Claude Code LSP becomes deterministic across machines/CI\n- CI can run headless LSP diagnostics as first-class check\n- Ephemeral LS sandboxes for experimental refactors\n\nExample: pin rust-analyzer version per project to avoid skill breakage.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-24T02:29:57.353003052-05:00","updated_at":"2025-12-24T02:29:57.353003052-05:00","dependencies":[{"issue_id":"skills-0f1","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.696967182-05:00","created_by":"daemon"}]} {"id":"skills-0nl","title":"Update orch skill to match CLI v0.1.0","description":"The orch skill (in ~/.claude/skills/orch/) is out of sync with the orch CLI.\n\nNeeded updates:\n- Fix model aliases: gpt-5 → gpt-5.2, claude-opus-4.1 → claude-opus-4.5\n- Add new aliases: deepseek, r1, qwen, qwen-fast, glm, sonar, sonar-pro\n- Document --synthesize flag for response aggregation\n- Document stdin piping support\n- Document orch models command\n- Document orch sessions command\n- Add --websearch, --serial, --allow-expensive options\n\nReference: ~/proj/orch/README.md and src/orch/models_registry.py","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T21:11:46.294285184-05:00","updated_at":"2025-12-24T01:29:54.408882125-05:00","closed_at":"2025-12-24T01:29:54.408882125-05:00","close_reason":"Updated skill with current CLI features and model aliases"} @@ -16,10 +16,10 @@ {"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-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":"open","priority":2,"issue_type":"bug","created_at":"2026-01-10T18:50:53.753668466-08:00","created_by":"dan","updated_at":"2026-01-10T18:50:53.753668466-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-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":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:52:14.359878211-08:00","created_by":"dan","updated_at":"2026-01-10T19:52:14.359878211-08:00"} +{"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":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T18:50:53.896053988-08:00","created_by":"dan","updated_at":"2026-01-10T18:50:53.896053988-08:00"} {"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":"{}"}]} {"id":"skills-31y","title":"Design: Review funnel with arbiter agent","description":"Solve review bottleneck footgun (10 agents = 10 PRs to reconcile). Add arbiter/synthesis step: workers → arbiter agent (dedupes, resolves conflicts) → single synthesized PR → human review. Pre-review by lint/style agents so humans see substantive deltas only. From HN discussions on parallel agents.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T15:41:00.232426243-08:00","created_by":"dan","updated_at":"2026-01-10T15:41:00.232426243-08:00","dependencies":[{"issue_id":"skills-31y","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.233443613-08:00","created_by":"dan"}]} @@ -29,7 +29,7 @@ {"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-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":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:52:14.792134512-08:00","created_by":"dan","updated_at":"2026-01-10T19:52:14.792134512-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"} {"id":"skills-4a2","title":"Design: Role boundaries with tool constraints","description":"Prevent role collapse footgun (planner writing code, tester refactoring). Implement tool-level constraints per agent type: some agents read-only, some propose patches only, only orchestrator commits. Reject outputs that violate role boundaries. From orch consensus and HN practitioner feedback.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T15:41:00.12208959-08:00","created_by":"dan","updated_at":"2026-01-10T15:41:00.12208959-08:00","dependencies":[{"issue_id":"skills-4a2","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.123172375-08:00","created_by":"dan"}]} {"id":"skills-4fe","title":"Reframe: Epic around abstract layers (not tools)","description":"Reframe skills-hf1 epic around concepts, not implementations.\n\n## Abstract Layers\n\n| Layer | Concept | Purpose |\n|-------|---------|---------|\n| **Message Passing** | Async agent coordination | Session handoffs, status updates |\n| **Memory** | Persistent work items | Issues, dependencies, review state |\n| **Enforcement** | Quality gates | Block completion until approved |\n\n## Current Problem\nEpic references specific tools (jwz, beads, hooks) rather than concepts.\nMakes it hard to swap implementations.\n\n## Proposed Changes\n1. Update epic description with layer abstractions\n2. Define interface requirements for each layer\n3. Note current implementations as examples, not requirements\n\n## Deliverable\nUpdated epic with tool-agnostic framing","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T19:32:57.483804644-08:00","created_by":"dan","updated_at":"2026-01-09T19:34:10.530947162-08:00","closed_at":"2026-01-09T19:34:10.530947162-08:00","close_reason":"Epic skills-hf1 reframed around abstract layers"} {"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":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T13:55:23.733457598-08:00","created_by":"dan","updated_at":"2026-01-10T18:04:30.498207185-08:00","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"}]} @@ -59,7 +59,7 @@ {"id":"skills-7sh","title":"Set up bd-issue-tracking Claude Code skill from beads repo","description":"Install the beads Claude Code skill from https://github.com/steveyegge/beads/tree/main/examples/claude-code-skill\n\nThis skill teaches Claude how to effectively use beads for issue tracking across multi-session coding workflows. It provides strategic guidance on when/how to use beads, not just command syntax.\n\nFiles to install to ~/.claude/skills/bd-issue-tracking/:\n- SKILL.md - Core workflow patterns and decision criteria\n- BOUNDARIES.md - When to use beads vs markdown alternatives\n- CLI_REFERENCE.md - Complete command documentation\n- DEPENDENCIES.md - Relationship types and patterns\n- WORKFLOWS.md - Step-by-step procedures\n- ISSUE_CREATION.md - Quality guidelines\n- RESUMABILITY.md - Making work resumable across sessions\n- STATIC_DATA.md - Using beads as reference databases\n\nCan symlink or copy the files. Restart Claude Code after install.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T17:53:43.254007992-08:00","updated_at":"2025-12-03T20:04:53.416579381-08:00","closed_at":"2025-12-03T20:04:53.416579381-08:00"} {"id":"skills-827e","title":"Verify getBranchStatus() usage or remove","description":"[DEAD] LOW git.nim:130-143 - getBranchStatus() may be unused. Verify usage across codebase, delete if unused.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:52:14.081128399-08:00","created_by":"dan","updated_at":"2026-01-10T19:52:14.081128399-08:00"} {"id":"skills-8ak","title":"Evaluate: Git bundle checkpoints (SkillFS pattern)","description":"SkillFS pattern: every agent sandbox is a git repo. Session ends → git bundle stored. New session → restore from bundle, continue where left off. Provides: persistence across sessions, full audit trail via git log, crash recovery. Evaluate if this fits our architecture or if worktrees are sufficient. See github.com/mupt-ai/skillfs","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T15:41:00.52226419-08:00","created_by":"dan","updated_at":"2026-01-10T15:41:00.52226419-08:00","dependencies":[{"issue_id":"skills-8ak","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T15:41:00.523166841-08:00","created_by":"dan"}]} -{"id":"skills-8bi","title":"Add error context to createDir/openDatabase in openBusDb","description":"[ERROR] LOW db.nim:97-98 - createDir and openDatabase can fail with unclear exceptions. Consider wrapping with context for permission errors, disk full, etc.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T18:52:42.971958929-08:00","created_by":"dan","updated_at":"2026-01-10T18:52:42.971958929-08:00"} +{"id":"skills-8bi","title":"Add error context to createDir/openDatabase in openBusDb","description":"[ERROR] LOW db.nim:97-98 - createDir and openDatabase can fail with unclear exceptions. Consider wrapping with context for permission errors, disk full, etc.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T18:52:42.971958929-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.757710493-08:00","closed_at":"2026-01-10T20:37:04.757710493-08:00","close_reason":"Implemented consistent error handling strategy"} {"id":"skills-8cc","title":"Remove dead code: unused ARGS variable","description":"File: .specify/scripts/bash/create-new-feature.sh\n\nLine 8: ARGS=() declared but never used\nLine 251: export SPECIFY_FEATURE - unclear if used downstream\n\nFix:\n- Remove unused ARGS declaration\n- Verify SPECIFY_FEATURE is used or remove\n\nSeverity: LOW","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-24T02:50:59.332192076-05:00","updated_at":"2025-12-29T18:38:03.48883384-05:00","closed_at":"2025-12-29T18:38:03.48883384-05:00","close_reason":"Invalid: ARGS is used (line 58, 64). SPECIFY_FEATURE is used by common.sh for feature detection. No dead code."} {"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."} @@ -69,8 +69,8 @@ {"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"} {"id":"skills-8sj","title":"Design: Cross-agent enforcement architecture","description":"Unified design for cross-agent quality gates and coordination.\n\nConsolidates: skills-3gk, skills-3ja, skills-thk, skills-6fu\n\n## Abstract Layers\n\n### 1. Message Passing Layer\n- **Purpose:** Async agent coordination, session handoffs\n- **Interface:** post(topic, message), read(topic), reply(id, message)\n- **Requirements:** Append-only, git-mergeable, agent-attributed\n\n### 2. Memory Layer \n- **Purpose:** Persistent work items, review state\n- **Interface:** create(issue), update(id, state), query(filters)\n- **Requirements:** Cross-session, dependency tracking, searchable\n\n### 3. Enforcement Layer\n- **Purpose:** Quality gates, completion blocking\n- **Interface:** check_gate(session) -\u003e allow/block, register_reviewer(session)\n\n## Enforcement Strategies\n\n| Agent | Mechanism | Strength |\n|-------|-----------|----------|\n| Claude Code | Stop hook | Mechanical |\n| Gemini CLI | Stop hook | Mechanical |\n| OpenCode | Orchestrator | Protocol |\n| Codex | Orchestrator | Protocol |\n| Any | Wrapper script | External |\n\n## State Schema\n\n```\nreview_state:\n session_id: string\n status: pending | in_review | approved | rejected\n worker_agent: string\n reviewer_agent: string\n issues_found: [issue_ids]\n approved_at: timestamp\n```\n\n## Circuit Breakers\n- Semantic drift detection\n- Three-strike tool failures \n- Budget/time limits\n\n## Deliverables\n1. Architecture diagram\n2. Interface definitions\n3. State schema\n4. Hook configuration templates\n5. Orchestrator flow pseudocode","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T19:33:31.801684987-08:00","created_by":"dan","updated_at":"2026-01-09T19:59:37.977910231-08:00","closed_at":"2026-01-09T19:59:37.977910231-08:00","close_reason":"Architecture design complete: docs/design/cross-agent-enforcement-architecture.md"} {"id":"skills-8v0","title":"Consolidate skill list definitions (flake.nix + ai-skills.nix)","description":"Skill list duplicated in:\n- flake.nix (lines 15-27)\n- modules/ai-skills.nix (lines 8-18)\n\nIssues:\n- Manual sync required when adding skills\n- No validation that referenced skills exist\n\nFix:\n- Single source of truth for skill list\n- Consider generating one from the other\n\nSeverity: MEDIUM","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-24T02:51:14.432158871-05:00","updated_at":"2026-01-03T12:06:23.731969973-08:00","closed_at":"2026-01-03T12:06:23.731969973-08:00","close_reason":"Created skills.nix as single source of truth for skill names and descriptions. Updated flake.nix and Home Manager module to use it."} -{"id":"skills-8vdo","title":"Handle or log fetch failure in createWorktree","description":"[ERROR] MED git.nim:40 - Fetch failure silently ignored before creating worktree. If fetch fails, branch may be stale. Log warning on fetch failure, or use runGitCheck if required.","status":"open","priority":2,"issue_type":"bug","created_at":"2026-01-10T19:52:13.676498678-08:00","created_by":"dan","updated_at":"2026-01-10T19:52:13.676498678-08:00"} -{"id":"skills-8xv","title":"Log errors in tryClaim before silent rollback","description":"[ERROR] MED db.nim:243-245 - tryClaim catches CatchableError and silently returns false. Can't distinguish 'already claimed' from 'DB error'. Log exception before rollback.","status":"open","priority":2,"issue_type":"bug","created_at":"2026-01-10T18:52:37.323937187-08:00","created_by":"dan","updated_at":"2026-01-10T18:52:37.323937187-08:00"} +{"id":"skills-8vdo","title":"Handle or log fetch failure in createWorktree","description":"[ERROR] MED git.nim:40 - Fetch failure silently ignored before creating worktree. If fetch fails, branch may be stale. Log warning on fetch failure, or use runGitCheck if required.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T19:52:13.676498678-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.747625244-08:00","closed_at":"2026-01-10T20:37:04.747625244-08:00","close_reason":"Implemented consistent error handling strategy"} +{"id":"skills-8xv","title":"Log errors in tryClaim before silent rollback","description":"[ERROR] MED db.nim:243-245 - tryClaim catches CatchableError and silently returns false. Can't distinguish 'already claimed' from 'DB error'. Log exception before rollback.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T18:52:37.323937187-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.745229052-08:00","closed_at":"2026-01-10T20:37:04.745229052-08:00","close_reason":"Implemented consistent error handling strategy"} {"id":"skills-8y6","title":"Define skill versioning strategy","description":"Git SHA alone is insufficient. Need tuple approach:\n\n- skill_source_rev: git SHA (if available)\n- skill_content_hash: hash of SKILL.md + scripts\n- runtime_ref: flake.lock hash or Nix store path\n\nQuestions to resolve:\n- Do Protos pin to versions (stable but maintenance) or float on latest (risky)?\n- How to handle breaking changes in skills?\n- Record in wisp trace vs proto definition?\n\nFrom consensus: both models flagged versioning instability as high severity.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:49:30.839064445-05:00","updated_at":"2025-12-23T20:55:04.439779336-05:00","closed_at":"2025-12-23T20:55:04.439779336-05:00","close_reason":"ADRs revised with orch consensus feedback"} {"id":"skills-9af","title":"spec-review: Add spike/research task handling","description":"Tasks like 'Investigate X' can linger without clear outcomes.\n\nAdd to REVIEW_TASKS:\n- Flag research/spike tasks\n- Require timebox and concrete outputs (decision record, prototype, risks)\n- Pattern for handling unknowns","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-15T00:23:26.887719136-08:00","updated_at":"2025-12-15T14:08:13.441095034-08:00","closed_at":"2025-12-15T14:08:13.441095034-08:00"} {"id":"skills-9bc","title":"Investigate pre-compression hook for worklogs","description":"## Revised Understanding\n\nClaude Code already persists full conversation history in `~/.claude/projects/\u003cproject\u003e/\u003csession-id\u003e.jsonl`. Pre-compact hooks aren't needed for data capture.\n\n## Question\nWhat's the ideal workflow for generating worklogs from session data?\n\n## Options\n\n### 1. Post-session script\n- Run after exiting Claude Code\n- Reads most recent session JSONL\n- Generates worklog from conversation content\n- Pro: Async, doesn't interrupt flow\n- Con: May forget to run it\n\n### 2. On-demand slash command\n- `/worklog-from-session` or similar\n- Reads current session's JSONL file\n- Generates worklog with full context\n- Pro: Explicit control\n- Con: Still need to remember\n\n### 3. Pre-compact reminder\n- Hook prints reminder: \"Consider running /worklog\"\n- Doesn't automate, just nudges\n- Pro: Simple, non-intrusive\n- Con: Easy to dismiss\n\n### 4. Async batch processing\n- Process old sessions whenever\n- All data persists in JSONL files\n- Pro: No urgency, can do later\n- Con: Context may be stale\n\n## Data Format\nSession files contain:\n- User messages with timestamp\n- Assistant responses with model info\n- Tool calls and results\n- Git branch, cwd, version info\n\n## Next Steps\n- Decide preferred workflow\n- Build script to parse session JSONL → worklog format","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-17T14:32:32.568430817-08:00","updated_at":"2025-12-17T15:56:38.864916015-08:00","closed_at":"2025-12-17T15:56:38.864916015-08:00","close_reason":"Pivoted: worklogs may be redundant given full conversation persistence. New approach: make conversations searchable directly."} @@ -154,7 +154,7 @@ {"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"}]} {"id":"skills-kg7","title":"Desktop automation for Wayland/niri","description":"Explore and implement desktop automation solutions for Wayland (niri compositor).\n\n## The Seeing Problem\n\nHow can an AI agent understand what's on screen?\n\n### Layers (bottom to top)\n1. **Window awareness** - what's open, app_id, title → niri IPC ✅\n2. **Window geometry** - size, position, monitor → niri IPC ✅\n3. **Pixel capture** - screenshots → niri screenshot-window ✅\n4. **Understanding** - UI elements, coordinates, semantics → **GAP**\n\n### Two paths to understanding (layer 4)\n\n**Path A: AT-SPI (structured)**\n- Pros: precise coordinates, semantic element types, states\n- Cons: runtime overhead, requires NixOS config, app compliance varies\n- Coverage: GTK ✅, Qt (with env var), Electron ❓\n\n**Path B: Vision model (visual)**\n- Pros: universal (works on any pixels), no system config needed\n- Cons: API latency, token cost, coordinate precision unclear\n- Coverage: anything visible ✅\n\n### Hybrid approach\nRun both, benchmark tradeoffs:\n- AT-SPI overhead vs query precision\n- Vision model latency/cost vs coverage\n- When to use which (or both for validation)\n\n## What we have\n- niri-window-capture skill (screenshots, window list)\n- niri IPC for window/monitor geometry\n\n## Context\nWayland's security model blocks X11-style automation. Solutions require:\n- Compositor-specific IPC (niri msg)\n- App opt-in via AT-SPI accessibility\n- Or vision model interpretation of pixels","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-17T12:42:17.863074501-08:00","updated_at":"2025-12-17T14:12:59.143207802-08:00","dependencies":[{"issue_id":"skills-kg7","depends_on_id":"skills-pdg","type":"blocks","created_at":"2025-12-17T13:59:59.915105471-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-ebl","type":"blocks","created_at":"2025-12-17T14:13:41.679692009-08:00","created_by":"daemon","metadata":"{}"},{"issue_id":"skills-kg7","depends_on_id":"skills-bww","type":"blocks","created_at":"2025-12-17T14:13:41.725196677-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"skills-kmj","title":"Orch skill: document or handle orch not in PATH","description":"Skill docs show 'orch consensus' but orch requires 'uv run' from ~/proj/orch. Either update skill to invoke correctly or document installation requirement.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-01T17:29:48.844997238-08:00","updated_at":"2025-12-01T18:28:11.374048504-08:00","closed_at":"2025-12-01T18:28:11.374048504-08:00"} -{"id":"skills-koes","title":"Add file path context to JSON parse errors in context.nim","description":"[ERROR] LOW context.nim:22-23 - parseJson/fromJson errors don't include file path. Wrap with try/except adding: 'Failed to parse context file {path}'","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.902733605-08:00","created_by":"dan","updated_at":"2026-01-10T20:10:03.902733605-08:00"} +{"id":"skills-koes","title":"Add file path context to JSON parse errors in context.nim","description":"[ERROR] LOW context.nim:22-23 - parseJson/fromJson errors don't include file path. Wrap with try/except adding: 'Failed to parse context file {path}'","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:10:03.902733605-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.754197256-08:00","closed_at":"2026-01-10T20:37:04.754197256-08:00","close_reason":"Implemented consistent error handling strategy"} {"id":"skills-kvdl","title":"Remove unused globalChannel variable in heartbeat.nim","description":"[DEAD] LOW heartbeat.nim:37 - globalChannel declared but never used. Compiler warns about this. Delete unused variable.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:45.125528634-08:00","created_by":"dan","updated_at":"2026-01-10T20:24:43.733773826-08:00","closed_at":"2026-01-10T20:24:43.733773826-08:00","close_reason":"Fixed: removed unused globalChannel in heartbeat.nim rewrite"} {"id":"skills-le9","title":"beads new --from-cursor: capture symbol context","description":"When creating a bead, auto-capture LSP context:\n- Current symbol FQN (fully qualified name)\n- Definition snippet\n- Top 10 references/callers\n- Current diagnostics for the symbol\n\nMakes beads self-contained without copy/paste archaeology. Symbol URI allows jumping back to exact location even if file moved.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-24T02:29:55.989876856-05:00","updated_at":"2025-12-24T02:29:55.989876856-05:00","dependencies":[{"issue_id":"skills-le9","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.416484732-05:00","created_by":"daemon"}]} {"id":"skills-lie","title":"Compare DEPENDENCIES.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:53.925914243-08:00","updated_at":"2025-12-03T20:19:28.665641809-08:00","closed_at":"2025-12-03T20:19:28.665641809-08:00","dependencies":[{"issue_id":"skills-lie","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:53.9275694-08:00","created_by":"daemon","metadata":"{}"}]} @@ -192,7 +192,7 @@ {"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"} {"id":"skills-sse","title":"Design: worker spawn/status primitives","description":"Design: worker spawn/status primitives\n\nImplementation: Nim (cligen, tiny_sqlite)\nDesign doc: docs/design/worker-cli-primitives.md (v3)\n\nCommands:\n- worker spawn \u003ctask-id\u003e - Create workspace\n- worker status [--watch] - Dashboard\n- worker start/done - Agent signals\n- worker approve/request-changes - Review\n- worker merge - Complete cycle\n- worker cancel - Abort\n\nSee: skills-q40 for language decision","design":"docs/design/worker-cli-primitives.md","notes":"Design complete. Consensus from 4 models (gemini, gpt, qwen, sonar): (1) spawn prepares workspace only, doesn't start agent, (2) Python CLI, (3) all commands idempotent, (4) Worker ID = Task ID, (5) SQLite as state truth. Commands: spawn/status/merge (human), start/done/heartbeat (agent). Local .worker-ctx.json for context discovery. Hybrid approach for heartbeats.","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-10T12:14:33.115131833-08:00","created_by":"dan","updated_at":"2026-01-10T18:04:23.946574441-08:00","dependencies":[{"issue_id":"skills-sse","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.014285119-08:00","created_by":"dan"}]} {"id":"skills-t9ub","title":"Clean up dead code and unused imports","description":"Quick cleanup pass:\n\n- skills-5ax: Remove unused strformat, strutils imports in db.nim\n- skills-kvdl: Remove unused globalChannel in heartbeat.nim\n- skills-ib9u: Remove unused times import in heartbeat.nim\n- skills-fdu: Verify BusJsonlPath, BlobsDir, WorkersDir usage, delete if unused\n- skills-ghlb: Remove unused 'by' parameter from approve()\n\nParent: skills-g2wa","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T20:18:50.017642793-08:00","created_by":"dan","updated_at":"2026-01-10T20:18:50.017642793-08:00"} -{"id":"skills-tdfm","title":"Add error handling to writeContext for file write failures","description":"[ERROR] MED context.nim:11 - writeFile can fail (permissions, disk full) with no handling. Wrap in try/except with context: 'Failed to write context to {path}: {error}'","status":"open","priority":2,"issue_type":"bug","created_at":"2026-01-10T20:10:03.523837508-08:00","created_by":"dan","updated_at":"2026-01-10T20:10:03.523837508-08:00"} +{"id":"skills-tdfm","title":"Add error handling to writeContext for file write failures","description":"[ERROR] MED context.nim:11 - writeFile can fail (permissions, disk full) with no handling. Wrap in try/except with context: 'Failed to write context to {path}: {error}'","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T20:10:03.523837508-08:00","created_by":"dan","updated_at":"2026-01-10T20:37:04.75187149-08:00","closed_at":"2026-01-10T20:37:04.75187149-08:00","close_reason":"Implemented consistent error handling strategy"} {"id":"skills-thk","title":"Design: Hybrid hook + gate architecture","description":"Design enforcement that uses hooks where available, orchestrator gates elsewhere.\n\n## Hook-Capable Agents (Claude, Gemini)\n- Stop hook checks beads for review status\n- Mechanical enforcement - agent can't bypass\n\n## Non-Hook Agents (OpenCode, Codex) \n- Orchestrator pattern enforces gate\n- Orchestrator checks beads before declaring done\n- Worker can't bypass because doesn't control session\n\n## Shared Components\n- beads: persistent state (issues, review status)\n- jwz: transient state (session messages, async handoffs)\n- review-gate CLI: checks state, returns exit code\n\n## Deliverable\nArchitecture doc showing:\n1. Hook configuration for Claude/Gemini\n2. Orchestrator flow for OpenCode/Codex\n3. State schema in beads\n4. review-gate CLI design","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T19:01:24.270855877-08:00","created_by":"dan","updated_at":"2026-01-09T19:33:36.705975116-08:00","closed_at":"2026-01-09T19:33:36.705975116-08:00","close_reason":"Consolidated into skills-8sj"} {"id":"skills-tta","title":"Design: Circuit breaker patterns","description":"Design circuit breakers to prevent agent infinite loops.\n\n## Patterns to Implement\n\n### Semantic Drift Detection\n- Embed last N agent thoughts\n- If \u003e95% similar, inject \"try different approach\"\n- Use cheap embedding model\n\n### Three-Strike Tool Rule \n- Track tool call signatures (tool + args + error)\n- 3 identical failures → force strategy shift\n- Implement in PostToolUse hook\n\n### Budget-Based Interrupts\n- Allocate token budget per sub-task\n- Pause if \u003e50% budget used with \u003c30% progress\n- Request plan refinement\n\n### Time-Based Breaker\n- Timeout per task type\n- Escalate to review if exceeded\n\n## Implementation Options\n- Hook-based (Claude/Gemini)\n- Wrapper-based (all agents)\n- Orchestrator-enforced (all agents)\n\n## Deliverable\n- Circuit breaker design doc\n- Prototype implementation for one pattern","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T19:01:44.536499408-08:00","created_by":"dan","updated_at":"2026-01-09T19:59:37.700476328-08:00","closed_at":"2026-01-09T19:59:37.700476328-08:00","close_reason":"Covered in architecture design doc (docs/design/cross-agent-enforcement-architecture.md)"} {"id":"skills-ty7","title":"Define trace levels (audit vs debug)","description":"Two trace levels to manage noise vs utility:\n\n1. Audit trace (minimal, safe, always on):\n - skill id/ref, start/end\n - high-level checkpoints\n - artifact hashes/paths\n - exit status\n\n2. Debug trace (opt-in, verbose):\n - tool calls with args\n - stdout/stderr snippets\n - expanded inputs\n - timing details\n\nConsider OpenTelemetry span model as reference.\nGPT proposed this; Gemini focused on rotation/caps instead.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T19:49:48.514684945-05:00","updated_at":"2025-12-29T13:55:35.838961236-05:00","closed_at":"2025-12-29T13:55:35.838961236-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."} @@ -209,8 +209,8 @@ {"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-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":"open","priority":1,"issue_type":"bug","created_at":"2026-01-10T18:52:36.218439497-08:00","created_by":"dan","updated_at":"2026-01-10T18:52:36.218439497-08:00"} -{"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":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:49:55.572986746-08:00","created_by":"dan","updated_at":"2026-01-10T19:49:55.572986746-08:00"} +{"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-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":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:11.728628111-08:00","created_by":"dan","updated_at":"2026-01-10T20:12:11.728628111-08:00"} {"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":"open","priority":1,"issue_type":"task","created_at":"2026-01-10T13:55:23.910743917-08:00","created_by":"dan","updated_at":"2026-01-10T18:04:36.190171215-08:00","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"}]} {"id":"skills-ybq","title":"Reorganize lens directory structure","description":"Current structure puts ops lenses as subdirectory of code-review lenses:\n\n```\n~/.config/lenses/ \u003c- code-review lenses\n~/.config/lenses/ops/ \u003c- ops-review lenses\n```\n\nThis is asymmetric. Consider:\n\nOption A: Separate top-level directories\n```\n~/.config/lenses/code-review/\n~/.config/lenses/ops-review/\n```\n\nOption B: Keep flat but with prefixes\n```\n~/.config/lenses/code-*.md\n~/.config/lenses/ops-*.md\n```\n\nOption C: Per-skill lens directories\n```\n~/.claude/skills/code-review/lenses/\n~/.claude/skills/ops-review/lenses/\n```\n\nRequires updating:\n- modules/ai-skills.nix (deployment paths)\n- skills/code-review/SKILL.md (expected paths)\n- skills/ops-review/SKILL.md (expected paths)","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-01T21:57:06.726997606-05:00","created_by":"dan","updated_at":"2026-01-02T00:24:53.647409845-05:00","closed_at":"2026-01-02T00:24:53.647409845-05:00","close_reason":"Reorganized lens directories: code-review → ~/.config/lenses/code/, ops-review → ~/.config/lenses/ops/. Updated ai-skills.nix, SKILL.md, and README references."} diff --git a/.beads/last-touched b/.beads/last-touched index 0c66c86..844b025 100644 --- a/.beads/last-touched +++ b/.beads/last-touched @@ -1 +1 @@ -skills-lzh2 +skills-xgh0