bd sync: 2025-12-23 12:03:33
This commit is contained in:
@@ -577,7 +577,7 @@
|
||||
{"id":"gt-nvql","title":"max Handoff","description":"attached_molecule: gt-wvyi\nattached_at: 2025-12-23T20:01:30Z","status":"pinned","priority":2,"issue_type":"task","created_at":"2025-12-23T11:47:59.020501-08:00","updated_at":"2025-12-23T12:01:30.729698-08:00"}
|
||||
{"id":"gt-nz6t","title":"Remove unused style helper functions","description":"internal/style/style.go defines RenderSuccess, RenderWarning, RenderError, and RenderInfo helper functions that are never used. Code uses style.Success.Render() directly instead. Either use the helpers consistently or remove them.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-21T21:34:43.822193-08:00","updated_at":"2025-12-21T21:50:45.224202-08:00","closed_at":"2025-12-21T21:50:45.224202-08:00","close_reason":"Removed 4 unused style helper functions (RenderSuccess, RenderWarning, RenderError, RenderInfo)"}
|
||||
{"id":"gt-o29j","title":"inspect-workers","description":"Capture output for each working polecat.\n\n```bash\ngt peek \u003crig\u003e/\u003cpolecat\u003e\n```\n\nNeeds: survey-workers","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T01:41:54.506324-08:00","updated_at":"2025-12-23T04:39:39.684381-08:00","closed_at":"2025-12-23T04:39:39.684381-08:00","close_reason":"Parent gt-751s superseded by Christmas Ornament pattern","dependencies":[{"issue_id":"gt-o29j","depends_on_id":"gt-751s","type":"parent-child","created_at":"2025-12-23T01:41:54.56996-08:00","created_by":"stevey"},{"issue_id":"gt-o29j","depends_on_id":"gt-ep7f","type":"blocks","created_at":"2025-12-23T01:41:54.577076-08:00","created_by":"stevey"}]}
|
||||
{"id":"gt-o3is","title":"gt sling pinToHook doesn't set pinned boolean field","description":"## Bug\n\nWhen `gt sling` pins work to an agent's hook via subprocess, `bd pin` reports success but the `pinned` boolean field is never set in the database.\n\n## Investigation\n\n1. `bd pin` works correctly from command line\n2. `bd pin` via `exec.Command()` in Go subprocess prints success message (\"📌 Pinned...\") but doesn't update the database\n3. Even with `--no-daemon` flag, the issue persists\n4. The same `bd` binary is used in both cases\n5. The same working directory is used\n6. The assignee field IS being set correctly\n\n## Repro\n```bash\n# Manual - works:\nbd pin bd-xyz --for dave\nbd show bd-xyz --json | jq '.[0].pinned' # true\n\n# Via gt sling - fails:\ngt sling bd-xyz beads/crew/dave\n# Prints: 📌 Pinned bd-xyz to dave's hook\nbd show bd-xyz --json | jq '.[0].pinned' # null\n```\n\n## Root Cause\n\nUnknown. The bd pin command outputs success but the database isn't updated. Possibly related to:\n- Transaction handling in bd pin\n- Redirect file handling in subprocess context\n- WAL/journal mode differences\n\n## Workaround\n\nFor now, the handoff bead attachment (`AttachMolecule`) is the primary mechanism for tracking what's on an agent's hook. The `bd hook` command will show empty until this is fixed.\n\n## Files\n\n- gastown: internal/cmd/sling.go (pinToHook)\n- gastown: internal/beads/beads.go (Pin method)\n- beads: cmd/bd/pin.go (bd pin implementation)","status":"open","priority":1,"issue_type":"bug","created_at":"2025-12-23T04:41:12.668958-08:00","updated_at":"2025-12-23T04:50:44.353992-08:00"}
|
||||
{"id":"gt-o3is","title":"gt sling pinToHook doesn't set pinned boolean field","description":"## Bug\n\nWhen `gt sling` pins work to an agent's hook via subprocess, `bd pin` reports success but the `pinned` boolean field is NOT persisted.\n\n## Root Cause (Found 2025-12-23)\n\nThe issue is a sync/flush timing problem:\n\n1. `gt sling` calls `pinToHook()` which runs `bd --no-daemon pin`\n2. `bd pin` updates the SQLite database with `pinned=1`\n3. `bd pin` schedules a flush to JSONL (via FlushManager)\n4. Subprocess exits BEFORE flush completes\n5. `gt sling` then calls `syncBeads()` which runs `bd sync`\n6. `bd sync` imports from JSONL which DOESN'T have pinned field\n7. Import overwrites SQLite, resetting `pinned=0`\n\nThe assignee field IS set correctly because it's also in the database before sync, but sync imports the JSONL which doesn't have the pinned field (due to omitempty on false value).\n\n## Reproduction\n\n```bash\n# Create issue\nbd create \"test\" --json\n\n# Sling it\ngt sling \u003cid\u003e gastown/crew/max\n\n# Check - pinned is null!\nbd show \u003cid\u003e --json | jq '.[0].pinned'\n```\n\n## Fix Options\n\n1. **Make bd pin synchronous**: Force flush before subprocess exit\n2. **Skip sync after pin**: Don't call syncBeads after pinToHook\n3. **Use direct DB update in gt**: Call UpdateIssue directly instead of bd subprocess\n4. **Fix flush-on-exit**: Ensure PersistentPostRun waits for flush completion\n\n## Workaround\n\nThe handoff bead attachment (`AttachMolecule`) is the primary mechanism for tracking what's on an agent's hook. The pinned field is cosmetic for `bd hook` visibility.\n\n## Files\n\n- gastown: internal/cmd/sling.go (slingToCrew, pinToHook, syncBeads)\n- gastown: internal/beads/beads.go (Pin method)\n- beads: cmd/bd/pin.go (bd pin command)\n- beads: cmd/bd/flush_manager.go (async flush)","status":"open","priority":1,"issue_type":"bug","created_at":"2025-12-23T04:41:12.668958-08:00","updated_at":"2025-12-23T12:03:22.343937-08:00"}
|
||||
{"id":"gt-o75l","title":"Merge: gt-h6eq.3","description":"branch: polecat/keeper\ntarget: main\nsource_issue: gt-h6eq.3\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T11:49:58.84455-08:00","updated_at":"2025-12-23T11:49:58.84455-08:00"}
|
||||
{"id":"gt-oc2","title":"Daemon: proper rig discovery","description":"Currently discovers rigs by scanning tmux session names for gt-*-witness pattern. Should instead:\n- Read rigs from mayor/rigs.json\n- Or scan town directory for .gastown subdirs\n- Handle rigs that exist but don't have running witnesses","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-18T13:38:15.825299-08:00","updated_at":"2025-12-19T17:22:52.554474-08:00","closed_at":"2025-12-19T16:28:39.497935-08:00","dependencies":[{"issue_id":"gt-oc2","depends_on_id":"gt-99m","type":"blocks","created_at":"2025-12-18T13:38:26.826697-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-odvf","title":"Document bd mol bond/squash/burn CLI","description":"Create CLI reference documentation for molecule commands:\n\n## bd mol bond\n\nInstantiate a proto into a runnable molecule.\n\n```bash\nbd mol bond \u003cproto-id\u003e [--wisp] [--assignee=\u003caddr\u003e]\n```\n\n- Default: creates a Mol (durable, in main beads)\n- --wisp: creates a Wisp (ephemeral, in .beads-ephemeral/)\n- --assignee: who will execute this molecule\n\n## bd mol squash\n\nComplete a molecule and generate digest.\n\n```bash\nbd mol squash \u003cmol-id\u003e --summary='...'\n```\n\n- For Mol: creates digest in git history\n- For Wisp: evaporates (no permanent record)\n- --summary: required summary of what was accomplished\n\n## bd mol burn\n\nAbandon a molecule without completing.\n\n```bash\nbd mol burn \u003cmol-id\u003e [--reason='...']\n```\n\n- Discards molecule state\n- No digest created\n- Use when molecule is no longer needed","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T16:33:06.462105-08:00","updated_at":"2025-12-23T02:14:23.810794-08:00","closed_at":"2025-12-23T02:14:23.810794-08:00","close_reason":"Already documented in docs/molecules.md lines 70-235","dependencies":[{"issue_id":"gt-odvf","depends_on_id":"gt-62hm","type":"blocks","created_at":"2025-12-21T16:33:17.530156-08:00","created_by":"daemon"}]}
|
||||
@@ -750,7 +750,7 @@
|
||||
{"id":"gt-wpg","title":"Replaceable notifications via Claude Code queue","description":"Leverage Claude Code's ability to replace queued text for notifications that supersede previous ones.\n\n## Problem\n\nIf daemon sends 10 heartbeats while agent is busy, agent returns to see 10 stacked messages. Wasteful and noisy.\n\n## Solution\n\nUse Claude Code's queue replacement for:\n- Heartbeat messages (only latest matters)\n- Status updates that supersede previous\n- Progress notifications\n\n## Implementation\n\nNotifications get a 'slot' identifier. New notification in same slot replaces old one:\n- Slot: 'heartbeat' → only one heartbeat queued at a time\n- Slot: 'status-\u003crig\u003e' → latest status per rig\n- No slot → stacks normally (for unique messages)\n\n## Research Needed\n\n- How does Claude Code expose queue replacement?\n- tmux send-keys behavior with pending input\n- Alternative: clear + resend pattern","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-18T14:19:29.821949-08:00","updated_at":"2025-12-20T13:19:00.398942-08:00","closed_at":"2025-12-20T13:19:00.398942-08:00","dependencies":[{"issue_id":"gt-wpg","depends_on_id":"gt-99m","type":"blocks","created_at":"2025-12-18T14:19:46.656972-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-wrw2","title":"Test2","description":"Testing gt mail","status":"open","priority":2,"issue_type":"message","assignee":"gastown-alpha","created_at":"2025-12-20T21:39:05.875792-08:00","updated_at":"2025-12-20T21:39:05.875792-08:00","labels":["thread:thread-1fd9f932cef0"],"sender":"Steve Yegge","wisp":true}
|
||||
{"id":"gt-wusk","title":"Layered context onboarding pattern","description":"Pattern from handoff discussion:\n\n## Pattern: Layered Context Onboarding\n\nTown CLAUDE.md (user/org) -\u003e Rig CLAUDE.md (project) -\u003e Role priming\n\n## Ultra-compressed HOP for workers (no reveal)\n\n- Permanent record: All work tracked. Outcomes matter.\n- Quality gates: Molecule steps exist for a reason.\n- Attribution: Completions build your track record.\n- Handoff clean: Leave state any worker can continue.\n\n## Recommendation\n\nCreate Town @AGENTS.md for shared worker context that all workers see.\nThis provides common behavioral guidance without revealing full HOP context.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-20T00:55:11.984103-08:00","updated_at":"2025-12-20T00:55:11.984103-08:00"}
|
||||
{"id":"gt-wvyi","title":"sling pin test 2","status":"open","priority":2,"issue_type":"task","assignee":"max","created_at":"2025-12-23T11:51:01.899435-08:00","updated_at":"2025-12-23T12:01:30.923103-08:00"}
|
||||
{"id":"gt-wvyi","title":"sling pin test 2","status":"closed","priority":2,"issue_type":"task","assignee":"max","created_at":"2025-12-23T11:51:01.899435-08:00","updated_at":"2025-12-23T12:03:22.256591-08:00","closed_at":"2025-12-23T12:03:22.256591-08:00","close_reason":"test issue for gt-o3is debugging"}
|
||||
{"id":"gt-x2cx","title":"gt handoff: Deadlock bug in runHandoff","notes":"Running 'gt handoff' from a polecat causes a deadlock:\n\nStack trace shows:\n- goroutine 1 [select (no cases)] in runHandoff\n- File: internal/cmd/handoff.go:125\n\nThe command successfully sends the shutdown request but then hangs with 'fatal error: all goroutines are asleep - deadlock!'","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-20T08:01:33.827354-08:00","updated_at":"2025-12-20T08:47:47.599975-08:00","closed_at":"2025-12-20T08:47:47.599975-08:00"}
|
||||
{"id":"gt-x74c","title":"gt mol command tree: status, catalog, burn, squash","description":"Add gt mol subcommand as agent-side API for molecule operations.\n\nCommands needed:\n- gt mol status - What's on my hook? (pinned molecule, current step, progress)\n- gt mol catalog - List available protos (delegate to bd mol catalog)\n- gt mol burn - Burn current attachment\n- gt mol squash - Squash current molecule to digest\n\nThis completes the agent-side API and makes the docs (sling-design.md, propulsion-principle.md) match reality.\n\nBlocks: deacon.md.tmpl update (can't use gt mol status until it exists)","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-22T13:12:23.710855-08:00","updated_at":"2025-12-22T13:16:16.543031-08:00","closed_at":"2025-12-22T13:16:16.543031-08:00","close_reason":"Implemented gt mol catalog, burn, squash commands. Status already existed."}
|
||||
{"id":"gt-x7c","title":"Work assignment mail not received by polecat","description":"When gt spawn sends a work assignment:\n\n1. gt spawn says '✓ Work assignment sent'\n2. Polecat runs 'gt mail inbox' \n3. Shows '0 messages, 0 unread'\n\nThe work assignment mail never arrived at the polecat's inbox.\n\n## Observed in session\n- Spawned polecat dementus on gt-th7\n- Polecat checked inbox: empty\n- Polecat couldn't find issue (separate sync bug)\n\n## Possible causes\n- Mail routing issue for polecat addresses\n- gt spawn not actually sending mail\n- Mail sent to wrong address format","notes":"This was likely caused by stale beads in old polecats. With gt-9nf (fresh polecats), polecats now use shared rig beads via redirect file, eliminating sync issues. Mail routing uses town beads correctly.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-20T15:18:12.39878-08:00","updated_at":"2025-12-21T10:16:00.862028-08:00","closed_at":"2025-12-21T10:16:00.862028-08:00","close_reason":"Fixed by gt-9nf: fresh polecats use shared beads, mail routes correctly to town beads"}
|
||||
|
||||
Reference in New Issue
Block a user