bd daemon sync: 2026-01-12 02:17:47

This commit is contained in:
beads/refinery
2026-01-12 02:17:47 -08:00
committed by Steve Yegge
parent 4ae1fb610a
commit a3b4f0423d

View File

@@ -1373,6 +1373,7 @@
{"id":"bd-iq7n","title":"Audit and fix JSONL filename mismatches across all repo clones","description":"## Problem\n\nMultiple clones of repos are configured with different JSONL filenames (issues.jsonl vs beads.jsonl), causing:\n1. JSONL files to be resurrected after deletion (one clone pushes issues.jsonl, another pushes beads.jsonl)\n2. Agents unable to see issues filed by other agents after sync\n3. Merge conflicts and data inconsistencies\n\n## Root Cause\n\nWhen repos were \"bd doctored\" or initialized at different times, some got issues.jsonl (old default) and others got beads.jsonl (Beads repo specific). These clones push their respective files, creating duplicates.\n\n## Task\n\nScan all repo clones under ~/src/ (1-2 levels deep) and standardize their JSONL configuration.\n\n### Step 1: Find all beads-enabled repos\n\n```bash\n# Find all directories named 'beads' at levels 1-2 under ~/src/\nfind ~/src -maxdepth 2 -type d -name beads\n```\n\n### Step 2: For each repo found, check configuration\n\nFor each directory from Step 1, check:\n- Does `.beads/metadata.json` exist?\n- What is the `jsonl_export` value?\n- What JSONL files actually exist in `.beads/`?\n- Are there multiple JSONL files (problem!)?\n\n### Step 3: Create audit report\n\nGenerate a report showing:\n```\nRepo Path | Config | Actual Files | Status\n----------------------------------- | ------------- | ---------------------- | --------\n~/src/beads | beads.jsonl | beads.jsonl | OK\n~/src/dave/beads | issues.jsonl | issues.jsonl | MISMATCH\n~/src/emma/beads | issues.jsonl | issues.jsonl, beads.jsonl | DUPLICATE!\n```\n\n### Step 4: Determine canonical name for each repo\n\nFor repos that are the SAME git repository (check `git remote -v`):\n- Group them together\n- Determine which JSONL filename should be canonical (majority wins, or beads.jsonl for the beads repo itself)\n- List which clones need to be updated\n\n### Step 5: Generate fix script\n\nCreate a script that for each mismatched clone:\n1. Updates `.beads/metadata.json` to use the canonical name\n2. If JSONL file needs renaming: `git mv .beads/old.jsonl .beads/new.jsonl`\n3. Removes any duplicate JSONL files: `git rm .beads/duplicate.jsonl`\n4. Commits the change\n5. Syncs: `bd sync`\n\n### Expected Output\n\n1. Audit report showing all repos and their config status\n2. List of repos grouped by git remote (same repository)\n3. Fix script or manual instructions for standardizing each repo\n4. Verification that after fixes, all clones of the same repo use the same JSONL filename\n\n### Edge Cases\n\n- Handle repos without metadata.json (use default discovery)\n- Handle repos with no git remote (standalone/local)\n- Handle repos that are not git repositories\n- Don't modify repos with uncommitted changes (warn instead)\n\n### Success Criteria\n\n- All clones of the same git repository use the same JSONL filename\n- No duplicate JSONL files in any repo\n- All configurations documented in metadata.json\n- bd doctor passes on all repos","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-11-21T23:58:35.044762-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
{"id":"bd-ir5t","title":"Merge: quartz-1767106247671","description":"branch: polecat/quartz-1767106247671\ntarget: main\nsource_issue: quartz-1767106247671\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T07:02:08.919103-08:00","created_by":"beads/polecats/quartz","updated_at":"2025-12-30T15:44:43.349476-08:00","closed_at":"2025-12-30T10:27:23.069509-08:00"}
{"id":"bd-irah","title":"Add refs field for cross-references with relationship type","description":"The refs field enables rich relationships beyond parent/child and depends-on.\n\nStructure:\n refs: [{id: string, rel: string}]\n\nRelationship types:\n- until: active until target closes\n- caused_by: triggered by target\n- relates_to: general association\n- supersedes: replaces target\n- validates: approval relationship\n\nExample:\n refs:\n - id: gt-abc1\n rel: until\n - id: hq-xyz9\n rel: caused_by\n\nEnables:\n- bd show gt-abc1 --refs (what references this?)\n- Conditional state (muted UNTIL issue closes)\n- Audit trails (this event CAUSED_BY that issue)","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-30T15:15:34.948913-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T18:12:30.975264-08:00","closed_at":"2025-12-30T15:51:38.291217-08:00","close_reason":"Implemented refs feature: added until/caused-by/validates dependency types and --refs flag to bd show"}
{"id":"bd-irmpv","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","owner":"steve.yegge@gmail.com","created_at":"2026-01-12T02:17:46.952262-08:00","created_by":"beads/refinery","updated_at":"2026-01-12T02:17:47.014718-08:00","closed_at":"2026-01-12T02:17:47.014718-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
{"id":"bd-irq6","title":"Remove unused global daemon infrastructure (internal/daemonrunner/)","description":"The internal/daemonrunner/ package (1,468 LOC) contains the old global daemon implementation that is no longer used. We now use per-workspace daemons.\n\nDeadcode analysis shows all these functions are unreachable:\n- Daemon.Start, runGlobalDaemon, setupLock\n- validateSingleDatabase, validateSchemaVersion\n- registerDaemon, unregisterDaemon\n- validateDatabaseFingerprint\n- Full git client implementation (NewGitClient, HasUpstream, HasChanges, Commit, Push, Pull)\n- Helper functions: isGitRepo, gitHasUpstream, gitHasChanges, gitCommit\n\nThe entire package appears unused since switching to per-workspace daemon architecture.\n\nFiles to remove:\n- daemon.go (9,436 bytes)\n- git.go (3,510 bytes) \n- sync.go (6,401 bytes)\n- fingerprint.go (2,076 bytes)\n- process.go (3,332 bytes)\n- rpc.go (994 bytes)\n- config.go (486 bytes)\n- logger.go (1,579 bytes)\n- flock_*.go (platform-specific file locking)\n- signals_*.go (platform-specific signal handling)\n- All test files\n\nTotal cleanup: ~1,500 LOC","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-06T19:30:50.936943-08:00","updated_at":"2025-11-06T19:35:10.646498-08:00","closed_at":"2025-11-06T19:35:10.646498-08:00"}
{"id":"bd-is6m","title":"Add gate checking to Deacon patrol loop","description":"Integrate gate checking into Deacon's patrol cycle.\n\n## Patrol Integration\n```go\nfunc (d *Deacon) checkGates(ctx context.Context) {\n gates, _ := d.store.ListOpenGates(ctx)\n \n for _, gate := range gates {\n // Check timeout\n if time.Since(gate.CreatedAt) \u003e gate.Timeout {\n d.notifyWaiters(gate, \"timeout\")\n d.closeGate(gate, \"timed out\")\n continue\n }\n \n // Check condition\n if d.checkCondition(gate.AwaitType, gate.AwaitID) {\n d.notifyWaiters(gate, \"cleared\")\n d.closeGate(gate, \"condition met\")\n }\n }\n}\n```\n\n## Note\nThis task is in Gas Town (gt), not beads. May need to be moved there.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T11:44:36.839709-08:00","updated_at":"2025-12-23T12:19:44.204647-08:00","closed_at":"2025-12-23T12:19:44.204647-08:00","dependencies":[{"issue_id":"bd-is6m","depends_on_id":"bd-udsi","type":"parent-child","created_at":"2025-12-23T11:44:52.909253-08:00","created_by":"daemon"},{"issue_id":"bd-is6m","depends_on_id":"bd-u66e","type":"blocks","created_at":"2025-12-23T11:44:56.428084-08:00","created_by":"daemon"}]}
{"id":"bd-isi6q","title":"Fix daemon socket path exceeds macOS 104-char limit (GH#1001)","description":"dispatched_by: mayor\n\nDaemon socket path can exceed macOS 104-char limit in deep directories. See https://github.com/steveyegge/beads/issues/1001","status":"closed","priority":2,"issue_type":"task","assignee":"beads/polecats/quartz","created_at":"2026-01-10T12:18:32.427353-08:00","created_by":"mayor","updated_at":"2026-01-10T16:43:58.362672-08:00","closed_at":"2026-01-10T16:43:58.362672-08:00","close_reason":"Fixed: Daemon now automatically uses /tmp/beads-{hash}/daemon.sock for deep directory paths that would exceed macOS 104-char sun_path limit. Added SocketPathForWorkspace() and SocketPathForDatabase() functions to internal/daemon/socketpath.go. Updated all callers to use the new functions. Backward compatible - short paths still use traditional .beads/bd.sock location.","labels":["bug"]}