bd sync: 2025-12-24 13:21:08

This commit is contained in:
Steve Yegge
2025-12-24 13:21:08 -08:00
parent 8705e843c7
commit fe644a8cf8

View File

@@ -250,8 +250,8 @@
{"id":"gt-8tmz.1","title":"Phase verbs: pour and wisp commands","description":"Implement the phase transition verbs:\n- bd pour \u003cproto\u003e - instantiate as persistent mol\n- bd wisp \u003cproto\u003e - instantiate as ephemeral wisp\n- Update bd mol bond to inherit phase from target\n\nThese replace the current --wisp flag with cleaner verb semantics.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T18:03:57.280647-08:00","updated_at":"2025-12-23T18:03:57.280647-08:00"}
{"id":"gt-8tmz.10","title":"Rename Engineer in Box to Shiny","description":"Rename mol-engineer-in-box to mol-shiny (or just 'shiny').\n\nMad Max reference - the canonical 'right way to engineer'.\nUpdate all references in docs and code.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-23T18:04:40.434948-08:00","updated_at":"2025-12-23T18:04:40.434948-08:00","dependencies":[{"issue_id":"gt-8tmz.10","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:04:40.437009-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.11","title":"Rule of Five expansion template","description":"Create rule-of-five as an expansion template:\n- Jeffrey's discovery: agents converge in 4-5 iterations\n- Template expands any step into 5-pass refinement\n- draft → refine-1 → refine-2 → refine-3 → refine-4\n\nFirst example of a macro-style expansion proto.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T18:04:41.438135-08:00","updated_at":"2025-12-23T18:04:41.438135-08:00","dependencies":[{"issue_id":"gt-8tmz.11","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:04:41.439635-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.12","title":"Formula parser and YAML schema","description":"Implement formula parsing from YAML:\n- Define YAML schema for .formula.yaml files\n- Parse steps, compose rules, vars\n- Support extends for formula inheritance\n- Validate formula structure\n\nSchema should support:\n- formula: name\n- description: text\n- version: number\n- type: workflow|expansion|aspect\n- vars: variable definitions\n- steps: step definitions\n- compose: composition rules","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T18:20:02.788306-08:00","updated_at":"2025-12-23T20:00:13.739416-08:00"}
{"id":"gt-8tmz.13","title":"bd cook command: Formula to Proto","description":"Implement the 'bd cook' command:\n\n bd cook shiny-enterprise.formula.yaml\n # Cooking shiny-enterprise...\n # ✓ Cooked proto: shiny-enterprise (30 steps)\n\nProcess:\n1. Parse formula YAML\n2. Resolve 'extends' inheritance\n3. Apply all compose rules in order:\n - expand: macro expansion\n - aspect: apply cross-cutting concerns\n - branch: add parallel paths\n - loop/gate: wire control flow\n - advice: insert before/after steps\n4. Flatten to pure step graph\n5. Store as proto in beads (template label)\n\nOptions:\n- --dry-run: preview without saving\n- --output: specify proto name\n- --purity: show expansion stats (joke flag)","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T18:20:03.9306-08:00","updated_at":"2025-12-23T18:20:03.9306-08:00","dependencies":[{"issue_id":"gt-8tmz.13","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:20:03.933113-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.13","depends_on_id":"gt-8tmz.12","type":"blocks","created_at":"2025-12-23T18:20:11.133013-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.12","title":"Formula parser and YAML schema","description":"Implement formula parsing from YAML:\n- Define YAML schema for .formula.yaml files\n- Parse steps, compose rules, vars\n- Support extends for formula inheritance\n- Validate formula structure\n\nSchema should support:\n- formula: name\n- description: text\n- version: number\n- type: workflow|expansion|aspect\n- vars: variable definitions\n- steps: step definitions\n- compose: composition rules\n\n**Beads issue: bd-weu8**","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T18:20:02.788306-08:00","updated_at":"2025-12-24T13:20:53.673052-08:00"}
{"id":"gt-8tmz.13","title":"bd cook command: Formula to Proto","description":"Implement the 'bd cook' command that transforms formulas into protos.\n\nUsage: bd cook \u003cformula-file\u003e [options]\n bd cook .beads/formulas/*.formula.yaml\n\nProcess:\n1. Parse formula YAML (uses formula parser)\n2. Resolve extends (formula inheritance)\n3. Expand macros (expansion rules)\n4. Apply aspects (cross-cutting concerns)\n5. Generate flat proto bead\n\nOutput:\n- Creates proto bead in .beads/ with mol-prefix\n- Proto has all steps pre-expanded\n- Proto is ready for pour/wisp instantiation\n\n**Beads issue: bd-wa2l**","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T18:20:03.9306-08:00","updated_at":"2025-12-24T13:21:03.677204-08:00","dependencies":[{"issue_id":"gt-8tmz.13","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:20:03.933113-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.13","depends_on_id":"gt-8tmz.12","type":"blocks","created_at":"2025-12-23T18:20:11.133013-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.14","title":"bd formula list/show commands","description":"Implement formula management commands:\n\n bd formula list\n # Lists formulas from all search paths\n\n bd formula show rule-of-five\n # Shows formula details, steps, compose rules\n\nSearch paths (in order):\n1. .beads/formulas/ (project)\n2. ~/gt/.beads/formulas/ (town)\n3. ~/.beads/formulas/ (user)\n4. Built-in formulas (embedded)","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T18:20:05.02817-08:00","updated_at":"2025-12-23T18:20:05.02817-08:00","dependencies":[{"issue_id":"gt-8tmz.14","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:20:05.03005-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.15","title":"Formula cycle detection during cooking","description":"Detect and error on circular extends chains during bd cook. E.g., if formula A extends B extends A, cooking should fail with clear error message pointing to the cycle.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T18:45:06.751822-08:00","updated_at":"2025-12-23T18:45:06.751822-08:00","dependencies":[{"issue_id":"gt-8tmz.15","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:45:06.752271-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.15","depends_on_id":"gt-8tmz.13","type":"blocks","created_at":"2025-12-23T18:48:18.543425-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.16","title":"Prevent aspect self-matching (infinite recursion)","description":"Aspects should only match original steps, not steps inserted by the same aspect application. Document this and implement guard during cooking. Without this, a pointcut like *.implement that inserts security-prescan could match its own insertion infinitely.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-23T18:45:07.855882-08:00","updated_at":"2025-12-23T18:45:07.855882-08:00","dependencies":[{"issue_id":"gt-8tmz.16","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:45:07.861131-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.16","depends_on_id":"gt-8tmz.5","type":"blocks","created_at":"2025-12-23T18:48:18.885103-08:00","created_by":"daemon"}]}
@@ -322,7 +322,7 @@
{"id":"gt-9rmm","title":"Merge: gt-a95","description":"branch: polecat/Ace\ntarget: main\nsource_issue: gt-a95\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-19T14:53:53.973816-08:00","updated_at":"2025-12-19T19:13:27.736445-08:00","closed_at":"2025-12-19T17:48:09.608699-08:00"}
{"id":"gt-9t14","title":"Wire up --wisp flag for ephemeral molecules","description":"The --wisp flag exists in gt sling but isn't wired through to bd mol.\n\nNeed:\n1. bd mol run --wisp - spawn to .beads-wisp/ instead of .beads/\n2. Automatic burn on molecule completion\n3. Optional squash to digest for audit trail\n\nCurrently:\n- sling.go sets thing.IsWisp but never uses it\n- bd mol run has no --wisp flag\n- .beads-wisp/ exists but nothing writes to it","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-22T13:12:25.192854-08:00","updated_at":"2025-12-22T13:18:50.72531-08:00","closed_at":"2025-12-22T13:18:50.72531-08:00","close_reason":"Wired --wisp flag: uses .beads-wisp/ storage when available, propagates IsWisp through MoleculeContext"}
{"id":"gt-9uxr","title":"Critical packages lack test coverage","description":"Several packages have no test files:\n- internal/lock/ - Core identity locking (212 lines UNTESTED)\n- internal/witness/ - Worker monitoring\n- internal/mrqueue/ - MR queue management\n- internal/claude/ - Claude integration\n- internal/style/ - Terminal styling\n- internal/constants/ - Constants\n\nPriority for testing:\n1. lock/ - prevents duplicate agents, critical for correctness\n2. witness/ - agent lifecycle management\n3. mrqueue/ - merge request processing\n\nOverall: 37 test files for 160 Go files (23% by file count)","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T12:51:01.154427-08:00","updated_at":"2025-12-24T12:51:01.154427-08:00","dependencies":[{"issue_id":"gt-9uxr","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T12:52:07.558885-08:00","created_by":"daemon"}]}
{"id":"gt-9uy0","title":"Remove 'spawn' terminology from molecular chemistry","description":"'Spawn' should ONLY be used for polecats (workers). Molecules use different verbs:\n- pour: create mol from proto (persistent)\n- wisp: create wisp from proto (ephemeral)\n- run: execute molecule\n- bond: attach molecule to something\n\nFound ~100+ instances of 'bd mol spawn' or 'spawn' used with molecules.\n\n**Correct terminology:**\n- gt spawn = spawn polecat (OK)\n- bd pour \u003cproto\u003e = create persistent molecule\n- bd wisp \u003cproto\u003e = create ephemeral wisp\n- bd run \u003cproto\u003e = create and execute\n- bd mol bond = attach molecule\n\n**Docs needing updates:**\n- prompts/roles/deacon.md: 'bd mol spawn' → 'bd wisp'\n- docs/molecular-chemistry.md: 'Spawn Mol/Wisp' → 'Pour/Wisp'\n- docs/molecule-algebra.md: 'Spawn as Mol when...'\n- docs/sling-design.md, architecture.md, vision.md\n\n**Code needing updates:**\n- internal/cmd/prime.go: 'bd mol spawn' → 'bd wisp' (~6 instances)\n- internal/cmd/sling.go: rename spawnMoleculeFromProto → pourMoleculeFromProto\n\nP1 because docs show non-existent commands.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-24T13:06:43.805547-08:00","updated_at":"2025-12-24T13:08:20.489703-08:00","dependencies":[{"issue_id":"gt-9uy0","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T13:06:49.341648-08:00","created_by":"daemon"}]}
{"id":"gt-9uy0","title":"Remove 'spawn' terminology from molecular chemistry","description":"'Spawn' should ONLY be used for polecats (workers). Molecules use different verbs:\n- pour: create mol from proto (persistent)\n- wisp: create wisp from proto (ephemeral)\n- run: execute molecule\n- bond: attach molecule to something\n\nFound ~100+ instances of 'bd mol spawn' or 'spawn' used with molecules.\n\n**Correct terminology:**\n- gt spawn = spawn polecat (OK)\n- bd pour \u003cproto\u003e = create persistent molecule\n- bd wisp \u003cproto\u003e = create ephemeral wisp\n- bd run \u003cproto\u003e = create and execute\n- bd mol bond = attach molecule\n\n**Docs needing updates:**\n- prompts/roles/deacon.md: 'bd mol spawn' → 'bd wisp'\n- docs/molecular-chemistry.md: 'Spawn Mol/Wisp' → 'Pour/Wisp'\n- docs/molecule-algebra.md: 'Spawn as Mol when...'\n- docs/sling-design.md, architecture.md, vision.md\n\n**Code needing updates:**\n- internal/cmd/prime.go: 'bd mol spawn' → 'bd wisp' (~6 instances)\n- internal/cmd/sling.go: rename spawnMoleculeFromProto → pourMoleculeFromProto\n\nP1 because docs show non-existent commands.","status":"in_progress","priority":1,"issue_type":"task","created_at":"2025-12-24T13:06:43.805547-08:00","updated_at":"2025-12-24T13:12:43.772336-08:00","dependencies":[{"issue_id":"gt-9uy0","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T13:06:49.341648-08:00","created_by":"daemon"}]}
{"id":"gt-9wv0","title":"gt spawn should verify daemon is running for polecat triggering","description":"gt spawn notifies the Deacon (via mail) that a polecat was started, expecting the Deacon to trigger it once Claude is ready. But if the daemon isn't running, the mail sits unread and the polecat never gets triggered.\n\n## Current Behavior\n1. gt spawn starts polecat session\n2. gt spawn sends POLECAT_STARTED to deacon/\n3. (assumes daemon will trigger polecat)\n\n## Problem\nIf gt daemon isn't running, step 3 never happens and polecat sits at prompt.\n\n## Solution\nIn gt spawn, after session start:\n1. Check if daemon is running (gt daemon status)\n2. If not running, either:\n a. Start daemon: gt daemon start\n b. Or warn user: 'Daemon not running, polecat may not auto-start'\n\n## Alternative\nThe user can manually trigger with gt nudge, but automated flow should work.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T01:03:03.71521-08:00","updated_at":"2025-12-23T01:03:03.71521-08:00","dependencies":[{"issue_id":"gt-9wv0","depends_on_id":"gt-bjft","type":"blocks","created_at":"2025-12-23T01:03:12.187224-08:00","created_by":"daemon"}]}
{"id":"gt-9za0","title":"Mol Mall: Molecule marketplace distribution","description":"Design the Mol Mall distribution mechanism for sharing molecules.\n\n## Core Insight\n\nMol Mall is just a registry of molecules.jsonl fragments. No special format needed.\n\n## Distribution Model\n\n```\nMol Mall (registry)\n │\n │ bd mol search \"security\"\n ▼\nMolecule catalog (searchable index)\n │\n │ bd mol install mol-security-scan\n ▼\nDownload molecules.jsonl fragment\n │\n │ Append to ~/.beads/molecules.jsonl\n ▼\nAvailable locally: bd mol list\n```\n\n## Registry Format\n\nSimple JSON index served from HTTPS:\n\n```json\n{\n \"molecules\": [\n {\n \"id\": \"mol-security-scan\",\n \"title\": \"Security Scan\",\n \"description\": \"OWASP Top 10 vulnerability checker\",\n \"labels\": [\"plugin\", \"code-review\", \"tier:sonnet\"],\n \"author\": \"anthropic\",\n \"version\": \"1.0.0\",\n \"url\": \"https://mol-mall.anthropic.com/molecules/mol-security-scan.jsonl\"\n }\n ]\n}\n```\n\n## CLI Commands\n\n```bash\nbd mol search \u003cquery\u003e # Search registry\nbd mol info \u003cid\u003e # Show molecule details\nbd mol install \u003cid\u003e # Download and install\nbd mol uninstall \u003cid\u003e # Remove from catalog\nbd mol update # Update all installed molecules\n```\n\n## Installation Locations\n\n```\n~/.beads/molecules.jsonl # User-level (default install location)\n~/gt/.beads/molecules.jsonl # Town-level (shared across rigs)\n.beads/molecules.jsonl # Project-level (team-specific)\n```\n\n## Version Management\n\nMolecules can have versions via labels: `version:1.0.0`\nInstall specific version: `bd mol install mol-security-scan@1.0.0`\n\n## Auth (Future)\n\nPrivate registries could require auth token.\nEnterprise Mol Malls for internal distribution.\n\n## Related\n\n- gt-u818: Plugin System (plugins ARE molecules)\n- molecular-chemistry.md: Format documentation","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-23T05:14:35.698369-08:00","updated_at":"2025-12-23T05:14:35.698369-08:00"}
{"id":"gt-9zic","title":"Merge: gt-rp0k","description":"branch: polecat/nux\ntarget: main\nsource_issue: gt-rp0k\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-22T23:40:52.956859-08:00","updated_at":"2025-12-22T23:50:12.379136-08:00","closed_at":"2025-12-22T23:50:12.379136-08:00","close_reason":"Merged to main"}
@@ -342,6 +342,8 @@
{"id":"gt-aqd8","title":"Witness Patrol Molecule","description":"Create mol-witness-patrol molecule for witness heartbeat loop.\n\nSimilar to DeaconPatrolMolecule but for per-rig witness duties.\n\n## Steps\n1. inbox-check - Process witness mail\n2. survey-workers - List polecats, check status\n3. inspect-workers - Capture pane output, assess state \n4. plugin-run - Execute plugins from \u003crig\u003e/plugins/witness/\n5. decide-actions - Determine nudges, escalations\n6. execute-actions - Send nudges, process shutdowns\n7. context-check - Check own context, handoff if needed\n8. loop-or-exit - Continue or cycle\n\nThe plugin-run step enables user customization of the patrol loop.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-21T16:16:52.808202-08:00","updated_at":"2025-12-23T04:39:26.805771-08:00","closed_at":"2025-12-23T04:39:26.805771-08:00","close_reason":"Superseded by Christmas Ornament pattern (gt-tnow, gt-qflq). Flat patrol design replaced by dynamic bonding with per-polecat arms."}
{"id":"gt-aqku","title":"BUG: gt done doesn't push branch to origin - work lost when worktree deleted","description":"## Problem\n\n`gt done` creates a merge-request record in beads but **never pushes the branch to origin**.\n\nWhen polecats are cleaned up (worktrees deleted), the branch is lost forever. The MR record exists but there's no actual branch to merge.\n\n## Evidence\n\n12 MQ items had `ready` status but no corresponding branches on origin. All polecat worktrees were deleted, losing all work.\n\n## Impact\n\n**CRITICAL**: All polecat work is silently lost unless polecats manually push (which they don't know to do).\n\n## Fix\n\nIn `done.go`, before creating the MR:\n1. `git push origin \u003cbranch\u003e` to push the branch to remote\n2. Only create MR record if push succeeds\n\n## Location\n`mayor/rig/internal/cmd/done.go:124-135`","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-21T17:21:27.012045-08:00","updated_at":"2025-12-21T17:22:45.104108-08:00","closed_at":"2025-12-21T17:22:45.104108-08:00","close_reason":"Fixed in done.go and mq_submit.go - both now push branch before creating MR"}
{"id":"gt-aqm","title":"Beads as Universal Data Plane","description":"## Vision\n\nBeads is the data plane for all Gas Town operations. Everything flows through beads:\n- Work items (issues, tasks, epics)\n- Mail (messages between agents)\n- Merge requests (queue entries)\n- Workflows (composable execution patterns)\n- Resources (leases, locks, quotas)\n- Schedules (timed activities)\n\n## New Bead Categories\n\n### Molecules (Composable Workflows)\nCrystallized workflow patterns that can be attached to work items.\n\n### Timed Beads (Scheduled Work)\nBeads that wake up periodically via daemon.\n\n### Pinned Beads (Ongoing Concerns)\nBeads representing persistent concerns, not discrete tasks.\n\n### Resource Beads (Leases/Locks)\nBeads representing reserved resources.\n\n## v1 Priority\n\n- **P0**: Molecules (enables engineer-in-box)\n- **P2**: Timed, Pinned, Resource beads (post-v1)","status":"open","priority":0,"issue_type":"epic","created_at":"2025-12-18T18:05:57.847578-08:00","updated_at":"2025-12-18T18:06:10.898712-08:00","dependencies":[{"issue_id":"gt-aqm","depends_on_id":"gt-4nn","type":"blocks","created_at":"2025-12-18T18:06:29.881371-08:00","created_by":"daemon"},{"issue_id":"gt-aqm","depends_on_id":"gt-caz","type":"blocks","created_at":"2025-12-18T18:08:19.833603-08:00","created_by":"daemon"},{"issue_id":"gt-aqm","depends_on_id":"gt-8h4","type":"blocks","created_at":"2025-12-18T18:08:19.930166-08:00","created_by":"daemon"},{"issue_id":"gt-aqm","depends_on_id":"gt-b3p","type":"blocks","created_at":"2025-12-18T18:08:20.026188-08:00","created_by":"daemon"}]}
{"id":"gt-asz5","title":"Test Patrol Parent","description":"Test parent for Christmas Ornament pattern","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T13:17:04.278622-08:00","updated_at":"2025-12-24T13:17:04.55576-08:00","closed_at":"2025-12-24T13:17:04.55576-08:00","close_reason":"Closed"}
{"id":"gt-asz5.1","title":"Test Polecat Arm","description":"Test child for bonding pattern","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T13:17:04.370549-08:00","updated_at":"2025-12-24T13:17:04.467634-08:00","closed_at":"2025-12-24T13:17:04.467634-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-asz5.1","depends_on_id":"gt-asz5","type":"parent-child","created_at":"2025-12-24T13:17:04.370981-08:00","created_by":"daemon"}]}
{"id":"gt-av4m","title":"execute-actions","description":"Send nudges, process shutdowns, escalate as decided.\n\nNeeds: decide-actions","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T16:23:42.026052-08:00","updated_at":"2025-12-23T16:23:42.026053-08:00","dependencies":[{"issue_id":"gt-av4m","depends_on_id":"gt-87jz","type":"parent-child","created_at":"2025-12-23T16:23:42.026713-08:00","created_by":"stevey"}]}
{"id":"gt-av8","title":"Update Mayor prompting in gastown-py","description":"The Mayor CLAUDE.md and related prompting in gastown-py (still in production use) needs to reflect current design decisions: session cycling, handoff protocol, cleanup responsibilities, beads access model. Sync prompting with GGT design work.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-15T20:24:09.953043-08:00","updated_at":"2025-12-15T21:07:29.858267-08:00","closed_at":"2025-12-15T21:07:29.858267-08:00"}
{"id":"gt-avq9","title":"Merge: gt-3x1.3","description":"branch: polecat/Doof\ntarget: main\nsource_issue: gt-3x1.3\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-20T21:23:06.77909-08:00","updated_at":"2025-12-20T21:23:06.858435-08:00","closed_at":"2025-12-20T21:23:06.858435-08:00","close_reason":"Historical import"}
@@ -464,6 +466,8 @@
{"id":"gt-f14c","title":"Test Patrol for Bonding","description":"Parent issue for mol bond CLI test","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T22:51:29.929739-08:00","updated_at":"2025-12-23T22:51:30.287724-08:00","closed_at":"2025-12-23T22:51:30.287724-08:00","close_reason":"Closed"}
{"id":"gt-f14c.1","title":"Polecat Arm (arm-toast)","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step.\nEach polecat being monitored gets one arm that runs in parallel with other arms.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat_name | Yes | Name of the polecat to inspect |\n| rig | Yes | Rig containing the polecat |\n\n## Step: capture\nCapture recent tmux output for toast.\n\n```bash\ntmux capture-pane -t gt-gastown-toast -p | tail -50\n```\n\nRecord:\n- Last activity timestamp (when was last tool call?)\n- Visible errors or stack traces\n- Completion indicators (\"Done\", \"Finished\", etc.)\n\n## Step: assess\nCategorize polecat state based on captured output.\n\nStates:\n- **working**: Recent tool calls, active processing\n- **idle**: At prompt, no recent activity\n- **error**: Showing errors or stack traces\n- **requesting_shutdown**: Sent LIFECYCLE/Shutdown mail\n- **done**: Showing completion indicators\n\nCalculate: minutes since last activity.\nNeeds: capture\n\n## Step: load-history\nRead nudge history for toast from patrol state.\n\n```\nnudge_count = state.nudges[toast].count\nlast_nudge_time = state.nudges[toast].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\nNeeds: assess\n\n## Step: decide\nApply the nudge matrix to determine action for toast.\n\n| State | Idle Time | Nudge Count | Action |\n|-------|-----------|-------------|--------|\n| working | any | any | none |\n| idle | \u003c10min | any | none |\n| idle | 10-15min | 0 | nudge-1 (gentle) |\n| idle | 15-20min | 1 | nudge-2 (direct) |\n| idle | 20+min | 2 | nudge-3 (final) |\n| idle | any | 3 | escalate |\n| error | any | any | assess-severity |\n| requesting_shutdown | any | any | pre-kill-verify |\n| done | any | any | pre-kill-verify |\n\nNudge text:\n1. \"How's progress? Need any help?\"\n2. \"Please wrap up soon. What's blocking you?\"\n3. \"Final check. Will escalate in 5 min if no response.\"\n\nRecord decision and rationale.\nNeeds: load-history\n\n## Step: execute\nTake the decided action for toast.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-gastown-toast \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/toast\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n```\nIf clean: kill session, remove worktree, delete branch\nIf dirty: record failure, retry next cycle\n\n**escalate**:\n```bash\ngt mail send mayor/ -s \"Escalation: toast stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\nNeeds: decide\n\n## Output\n\nThe arm completes with:\n- action_taken: none | nudge-1 | nudge-2 | nudge-3 | killed | escalated\n- result: success | failed | pending\n- updated_state: New nudge count and timestamp for toast\n\nThis data feeds back to the parent patrol's aggregate step.\n---\nbonded_from: mol-polecat-arm\nbonded_to: gt-f14c\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T22:51:30.019919-08:00","updated_at":"2025-12-23T22:51:30.193576-08:00","closed_at":"2025-12-23T22:51:30.193576-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-f14c.1","depends_on_id":"gt-f14c","type":"parent-child","created_at":"2025-12-23T22:51:30.020363-08:00","created_by":"daemon"}]}
{"id":"gt-f165","title":"Pinned bead naming convention for all roles","description":"Establish consistent naming convention for pinned beads across all roles.\n\n## Problem\n\nEvery role needs a pinned bead for molecule attachment, handoff state, and identity.\nWe need a consistent naming convention so gt tools can find the pinned bead for any role.\n\n## Proposed Convention\n\n {role}.pinned - Singleton roles (deacon, mayor)\n {rig}-{role}.pinned - Per-rig roles (witness, refinery)\n {rig}-{name}.pinned - Named agents (polecats, crew)\n\nExamples:\n- deacon.pinned\n- mayor.pinned\n- gastown-witness.pinned\n- gastown-refinery.pinned\n- gastown-furiosa.pinned (polecat)\n- gastown-max.pinned (crew)\n\n## Storage Location\n\n| Role | Pinned Bead Location |\n|------|---------------------|\n| Mayor | ~/gt/.beads/ (town level) |\n| Deacon | ~/gt/.beads/ (town level) |\n| Witness | {rig}/.beads/ (rig level) |\n| Refinery | {rig}/.beads/ (rig level) |\n| Polecat | {rig}/polecats/{name}/.beads/ |\n| Crew | {rig}/crew/{name}/.beads/ |\n\n## Why This Matters\n\n1. Name recycling: Polecats reuse names so their pinned beads persist\n2. Molecule attachment: gt mol bond needs to find the pinned bead\n3. gt prime: Can show you are working on X from pinned bead\n4. Crash recovery: Resume from pinned beads attached molecule\n\n## Tasks\n\n- Document naming convention in architecture.md\n- Update gt prime to find pinned bead by convention\n- Update gt mol bond to use conventional name\n- Create pinned beads on role startup if missing\n- Add gt pinned command to show/manage pinned beads\n\n## Related\n\n- gt-rana.1: Attachment field on pinned beads (closed)\n- gt-id36.2: Deacon marching orders (pinned bead)","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-22T03:04:17.116117-08:00","updated_at":"2025-12-22T03:04:17.116117-08:00"}
{"id":"gt-f17b","title":"Test Patrol for Bonding","description":"Parent issue for mol bond CLI test","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T13:17:04.653301-08:00","updated_at":"2025-12-24T13:17:04.992717-08:00","closed_at":"2025-12-24T13:17:04.992717-08:00","close_reason":"Closed"}
{"id":"gt-f17b.1","title":"Polecat Arm (arm-toast)","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step.\nEach polecat being monitored gets one arm that runs in parallel with other arms.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat_name | Yes | Name of the polecat to inspect |\n| rig | Yes | Rig containing the polecat |\n\n## Step: capture\nCapture recent tmux output for toast.\n\n```bash\ntmux capture-pane -t gt-gastown-toast -p | tail -50\n```\n\nRecord:\n- Last activity timestamp (when was last tool call?)\n- Visible errors or stack traces\n- Completion indicators (\"Done\", \"Finished\", etc.)\n\n## Step: assess\nCategorize polecat state based on captured output.\n\nStates:\n- **working**: Recent tool calls, active processing\n- **idle**: At prompt, no recent activity\n- **error**: Showing errors or stack traces\n- **requesting_shutdown**: Sent LIFECYCLE/Shutdown mail\n- **done**: Showing completion indicators\n\nCalculate: minutes since last activity.\nNeeds: capture\n\n## Step: load-history\nRead nudge history for toast from patrol state.\n\n```\nnudge_count = state.nudges[toast].count\nlast_nudge_time = state.nudges[toast].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\nNeeds: assess\n\n## Step: decide\nApply the nudge matrix to determine action for toast.\n\n| State | Idle Time | Nudge Count | Action |\n|-------|-----------|-------------|--------|\n| working | any | any | none |\n| idle | \u003c10min | any | none |\n| idle | 10-15min | 0 | nudge-1 (gentle) |\n| idle | 15-20min | 1 | nudge-2 (direct) |\n| idle | 20+min | 2 | nudge-3 (final) |\n| idle | any | 3 | escalate |\n| error | any | any | assess-severity |\n| requesting_shutdown | any | any | pre-kill-verify |\n| done | any | any | pre-kill-verify |\n\nNudge text:\n1. \"How's progress? Need any help?\"\n2. \"Please wrap up soon. What's blocking you?\"\n3. \"Final check. Will escalate in 5 min if no response.\"\n\nRecord decision and rationale.\nNeeds: load-history\n\n## Step: execute\nTake the decided action for toast.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-gastown-toast \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/toast\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n```\nIf clean: kill session, remove worktree, delete branch\nIf dirty: record failure, retry next cycle\n\n**escalate**:\n```bash\ngt mail send mayor/ -s \"Escalation: toast stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\nNeeds: decide\n\n## Output\n\nThe arm completes with:\n- action_taken: none | nudge-1 | nudge-2 | nudge-3 | killed | escalated\n- result: success | failed | pending\n- updated_state: New nudge count and timestamp for toast\n\nThis data feeds back to the parent patrol's aggregate step.\n---\nbonded_from: mol-polecat-arm\nbonded_to: gt-f17b\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T13:17:04.739555-08:00","updated_at":"2025-12-24T13:17:04.902469-08:00","closed_at":"2025-12-24T13:17:04.902469-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-f17b.1","depends_on_id":"gt-f17b","type":"parent-child","created_at":"2025-12-24T13:17:04.74004-08:00","created_by":"daemon"}]}
{"id":"gt-f1ma","title":"Merge: gt-h6eq.3","description":"branch: polecat/nux\ntarget: main\nsource_issue: gt-h6eq.3\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T11:51:55.972408-08:00","updated_at":"2025-12-23T12:22:23.415428-08:00","closed_at":"2025-12-23T12:22:23.415428-08:00","close_reason":"Merged to main in gt-h6eq swarm"}
{"id":"gt-f8q1","title":"Rename engineer-in-box to shiny across all docs","description":"Systematic rename of mol-engineer-in-box to shiny throughout docs: molecular-chemistry.md, molecules.md, architecture.md, etc. The shiny name is now canonical per the Breaking Bad × Mad Max naming.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T18:45:24.877282-08:00","updated_at":"2025-12-23T19:18:38.521461-08:00","closed_at":"2025-12-23T19:18:38.521461-08:00","close_reason":"Duplicate of gt-8tmz.10 which is in the molecule algebra epic"}
{"id":"gt-f8v","title":"Witness pre-kill verification protocol","description":"Add pre-kill verification protocol to Witness CLAUDE.md template.\n\n## Protocol for Witness Prompting\n\n```markdown\n## Pre-Kill Verification Protocol\n\nBefore killing any worker session, verify workspace is clean.\n\n### Verification Steps\n\nWhen a worker signals done:\n\n1. **Capture worker state**:\n```bash\ntown capture \u003cpolecat\u003e \"git status \u0026\u0026 git stash list \u0026\u0026 bd sync --status\"\n```\n\n2. **Assess the output** (use your judgment):\n- Is working tree clean?\n- Is stash list empty?\n- Is beads synced?\n\n3. **Decision**:\n- **CLEAN**: Proceed to kill session\n- **DIRTY**: Send nudge with specific issues\n\n### Nudge Templates\n\n**Uncommitted Changes**:\n```\ntown inject \u003cpolecat\u003e \"WITNESS CHECK: Uncommitted changes found. Please commit or discard: \u003cfiles\u003e. Signal done when clean.\"\n```\n\n**Beads Not Synced**:\n```\ntown inject \u003cpolecat\u003e \"WITNESS CHECK: Beads not synced. Run 'bd sync' then commit. Signal done when complete.\"\n```\n\n### Kill Sequence\n\nOnly after verification passes:\n```bash\ntown kill \u003cpolecat\u003e\ntown sleep \u003cpolecat\u003e\n```\n\n### Escalation\n\nIf worker fails verification 3+ times:\n```bash\ntown mail send mayor/ -s \"Escalation: \u003cpolecat\u003e stuck\" -m \"Cannot complete cleanup after 3 attempts. Issues: \u003clist\u003e.\"\n```\n```\n\n## Implementation\n\nAdd to WITNESS_CLAUDE.md template.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-15T19:48:54.065679-08:00","updated_at":"2025-12-15T20:47:30.415244-08:00","dependencies":[{"issue_id":"gt-f8v","depends_on_id":"gt-82y","type":"blocks","created_at":"2025-12-15T19:49:05.763378-08:00","created_by":"daemon"}]}