bd sync: 2025-12-25 21:59:51
This commit is contained in:
@@ -1195,7 +1195,7 @@
|
||||
{"id":"gt-psj76","title":"Patrol Lifecycle Completion","description":"Patrols complete their full cycle without wisp accumulation.\n\n## Problem\nPatrol wisps accumulate (73+ observed) because burn-or-loop step does not complete. This wastes storage and makes bd list noisy.\n\n## Requirements\n- Burn-or-loop step executes and burns completed wisps\n- Fresh wisp instantiated for next patrol cycle \n- Wisp GC runs periodically as safety net (orphan-check step)\n- Context cycling triggers gt handoff when budget exhausted\n- No wisp accumulation over time\n\n## Success Criteria\n- bd wisp list shows fewer than 5 wisps at any time\n- Patrols run indefinitely without intervention\n- Context cycles cleanly produce handoff mail\n\nThis is the foundation for all autonomous patrol work.","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-25T20:45:54.435395-08:00","updated_at":"2025-12-25T20:45:54.435395-08:00"}
|
||||
{"id":"gt-psj76.1","title":"Burn-or-loop step execution","description":"Fix step completion detection in patrol formulas. Ensure done() properly clears the molecule and triggers burn. Currently wisps accumulate because this step doesn't complete.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:21.305965-08:00","updated_at":"2025-12-25T21:13:47.012289-08:00","closed_at":"2025-12-25T21:13:47.012289-08:00","close_reason":"Fixed burn/squash to close step issues","dependencies":[{"issue_id":"gt-psj76.1","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:21.306455-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-psj76.2","title":"Wisp GC command","description":"Implement bd wisp gc command that cleans orphaned wisps older than a threshold (default 1h). Safety net for wisps that escape normal burn-or-loop cleanup. Should run as part of Deacon patrol.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:22.455591-08:00","updated_at":"2025-12-25T21:36:00.258525-08:00","closed_at":"2025-12-25T21:36:00.258525-08:00","close_reason":"bd wisp gc command exists and works; updated Deacon patrol formula to use correct command","dependencies":[{"issue_id":"gt-psj76.2","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:22.457703-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-psj76.3","title":"Context cycling protocol","description":"Document and verify gt handoff pattern for patrol agents. Ensure hook chain works: handoff mail sent, session respawns, SessionStart hook runs gt prime, work continues from pinned molecule.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:23.973741-08:00","updated_at":"2025-12-25T20:55:23.973741-08:00","dependencies":[{"issue_id":"gt-psj76.3","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:23.974279-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-psj76.3","title":"Context cycling protocol","description":"Document and verify gt handoff pattern for patrol agents. Ensure hook chain works: handoff mail sent, session respawns, SessionStart hook runs gt prime, work continues from pinned molecule.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:23.973741-08:00","updated_at":"2025-12-25T21:58:41.732817-08:00","closed_at":"2025-12-25T21:58:41.732817-08:00","close_reason":"Context cycling protocol verified complete. Implementation in handoff.go + prime.go. Documentation in session-lifecycle.md + propulsion-principle.md. Hook chain: SessionStart→gt prime→(role context + mail injection + patrol auto-spawn)→startup directive.","dependencies":[{"issue_id":"gt-psj76.3","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:23.974279-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-psj76.4","title":"Patrol lifecycle integration test","description":"Verify patrol runs 3+ cycles without wisp accumulation. bd wisp list should show \u003c5 wisps. Context cycles cleanly produce handoff mail. Test with Deacon patrol.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:55:25.121614-08:00","updated_at":"2025-12-25T20:55:25.121614-08:00","dependencies":[{"issue_id":"gt-psj76.4","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:25.123746-08:00","created_by":"daemon"},{"issue_id":"gt-psj76.4","depends_on_id":"gt-psj76.1","type":"blocks","created_at":"2025-12-25T20:56:44.636528-08:00","created_by":"daemon"},{"issue_id":"gt-psj76.4","depends_on_id":"gt-psj76.2","type":"blocks","created_at":"2025-12-25T20:56:44.733351-08:00","created_by":"daemon"},{"issue_id":"gt-psj76.4","depends_on_id":"gt-psj76.3","type":"blocks","created_at":"2025-12-25T20:56:44.825574-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-pv93","title":"Post-work discovery: AI analysis finds follow-on issues","description":"AI analyzes completed work to discover: bugs, punted work, follow-on tasks.\n\n**From VC**: Supervisor.AnalyzeResult() with iterative refinement. ~300 lines.\n\n**Gas Town implementation**: Post-work hook in molecule:\n```yaml\npost_work:\n discover:\n - bugs\n - punted_items\n - follow_on_work\n file_as: beads\n```\n\nPolecat output gets analyzed by AI, discovered work becomes beads issues.\n\n**Value**: Nothing gets forgotten. VC found ~25% more issues with refinement.\n\n**Key**: Use semantic deduplication (gt-xxx) to avoid pollution.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-20T20:30:14.723338-08:00","updated_at":"2025-12-20T20:30:14.723338-08:00","dependencies":[{"issue_id":"gt-pv93","depends_on_id":"gt-zhpa","type":"parent-child","created_at":"2025-12-20T20:30:27.534886-08:00","created_by":"daemon"},{"issue_id":"gt-pv93","depends_on_id":"gt-6m3e","type":"related","created_at":"2025-12-20T20:30:35.115095-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-pvox","title":"Digest: mol-deacon-patrol","description":"Patrol #4: 2 Witnesses OK, 2 Refineries OK","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T22:21:42.037058-08:00","updated_at":"2025-12-24T22:21:42.037058-08:00","closed_at":"2025-12-24T22:21:42.037029-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
@@ -1436,6 +1436,11 @@
|
||||
{"id":"gt-uvpo6","title":"Digest: mol-deacon-patrol","description":"Patrol 5: All agents healthy, routine","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T01:16:30.625876-08:00","updated_at":"2025-12-25T01:16:30.625876-08:00","closed_at":"2025-12-25T01:16:30.625845-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-ux0f","title":"Digest: mol-deacon-patrol","description":"Patrol #16: Stable","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T23:34:42.184561-08:00","updated_at":"2025-12-24T23:34:42.184561-08:00","closed_at":"2025-12-24T23:34:42.184526-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-uym5","title":"Implement gt mol status command","description":"Show what's on an agent's hook.\n\n```bash\ngt mol status [target]\n```\n\nOutput:\n- What's slung (molecule name, associated issue)\n- Current phase and progress\n- Whether it's a wisp\n- Next action hint\n\nIf no target, shows current agent's status.\n\nAcceptance:\n- [ ] Read pinned bead attachment\n- [ ] Display molecule/issue info\n- [ ] Show phase progress\n- [ ] Indicate wisp vs durable","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/nux","created_at":"2025-12-22T03:17:34.679963-08:00","updated_at":"2025-12-22T12:34:19.942265-08:00","closed_at":"2025-12-22T12:34:19.942265-08:00","close_reason":"Implemented gt mol status command with mol alias, auto-detection, progress display, wisp detection, and next action hints"}
|
||||
{"id":"gt-uzf2l","title":"Mol Mall: Formula marketplace using GitHub as backend","description":"Create a marketplace for sharing molecule formulas using GitHub repos as the hosting backend.\n\n## Architecture\n\nFormulas ──cook──→ [ephemeral proto] ──pour/wisp──→ Mol/Wisp\n ↑ │\n └────────────────── distill ─────────────────────────┘\n\n- Formulas: JSON source files (.formula.json) - the thing you share\n- Protos: Transient compilation artifacts - auto-deleted after use\n- Mols/Wisps: Execution instances - not shared directly\n\n## Key operations\n- bd distill \u003cmol-id\u003e → Extract formula from completed work\n- bd mol publish \u003cformula\u003e → Share to GitHub\n- bd mol install \u003curl\u003e → Fetch from GitHub\n- bd pour \u003cformula\u003e → Cook and spawn (proto is ephemeral)\n\n## Migrated from beads rig (bd-1dez)\nCompleted: distill, formula add, versioning, installation tracking\nRemaining: install, update, search, publish","status":"deferred","priority":2,"issue_type":"epic","created_at":"2025-12-25T21:52:40.916214-08:00","updated_at":"2025-12-25T21:53:00.611757-08:00"}
|
||||
{"id":"gt-uzf2l.1","title":"bd mol install: Install formula from GitHub","description":"Fetch and install a formula from a GitHub repository.\n\nUsage: bd mol install github.com/org/repo[@version]\n\nShould:\n- Clone/fetch the formula.json from the repo\n- Validate the formula structure\n- Store in local catalog\n- Track installation in .beads/installed.json","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T21:53:00.909549-08:00","updated_at":"2025-12-25T21:53:00.909549-08:00","dependencies":[{"issue_id":"gt-uzf2l.1","depends_on_id":"gt-uzf2l","type":"parent-child","created_at":"2025-12-25T21:53:00.909973-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-uzf2l.2","title":"bd mol update: Check and update installed formulas","description":"Check for and apply updates to installed formulas.\n\nUsage: bd mol update [formula-name]\n\nShould:\n- Check GitHub for newer versions/commits\n- Show available updates\n- Apply updates when requested\n- Track update history","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T21:53:01.20389-08:00","updated_at":"2025-12-25T21:53:01.20389-08:00","dependencies":[{"issue_id":"gt-uzf2l.2","depends_on_id":"gt-uzf2l","type":"parent-child","created_at":"2025-12-25T21:53:01.204329-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-uzf2l.3","title":"bd mol search: Find formulas using GitHub API","description":"Search for formulas across GitHub.\n\nUsage: bd mol search \u003cquery\u003e\n\nShould:\n- Use GitHub API to search repos with formula.json\n- Filter by topics (e.g., beads-formula)\n- Display results with descriptions and stars\n- Support pagination","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T21:53:01.50489-08:00","updated_at":"2025-12-25T21:53:01.50489-08:00","dependencies":[{"issue_id":"gt-uzf2l.3","depends_on_id":"gt-uzf2l","type":"parent-child","created_at":"2025-12-25T21:53:01.505329-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-uzf2l.4","title":"bd mol publish: Push formula to GitHub repo","description":"Publish a local formula to a GitHub repository.\n\nUsage: bd mol publish \u003cformula-name\u003e \u003cgithub-repo\u003e\n\nShould:\n- Create or update GitHub repo with formula\n- Add README.md from formula metadata\n- Tag with version\n- Set appropriate topics for discoverability","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T21:53:01.817145-08:00","updated_at":"2025-12-25T21:53:01.817145-08:00","dependencies":[{"issue_id":"gt-uzf2l.4","depends_on_id":"gt-uzf2l","type":"parent-child","created_at":"2025-12-25T21:53:01.817569-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-v0xqo","title":"Digest: mol-deacon-patrol","description":"Patrol 2: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T15:32:26.623344-08:00","updated_at":"2025-12-25T15:32:26.623344-08:00","closed_at":"2025-12-25T15:32:26.623315-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-v1pcg","title":"ApplyBranches/ApplyGates mutate steps in place","description":"ApplyBranches and ApplyGates claim to return a modified steps slice, but they actually mutate the original steps via the pointer map from buildStepMap().\n\n```go\n// ApplyBranches docstring says:\n// Returns the modified steps slice (steps are modified in place for dependencies).\n```\n\nThis is technically documented but violates the pattern established by ApplyLoops and ApplyAdvice which return new step slices.\n\nOptions:\n1. Document explicitly that these functions mutate in place (current behavior)\n2. Clone steps before modification for true immutability\n3. Accept this as intentional since it's an optimization\n\nThe current behavior is safe because cook.go doesn't reuse the input slice, but could cause subtle bugs if callers expect immutability.\n\nRecommend option 1 (document) or 2 (clone) for consistency.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-25T15:14:01.921527-08:00","updated_at":"2025-12-25T21:01:40.941624-08:00","closed_at":"2025-12-25T21:01:40.941624-08:00","close_reason":"Low priority bugs or cosmetic issues. Not blocking autonomous patrols.","dependencies":[{"issue_id":"gt-v1pcg","depends_on_id":"gt-8tmz.4","type":"blocks","created_at":"2025-12-25T15:14:18.94711-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-v3bjf","title":"Digest: mol-deacon-patrol","description":"Patrol 14: Quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T07:28:25.96187-08:00","updated_at":"2025-12-25T07:28:25.96187-08:00","closed_at":"2025-12-25T07:28:25.961842-08:00"}
|
||||
@@ -1535,7 +1540,7 @@
|
||||
{"id":"gt-xkbm","title":"Merge: gt-g44u.1","description":"branch: polecat/Ace\ntarget: main\nsource_issue: gt-g44u.1\nrig: gastown","status":"closed","priority":0,"issue_type":"merge-request","created_at":"2025-12-19T16:04:14.367493-08:00","updated_at":"2025-12-19T17:35:38.210747-08:00","closed_at":"2025-12-19T17:35:38.210747-08:00"}
|
||||
{"id":"gt-xleh8","title":"Digest: mol-deacon-patrol","description":"Patrol 20: Final patrol, all healthy, handoff","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T00:37:16.291795-08:00","updated_at":"2025-12-25T00:37:16.291795-08:00","closed_at":"2025-12-25T00:37:16.291764-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-xm6g","title":"Digest: mol-deacon-patrol","description":"Patrol #19","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T22:26:24.186039-08:00","updated_at":"2025-12-24T22:26:24.186039-08:00","closed_at":"2025-12-24T22:26:24.186002-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-xmyha","title":"Switch formulas from JSON to TOML","description":"## Problem\nFormula JSON files have poor ergonomics for agents and humans:\n- Multi-line strings require `\\n` escaping\n- Diffs are hard to read (long single-line changes)\n- No comments allowed\n\n## Solution\nSwitch formulas to TOML format:\n\n```toml\nformula = \"mol-deacon-patrol\"\nversion = 1\ndescription = \"\"\"\nMayor's daemon patrol loop.\nMulti-line strings work naturally.\n\"\"\"\n\n[[steps]]\nid = \"inbox-check\"\ntitle = \"Handle callbacks\"\ndescription = \"\"\"\nCheck inbox for messages.\n\n```bash\ngt mail inbox\n```\n\"\"\"\n```\n\n## Tasks\n- [ ] Add TOML parsing for formulas (github.com/BurntSushi/toml)\n- [ ] Update formula loader to try .toml first, fall back to .json\n- [ ] Add `bd formula convert \u003cname\u003e` to migrate JSON → TOML\n- [ ] Convert existing formulas\n- [ ] Update docs\n\n## Notes\n- Keep issues.jsonl as-is (machine data, append-only)\n- TOML only for human-edited formula files","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-25T21:49:39.609525-08:00","updated_at":"2025-12-25T21:49:39.609525-08:00"}
|
||||
{"id":"gt-xmyha","title":"Switch formulas from JSON to TOML","description":"## Problem\nFormula JSON files have poor ergonomics for agents and humans:\n- Multi-line strings require `\\n` escaping\n- Diffs are hard to read (long single-line changes)\n- No comments allowed\n\n## Solution\nSwitch formulas to TOML format:\n\n```toml\nformula = \"mol-deacon-patrol\"\nversion = 1\ndescription = \"\"\"\nMayor's daemon patrol loop.\nMulti-line strings work naturally.\n\"\"\"\n\n[[steps]]\nid = \"inbox-check\"\ntitle = \"Handle callbacks\"\ndescription = \"\"\"\nCheck inbox for messages.\n\n```bash\ngt mail inbox\n```\n\"\"\"\n```\n\n## Tasks\n- [ ] Add TOML parsing for formulas (github.com/BurntSushi/toml)\n- [ ] Update formula loader to try .toml first, fall back to .json\n- [ ] Add `bd formula convert \u003cname\u003e` to migrate JSON → TOML\n- [ ] Convert existing formulas\n- [ ] Update docs\n\n## Notes\n- Keep issues.jsonl as-is (machine data, append-only)\n- TOML only for human-edited formula files","status":"in_progress","priority":2,"issue_type":"feature","created_at":"2025-12-25T21:49:39.609525-08:00","updated_at":"2025-12-25T21:51:32.730202-08:00"}
|
||||
{"id":"gt-xnql","title":"Define constants for magic strings","description":"Several magic strings are hardcoded throughout the codebase:\n- \"mayor\" appears in 20+ places as a path component\n- \"main\" branch name appears in 20+ places\n- \"beads-sync\" branch name in multiple files\n- \"rigs.json\" filename\n\nThese should be constants in a central location for maintainability.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-21T21:34:46.620322-08:00","updated_at":"2025-12-21T22:13:07.292513-08:00","closed_at":"2025-12-21T22:13:07.292513-08:00","close_reason":"Created internal/constants/constants.go with centralized definitions for:\n- Directory names (mayor, polecats, crew, etc.)\n- File names (rigs.json, town.json, state.json)\n- Git branches (main, beads-sync)\n- Session names (gt-mayor, gt-deacon)\n- Agent roles\n\nUpdated key files (rig_helpers.go, daemon.go, status.go) to use the new constants package. Full migration of all usages (~100 files) can be done incrementally."}
|
||||
{"id":"gt-xnzp","title":"Merge: gt-7923","description":"branch: polecat/rictus\ntarget: main\nsource_issue: gt-7923\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T00:18:21.630445-08:00","updated_at":"2025-12-23T01:16:15.701443-08:00","closed_at":"2025-12-23T01:16:15.701443-08:00","close_reason":"Merged to main"}
|
||||
{"id":"gt-xp2s","title":"P0: Multiple agents can claim same worker identity","description":"Multiple Claude Code sessions running simultaneously all think they are 'dave' on beads/crew/dave. No detection or prevention of identity collision. This breaks the single-agent-per-worker assumption.\n\n## Fix Implemented\n\n1. **Lock Package** (`internal/lock/lock.go`):\n - PID-based lockfile at `\u003cworker\u003e/.gastown/agent.lock`\n - Contains PID, timestamp, session ID, hostname\n - Stale lock detection (checks if owning PID is dead)\n\n2. **Prevention in gt prime**:\n - Workers (crew/polecat) acquire identity lock before loading context\n - If another live process holds the lock, prime fails with clear error\n - Shows lock holder details and resolution steps\n\n3. **Detection with gt agents**:\n - `gt agents check` - scans for collisions and stale locks\n - `gt agents fix` - cleans stale locks\n - JSON output available for patrol tooling\n\n4. **Correction in gt doctor**:\n - New `identity-collision` check\n - `gt doctor --fix` cleans stale locks","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-21T23:55:56.649577-08:00","updated_at":"2025-12-22T00:05:07.309612-08:00","closed_at":"2025-12-22T00:05:07.309612-08:00","close_reason":"Implemented lock mechanism with prevention (gt prime), detection (gt agents check), and correction (gt doctor/agents fix)"}
|
||||
|
||||
Reference in New Issue
Block a user