From 8e746ed9ec81be9be03a327bed86f6d9fc746ae9 Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Sun, 28 Dec 2025 22:22:39 -0800 Subject: [PATCH] bd sync: 2025-12-28 22:22:39 --- .beads/issues.jsonl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 142a5044..bf119919 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -624,6 +624,11 @@ {"id":"bd-rupw","title":"Run bump-version.sh 0.30.7","description":"Run ./scripts/bump-version.sh 0.30.7 to update version in all files","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T22:56:48.649647-08:00","updated_at":"2025-12-19T22:57:31.512956-08:00","closed_at":"2025-12-19T22:57:31.512956-08:00","dependencies":[{"issue_id":"bd-rupw","depends_on_id":"bd-8pyn","type":"parent-child","created_at":"2025-12-19T22:56:48.653475-08:00","created_by":"stevey"}]} {"id":"bd-rx6o","title":"Test Child Task","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T22:15:23.27506-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-27T22:16:35.925357-08:00","deleted_at":"2025-12-27T22:16:35.925357-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"} {"id":"bd-rze6","title":"Digest: Release v0.34.0 @ 2025-12-22 12:16","description":"Released v0.34.0: wisp commands, chemistry UX, cross-project deps","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-22T12:16:53.033119-08:00","updated_at":"2025-12-22T12:16:53.033119-08:00","closed_at":"2025-12-22T12:16:53.033025-08:00","close_reason":"Squashed from wisp bd-25c (20 issues)"} +{"id":"bd-s00m","title":"Add 'hooked' status for GUPP work assignment","description":"## Summary\n\nSeparate the semantics of `pinned` (identity records) from work-on-hook (GUPP assignment).\n\n**Current problem:** `pinned` is overloaded to mean both:\n1. Agent identity beads (gt-mayor, gt-crew-gastown-max) - should never block\n2. Work attached to an agent's hook - should block until closed\n\nThe blocking logic excludes `pinned` from blocking, which means work on hooks doesn't block its dependents.\n\n## Semantic Split\n\n| Status | Meaning | Blocks dependents? |\n|--------|---------|-------------------|\n| `pinned` | Domain table / identity record (agents, roles) | No |\n| `hooked` | Work on an agent's hook (GUPP invoked) | Yes |\n\n**Terminology:**\n- **Pin** (verb): Establish a permanent identity record\n- **Hook** (verb): Attach work to an agent's hook\n- **Sling** (verb): The act of hooking work to an agent\n\n## Lifecycles\n\n**Molecule** (the work):\n open -\u003e hooked -\u003e closed\n\n**Persistent agent** (Mayor, Witness, Crew):\n idle \u003c-\u003e working (cycles)\nAgent bead stays pinned. Operational state derived from hook slot occupancy.\n\n**Polecat** (ephemeral worker):\n spawned-with-work -\u003e working -\u003e despawning\nPolecats never idle - spawned for one molecule, nuked after.\n\nThe `hooked` status belongs to the **molecule**, not the agent. Agent identity beads remain `pinned` throughout their existence.\n\n## in_progress vs hooked\n\nBoth remain valid statuses with different semantics:\n- `in_progress` = Soft claim, cooperative (humans juggling multiple issues)\n- `hooked` = Hard claim, GUPP-driven (molecule on agent's hook)\n\nGas Town molecules use `hooked`. Humans/non-Gas Town workflows may use `in_progress`.\n\n## Success Criteria\n\n1. `hooked` is a valid status in beads schema\n2. Blocking logic treats `hooked` as blocking (like `in_progress`)\n3. gt sling sets status=hooked on the molecule (not pinned)\n4. Existing pinned work items migrated to hooked where appropriate\n5. Agent/role beads remain pinned and non-blocking","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-28T22:16:37.66048-08:00","created_by":"stevey","updated_at":"2025-12-28T22:19:56.640166-08:00"} +{"id":"bd-s00m.1","title":"Schema: Add 'hooked' as valid status","description":"Add 'hooked' to the valid status enum in the beads schema.\n\n## Files to Update\n\n1. `internal/types/types.go` - Add StatusHooked constant\n2. `internal/storage/sqlite/schema.go` - Add 'hooked' to CHECK constraint\n3. `internal/storage/sqlite/migrations/` - New migration to alter constraint\n\n## Status Values After Change\n\n- open\n- in_progress\n- blocked\n- deferred\n- hooked (NEW)\n- closed\n- pinned\n- tombstone\n\n## Validation\n\n- bd update \u003cid\u003e --status=hooked should work\n- bd list --status=hooked should filter correctly","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-28T22:16:56.596014-08:00","created_by":"stevey","updated_at":"2025-12-28T22:16:56.596014-08:00","dependencies":[{"issue_id":"bd-s00m.1","depends_on_id":"bd-s00m","type":"parent-child","created_at":"2025-12-28T22:16:56.596584-08:00","created_by":"daemon"}]} +{"id":"bd-s00m.2","title":"Blocking logic: Include 'hooked' in blocking statuses","description":"Update the blocked_cache.go SQL to treat 'hooked' as a blocking status.\n\n## Current Logic (line ~163)\n\n```sql\nblocker.status IN ('open', 'in_progress', 'blocked', 'deferred')\n```\n\n## Updated Logic\n\n```sql\nblocker.status IN ('open', 'in_progress', 'blocked', 'deferred', 'hooked')\n```\n\n## Files to Update\n\n- internal/storage/sqlite/blocked_cache.go\n\n## Test Cases\n\n1. Issue A (hooked) blocks Issue B → B should NOT appear in bd ready\n2. Issue A (pinned, type=agent) → B should appear in bd ready\n3. Issue A (hooked) closed → B should appear in bd ready","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-28T22:16:56.809269-08:00","created_by":"stevey","updated_at":"2025-12-28T22:16:56.809269-08:00","dependencies":[{"issue_id":"bd-s00m.2","depends_on_id":"bd-s00m","type":"parent-child","created_at":"2025-12-28T22:16:56.809716-08:00","created_by":"daemon"},{"issue_id":"bd-s00m.2","depends_on_id":"bd-s00m.1","type":"blocks","created_at":"2025-12-28T22:17:22.129513-08:00","created_by":"daemon"}]} +{"id":"bd-s00m.3","title":"UI: Style 'hooked' status in bd list output","description":"Add styling for 'hooked' status in bd list and bd show output.\n\n## Semantic\n\n'hooked' means actively being worked by an agent (GUPP). Should be visually prominent.\n\n## Suggested Styling\n\n- Color: Cyan or bright blue (active, in-flight)\n- Distinct from 'in_progress' (which is more passive/cooperative)\n\n## Files to Update\n\n- internal/ui/styles.go - Add case for 'hooked' status","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-28T22:16:57.019828-08:00","created_by":"stevey","updated_at":"2025-12-28T22:16:57.019828-08:00","dependencies":[{"issue_id":"bd-s00m.3","depends_on_id":"bd-s00m","type":"parent-child","created_at":"2025-12-28T22:16:57.020313-08:00","created_by":"daemon"},{"issue_id":"bd-s00m.3","depends_on_id":"bd-s00m.1","type":"blocks","created_at":"2025-12-28T22:17:22.148918-08:00","created_by":"daemon"}]} +{"id":"bd-s00m.4","title":"Migration: Convert pinned work items to hooked","description":"Migrate existing pinned beads that represent work-on-hook to use 'hooked' status.\n\n## Migration Logic\n\n```sql\nUPDATE issues \nSET status = 'hooked'\nWHERE status = 'pinned' \n AND issue_type NOT IN ('agent', 'role')\n```\n\n## What Stays Pinned\n\n- Agent identity beads (gt-mayor, gt-witness-gastown, etc.)\n- Role definition beads (gt-mayor-role, etc.)\n\n## What Becomes Hooked\n\n- Molecules on hooks (mol_type field set)\n- Regular issues/tasks that were pinned to hooks\n\n## Verification\n\nAfter migration:\n- bd list --status=pinned should only show agents/roles\n- bd list --status=hooked should show work on hooks","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-28T22:17:13.872171-08:00","created_by":"stevey","updated_at":"2025-12-28T22:17:13.872171-08:00","dependencies":[{"issue_id":"bd-s00m.4","depends_on_id":"bd-s00m","type":"parent-child","created_at":"2025-12-28T22:17:13.872786-08:00","created_by":"daemon"},{"issue_id":"bd-s00m.4","depends_on_id":"bd-s00m.1","type":"blocks","created_at":"2025-12-28T22:17:22.168228-08:00","created_by":"daemon"}]} {"id":"bd-s0qf","title":"GH#405: Fix prefix parsing with hyphens - multi-hyphen prefixes parsed incorrectly","description":"Fixed: ExtractIssuePrefix was falling back to first-hyphen for word-like suffixes, breaking multi-hyphen prefixes like 'hacker-news' and 'me-py-toolkit'.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T01:13:56.951359-08:00","updated_at":"2025-12-17T16:11:17.070763-08:00","deleted_at":"2025-12-17T16:11:17.070763-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"} {"id":"bd-s1pz","title":"Merge: bd-u2sc.4","description":"branch: polecat/Logger\ntarget: main\nsource_issue: bd-u2sc.4\nrig: beads","status":"closed","priority":3,"issue_type":"merge-request","created_at":"2025-12-23T13:45:52.412757-08:00","updated_at":"2025-12-23T19:12:08.356689-08:00","closed_at":"2025-12-23T19:12:08.356689-08:00","close_reason":"Stale merge-requests from orphaned polecat branches - refinery not processing"} {"id":"bd-s2t","title":"wish: a 'continue' or similar cmd/flag which means alter last issue","description":"so many time I create an issue and then have another thought: 'oh, before I did X and it crashed there was ZZZ happening' or 'actually that is P4 not P2'. It would be nice if when `bd {cmd}` is used without a {title} or {id} it just adds or updates the most recently touched issue.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-08T06:46:37.529160416-07:00","updated_at":"2025-12-08T06:46:37.529160416-07:00"}