From c13eb39908a2ea25a73e4049f25c91e12cd461d7 Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Tue, 23 Dec 2025 19:27:17 -0800 Subject: [PATCH] bd sync: 2025-12-23 19:27:17 --- .beads/issues.jsonl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 79753467..bf0d075f 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -232,6 +232,7 @@ {"id":"gt-8tmz.24","title":"Document Rig/Cook/Run lifecycle","description":"The rig-cook-run.md spec is written. Propagate terminology to all relevant docs: - molecule-algebra.md (done) - molecular-chemistry.md (done) - vision.md (done) - propulsion-principle.md - sling-design.md - Any agent templates that reference cooking/instantiation","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T19:18:26.167525-08:00","updated_at":"2025-12-23T19:18:26.167525-08:00","dependencies":[{"issue_id":"gt-8tmz.24","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T19:18:26.16795-08:00","created_by":"daemon"}]} {"id":"gt-8tmz.25","title":"Implement bd bond command for artifact-level composition","description":"Implement the artifact-level bond operator distinct from source-level rigging. Bond operates on cooked protos, mols, and wisps. See rig-cook-run.md for the full bond table semantics.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T19:18:27.245107-08:00","updated_at":"2025-12-23T19:18:27.245107-08:00","dependencies":[{"issue_id":"gt-8tmz.25","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T19:18:27.246957-08:00","created_by":"daemon"}]} {"id":"gt-8tmz.26","title":"Direct formula-to-wisp instantiation (skip proto)","description":"For massive ephemeral workflows (e.g., million-step Towers of Hanoi), allow:\n\nbd wisp towers-of-hanoi --var disks=20\n\nThis would cook + wisp in one step, never materializing the proto. Useful when:\n- The proto would be huge (1M+ steps)\n- The work is ephemeral (wisp, not mol)\n- You don't need the intermediate artifact\n\nImplementation: streaming cook that emits directly to wisp storage.\n\nRelated: towers-of-hanoi.formula.yaml demonstrates the use case.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-23T19:26:53.377902-08:00","updated_at":"2025-12-23T19:26:53.377902-08:00","dependencies":[{"issue_id":"gt-8tmz.26","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T19:26:53.378307-08:00","created_by":"daemon"}]} +{"id":"gt-8tmz.27","title":"Computed range expansion (for-each over expressions)","description":"Support for-each expansion over computed ranges, not just static lists:\n\nfor-each:\n var: move_num\n range: \"1..2^{disks}\" # Computed at cook time\n\nThis enables formulas like Towers of Hanoi where the step count is a function of input variables. The range expression is evaluated during cooking.\n\nRelated: towers-of-hanoi.formula.yaml demonstrates the need.\nDepends on: gt-8tmz.8 (Runtime dynamic expansion)","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-23T19:27:02.71296-08:00","updated_at":"2025-12-23T19:27:02.71296-08:00","dependencies":[{"issue_id":"gt-8tmz.27","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T19:27:02.713399-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.27","depends_on_id":"gt-8tmz.8","type":"blocks","created_at":"2025-12-23T19:27:08.191351-08:00","created_by":"daemon"}]} {"id":"gt-8tmz.3","title":"Expansion operators: expand and map (macros)","description":"Implement macro-style expansion operators:\n- expand(target, template) - apply template to single step\n- map(molecule, template) - apply template to all matching steps\n\nTemplates use {target} substitution for step references.\nRule of Five is the canonical example.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T18:04:31.472199-08:00","updated_at":"2025-12-23T18:04:31.472199-08:00","dependencies":[{"issue_id":"gt-8tmz.3","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:04:31.472662-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.3","depends_on_id":"gt-8tmz.1","type":"blocks","created_at":"2025-12-23T18:04:49.809887-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.3","depends_on_id":"gt-8tmz.13","type":"blocks","created_at":"2025-12-23T18:48:18.717567-08:00","created_by":"daemon"}]} {"id":"gt-8tmz.4","title":"Control flow: loop, gate, branch","description":"Implement control flow operators:\n- loop N { body } - fixed iteration\n- loop until COND { body } - conditional iteration with max bound\n- gate COND { body } - wait for condition\n- branch from/steps/join - parallel paths that rejoin\n\nConditions evaluated mechanically (step status, output fields).","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T18:04:33.194896-08:00","updated_at":"2025-12-23T18:04:33.194896-08:00","dependencies":[{"issue_id":"gt-8tmz.4","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:04:33.196543-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.4","depends_on_id":"gt-8tmz.7","type":"blocks","created_at":"2025-12-23T18:04:49.985527-08:00","created_by":"daemon"}]} {"id":"gt-8tmz.5","title":"Aspects: AOP cross-cutting concerns","description":"Implement aspect-oriented composition:\n- Define aspects with pointcuts and advice\n- Apply aspects at bond time: bd bond mol --with-aspect security\n- Pointcuts use glob patterns to match join points\n\nEnables security-audit, logging, etc. as reusable concerns.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T18:04:34.128562-08:00","updated_at":"2025-12-23T18:04:34.128562-08:00","dependencies":[{"issue_id":"gt-8tmz.5","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:04:34.130564-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.5","depends_on_id":"gt-8tmz.2","type":"blocks","created_at":"2025-12-23T18:04:49.898125-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.5","depends_on_id":"gt-8tmz.6","type":"blocks","created_at":"2025-12-23T18:48:18.802195-08:00","created_by":"daemon"}]} @@ -832,7 +833,7 @@ {"id":"gt-vhby","title":"implement","description":"Implement the solution for gt-test123. Follow codebase conventions.\nFile discovered work as new issues with bd create.\n\nMake regular commits with clear messages.\nKeep changes focused on the assigned issue.\n\nDepends: load-context","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-21T21:48:26.321647-08:00","updated_at":"2025-12-21T21:48:26.321647-08:00","dependencies":[{"issue_id":"gt-vhby","depends_on_id":"gt-i4lo","type":"parent-child","created_at":"2025-12-21T21:48:26.323953-08:00","created_by":"stevey"},{"issue_id":"gt-vhby","depends_on_id":"gt-tvos","type":"blocks","created_at":"2025-12-21T21:48:26.324548-08:00","created_by":"stevey"}],"wisp":true} {"id":"gt-vjv","title":"Add bulk session stop command (gt session stop --all)","description":"When decommissioning a rig, need to stop multiple sessions one at a time. A --all or --rig flag would allow: gt session stop --rig gastown","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-18T11:33:33.394649-08:00","updated_at":"2025-12-18T11:38:51.399298-08:00","closed_at":"2025-12-18T11:38:51.399298-08:00"} {"id":"gt-vjw","title":"Swarm learning: Session cleanup missing from swarm workflow","description":"## Problem\n\nAfter Enders Game swarm completed (18 issues merged), 16 polecat sessions were left running but idle. No automated cleanup occurred.\n\n## What Should Happen\n\n1. Witness detects polecat completed work (idle at prompt)\n2. Witness verifies git state is clean\n3. Witness shuts down session\n4. Witness reports completion to Mayor\n\n## GGT Components\n\n- gt-cxx: Witness context cycling (covers self-cycling)\n- gt-u1j.9: Witness daemon heartbeat loop\n- gt-kmn.6: Witness swarm landing protocol\n\n## Recommendation\n\nAdd to Witness responsibilities:\n- Monitor for 'work complete' signals (DONE keyword, idle detection)\n- Automated session shutdown after verification\n- Swarm completion reporting to Mayor\n\nSee also: architecture.md 'Worker Cleanup (Witness-Owned)' section which describes this but it wasn't implemented in PGT.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-16T01:27:52.796587-08:00","updated_at":"2025-12-16T01:51:37.409965-08:00","closed_at":"2025-12-16T01:51:37.409965-08:00"} -{"id":"gt-vmk7","title":"Guardrail: Verify commits exist before closing polecat issues","description":"When closing an issue that was assigned to a polecat, verify that at least one commit references the issue ID.\n\n## Problem\nA polecat can be cleaned up before completing work. If someone then manually closes the issue (or automation does), we lose track that the work was never done.\n\n## Proposed Solution\nAdd a pre-close check:\n```bash\ngit log --oneline --all --grep='\u003cissue-id\u003e' | head -1\n```\n\nIf no commits found, warn or block the close.\n\n## Where to Implement\nOptions:\n1. **bd close** - Add --verify flag or make it default for polecat-assigned issues\n2. **Witness cleanup** - Verify before clearing assignee\n3. **gt polecat done** - Check before marking done\n\n## Related\n- gt-f8v: Witness pre-kill verification protocol (checks git state, not commits)\n- gt polecat git-state: Checks uncommitted work, but 'clean' doesn't mean 'productive'","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T14:35:24.695717-08:00","updated_at":"2025-12-23T14:35:24.695717-08:00"} +{"id":"gt-vmk7","title":"Guardrail: Verify commits exist before closing polecat issues","description":"When closing an issue that was assigned to a polecat, verify that at least one commit references the issue ID.\n\n## Problem\nA polecat can be cleaned up before completing work. If someone then manually closes the issue (or automation does), we lose track that the work was never done.\n\n## Proposed Solution\nAdd a pre-close check:\n```bash\ngit log --oneline --all --grep='\u003cissue-id\u003e' | head -1\n```\n\nIf no commits found, warn or block the close.\n\n## Where to Implement\nOptions:\n1. **bd close** - Add --verify flag or make it default for polecat-assigned issues\n2. **Witness cleanup** - Verify before clearing assignee\n3. **gt polecat done** - Check before marking done\n\n## Related\n- gt-f8v: Witness pre-kill verification protocol (checks git state, not commits)\n- gt polecat git-state: Checks uncommitted work, but 'clean' doesn't mean 'productive'","status":"in_progress","priority":1,"issue_type":"task","assignee":"gastown/nux","created_at":"2025-12-23T14:35:24.695717-08:00","updated_at":"2025-12-23T19:27:16.985261-08:00"} {"id":"gt-vmpo","title":"orphan-check","description":"Find abandoned work. Check for in_progress issues with no active agent.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T14:27:33.988644-08:00","updated_at":"2025-12-23T14:27:33.988644-08:00","dependencies":[{"issue_id":"gt-vmpo","depends_on_id":"gt-2x79","type":"parent-child","created_at":"2025-12-23T14:27:33.989241-08:00","created_by":"stevey"}],"wisp":true} {"id":"gt-vnp9","title":"tmux notifications: display-message too subtle, use send-keys instead","description":"## Problem\n\n`tmux display-message` notifications are not visible enough - they appear briefly in the status bar and are easy to miss.\n\n## Current Behavior\n\nrouter.go uses:\n```go\nr.tmux.DisplayMessageDefault(sessionID, notification)\n```\n\n## What Works\n\nSending echo commands directly to the terminal:\n```bash\ntmux send-keys -t \u003csession\u003e \"echo 'šŸ“¬ NEW MAIL from mayor'\" Enter\n```\n\n## Proposed Fix\n\nChange notification method to send visible output to the terminal, perhaps with a box/banner:\n```\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nšŸ“¬ NEW MAIL from mayor\nSubject: \u003csubject\u003e\nRun: bd mail inbox\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n```\n\n## Considerations\n\n- This interrupts the terminal output (acceptable for important mail)\n- Could check if Claude is mid-response and queue notification\n- Or use tmux popup if available","notes":"Additional issues:\n1. Enter key not sent properly when chained with send-keys\n2. Need to debounce and send Enter separately\n3. Correct pattern: send text, sleep briefly, then send Enter","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-18T21:35:28.542985-08:00","updated_at":"2025-12-19T12:00:29.342381-08:00","closed_at":"2025-12-19T12:00:29.342381-08:00"} {"id":"gt-vv4i","title":"Polecat template: move session close checklist into molecule steps","description":"Template has prose checklists for 'Before Signaling Done' and 'SESSION CLOSE PROTOCOL'. These should be encoded as tail steps in the polecat molecule, not repeated as prose in CLAUDE.md. Reduces duplication and ensures the steps are actually followed.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T16:56:50.666492-08:00","updated_at":"2025-12-23T17:09:02.141194-08:00","closed_at":"2025-12-23T17:09:02.141194-08:00","close_reason":"Completed in commit 1931ec7","dependencies":[{"issue_id":"gt-vv4i","depends_on_id":"gt-t9u7","type":"parent-child","created_at":"2025-12-23T16:57:16.612852-08:00","created_by":"daemon"}]}