bd sync: 2025-12-23 11:55:27
This commit is contained in:
@@ -358,6 +358,7 @@
|
||||
{"id":"gt-eu9","title":"Witness session cycling and handoff","description":"Add session cycling and handoff protocol to Witness CLAUDE.md template.\n\n## Session Cycling Protocol\n\n```markdown\n## Session Cycling\n\nYour context will fill over long swarms. Proactively cycle when:\n- Running for many hours\n- Losing track of which workers you've checked\n- Responses getting slower\n- About to start complex operation\n\n### Handoff Protocol\n\n1. **Capture current state**:\n```bash\ntown list . # Worker states\ntown all beads # Pending verifications \ntown inbox # Unprocessed messages\n```\n\n2. **Compose handoff note**:\n```\n[HANDOFF_TYPE]: witness_cycle\n[TIMESTAMP]: \u003cnow\u003e\n[RIG]: \u003crig\u003e\n\n## Active Workers\n\u003clist workers and status\u003e\n\n## Pending Verifications\n\u003cworkers signaled done but not verified\u003e\n\n## Recent Actions\n\u003clast 3-5 actions\u003e\n\n## Warnings/Notes\n\u003canything next session should know\u003e\n\n## Next Steps\n\u003cwhat should happen next\u003e\n```\n\n3. **Send handoff**:\n```bash\ntown mail send \u003crig\u003e/witness -s \"Session Handoff\" -m \"\u003cnote\u003e\"\n```\n\n4. **Exit cleanly**: End session, daemon spawns fresh one.\n\n### On Fresh Session Start\n\n1. Check for handoff: `town inbox | grep \"Session Handoff\"`\n2. If found, read it and resume from handoff state\n3. If not found, do full status check\n```\n\n## Implementation\n\nAdd to WITNESS_CLAUDE.md template.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-15T19:48:55.484911-08:00","updated_at":"2025-12-15T20:47:30.768506-08:00","dependencies":[{"issue_id":"gt-eu9","depends_on_id":"gt-82y","type":"blocks","created_at":"2025-12-15T19:49:05.846443-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-eyi2","title":"Activity feed from wisp state: gt patrol status","description":"Enable mayor and gt tool to quickly see what patrol agents are doing.\n\n## Problem\n\nThe mayor and gt tool cannot quickly see what the deacon (or other patrol agents) are doing.\nNeed a way to extract an activity feed from the current wisp state.\n\n## Desired Commands\n\n- gt patrol status: Show current patrol state (step, timing, cycle count)\n- gt patrol history: Show recent patrol cycles (from digests)\n- gt patrol feed: Live tail of patrol activity\n\n## Data Sources\n\n- .beads-wisp/issues.jsonl: Current wisp with step progress\n- .beads/issues.jsonl: Digests from squashed patrols\n- heartbeat.json: Last activity timestamp\n\n## Use Cases\n\n1. Mayor checking deacon: Is the deacon doing anything?\n2. Debugging hangs: What step is it stuck on?\n3. Operator monitoring: Dashboard of patrol health\n4. Summaries for handoffs: Auto-generate patrol digest\n\n## Related\n\n- gt-id36: Deacon Kernel\n- gt-3x0z: Wisp Molecule Integration","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-22T03:04:15.726155-08:00","updated_at":"2025-12-22T03:04:15.726155-08:00"}
|
||||
{"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-f1ma","title":"Merge: gt-h6eq.3","description":"branch: polecat/nux\ntarget: main\nsource_issue: gt-h6eq.3\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T11:51:55.972408-08:00","updated_at":"2025-12-23T11:51:55.972408-08:00"}
|
||||
{"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"}]}
|
||||
{"id":"gt-f9x","title":"Town \u0026 Rig Management: install, doctor, federation","description":"Reify the Gas Town installation as a first-class concept.\n\n## Goals\n- Installable: gt install [path] creates complete installation\n- Diagnosable: gt doctor checks and fixes issues\n- Federable: Clone town to VMs with central control\n\n## Architecture Reference\n\nSee docs/architecture.md for full design, especially:\n- Directory structure (Town Level / Rig Level sections)\n- Configuration (town.json, rigs.json schemas)\n- Key design decisions (visible config dir, decentralized agents)","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-15T16:36:37.344283-08:00","updated_at":"2025-12-15T21:15:13.120038-08:00","dependencies":[{"issue_id":"gt-f9x","depends_on_id":"gt-u1j.1","type":"blocks","created_at":"2025-12-15T16:37:32.3363-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-f9x.1","title":"Config package: Config, State types and JSON serialization","description":"Config and state types with JSON serialization.\n\n## Town Config (config/town.json)\n\n```go\ntype TownConfig struct {\n Type string `json:\"type\"` // \"town\"\n Version int `json:\"version\"` // schema version\n Name string `json:\"name\"` // town identifier\n CreatedAt time.Time `json:\"created_at\"`\n}\n```\n\n## Rigs Registry (config/rigs.json)\n\n```go\ntype RigsConfig struct {\n Version int `json:\"version\"`\n Rigs map[string]RigEntry `json:\"rigs\"`\n}\n\ntype RigEntry struct {\n GitURL string `json:\"git_url\"`\n AddedAt time.Time `json:\"added_at\"`\n BeadsConfig *BeadsConfig `json:\"beads,omitempty\"`\n}\n\ntype BeadsConfig struct {\n Repo string `json:\"repo\"` // \"local\" | path | git-url\n Prefix string `json:\"prefix\"` // issue prefix\n}\n```\n\n## Agent State (*/state.json)\n\n```go\ntype AgentState struct {\n Role string `json:\"role\"` // \"mayor\", \"witness\", etc.\n LastActive time.Time `json:\"last_active\"`\n Session string `json:\"session,omitempty\"`\n Extra map[string]any `json:\"extra,omitempty\"`\n}\n```\n\n## Interface\n\n```go\nfunc LoadTownConfig(path string) (*TownConfig, error)\nfunc SaveTownConfig(path string, config *TownConfig) error\n\nfunc LoadRigsConfig(path string) (*RigsConfig, error)\nfunc SaveRigsConfig(path string, config *RigsConfig) error\n\nfunc LoadAgentState(path string) (*AgentState, error)\nfunc SaveAgentState(path string, state *AgentState) error\n```\n\n## Validation\n\n- Version compatibility checks\n- Required field validation\n- Path existence verification","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-15T16:36:50.163851-08:00","updated_at":"2025-12-16T13:24:26.497685-08:00","closed_at":"2025-12-16T13:24:26.497685-08:00"}
|
||||
@@ -417,7 +418,7 @@
|
||||
{"id":"gt-h6eq.1","title":"Add hook-singleton doctor check","description":"Add gt doctor check to ensure each agent has at most one handoff bead.\n\nCheck: hook-singleton\nError if: Multiple pinned beads with same '{role} Handoff' title\nFix suggestion: Delete duplicate(s) with bd close","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T05:07:03.489465-08:00","updated_at":"2025-12-23T11:46:14.378415-08:00","closed_at":"2025-12-23T11:46:14.378415-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-h6eq.1","depends_on_id":"gt-h6eq","type":"parent-child","created_at":"2025-12-23T05:07:03.489947-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h6eq.2","title":"Add hook-attachment-valid doctor check","description":"Add gt doctor check to verify attached molecules exist and are not closed.\n\nCheck: hook-attachment-valid\nError if: Hook's attached_molecule field points to non-existent or closed issue\nFix suggestion: Clear attachment with gt mol detach","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/furiosa","created_at":"2025-12-23T05:07:05.135043-08:00","updated_at":"2025-12-23T11:49:00.812141-08:00","closed_at":"2025-12-23T11:49:00.812141-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-h6eq.2","depends_on_id":"gt-h6eq","type":"parent-child","created_at":"2025-12-23T05:07:05.138398-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h6eq.3","title":"Add orphaned-attachments doctor check","description":"Add gt doctor check for molecules attached to non-existent agents.\n\nCheck: orphaned-attachments\nWarning if: Handoff bead exists for agent that no longer has worktree\nFix suggestion: Re-sling to active agent or close molecule","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/keeper","created_at":"2025-12-23T05:07:06.064426-08:00","updated_at":"2025-12-23T11:51:15.346703-08:00","closed_at":"2025-12-23T11:51:15.346703-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-h6eq.3","depends_on_id":"gt-h6eq","type":"parent-child","created_at":"2025-12-23T05:07:06.066057-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h6eq.4","title":"Add stale-attachments doctor check","description":"Add gt doctor check for work stale on hook without progress.\n\nCheck: stale-attachments\nWarning if: Attached molecule has no activity for \u003e24h\nSuggestion: Check agent status, consider nudge or reassignment","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-23T05:07:07.286083-08:00","updated_at":"2025-12-23T05:07:07.286083-08:00","dependencies":[{"issue_id":"gt-h6eq.4","depends_on_id":"gt-h6eq","type":"parent-child","created_at":"2025-12-23T05:07:07.287566-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h6eq.4","title":"Add stale-attachments doctor check","description":"Add gt doctor check for work stale on hook without progress.\n\nCheck: stale-attachments\nWarning if: Attached molecule has no activity for \u003e24h\nSuggestion: Check agent status, consider nudge or reassignment","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T05:07:07.286083-08:00","updated_at":"2025-12-23T11:52:03.91313-08:00","closed_at":"2025-12-23T11:52:03.91313-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-h6eq.4","depends_on_id":"gt-h6eq","type":"parent-child","created_at":"2025-12-23T05:07:07.287566-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h6eq.5","title":"Implement gt hooks command","description":"New command to show all hooks across a rig.\n\nUsage: gt hooks [rig]\n\nOutput shows:\n- All polecats and their hook status\n- Witness hook status \n- Refinery hook status\n- Crew member hook status\n- Progress bars for attached molecules","status":"closed","priority":2,"issue_type":"feature","assignee":"gastown/keeper","created_at":"2025-12-23T05:07:09.152693-08:00","updated_at":"2025-12-23T11:45:23.159532-08:00","closed_at":"2025-12-23T11:45:23.159532-08:00","close_reason":"Implemented gt hooks command with progress bars and JSON output","dependencies":[{"issue_id":"gt-h6eq.5","depends_on_id":"gt-h6eq","type":"parent-child","created_at":"2025-12-23T05:07:09.154337-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h6eq.6","title":"Add hook status to gt status output","description":"Enhance gt status to show hook summary for each rig.\n\nCurrent: Shows rig list and basic counts\nNew: Also shows occupied hooks count and any stale attachments","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-23T05:07:11.290365-08:00","updated_at":"2025-12-23T11:42:07.201937-08:00","closed_at":"2025-12-23T11:42:07.201937-08:00","close_reason":"Implemented: added HookInfo struct, hook discovery, and output to gt status","dependencies":[{"issue_id":"gt-h6eq.6","depends_on_id":"gt-h6eq","type":"parent-child","created_at":"2025-12-23T05:07:11.291931-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h6eq.7","title":"Implement gt mol attach-from-mail command","description":"Allow agents to self-pin work from mail.\n\nUsage: gt mol attach-from-mail \u003cmail-id\u003e\n\nBehavior:\n1. Read mail body for attached_molecule field\n2. Attach molecule to agent's hook\n3. Mark mail as read\n4. Return control for execution\n\nHandles case where work was sent via mail but not slung to hook.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T05:07:13.074413-08:00","updated_at":"2025-12-23T11:46:32.978797-08:00","closed_at":"2025-12-23T11:46:32.978797-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-h6eq.7","depends_on_id":"gt-h6eq","type":"parent-child","created_at":"2025-12-23T05:07:13.076119-08:00","created_by":"daemon"}]}
|
||||
@@ -749,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-23T11:51:21.025188-08:00"}
|
||||
{"id":"gt-wvyi","title":"sling pin test 2","status":"open","priority":2,"issue_type":"task","assignee":"gotest","created_at":"2025-12-23T11:51:01.899435-08:00","updated_at":"2025-12-23T11:55:16.14994-08:00"}
|
||||
{"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