diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 55911c7..71ccbd1 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -57,7 +57,7 @@ {"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":"{}"}]} {"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-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":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T19:52:14.081128399-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.036708173-08:00","closed_at":"2026-01-11T15:46:39.036708173-08:00","close_reason":"Closed"} {"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":"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."} @@ -94,7 +94,7 @@ {"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-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":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:11.408603257-08:00","created_by":"dan","updated_at":"2026-01-10T20:12:11.408603257-08:00"} +{"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":"{}"}]} {"id":"skills-be3","title":"Define trace security and redaction policy","description":"Wisps will leak secrets without explicit policy.\n\nRequired:\n- Default-deny for env vars (allowlist: PROJECT, USER, etc.)\n- Redaction rules for sensitive fields\n- No file contents by default\n- Classification field: internal|secret|public\n\nImplementation:\n- redact: [\"env.AWS_SECRET_ACCESS_KEY\", \"inputs.token\"]\n- Sanitization before writing to disk\n- Block elevation if classification=secret\n\nFrom consensus: both models flagged as medium-high severity.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:49:31.041661947-05:00","updated_at":"2025-12-23T20:55:04.446363188-05:00","closed_at":"2025-12-23T20:55:04.446363188-05:00","close_reason":"ADRs revised with orch consensus feedback"} {"id":"skills-bk7x","title":"Replace manual alloc0/dealloc with ref HeartbeatThread","description":"[SMELL] HIGH heartbeat.nim:70,100 - Uses alloc0/dealloc for HeartbeatThread instead of GC-managed ref. Risk of memory leak if startup fails, use-after-free if caller holds reference after stop. Use 'ref HeartbeatThread' instead.","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-10T19:54:44.640656148-08:00","created_by":"dan","updated_at":"2026-01-10T20:24:36.575379874-08:00","closed_at":"2026-01-10T20:24:36.575379874-08:00","close_reason":"Fixed: HeartbeatThread now uses ref object with GC management instead of manual alloc/dealloc"} @@ -120,7 +120,7 @@ {"id":"skills-ebh","title":"Compare bd-issue-tracking skill files with upstream","description":"Fetch upstream beads skill files and compare with our condensed versions to identify differences","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:14:07.886535859-08:00","updated_at":"2025-12-03T20:19:37.579815337-08:00","closed_at":"2025-12-03T20:19:37.579815337-08:00"} {"id":"skills-ebl","title":"Benchmark vision model UI understanding","description":"## Goal\nMeasure how well vision models can answer UI questions from screenshots.\n\n## Test cases\n1. **Element location**: \"Where is the Save button?\" → coordinates\n2. **Element identification**: \"What buttons are visible?\" → list\n3. **State detection**: \"Is the checkbox checked?\" → boolean\n4. **Text extraction**: \"What does the error message say?\" → text\n5. **Layout understanding**: \"What's in the sidebar?\" → structure\n\n## Metrics\n- Accuracy: Does the answer match ground truth?\n- Precision: How close are coordinates to actual element centers?\n- Latency: Time from query to response\n- Cost: Tokens consumed per query\n\n## Prompt engineering questions\n- Does adding a grid overlay help coordinate precision?\n- What prompt format gives most actionable coordinates?\n- Can we get bounding boxes vs point coordinates?\n\n## Comparison baseline\n- Manual annotation of test screenshots\n- AT-SPI data (once enabled) as ground truth\n\n## Depends on\n- Test screenshots from real apps\n- Ground truth annotations","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-17T14:13:10.038933798-08:00","updated_at":"2025-12-29T15:26:19.822655148-05:00","closed_at":"2025-12-29T15:26:19.822655148-05:00","close_reason":"Benchmark complete. Vision models excellent for semantic understanding, approximate for coordinates. Recommend hybrid AT-SPI + vision. See docs/research/vision-ui-benchmark-2025-12-29.md"} {"id":"skills-f2p","title":"Skills + Molecules Integration","description":"Integrate skills with beads molecules system.\n\nDesign work tracked in dotfiles (dotfiles-jjb).\n\nComponents:\n- Checklist support (lightweight skills)\n- Audit integration (bd audit for skill execution)\n- Skill frontmatter for triggers/tracking\n- Proto packaging alongside skills\n\nSee: ~/proj/dotfiles ADR work","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-23T17:58:55.999438985-05:00","updated_at":"2025-12-23T19:22:38.577280129-05:00","closed_at":"2025-12-23T19:22:38.577280129-05:00","close_reason":"Superseded by skills-4u0 (migrated from dotfiles)","dependencies":[{"issue_id":"skills-f2p","depends_on_id":"skills-vpy","type":"blocks","created_at":"2025-12-23T17:59:17.976956454-05:00","created_by":"daemon"},{"issue_id":"skills-f2p","depends_on_id":"skills-u3d","type":"blocks","created_at":"2025-12-23T17:59:18.015216054-05:00","created_by":"daemon"}]} -{"id":"skills-f8yd","title":"Extract column width constants for status table","description":"[EVOLVE] LOW worker.nim:84,104-108 - Column widths hardcoded (14,12,8,12,8). Extract to constants or compute dynamically.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:12.129638606-08:00","created_by":"dan","updated_at":"2026-01-10T20:12:12.129638606-08:00"} +{"id":"skills-f8yd","title":"Extract column width constants for status table","description":"[EVOLVE] LOW worker.nim:84,104-108 - Column widths hardcoded (14,12,8,12,8). Extract to constants or compute dynamically.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T20:12:12.129638606-08:00","created_by":"dan","updated_at":"2026-01-11T15:46:39.019717619-08:00","closed_at":"2026-01-11T15:46:39.019717619-08:00","close_reason":"Closed"} {"id":"skills-fdu","title":"Verify usage of BusJsonlPath, BlobsDir, WorkersDir constants","description":"[DEAD] LOW - Constants defined in types.nim:64-66 but may be unused. Verify usage in db.nim/state.nim, delete if unused.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T18:50:54.020137275-08:00","created_by":"dan","updated_at":"2026-01-10T20:41:09.695978483-08:00","closed_at":"2026-01-10T20:41:09.695978483-08:00","close_reason":"Dead code cleanup complete"} {"id":"skills-fo3","title":"Compare WORKFLOWS.md with upstream","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-03T20:15:54.283175561-08:00","updated_at":"2025-12-03T20:19:28.897037199-08:00","closed_at":"2025-12-03T20:19:28.897037199-08:00","dependencies":[{"issue_id":"skills-fo3","depends_on_id":"skills-ebh","type":"discovered-from","created_at":"2025-12-03T20:15:54.286009672-08:00","created_by":"daemon","metadata":"{}"}]} {"id":"skills-fqu","title":"Research: Agent capability matrix","description":"Document what each agent can and cannot do for cross-agent design decisions.\n\nAgents to cover:\n- Claude Code (claude CLI)\n- Gemini (gemini CLI / AI Studio)\n- OpenCode\n- Codex (OpenAI)\n\nCapabilities to assess:\n- Hooks / lifecycle events\n- Subagent spawning\n- File system access (paths, restrictions)\n- CLI tool execution\n- State persistence\n- Context window / memory\n\nOutput: Matrix showing capability parity and gaps","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T17:14:20.541961958-08:00","created_by":"dan","updated_at":"2026-01-09T17:32:23.730556916-08:00","closed_at":"2026-01-09T17:32:23.730556916-08:00","close_reason":"Capability matrix complete: docs/research/agent-capability-matrix.md"} @@ -145,7 +145,7 @@ {"id":"skills-hh2","title":"skill: rename_symbol with LSP + validation","description":"Skill that performs safe renames:\n1. Uses LSP textDocument/rename\n2. Runs formatters\n3. Checks LSP diagnostics post-rename\n4. Opens bead if errors remain\n5. Updates doc references using hover/signatureHelp\n\nInput: new name, scope. Output: clean rename or bead with issues.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-24T02:29:56.87156069-05:00","updated_at":"2025-12-24T02:29:56.87156069-05:00","dependencies":[{"issue_id":"skills-hh2","depends_on_id":"skills-gga","type":"blocks","created_at":"2025-12-24T02:30:06.583813579-05:00","created_by":"daemon"}]} {"id":"skills-hhz","title":"Add doc-review skill","description":"Create skill for doc-review CLI tool (~/proj/doc-review). Tool lints markdown docs for AI agent consumption using Vale + LLM hybrid architecture. Needs: 1) flake.nix in doc-review project, 2) skill SKILL.md, 3) register in availableSkills","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T11:24:41.321478346-05:00","created_by":"dan","updated_at":"2025-12-31T00:00:30.74314365-05:00","closed_at":"2025-12-31T00:00:30.74314365-05:00","close_reason":"doc-review skill created in skills/doc-review/SKILL.md"} {"id":"skills-hin","title":"ADR: Skills and Molecules Integration Design","description":"Write Architecture Decision Record documenting:\n- Current state (skills via Nix/direnv, molecules via beads)\n- Decision to link via skill: references\n- Wisp trace format spec\n- Elevation pipeline design\n- Anti-patterns to avoid\n\nLocation: docs/adr/001-skills-molecules-integration.md\n\nMigrated from dotfiles-dn8 (was in_progress).\n\n## Current State\n- ADR-001 drafted (high-level integration)\n- ADR-002, 003, 004 drafted and revised (manifest, versioning, security)\n- Orch consensus feedback incorporated\n\n## Parked\nDeferring finalization until we see Steve Yegge's new orchestration work and how it might inform our design.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T19:20:47.568903148-05:00","updated_at":"2025-12-28T23:27:42.117722575-05:00","closed_at":"2025-12-28T23:27:42.117722575-05:00","close_reason":"Parked: ADR updated to 'Parked' status. Current simpler approach (skills as standalone, agent judgment) works well. Molecules not actively used. Revisit when orchestration needs grow."} -{"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":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T19:54:46.122435219-08:00","created_by":"dan","updated_at":"2026-01-10T19:54:46.122435219-08:00"} +{"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-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"} @@ -214,7 +214,7 @@ {"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-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":"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-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"}]} {"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."} {"id":"skills-yc6","title":"Research: Document brainstorm findings","description":"Capture research findings in docs/research/ or docs/design/.\n\n## Sources to document\n1. orch consensus on permission patterns (sonar, gemini)\n2. orch brainstorm on creative patterns (flash-or, qwen, gpt, gemini)\n3. Gastown architecture analysis\n4. Steve Yegge Larry Wall/Perl critique (Lego vs pirate ships)\n5. LangGraph breakpoints pattern\n6. MetaGPT software company pattern\n7. Claude Code permission-based gating\n\n## Key patterns to document\n- Negative permission (exclusion-based)\n- Evidence artifacts (structured handoff)\n- Rubber Duck interrupt (stuck detection)\n- Role + Veto (some block, some do)\n- Circuit breakers (non-progress detection)\n- Capability Provenance Pipeline (GPT)\n\n## Output\ndocs/design/multi-agent-lego-architecture.md","notes":"Research complete. Created docs/design/multi-agent-footguns-and-patterns.md with synthesis of HN discussions, practitioner blogs, and orch consensus. Key findings: Rule of 4 (3-4 agents max), spec-driven development, layered coordination, PostgreSQL advisory locks pattern, git bundles for checkpoints. Validated our SQLite, worktree, and rebase decisions. Identified gaps: structured task specs, role boundaries, review funnel, token budgets.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T12:15:04.476532719-08:00","created_by":"dan","updated_at":"2026-01-10T15:34:24.496673317-08:00","dependencies":[{"issue_id":"skills-yc6","depends_on_id":"skills-s6y","type":"blocks","created_at":"2026-01-10T12:15:10.316852381-08:00","created_by":"dan"}]} diff --git a/.beads/last-touched b/.beads/last-touched index 02d699c..0c9da2a 100644 --- a/.beads/last-touched +++ b/.beads/last-touched @@ -1 +1 @@ -skills-lxb9 +skills-8la4