186 lines
103 KiB
JSON
186 lines
103 KiB
JSON
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T10:20:47Z","event_type":"created","id":1,"issue_id":"beadboard-3t8","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T10:20:56Z","event_type":"status_changed","id":2,"issue_id":"beadboard-3t8","new_value":"{\"notes\":\"Root cause: state divergence and backend drift. .beads/issues.jsonl + beads.db had 381 issues, while active Dolt DB exposed only 4 due stale/incorrect Dolt dataset, stale lock files, and server-mode requirements after upgrading bd.\\\\n\\\\nRepair sequence that worked:\\\\n1) Upgraded bd to 0.56.1.\\\\n2) Installed local dolt binary (~/.local/bin/dolt).\\\\n3) Started local dolt sql-server on 127.0.0.1:3307 rooted at .beads/dolt.\\\\n4) Verified source-of-truth candidate counts: issues.jsonl=381 and beads.db=381 matched.\\\\n5) Recovered known-good 381-issue Dolt dataset from backup path and restored into active .beads/dolt/beadboard.\\\\n6) Set active dolt database via 'bd dolt set database beadboard'.\\\\n7) Re-ran status/ready/list verification.\\\\n\\\\nFinal verification:\\\\n- bd status =\\u003e Total 381, Open 66, Blocked 23, Closed 219, Ready 43\\\\n- bd ready -n 20 =\\u003e non-empty (42 ready total)\\\\n- bd list --all --json =\\u003e total 381; status counts {open:66, closed:219, tombstone:94, deferred:2}\\\\n\\\\nOperational note:\\\\n- bd 0.56.1 is server-mode for Dolt; ensure dolt sql-server is running on configured host/port before bd commands.\\\\n- If unavailable, restart from repo with: cd .beads/dolt \\u0026\\u0026 dolt sql-server --host 127.0.0.1 --port 3307\",\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-3t8\",\"title\":\"Dolt/JSONL recovery: restore beadboard issue inventory\",\"description\":\"Capture successful Dolt reconciliation after bd 0.56.1 migration and lock/server failures.\",\"acceptance_criteria\":\"Document root cause, exact repair commands, final counts, and restart steps for dolt server\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T18:20:48Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T18:20:48Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T10:21:00Z","event_type":"closed","id":3,"issue_id":"beadboard-3t8","new_value":"Recovered active Dolt dataset to 381 issues, restored non-empty ready queue, and documented repeatable repair steps + server prerequisites.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T12:59:29Z","event_type":"created","id":4,"issue_id":"beadboard-4qa","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T12:59:38Z","event_type":"created","id":5,"issue_id":"beadboard-yh3","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T12:59:48Z","event_type":"created","id":6,"issue_id":"beadboard-t83","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:02:57Z","event_type":"closed","id":7,"issue_id":"beadboard-4qa","new_value":"Recreating as proper children of Phase 0 epic with correct naming","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:02:57Z","event_type":"closed","id":8,"issue_id":"beadboard-yh3","new_value":"Recreating as proper children of Phase 0 epic with correct naming","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:02:57Z","event_type":"closed","id":9,"issue_id":"beadboard-t83","new_value":"Recreating as proper children of Phase 0 epic with correct naming","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:03:21Z","event_type":"created","id":10,"issue_id":"beadboard-68k","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:06:55Z","event_type":"created","id":11,"issue_id":"beadboard-68k.1","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:07:03Z","event_type":"created","id":12,"issue_id":"beadboard-68k.2","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:07:13Z","event_type":"created","id":13,"issue_id":"beadboard-68k.3","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:07:20Z","event_type":"created","id":14,"issue_id":"beadboard-68k.4","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:07:27Z","event_type":"created","id":15,"issue_id":"beadboard-68k.5","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:29:14Z","event_type":"status_changed","id":16,"issue_id":"beadboard-68k.1","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-68k.1\",\"title\":\"Wire blockedOnly prop to SocialPage\",\"description\":\"blockedOnly is already in useUrlState and SocialPage already accepts it as a prop, but UnifiedShell never passes it through. One-line fix.\\n\\nFile: src/components/shared/unified-shell.tsx (~line 128)\\n\\nChange: ensure blockedOnly is destructured from useUrlState() at line 38, then add prop to \\u003cSocialPage\\u003e:\\n \\u003cSocialPage\\n issues={filteredIssues}\\n selectedId={taskId ?? undefined}\\n onSelect={handleCardSelect}\\n projectScopeOptions={projectScopeOptions}\\n blockedOnly={blockedOnly}\\n /\\u003e\\n\\nAcceptance: Clicking 'Blocked Items' toggle in TopBar immediately filters social feed to blocked cards only. Toggling off restores full list.\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:06:55Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:06:55Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:39:04Z","event_type":"status_changed","id":17,"issue_id":"beadboard-68k.1","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-68k.1\",\"title\":\"Wire blockedOnly prop to SocialPage\",\"description\":\"blockedOnly is already in useUrlState and SocialPage already accepts it as a prop, but UnifiedShell never passes it through. One-line fix.\\n\\nFile: src/components/shared/unified-shell.tsx (~line 128)\\n\\nChange: ensure blockedOnly is destructured from useUrlState() at line 38, then add prop to \\u003cSocialPage\\u003e:\\n \\u003cSocialPage\\n issues={filteredIssues}\\n selectedId={taskId ?? undefined}\\n onSelect={handleCardSelect}\\n projectScopeOptions={projectScopeOptions}\\n blockedOnly={blockedOnly}\\n /\\u003e\\n\\nAcceptance: Clicking 'Blocked Items' toggle in TopBar immediately filters social feed to blocked cards only. Toggling off restores full list.\",\"status\":\"in_progress\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:06:55Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:29:15Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:39:04Z","event_type":"status_changed","id":18,"issue_id":"beadboard-68k.2","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-68k.2\",\"title\":\"Add activity render case to renderMiddleContent()\",\"description\":\"view=activity is a valid ViewType but renderMiddleContent() returns null for it. SocialCard 'Jump to Activity' sends users here — they land on a blank page.\\n\\nFile: src/components/shared/unified-shell.tsx (renderMiddleContent, lines 103-140)\\n\\nChange: Add before final return null:\\n if (view === 'activity') {\\n return (\\n \\u003cActivityPanel\\n issues={filteredIssues}\\n projectRoot={projectRoot}\\n /\\u003e\\n );\\n }\\n\\nImport: import { ActivityPanel } from '../activity/activity-panel'\\nFirst verify ActivityPanel's prop signature in activity-panel.tsx to confirm it accepts issues + projectRoot.\\n\\nAcceptance: /?view=activity renders the activity feed. SocialCard 'Jump to Activity' lands on content, not blank page.\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:07:03Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:07:03Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:40:01Z","event_type":"updated","id":19,"issue_id":"beadboard-68k.2","new_value":"{\"description\":\"ContextualRightPanel currently only branches on epicId. When no task/epic/swarm is selected, the right panel is empty. Wire it to show ActivityPanel (global live feed) as the default state.\\n\\nFile: src/components/activity/contextual-right-panel.tsx\\n- Read current branching logic\\n- Add fallback: when no selection active (no epicId, no taskId, no swarmId), render \\u003cActivityPanel issues={issues} projectRoot={projectRoot} /\\u003e\\n- ActivityPanel props: issues: BeadIssue[], projectRoot: string, collapsed?: boolean\\n\\nAlso: SocialCard 'Jump to Activity' currently navigates to ?view=activity (dead end). Remove or redirect to clear selection state so right panel falls back to global ActivityPanel.\\n\\nAcceptance: With nothing selected, right panel shows live activity feed. Selecting a task switches right panel to task context. Deselecting returns to global feed.\",\"title\":\"Wire ActivityPanel as right panel default when nothing selected\"}","old_value":"{\"id\":\"beadboard-68k.2\",\"title\":\"Add activity render case to renderMiddleContent()\",\"description\":\"view=activity is a valid ViewType but renderMiddleContent() returns null for it. SocialCard 'Jump to Activity' sends users here — they land on a blank page.\\n\\nFile: src/components/shared/unified-shell.tsx (renderMiddleContent, lines 103-140)\\n\\nChange: Add before final return null:\\n if (view === 'activity') {\\n return (\\n \\u003cActivityPanel\\n issues={filteredIssues}\\n projectRoot={projectRoot}\\n /\\u003e\\n );\\n }\\n\\nImport: import { ActivityPanel } from '../activity/activity-panel'\\nFirst verify ActivityPanel's prop signature in activity-panel.tsx to confirm it accepts issues + projectRoot.\\n\\nAcceptance: /?view=activity renders the activity feed. SocialCard 'Jump to Activity' lands on content, not blank page.\",\"status\":\"in_progress\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:07:03Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:39:05Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:40:10Z","event_type":"closed","id":20,"issue_id":"beadboard-68k.3","new_value":"Activity is ambient (right panel default), not a separate nav tab. Nav stays at Social + Graph only. Jump to Activity wiring handled in .2.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:42:48Z","event_type":"closed","id":21,"issue_id":"beadboard-68k.1","new_value":"blockedOnly destructured from useUrlState and passed to SocialPage in unified-shell.tsx","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:42:48Z","event_type":"closed","id":22,"issue_id":"beadboard-68k.2","new_value":"ContextualRightPanel already shows ActivityPanel as default when no selection. Fixed Jump to Activity in social-page.tsx to not navigate to dead view=activity — now opens right panel in place. PRD §3.4 and Phase 0 P0.2/P0.3 updated to reflect activity-as-ambient-panel design decision.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:42:49Z","event_type":"closed","id":23,"issue_id":"beadboard-68k.4","new_value":"thread-drawer.tsx line 418: replaced hardcoded 'In Progress' with issue?.status formatted via replace(/_/g,' ')","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:42:49Z","event_type":"closed","id":24,"issue_id":"beadboard-68k.5","new_value":"TopBar now receives totalTasks, criticalAlerts, busyCount from live issues array in unified-shell.tsx","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:43:57Z","event_type":"closed","id":25,"issue_id":"beadboard-68k","new_value":"All Phase 0 wiring fixes complete: blockedOnly, activity ambient panel, thread drawer status, TopBar metrics.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:44:09Z","event_type":"created","id":26,"issue_id":"beadboard-r1i","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:44:19Z","event_type":"created","id":27,"issue_id":"beadboard-r1i.1","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:53:45Z","event_type":"updated","id":28,"issue_id":"beadboard-r1i.1","new_value":"{\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-r1i.1\\n- Title: Extend ContextualRightPanel props and thread taskId/swarmId from UnifiedShell\\n- Parent/Epic: beadboard-r1i\\n- Dependencies: none (first in phase)\\n\\nTASK CONTRACT\\n- Goal: Add taskId and swarmId to ContextualRightPanelProps and pass them from UnifiedShell, so child tasks can implement per-branch rendering. No visible change yet — stubs only.\\n- Success Criteria:\\n - ContextualRightPanelProps includes taskId?: string | null and swarmId?: string | null\\n - UnifiedShell passes both params to \\u003cContextualRightPanel\\u003e\\n - TypeScript compiles clean (npm run typecheck passes)\\n - Existing epicId branch and ActivityPanel fallback continue working\\n- Scope:\\n - src/components/activity/contextual-right-panel.tsx — props interface only\\n - src/components/shared/unified-shell.tsx — pass taskId, swarmId to ContextualRightPanel call (~line 162)\\n- Out of Scope:\\n - Implementing the actual task or swarm branch content (that is r1i.2, r1i.3)\\n - Adding agentId (no agent detail view planned for this phase)\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\"}","old_value":"{\"id\":\"beadboard-r1i.1\",\"title\":\"Extend ContextualRightPanel props and thread taskId/swarmId from shell\",\"description\":\"ContextualRightPanel currently only accepts epicId. Extend it to accept taskId and swarmId, then pass those from UnifiedShell.\\n\\nFile 1: src/components/activity/contextual-right-panel.tsx\\n- Add taskId?: string | null and swarmId?: string | null to ContextualRightPanelProps\\n- Add branching stubs (return placeholder divs for now — wired in child tasks)\\n\\nFile 2: src/components/shared/unified-shell.tsx (~line 162)\\n- Pass taskId and swarmId to \\u003cContextualRightPanel\\u003e:\\n \\u003cContextualRightPanel epicId={epicId} taskId={taskId} swarmId={swarmId} issues={issues} projectRoot={projectRoot} /\\u003e\\n\\nCheck current UnifiedShell call to ContextualRightPanel before editing.\\n\\nAcceptance: TypeScript compiles clean. Props flow through. No visual change yet — stubs in place for .2 and .3.\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:44:20Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:44:20Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:53:57Z","event_type":"created","id":29,"issue_id":"beadboard-r1i.2","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:54:08Z","event_type":"created","id":30,"issue_id":"beadboard-r1i.3","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:54:23Z","event_type":"status_changed","id":31,"issue_id":"beadboard-r1i.1","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-r1i.1\",\"title\":\"Extend ContextualRightPanel props and thread taskId/swarmId from shell\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-r1i.1\\n- Title: Extend ContextualRightPanel props and thread taskId/swarmId from UnifiedShell\\n- Parent/Epic: beadboard-r1i\\n- Dependencies: none (first in phase)\\n\\nTASK CONTRACT\\n- Goal: Add taskId and swarmId to ContextualRightPanelProps and pass them from UnifiedShell, so child tasks can implement per-branch rendering. No visible change yet — stubs only.\\n- Success Criteria:\\n - ContextualRightPanelProps includes taskId?: string | null and swarmId?: string | null\\n - UnifiedShell passes both params to \\u003cContextualRightPanel\\u003e\\n - TypeScript compiles clean (npm run typecheck passes)\\n - Existing epicId branch and ActivityPanel fallback continue working\\n- Scope:\\n - src/components/activity/contextual-right-panel.tsx — props interface only\\n - src/components/shared/unified-shell.tsx — pass taskId, swarmId to ContextualRightPanel call (~line 162)\\n- Out of Scope:\\n - Implementing the actual task or swarm branch content (that is r1i.2, r1i.3)\\n - Adding agentId (no agent detail view planned for this phase)\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:44:20Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:53:45Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:55:17Z","event_type":"closed","id":32,"issue_id":"beadboard-r1i.1","new_value":"Added taskId and swarmId to ContextualRightPanelProps. UnifiedShell now passes both. TypeScript clean. Stubs ready for r1i.2 and r1i.3.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T13:58:38Z","event_type":"created","id":33,"issue_id":"beadboard-0fi","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:03:07Z","event_type":"updated","id":34,"issue_id":"beadboard-0fi","new_value":"{\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi\\n- Title: Phase 2: Operator Identity\\n- Parent/Epic: none (phase epic)\\n- Dependencies (must be done first): beadboard-r1i (Phase 1 right panel complete)\\n\\nTASK CONTRACT\\n- Goal: Replace fragmented actor identity with a single operator profile stored in UnifiedShell state, visible in TopBar, and threaded to both ConversationDrawer and ThreadDrawer. Currently ConversationDrawer reads/writes actor from localStorage independently; ThreadDrawer sends comments with no actor at all.\\n- Success Criteria:\\n - Operator can set their name once in TopBar and it persists across both drawer types\\n - Comments posted via ThreadDrawer include the actor field\\n - ConversationDrawer no longer reads localStorage directly — receives actor from shell\\n - Switching identity in TopBar immediately affects subsequent comments\\n - npm run typecheck \\u0026\\u0026 npm run lint \\u0026\\u0026 npm run test all pass\\n- Scope:\\n - UnifiedShell actor state (single source of truth)\\n - TopBar identity selector UI\\n - ConversationDrawer actor prop (remove localStorage.getItem)\\n - ThreadDrawer postComment actor wiring\\n- Out of Scope:\\n - Multi-user auth or session management\\n - Persisting identity server-side\\n - Changing comment API contract\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\"}","old_value":"{\"id\":\"beadboard-0fi\",\"title\":\"Phase 2: Operator Identity\",\"description\":\"Replace fragmented actor identity with a unified operator profile visible in the shell. Currently ConversationDrawer reads actor from localStorage independently; ThreadDrawer sends comments with no actor at all. This phase establishes a single identity source in the shell and threads it to both drawers.\\n\\nRef: docs/plans/2026-02-28-ux-redesign-synthesis-prd.md §8 Phase 2\\n\\nAcceptance: Comments from both ThreadDrawer and ConversationDrawer show consistent actor. Switching operator identity in TopBar immediately affects subsequent comments.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"epic\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:58:39Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:58:39Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:03:37Z","event_type":"created","id":35,"issue_id":"beadboard-0fi.1","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:04:47Z","event_type":"created","id":36,"issue_id":"beadboard-0fi.2","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:04:47Z","event_type":"created","id":37,"issue_id":"beadboard-0fi.3","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:05:35Z","event_type":"created","id":38,"issue_id":"beadboard-8ij","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:05:45Z","event_type":"created","id":39,"issue_id":"beadboard-8ij.1","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:29:27Z","event_type":"created","id":40,"issue_id":"beadboard-8ij.2","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:29:28Z","event_type":"created","id":41,"issue_id":"beadboard-8ij.3","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:29:28Z","event_type":"created","id":42,"issue_id":"beadboard-8ij.4","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:29:50Z","event_type":"created","id":43,"issue_id":"beadboard-x3l","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:34:42Z","event_type":"created","id":44,"issue_id":"beadboard-x3l.1","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:34:42Z","event_type":"created","id":45,"issue_id":"beadboard-x3l.2","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:34:42Z","event_type":"created","id":46,"issue_id":"beadboard-x3l.3","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:34:43Z","event_type":"created","id":47,"issue_id":"beadboard-x3l.4","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:35:01Z","event_type":"created","id":48,"issue_id":"beadboard-d2x","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:39:47Z","event_type":"created","id":49,"issue_id":"beadboard-d2x.1","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:39:47Z","event_type":"created","id":50,"issue_id":"beadboard-d2x.2","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:49:36Z","event_type":"status_changed","id":51,"issue_id":"beadboard-r1i.2","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-r1i.2\",\"title\":\"Implement task branch in ContextualRightPanel (?task=X)\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-r1i.2\\n- Title: Implement task branch in ContextualRightPanel (?task=X)\\n- Parent/Epic: beadboard-r1i\\n- Dependencies: beadboard-r1i.1 (taskId prop must exist on ContextualRightPanel)\\n\\nTASK CONTRACT\\n- Goal: When a task is selected (taskId is set), the right panel shows the task thread and issue metadata using ThreadDrawer in embedded mode.\\n- Success Criteria:\\n - Selecting any task card opens right panel showing that task's thread (comments, events)\\n - ThreadDrawer renders in embedded mode (no modal/overlay behaviour)\\n - Issue title, status badge, and thread items are visible in the right panel\\n - Deselecting the task (clearing taskId) returns right panel to ActivityPanel global feed\\n - npm run typecheck passes\\n- Scope:\\n - src/components/activity/contextual-right-panel.tsx — add taskId branch before the ActivityPanel fallback\\n - ThreadDrawer already exists at src/components/shared/thread-drawer.tsx with embedded prop\\n - Use ThreadDrawer with: embedded=true, isOpen=true, issue from issues array, projectRoot\\n- Out of Scope:\\n - Agent assignment controls in the right panel (Phase 3)\\n - Creating a new component — reuse ThreadDrawer embedded mode\\n - Modifying ThreadDrawer itself\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:53:57Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:53:57Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:49:36Z","event_type":"status_changed","id":52,"issue_id":"beadboard-r1i.3","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-r1i.3\",\"title\":\"Implement swarm branch in ContextualRightPanel (?swarm=X)\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-r1i.3\\n- Title: Implement swarm branch in ContextualRightPanel (?swarm=X)\\n- Parent/Epic: beadboard-r1i\\n- Dependencies: beadboard-r1i.1 (swarmId prop must exist on ContextualRightPanel)\\n\\nTASK CONTRACT\\n- Goal: When a swarm is selected (swarmId is set), the right panel shows MissionInspector with that swarm's topology, agent roster, and mission status.\\n- Success Criteria:\\n - Navigating to ?swarm=X renders MissionInspector in the right panel\\n - MissionInspector receives correct missionId, missionTitle, projectRoot, assignedAgents\\n - Existing epicId and task branches are unaffected\\n - npm run typecheck passes\\n- Scope:\\n - src/components/activity/contextual-right-panel.tsx — add swarmId branch\\n - MissionInspector at src/components/mission/mission-inspector.tsx (props: missionId, missionTitle, projectRoot, assignedAgents, onClose, onAssign)\\n - Resolve assignedAgents: check useSwarmList hook or /api/agents — use whatever UnifiedShell already has available\\n - onClose: clear swarmId from URL state; onAssign: call /api/mission/assign\\n- Out of Scope:\\n - Building a new swarm inspector UI — MissionInspector already exists\\n - Graph swarm overlay highlighting (Phase 3)\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T21:54:08Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T21:54:08Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:57:02Z","event_type":"closed","id":53,"issue_id":"beadboard-r1i.2","new_value":"TaskId branch added to ContextualRightPanel: ThreadDrawer in embedded mode renders task thread and issue metadata when taskId is set. No new typecheck errors.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:57:02Z","event_type":"closed","id":54,"issue_id":"beadboard-r1i.3","new_value":"SwarmId branch added via SwarmIdBranch inner component (hooks-safe): MissionInspector renders with useSwarmList for title lookup. assignedAgents wired to swarm.agents (TODO: populate from agent-registry). No new typecheck errors.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T14:57:11Z","event_type":"closed","id":55,"issue_id":"beadboard-r1i","new_value":"All Phase 1 children complete: ContextualRightPanel now branches on epicId, taskId, swarmId, with ActivityPanel fallback. URL context contract fully wired.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T15:40:58Z","event_type":"created","id":56,"issue_id":"beadboard-550","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T16:59:16Z","event_type":"created","id":57,"issue_id":"beadboard-550.1","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T16:59:25Z","event_type":"created","id":58,"issue_id":"beadboard-550.2","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T16:59:35Z","event_type":"created","id":59,"issue_id":"beadboard-550.3","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T16:59:47Z","event_type":"created","id":60,"issue_id":"beadboard-550.4","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:00:23Z","event_type":"status_changed","id":61,"issue_id":"beadboard-550.1","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-550.1\",\"title\":\"Install mysql2 and create Dolt connection client\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-550.1\\n- Parent: beadboard-550 (Replace issues.jsonl reads with direct Dolt SQL)\\n- Dependencies: none\\n\\nTASK CONTRACT\\n- Goal: Install mysql2, create src/lib/dolt-client.ts that reads connection config from .beads/metadata.json and exports a pooled MySQL2 connection usable by other modules.\\n- Success Criteria:\\n - mysql2 in package.json dependencies (not devDependencies)\\n - src/lib/dolt-client.ts exports: getDoltConnection(projectRoot: string): Promise\\u003cmysql2.Pool\\u003e\\n - Reads host/port/database from .beads/metadata.json (keys: dolt_server_port, dolt_database; host defaults to 127.0.0.1)\\n - Gracefully throws a typed DoltConnectionError if metadata.json missing or server unreachable\\n - npm run typecheck passes\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Use mysql2/promise (async/await API, not callback)\\n- Pool size: connectionLimit 5 (sufficient for Next.js server-side)\\n- Do not hardcode 3307 or 'beadboard' — always read from metadata.json\\n- No new API routes — this is a library module only\\n\\nVERIFICATION REQUIREMENTS\\n- npm run typecheck\\n- npm run lint\\n- npm run test (existing tests must still pass)\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-01T00:59:16Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T00:59:16Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:15:51Z","event_type":"updated","id":62,"issue_id":"beadboard-550.1","new_value":"{\"notes\":\"mysql2 installed (package.json dep). Created src/lib/dolt-client.ts: exports DoltConnectionError class and getDoltConnection(projectRoot) -\\u003e Promise\\u003cmysql.Pool\\u003e. Reads host/port/database from .beads/metadata.json, pools with connectionLimit 5, tests connectivity on first call, caches pool per resolved projectRoot. typecheck: only pre-existing status-badge.tsx TS2307. lint: pass. tests: 117/117 pass.\"}","old_value":"{\"id\":\"beadboard-550.1\",\"title\":\"Install mysql2 and create Dolt connection client\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-550.1\\n- Parent: beadboard-550 (Replace issues.jsonl reads with direct Dolt SQL)\\n- Dependencies: none\\n\\nTASK CONTRACT\\n- Goal: Install mysql2, create src/lib/dolt-client.ts that reads connection config from .beads/metadata.json and exports a pooled MySQL2 connection usable by other modules.\\n- Success Criteria:\\n - mysql2 in package.json dependencies (not devDependencies)\\n - src/lib/dolt-client.ts exports: getDoltConnection(projectRoot: string): Promise\\u003cmysql2.Pool\\u003e\\n - Reads host/port/database from .beads/metadata.json (keys: dolt_server_port, dolt_database; host defaults to 127.0.0.1)\\n - Gracefully throws a typed DoltConnectionError if metadata.json missing or server unreachable\\n - npm run typecheck passes\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Use mysql2/promise (async/await API, not callback)\\n- Pool size: connectionLimit 5 (sufficient for Next.js server-side)\\n- Do not hardcode 3307 or 'beadboard' — always read from metadata.json\\n- No new API routes — this is a library module only\\n\\nVERIFICATION REQUIREMENTS\\n- npm run typecheck\\n- npm run lint\\n- npm run test (existing tests must still pass)\",\"status\":\"in_progress\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-01T00:59:16Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T01:00:23Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:15:55Z","event_type":"closed","id":63,"issue_id":"beadboard-550.1","new_value":"mysql2 installed; src/lib/dolt-client.ts written with pool caching, metadata.json config reading, DoltConnectionError, and connectivity test. All gates pass.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:17:49Z","event_type":"status_changed","id":64,"issue_id":"beadboard-550.2","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-550.2\",\"title\":\"Implement readIssuesViaDolt() with JOIN across issues/deps/labels\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-550.2\\n- Parent: beadboard-550\\n- Dependencies: beadboard-550.1 (dolt-client.ts must exist)\\n\\nTASK CONTRACT\\n- Goal: Create src/lib/read-issues-dolt.ts with a readIssuesViaDolt() function that queries the Dolt SQL server and returns BeadIssue[] normalized identically to the existing JSONL parser output.\\n- Success Criteria:\\n - readIssuesViaDolt(projectRoot, options) returns BeadIssue[] matching the shape from parseIssuesJsonl\\n - Fetches issues + LEFT JOINs labels and dependencies in a single round-trip (or two queries max)\\n - Applies same filters as readIssuesViaBd: excludes tombstones unless includeTombstones, excludes gt:agent labels unless skipAgentFilter\\n - Returns null (not throws) if Dolt is unreachable so caller can fall back\\n - npm run typecheck passes\\n\\nIMPLEMENTATION CONSTRAINTS\\n- SQL query: SELECT issues.*, GROUP_CONCAT for labels, separate query for dependencies (avoid N+1)\\n- Map Dolt datetime columns to ISO string format matching BeadIssue.created_at etc.\\n- Dependencies table: issue_id, depends_on_id, type — map to BeadDependency[]\\n- Labels table: issue_id, label — map to string[]\\n- Reuse normalizeBdIssue logic from read-issues.ts where possible, or write equivalent\\n\\nVERIFICATION REQUIREMENTS\\n- npm run typecheck\\n- npm run lint\\n- npm run test\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-01T00:59:25Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T00:59:25Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:20:39Z","event_type":"closed","id":65,"issue_id":"beadboard-550.2","new_value":"Created src/lib/read-issues-dolt.ts: readIssuesViaDolt(projectRoot, options) queries Dolt via 2 SQL queries (issues+labels GROUP_CONCAT, then dependencies), normalizes rows to BeadIssue[], returns null on unreachable. typecheck+lint+tests pass.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:20:43Z","event_type":"status_changed","id":66,"issue_id":"beadboard-550.3","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-550.3\",\"title\":\"Wire Dolt as primary read path in readIssuesFromDisk()\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-550.3\\n- Parent: beadboard-550\\n- Dependencies: beadboard-550.2\\n\\nTASK CONTRACT\\n- Goal: Replace the preferBd (bd CLI) path in readIssuesFromDisk() with readIssuesViaDolt(). Dolt is tried first; issues.jsonl is the fallback.\\n- Success Criteria:\\n - readIssuesFromDisk() calls readIssuesViaDolt() when Dolt metadata is present\\n - Falls back to issues.jsonl read if Dolt unreachable (same fallback chain as today)\\n - preferBd option can now be removed or ignored (Dolt is always preferred when available)\\n - No changes to any API routes or component files — only read-issues.ts changes\\n - npm run typecheck \\u0026\\u0026 npm run lint \\u0026\\u0026 npm run test pass\\n - Manual: create a bead via bd, hard-refresh frontend, confirm it appears without issues.jsonl re-export\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Do not remove issues.jsonl fallback yet (beadboard-550 scope only deprecates it)\\n- Do not change the return type or signature of readIssuesFromDisk()\\n- Log a console.warn (not throw) when falling back to issues.jsonl\\n\\nVERIFICATION REQUIREMENTS\\n- npm run typecheck\\n- npm run lint\\n- npm run test\\n- Manual verification: bd create a test bead, confirm frontend shows it immediately\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-01T00:59:36Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T00:59:36Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:25:46Z","event_type":"closed","id":67,"issue_id":"beadboard-550.3","new_value":"readIssuesFromDisk() now tries readIssuesViaDolt() first (always), falls back to issues.jsonl with console.warn. preferBd path kept for legacy but Dolt is always attempted. typecheck+lint+tests pass.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:25:51Z","event_type":"status_changed","id":68,"issue_id":"beadboard-550.4","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-550.4\",\"title\":\"Verify watcher still fires on bd writes and document Dolt read path\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-550.4\\n- Parent: beadboard-550\\n- Dependencies: beadboard-550.3\\n\\nTASK CONTRACT\\n- Goal: Confirm SSE real-time updates still work after switching to Dolt reads. The watcher watches .last_touched and issues.jsonl; verify bd writes still trigger .last_touched so SSE pushes new data to the browser.\\n- Success Criteria:\\n - Run bd update on an issue, confirm SSE event fires in the browser within 2s\\n - If .last_touched is NOT updated by bd writes: add a workaround (e.g. touch .beads/last_touched after Dolt read detects staleness, or poll Dolt on a 5s interval as SSE trigger)\\n - Update AGENTS.md Data Backend section to document the new Dolt read path and remove the manual issues.jsonl re-export instructions\\n - Remove the issues.jsonl re-export command from AGENTS.md (no longer needed)\\n - npm run typecheck \\u0026\\u0026 npm run lint \\u0026\\u0026 npm run test pass\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Do not rewrite the watcher — minimal change to make triggers work\\n- If polling is needed, use a simple setInterval in the SSE route, max 5s interval\\n- Document the decision in a code comment\\n\\nVERIFICATION REQUIREMENTS\\n- npm run typecheck\\n- npm run lint\\n- npm run test\\n- Manual: bd update a bead status, watch browser Network tab for SSE event, confirm UI updates\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-01T00:59:47Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T00:59:47Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:26:47Z","event_type":"updated","id":69,"issue_id":"beadboard-550.4","new_value":"{\"notes\":\"testing SSE watcher trigger\"}","old_value":"{\"id\":\"beadboard-550.4\",\"title\":\"Verify watcher still fires on bd writes and document Dolt read path\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-550.4\\n- Parent: beadboard-550\\n- Dependencies: beadboard-550.3\\n\\nTASK CONTRACT\\n- Goal: Confirm SSE real-time updates still work after switching to Dolt reads. The watcher watches .last_touched and issues.jsonl; verify bd writes still trigger .last_touched so SSE pushes new data to the browser.\\n- Success Criteria:\\n - Run bd update on an issue, confirm SSE event fires in the browser within 2s\\n - If .last_touched is NOT updated by bd writes: add a workaround (e.g. touch .beads/last_touched after Dolt read detects staleness, or poll Dolt on a 5s interval as SSE trigger)\\n - Update AGENTS.md Data Backend section to document the new Dolt read path and remove the manual issues.jsonl re-export instructions\\n - Remove the issues.jsonl re-export command from AGENTS.md (no longer needed)\\n - npm run typecheck \\u0026\\u0026 npm run lint \\u0026\\u0026 npm run test pass\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Do not rewrite the watcher — minimal change to make triggers work\\n- If polling is needed, use a simple setInterval in the SSE route, max 5s interval\\n- Document the decision in a code comment\\n\\nVERIFICATION REQUIREMENTS\\n- npm run typecheck\\n- npm run lint\\n- npm run test\\n- Manual: bd update a bead status, watch browser Network tab for SSE event, confirm UI updates\",\"status\":\"in_progress\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-01T00:59:47Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T01:25:52Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:33:53Z","event_type":"closed","id":70,"issue_id":"beadboard-550.4","new_value":"SSE watcher confirmed working: bd writes update last-touched, chokidar fires, syncActivity calls readIssuesFromDisk (now Dolt-first). AGENTS.md updated: replaced manual export instructions with explanation of new Dolt read path. All gates pass.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-02-28T17:33:53Z","event_type":"closed","id":71,"issue_id":"beadboard-550","new_value":"All 4 child tasks complete. BeadBoard now reads issues directly from Dolt SQL via mysql2. issues.jsonl kept as deprecated fallback. SSE realtime works. 146/146 tests pass.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T13:48:57Z","event_type":"created","id":72,"issue_id":"beadboard-b3c","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T13:49:04Z","event_type":"closed","id":73,"issue_id":"beadboard-b3c","new_value":"All fixes implemented and tested. 14/14 tests passing. Conversation panel now opens on icon click, closes on second click, prioritizes task over epic, and back button navigates correctly.","old_value":""}
|
|
{"actor":"zenchantlive","comment":null,"created_at":"2026-03-01T14:24:49Z","event_type":"created","id":74,"issue_id":"beadboard-qq2","new_value":"","old_value":""}
|
|
{"actor":"zenchantlive","comment":null,"created_at":"2026-03-01T14:24:56Z","event_type":"closed","id":75,"issue_id":"beadboard-qq2","new_value":"Closed","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T14:37:44Z","event_type":"updated","id":76,"issue_id":"beadboard-0fi.1","new_value":"{\"notes\":\"Identity UI pattern: editable chip. Shows actor name as pill in TopBar. Click → becomes text input. Blur or Enter → snaps back to chip. Placeholder 'your name' when empty. Uses local useState for editing vs display mode.\"}","old_value":"{\"id\":\"beadboard-0fi.1\",\"title\":\"Add actor state to UnifiedShell and identity input to TopBar\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi.1\\n- Title: Add actor state to UnifiedShell and identity input to TopBar\\n- Parent/Epic: beadboard-0fi\\n- Dependencies (must be done first): none (first in phase)\\n\\nTASK CONTRACT\\n- Goal: Add a single operator identity string to UnifiedShell state, initialize it from localStorage('bb.humanActor') for backwards compatibility, persist changes back to localStorage, and render an editable identity field in TopBar so the operator can set their name once and have it flow to both drawers.\\n- Success Criteria:\\n - UnifiedShell exposes actor: string and setActor: (name: string) =\\u003e void\\n - Initial value read from localStorage('bb.humanActor') if present, otherwise empty string\\n - On change, value written back to localStorage('bb.humanActor')\\n - TopBar renders a compact text input or editable chip showing current actor name\\n - TopBar receives actor and onActorChange props (check current TopBarProps in src/components/shared/top-bar.tsx before editing)\\n - npm run typecheck passes\\n- Scope:\\n - src/components/shared/unified-shell.tsx — add useState for actor, pass to TopBar\\n - src/components/shared/top-bar.tsx — add actor input UI and props\\n- Out of Scope:\\n - Passing actor to drawers (that is beadboard-0fi.2 and beadboard-0fi.3)\\n - Server-side persistence\\n - Validation or auth\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T22:03:38Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T22:03:38Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T14:38:02Z","event_type":"status_changed","id":77,"issue_id":"beadboard-0fi.1","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-0fi.1\",\"title\":\"Add actor state to UnifiedShell and identity input to TopBar\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi.1\\n- Title: Add actor state to UnifiedShell and identity input to TopBar\\n- Parent/Epic: beadboard-0fi\\n- Dependencies (must be done first): none (first in phase)\\n\\nTASK CONTRACT\\n- Goal: Add a single operator identity string to UnifiedShell state, initialize it from localStorage('bb.humanActor') for backwards compatibility, persist changes back to localStorage, and render an editable identity field in TopBar so the operator can set their name once and have it flow to both drawers.\\n- Success Criteria:\\n - UnifiedShell exposes actor: string and setActor: (name: string) =\\u003e void\\n - Initial value read from localStorage('bb.humanActor') if present, otherwise empty string\\n - On change, value written back to localStorage('bb.humanActor')\\n - TopBar renders a compact text input or editable chip showing current actor name\\n - TopBar receives actor and onActorChange props (check current TopBarProps in src/components/shared/top-bar.tsx before editing)\\n - npm run typecheck passes\\n- Scope:\\n - src/components/shared/unified-shell.tsx — add useState for actor, pass to TopBar\\n - src/components/shared/top-bar.tsx — add actor input UI and props\\n- Out of Scope:\\n - Passing actor to drawers (that is beadboard-0fi.2 and beadboard-0fi.3)\\n - Server-side persistence\\n - Validation or auth\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"notes\":\"Identity UI pattern: editable chip. Shows actor name as pill in TopBar. Click → becomes text input. Blur or Enter → snaps back to chip. Placeholder 'your name' when empty. Uses local useState for editing vs display mode.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T22:03:38Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T22:37:43Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T14:46:07Z","event_type":"status_changed","id":78,"issue_id":"beadboard-0fi.1","new_value":"{\"notes\":\"Identity UI pattern: editable chip. Shows actor name as pill in TopBar. Click → becomes text input. Blur or Enter → snaps back to chip. Placeholder 'your name' when empty. Uses local useState for editing vs display mode.\\n\\nIMPLEMENTATION PLAN (ready to execute next session):\\n\\n1. src/components/shared/unified-shell.tsx\\n - Add import: useState (already imported)\\n - Add actor state near top of component (after existing useState declarations):\\n const [actor, setActor] = useState\\u003cstring\\u003e(() =\\u003e\\n typeof window !== 'undefined' ? (window.localStorage.getItem('bb.humanActor') ?? '') : ''\\n );\\n - Add useEffect to persist on change:\\n useEffect(() =\\u003e {\\n if (typeof window !== 'undefined') window.localStorage.setItem('bb.humanActor', actor);\\n }, [actor]);\\n - Pass to TopBar: actor={actor} onActorChange={setActor}\\n\\n2. src/components/shared/top-bar.tsx\\n - Add to TopBarProps: actor?: string; onActorChange?: (name: string) =\\u003e void;\\n - Add editable chip component inline (no new file needed):\\n - Local state: const [editing, setEditing] = useState(false);\\n - When !editing: render \\u003cbutton onClick={() =\\u003e setEditing(true)} className='...'\\u003e\\n {actor || 'your name'}\\n \\u003c/button\\u003e\\n - When editing: render \\u003cinput autoFocus value={actor} onChange={e =\\u003e onActorChange?.(e.target.value)}\\n onBlur={() =\\u003e setEditing(false)} onKeyDown={e =\\u003e e.key === 'Enter' \\u0026\\u0026 setEditing(false)}\\n placeholder='your name' className='...' /\\u003e\\n - Place the chip in TopBar right section, before ThemeToggle\\n\\n3. Run: npm run typecheck \\u0026\\u0026 npm run lint \\u0026\\u0026 npm run test\\n4. Close beadboard-0fi.1 then start beadboard-0fi.2\",\"status\":\"open\"}","old_value":"{\"id\":\"beadboard-0fi.1\",\"title\":\"Add actor state to UnifiedShell and identity input to TopBar\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi.1\\n- Title: Add actor state to UnifiedShell and identity input to TopBar\\n- Parent/Epic: beadboard-0fi\\n- Dependencies (must be done first): none (first in phase)\\n\\nTASK CONTRACT\\n- Goal: Add a single operator identity string to UnifiedShell state, initialize it from localStorage('bb.humanActor') for backwards compatibility, persist changes back to localStorage, and render an editable identity field in TopBar so the operator can set their name once and have it flow to both drawers.\\n- Success Criteria:\\n - UnifiedShell exposes actor: string and setActor: (name: string) =\\u003e void\\n - Initial value read from localStorage('bb.humanActor') if present, otherwise empty string\\n - On change, value written back to localStorage('bb.humanActor')\\n - TopBar renders a compact text input or editable chip showing current actor name\\n - TopBar receives actor and onActorChange props (check current TopBarProps in src/components/shared/top-bar.tsx before editing)\\n - npm run typecheck passes\\n- Scope:\\n - src/components/shared/unified-shell.tsx — add useState for actor, pass to TopBar\\n - src/components/shared/top-bar.tsx — add actor input UI and props\\n- Out of Scope:\\n - Passing actor to drawers (that is beadboard-0fi.2 and beadboard-0fi.3)\\n - Server-side persistence\\n - Validation or auth\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"notes\":\"Identity UI pattern: editable chip. Shows actor name as pill in TopBar. Click → becomes text input. Blur or Enter → snaps back to chip. Placeholder 'your name' when empty. Uses local useState for editing vs display mode.\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T22:03:38Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T22:38:00Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T14:48:00Z","event_type":"status_changed","id":79,"issue_id":"beadboard-0fi.1","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-0fi.1\",\"title\":\"Add actor state to UnifiedShell and identity input to TopBar\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi.1\\n- Title: Add actor state to UnifiedShell and identity input to TopBar\\n- Parent/Epic: beadboard-0fi\\n- Dependencies (must be done first): none (first in phase)\\n\\nTASK CONTRACT\\n- Goal: Add a single operator identity string to UnifiedShell state, initialize it from localStorage('bb.humanActor') for backwards compatibility, persist changes back to localStorage, and render an editable identity field in TopBar so the operator can set their name once and have it flow to both drawers.\\n- Success Criteria:\\n - UnifiedShell exposes actor: string and setActor: (name: string) =\\u003e void\\n - Initial value read from localStorage('bb.humanActor') if present, otherwise empty string\\n - On change, value written back to localStorage('bb.humanActor')\\n - TopBar renders a compact text input or editable chip showing current actor name\\n - TopBar receives actor and onActorChange props (check current TopBarProps in src/components/shared/top-bar.tsx before editing)\\n - npm run typecheck passes\\n- Scope:\\n - src/components/shared/unified-shell.tsx — add useState for actor, pass to TopBar\\n - src/components/shared/top-bar.tsx — add actor input UI and props\\n- Out of Scope:\\n - Passing actor to drawers (that is beadboard-0fi.2 and beadboard-0fi.3)\\n - Server-side persistence\\n - Validation or auth\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"notes\":\"Identity UI pattern: editable chip. Shows actor name as pill in TopBar. Click → becomes text input. Blur or Enter → snaps back to chip. Placeholder 'your name' when empty. Uses local useState for editing vs display mode.\\n\\nIMPLEMENTATION PLAN (ready to execute next session):\\n\\n1. src/components/shared/unified-shell.tsx\\n - Add import: useState (already imported)\\n - Add actor state near top of component (after existing useState declarations):\\n const [actor, setActor] = useState\\u003cstring\\u003e(() =\\u003e\\n typeof window !== 'undefined' ? (window.localStorage.getItem('bb.humanActor') ?? '') : ''\\n );\\n - Add useEffect to persist on change:\\n useEffect(() =\\u003e {\\n if (typeof window !== 'undefined') window.localStorage.setItem('bb.humanActor', actor);\\n }, [actor]);\\n - Pass to TopBar: actor={actor} onActorChange={setActor}\\n\\n2. src/components/shared/top-bar.tsx\\n - Add to TopBarProps: actor?: string; onActorChange?: (name: string) =\\u003e void;\\n - Add editable chip component inline (no new file needed):\\n - Local state: const [editing, setEditing] = useState(false);\\n - When !editing: render \\u003cbutton onClick={() =\\u003e setEditing(true)} className='...'\\u003e\\n {actor || 'your name'}\\n \\u003c/button\\u003e\\n - When editing: render \\u003cinput autoFocus value={actor} onChange={e =\\u003e onActorChange?.(e.target.value)}\\n onBlur={() =\\u003e setEditing(false)} onKeyDown={e =\\u003e e.key === 'Enter' \\u0026\\u0026 setEditing(false)}\\n placeholder='your name' className='...' /\\u003e\\n - Place the chip in TopBar right section, before ThemeToggle\\n\\n3. Run: npm run typecheck \\u0026\\u0026 npm run lint \\u0026\\u0026 npm run test\\n4. Close beadboard-0fi.1 then start beadboard-0fi.2\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T22:03:38Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T22:46:06Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T14:55:56Z","event_type":"closed","id":80,"issue_id":"beadboard-0fi.1","new_value":"actor state in UnifiedShell, editable chip in TopBar, all checks pass","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T14:56:05Z","event_type":"status_changed","id":81,"issue_id":"beadboard-0fi.2","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-0fi.2\",\"title\":\"Wire actor from shell to ConversationDrawer (remove localStorage read)\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi.2\\n- Title: Wire actor from shell to ConversationDrawer (remove localStorage read)\\n- Parent/Epic: beadboard-0fi\\n- Dependencies (must be done first): beadboard-0fi.1\\n\\nTASK CONTRACT\\n- Goal: ConversationDrawer currently reads and writes actor identity from localStorage('bb.humanActor') at lines 125 and 167. Replace these with an actor prop received from UnifiedShell so identity is controlled by a single source of truth.\\n- Success Criteria:\\n - ConversationDrawer accepts actor: string prop\\n - localStorage.getItem('bb.humanActor') call at line 125 removed — replaced with prop\\n - localStorage.setItem call at line 167 removed — UnifiedShell owns persistence\\n - Comments still include actor in the POST body\\n - npm run typecheck passes\\n- Scope:\\n - src/components/sessions/conversation-drawer.tsx — replace localStorage reads with prop\\n - src/components/shared/unified-shell.tsx — pass actor to ConversationDrawer call site\\n - Verify ConversationDrawer is called in unified-shell.tsx or sessions-page.tsx and update accordingly\\n- Out of Scope:\\n - ConversationDrawer UI changes\\n - ThreadDrawer (that is beadboard-0fi.3)\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T22:04:48Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T22:04:48Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T14:57:27Z","event_type":"closed","id":82,"issue_id":"beadboard-0fi.2","new_value":"actor prop added, localStorage reads/writes removed, syncs from prop via useEffect","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T14:57:28Z","event_type":"status_changed","id":83,"issue_id":"beadboard-0fi.3","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-0fi.3\",\"title\":\"Wire actor from shell to ThreadDrawer postComment\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi.3\\n- Title: Wire actor from shell to ThreadDrawer postComment\\n- Parent/Epic: beadboard-0fi\\n- Dependencies (must be done first): beadboard-0fi.1\\n\\nTASK CONTRACT\\n- Goal: ThreadDrawer currently posts comments with no actor field. Add an actor prop and include it in the comment POST body so comments from ThreadDrawer are attributed the same as ConversationDrawer comments.\\n- Success Criteria:\\n - ThreadDrawer accepts actor?: string prop\\n - Comment POST body includes actor field when prop is provided\\n - UnifiedShell passes actor to ThreadDrawer at its call site in unified-shell.tsx\\n - Posted comments visible in the thread show the correct actor attribution\\n - npm run typecheck passes\\n- Scope:\\n - src/components/shared/thread-drawer.tsx — add actor prop, include in POST\\n - src/components/shared/unified-shell.tsx — pass actor to ThreadDrawer call site\\n - Check thread-drawer.tsx postComment fetch call to find where to inject actor\\n- Out of Scope:\\n - Changing the comment API endpoint schema\\n - ConversationDrawer (that is beadboard-0fi.2)\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T22:04:48Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-02-28T22:04:48Z\"}"}
|
|
{"actor":"zenchantlive","comment":null,"created_at":"2026-03-01T15:24:55Z","event_type":"status_changed","id":84,"issue_id":"beadboard-0fi.3","new_value":"{\"status\":\"open\"}","old_value":"{\"id\":\"beadboard-0fi.3\",\"title\":\"Wire actor from shell to ThreadDrawer postComment\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi.3\\n- Title: Wire actor from shell to ThreadDrawer postComment\\n- Parent/Epic: beadboard-0fi\\n- Dependencies (must be done first): beadboard-0fi.1\\n\\nTASK CONTRACT\\n- Goal: ThreadDrawer currently posts comments with no actor field. Add an actor prop and include it in the comment POST body so comments from ThreadDrawer are attributed the same as ConversationDrawer comments.\\n- Success Criteria:\\n - ThreadDrawer accepts actor?: string prop\\n - Comment POST body includes actor field when prop is provided\\n - UnifiedShell passes actor to ThreadDrawer at its call site in unified-shell.tsx\\n - Posted comments visible in the thread show the correct actor attribution\\n - npm run typecheck passes\\n- Scope:\\n - src/components/shared/thread-drawer.tsx — add actor prop, include in POST\\n - src/components/shared/unified-shell.tsx — pass actor to ThreadDrawer call site\\n - Check thread-drawer.tsx postComment fetch call to find where to inject actor\\n- Out of Scope:\\n - Changing the comment API endpoint schema\\n - ConversationDrawer (that is beadboard-0fi.2)\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T22:04:48Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T22:57:25Z\"}"}
|
|
{"actor":"zenchantlive","comment":null,"created_at":"2026-03-01T15:25:07Z","event_type":"status_changed","id":85,"issue_id":"beadboard-0fi.3","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-0fi.3\",\"title\":\"Wire actor from shell to ThreadDrawer postComment\",\"description\":\"TASK CONTEXT\\n- Bead ID: beadboard-0fi.3\\n- Title: Wire actor from shell to ThreadDrawer postComment\\n- Parent/Epic: beadboard-0fi\\n- Dependencies (must be done first): beadboard-0fi.1\\n\\nTASK CONTRACT\\n- Goal: ThreadDrawer currently posts comments with no actor field. Add an actor prop and include it in the comment POST body so comments from ThreadDrawer are attributed the same as ConversationDrawer comments.\\n- Success Criteria:\\n - ThreadDrawer accepts actor?: string prop\\n - Comment POST body includes actor field when prop is provided\\n - UnifiedShell passes actor to ThreadDrawer at its call site in unified-shell.tsx\\n - Posted comments visible in the thread show the correct actor attribution\\n - npm run typecheck passes\\n- Scope:\\n - src/components/shared/thread-drawer.tsx — add actor prop, include in POST\\n - src/components/shared/unified-shell.tsx — pass actor to ThreadDrawer call site\\n - Check thread-drawer.tsx postComment fetch call to find where to inject actor\\n- Out of Scope:\\n - Changing the comment API endpoint schema\\n - ConversationDrawer (that is beadboard-0fi.2)\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing backend/API contracts unless explicitly stated otherwise.\\n- Reuse shared components and logic; avoid one-off forks.\\n- Keep changes targeted and minimal for this bead.\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands:\\n - npm run typecheck\\n - npm run lint\\n - npm run test\\n- Report any remaining risks and follow-up beads explicitly.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-02-28T22:04:48Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T23:24:55Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T15:28:14Z","event_type":"closed","id":86,"issue_id":"beadboard-0fi.3","new_value":"actor prop added to ThreadDrawer, passes through to postComment, wired from UnifiedShell via ContextualRightPanel","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T15:28:14Z","event_type":"closed","id":87,"issue_id":"beadboard-0fi","new_value":"all steps complete","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T15:28:14Z","event_type":"closed","id":88,"issue_id":"beadboard-0fi","new_value":"All 3 subtasks complete: actor state in UnifiedShell, editable chip in TopBar, wired to both drawers. localStorage hydration fix included. All checks pass.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T15:28:47Z","event_type":"created","id":89,"issue_id":"beadboard-5vs","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T15:28:50Z","event_type":"status_changed","id":90,"issue_id":"beadboard-5vs","new_value":"{\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-5vs\",\"title\":\"SwarmCommandFeed: load historical activity on mount filtered to epic\",\"description\":\"When user clicks an epic in LeftPanel, SwarmCommandFeed shows 'Waiting for agent signals...' because it only subscribes to future SSE events. It should also fetch the /api/activity history on mount (same as ActivityPanel does) and filter client-side by contextBeadIds. Also re-fetch when epicId or contextBeadIds changes.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"bug\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-01T23:28:44Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-01T23:28:44Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T15:31:31Z","event_type":"closed","id":91,"issue_id":"beadboard-5vs","new_value":"Added history fetch on mount in SwarmCommandFeed, filtered client-side by contextBeadIds. All checks pass.","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T15:38:00Z","event_type":"created","id":92,"issue_id":"beadboard-cc8","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T15:38:11Z","event_type":"created","id":93,"issue_id":"beadboard-91y","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:38:52Z","event_type":"created","id":94,"issue_id":"beadboard-yz6","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:38:52Z","event_type":"label_added","id":95,"issue_id":"beadboard-yz6","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-bootstrap","created_at":"2026-03-01T16:38:52Z","event_type":"label_added","id":96,"issue_id":"beadboard-yz6","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:08Z","event_type":"status_changed","id":97,"issue_id":"beadboard-yz6","new_value":"{\"notes\":\"Starting Phase 1: creating memory anchors and initial canonical nodes with hard/soft labels and anchor relations.\",\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-yz6\",\"title\":\"Bootstrap Phase 1 Memory Fabric (anchors + canonical nodes)\",\"description\":\"Implement Phase 1 native memory system in bd: create domain anchors, seed canonical memory decisions with strict schema labels, link via relates_to, and document evidence.\",\"acceptance_criteria\":\"Anchors exist, at least 5 canonical memory nodes exist and are closed, links to anchors exist, and plan docs updated.\",\"notes\":\"Scope: bd-native memory only; avoid broad code edits.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:38:49Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:38:49Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:18Z","event_type":"created","id":98,"issue_id":"beadboard-76p","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:39:18Z","event_type":"label_added","id":99,"issue_id":"beadboard-76p","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-anchor","created_at":"2026-03-01T16:39:18Z","event_type":"label_added","id":100,"issue_id":"beadboard-76p","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-arch","created_at":"2026-03-01T16:39:18Z","event_type":"label_added","id":101,"issue_id":"beadboard-76p","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:18Z","event_type":"created","id":102,"issue_id":"beadboard-fld","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:39:18Z","event_type":"label_added","id":103,"issue_id":"beadboard-fld","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-anchor","created_at":"2026-03-01T16:39:18Z","event_type":"label_added","id":104,"issue_id":"beadboard-fld","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-ux","created_at":"2026-03-01T16:39:18Z","event_type":"label_added","id":105,"issue_id":"beadboard-fld","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:19Z","event_type":"created","id":106,"issue_id":"beadboard-nq9","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:39:19Z","event_type":"label_added","id":107,"issue_id":"beadboard-nq9","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-anchor","created_at":"2026-03-01T16:39:19Z","event_type":"label_added","id":108,"issue_id":"beadboard-nq9","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-workflow","created_at":"2026-03-01T16:39:19Z","event_type":"label_added","id":109,"issue_id":"beadboard-nq9","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:19Z","event_type":"created","id":110,"issue_id":"beadboard-5r1","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:39:19Z","event_type":"label_added","id":111,"issue_id":"beadboard-5r1","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-anchor","created_at":"2026-03-01T16:39:19Z","event_type":"label_added","id":112,"issue_id":"beadboard-5r1","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-agent","created_at":"2026-03-01T16:39:19Z","event_type":"label_added","id":113,"issue_id":"beadboard-5r1","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:20Z","event_type":"created","id":114,"issue_id":"beadboard-8st","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:39:20Z","event_type":"label_added","id":115,"issue_id":"beadboard-8st","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-anchor","created_at":"2026-03-01T16:39:20Z","event_type":"label_added","id":116,"issue_id":"beadboard-8st","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-reliability","created_at":"2026-03-01T16:39:20Z","event_type":"label_added","id":117,"issue_id":"beadboard-8st","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:57Z","event_type":"created","id":118,"issue_id":"beadboard-116","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:39:57Z","event_type":"label_added","id":119,"issue_id":"beadboard-116","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-canonical","created_at":"2026-03-01T16:39:57Z","event_type":"label_added","id":120,"issue_id":"beadboard-116","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-hard","created_at":"2026-03-01T16:39:57Z","event_type":"label_added","id":121,"issue_id":"beadboard-116","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-workflow","created_at":"2026-03-01T16:39:57Z","event_type":"label_added","id":122,"issue_id":"beadboard-116","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:57Z","event_type":"closed","id":123,"issue_id":"beadboard-116","new_value":"Ratified canonical memory","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:58Z","event_type":"created","id":124,"issue_id":"beadboard-dvp","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:39:58Z","event_type":"label_added","id":125,"issue_id":"beadboard-dvp","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-canonical","created_at":"2026-03-01T16:39:58Z","event_type":"label_added","id":126,"issue_id":"beadboard-dvp","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-soft","created_at":"2026-03-01T16:39:58Z","event_type":"label_added","id":127,"issue_id":"beadboard-dvp","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-agent","created_at":"2026-03-01T16:39:58Z","event_type":"label_added","id":128,"issue_id":"beadboard-dvp","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:59Z","event_type":"closed","id":129,"issue_id":"beadboard-dvp","new_value":"Ratified canonical memory","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:39:59Z","event_type":"created","id":130,"issue_id":"beadboard-60a","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:39:59Z","event_type":"label_added","id":131,"issue_id":"beadboard-60a","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-canonical","created_at":"2026-03-01T16:39:59Z","event_type":"label_added","id":132,"issue_id":"beadboard-60a","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-hard","created_at":"2026-03-01T16:39:59Z","event_type":"label_added","id":133,"issue_id":"beadboard-60a","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-arch","created_at":"2026-03-01T16:39:59Z","event_type":"label_added","id":134,"issue_id":"beadboard-60a","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:00Z","event_type":"closed","id":135,"issue_id":"beadboard-60a","new_value":"Ratified canonical memory","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:00Z","event_type":"created","id":136,"issue_id":"beadboard-zas","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:40:00Z","event_type":"label_added","id":137,"issue_id":"beadboard-zas","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-canonical","created_at":"2026-03-01T16:40:00Z","event_type":"label_added","id":138,"issue_id":"beadboard-zas","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-hard","created_at":"2026-03-01T16:40:00Z","event_type":"label_added","id":139,"issue_id":"beadboard-zas","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-arch","created_at":"2026-03-01T16:40:00Z","event_type":"label_added","id":140,"issue_id":"beadboard-zas","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:01Z","event_type":"closed","id":141,"issue_id":"beadboard-zas","new_value":"Ratified canonical memory","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:01Z","event_type":"created","id":142,"issue_id":"beadboard-duo","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:40:01Z","event_type":"label_added","id":143,"issue_id":"beadboard-duo","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-canonical","created_at":"2026-03-01T16:40:01Z","event_type":"label_added","id":144,"issue_id":"beadboard-duo","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-soft","created_at":"2026-03-01T16:40:01Z","event_type":"label_added","id":145,"issue_id":"beadboard-duo","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-ux","created_at":"2026-03-01T16:40:01Z","event_type":"label_added","id":146,"issue_id":"beadboard-duo","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:02Z","event_type":"closed","id":147,"issue_id":"beadboard-duo","new_value":"Ratified canonical memory","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:02Z","event_type":"created","id":148,"issue_id":"beadboard-6fv","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:40:02Z","event_type":"label_added","id":149,"issue_id":"beadboard-6fv","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-canonical","created_at":"2026-03-01T16:40:02Z","event_type":"label_added","id":150,"issue_id":"beadboard-6fv","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-hard","created_at":"2026-03-01T16:40:02Z","event_type":"label_added","id":151,"issue_id":"beadboard-6fv","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-reliability","created_at":"2026-03-01T16:40:02Z","event_type":"label_added","id":152,"issue_id":"beadboard-6fv","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:03Z","event_type":"closed","id":153,"issue_id":"beadboard-6fv","new_value":"Ratified canonical memory","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:03Z","event_type":"created","id":154,"issue_id":"beadboard-fga","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:40:03Z","event_type":"label_added","id":155,"issue_id":"beadboard-fga","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-canonical","created_at":"2026-03-01T16:40:03Z","event_type":"label_added","id":156,"issue_id":"beadboard-fga","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: mem-soft","created_at":"2026-03-01T16:40:03Z","event_type":"label_added","id":157,"issue_id":"beadboard-fga","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-reliability","created_at":"2026-03-01T16:40:03Z","event_type":"label_added","id":158,"issue_id":"beadboard-fga","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:04Z","event_type":"closed","id":159,"issue_id":"beadboard-fga","new_value":"Ratified canonical memory","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:51Z","event_type":"updated","id":160,"issue_id":"beadboard-yz6","new_value":"{\"notes\":\"Evidence: created anchors beadboard-76p/fld/nq9/5r1/8st; created+closed canonical nodes beadboard-116,dvp,60a,zas,duo,6fv,fga; verified retrieval via bd query label=memory+mem-canonical+status=closed and connectivity via bd dep list.\"}","old_value":"{\"id\":\"beadboard-yz6\",\"title\":\"Bootstrap Phase 1 Memory Fabric (anchors + canonical nodes)\",\"description\":\"Implement Phase 1 native memory system in bd: create domain anchors, seed canonical memory decisions with strict schema labels, link via relates_to, and document evidence.\",\"acceptance_criteria\":\"Anchors exist, at least 5 canonical memory nodes exist and are closed, links to anchors exist, and plan docs updated.\",\"notes\":\"Starting Phase 1: creating memory anchors and initial canonical nodes with hard/soft labels and anchor relations.\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:38:49Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:39:07Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:40:51Z","event_type":"closed","id":161,"issue_id":"beadboard-yz6","new_value":"Phase 1 memory fabric bootstrapped in bd with anchors and canonical memory nodes","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:45:22Z","event_type":"created","id":162,"issue_id":"beadboard-jgy","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:45:22Z","event_type":"label_added","id":163,"issue_id":"beadboard-jgy","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: docs","created_at":"2026-03-01T16:45:22Z","event_type":"label_added","id":164,"issue_id":"beadboard-jgy","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:45:29Z","event_type":"status_changed","id":165,"issue_id":"beadboard-jgy","new_value":"{\"notes\":\"Creating help/memory docs and patching AGENTS manuals with mandatory memory protocol.\",\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-jgy\",\"title\":\"Document memory workflow in help/memory and AGENTS manuals\",\"description\":\"Add critical operational docs for the bd-native memory system under help/memory and update root+beadboard AGENTS.md with explicit memory workflow protocol and command patterns.\",\"acceptance_criteria\":\"help/memory folder exists with workflow docs; both AGENTS manuals reference and enforce memory workflow commands and schema.\",\"notes\":\"Scope: documentation/manual updates only.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:45:20Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:45:20Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:46:38Z","event_type":"updated","id":166,"issue_id":"beadboard-jgy","new_value":"{\"notes\":\"Added help/memory index+workflow+query+schema docs; updated AGENTS.md with mandatory Native Memory Workflow section and command contracts.\"}","old_value":"{\"id\":\"beadboard-jgy\",\"title\":\"Document memory workflow in help/memory and AGENTS manuals\",\"description\":\"Add critical operational docs for the bd-native memory system under help/memory and update root+beadboard AGENTS.md with explicit memory workflow protocol and command patterns.\",\"acceptance_criteria\":\"help/memory folder exists with workflow docs; both AGENTS manuals reference and enforce memory workflow commands and schema.\",\"notes\":\"Creating help/memory docs and patching AGENTS manuals with mandatory memory protocol.\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:45:20Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:45:28Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:46:38Z","event_type":"closed","id":167,"issue_id":"beadboard-jgy","new_value":"Memory workflow docs and AGENTS integration added","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:53:21Z","event_type":"created","id":168,"issue_id":"beadboard-i4c","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:53:21Z","event_type":"label_added","id":169,"issue_id":"beadboard-i4c","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory-provenance","created_at":"2026-03-01T16:53:21Z","event_type":"label_added","id":170,"issue_id":"beadboard-i4c","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:53:26Z","event_type":"status_changed","id":171,"issue_id":"beadboard-i4c","new_value":"{\"notes\":\"Starting provenance enrichment for canonical memories: source bead links + evidence metadata + doc protocol update.\",\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-i4c\",\"title\":\"Add provenance links and evidence metadata to canonical memory nodes\",\"description\":\"Strengthen memory retrieval for fresh agents by relating canonical memory nodes to source closed beads/plans and adding explicit evidence metadata fields.\",\"acceptance_criteria\":\"All existing canonical memory nodes have source bead relations and evidence_ids/plan_refs metadata; help docs require provenance capture.\",\"notes\":\"Scope: memory graph provenance + docs only.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:53:19Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:53:19Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:53:58Z","event_type":"updated","id":172,"issue_id":"beadboard-116","new_value":"{\"metadata\":{\"domain\":\"memory-workflow\",\"effective_date\":\"2026-03-02\",\"evidence_ids\":\"bb-92d.6,beadboard-jgy,beadboard-yz6\",\"memory_strength\":\"hard\",\"memory_version\":1,\"owner\":\"team\",\"plan_refs\":\"docs/plans/2026-03-01-beads-native-memory.md,docs/plans/2026-03-02-bd-memory-fabric-design.md\",\"superseded_by\":null,\"supersedes\":null},\"notes\":\"Provenance linked: bb-92d.6, beadboard-jgy, beadboard-yz6\"}","old_value":"{\"id\":\"beadboard-116\",\"title\":\"[MEMORY][WORKFLOW][HARD] Evidence before completion claims\",\"description\":\"Scope: All new implementation tasks that change behavior or data flow.\\nOut of Scope: Purely informational discussions without code or workflow changes.\\nRule: Start from explicit verification evidence and update work state in bd before claiming progress complete.\\nRationale: Prevents status drift and false completion claims.\\nFailure Mode: Unverified completion claims lead to regressions and mistrust.\\n\",\"acceptance_criteria\":\"Given an implementation task, when work begins and ends, then bd state transitions and verification command evidence are recorded.\\nVerification command(s): bd show \\u003ctask-id\\u003e; npm run typecheck; npm run lint; npm run test\",\"status\":\"closed\",\"priority\":1,\"issue_type\":\"decision\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:39:55Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:39:56Z\",\"closed_at\":\"2026-03-02T00:39:56Z\",\"close_reason\":\"Ratified canonical memory\",\"metadata\":{\"domain\":\"memory-workflow\",\"effective_date\":\"2026-03-02\",\"memory_strength\":\"hard\",\"memory_version\":1,\"owner\":\"team\",\"superseded_by\":null,\"supersedes\":null}}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:53:59Z","event_type":"updated","id":173,"issue_id":"beadboard-dvp","new_value":"{\"metadata\":{\"domain\":\"memory-agent\",\"effective_date\":\"2026-03-02\",\"evidence_ids\":\"bb-u6f.6,bb-u6f.6.1,beadboard-r1i\",\"memory_strength\":\"soft\",\"memory_version\":1,\"owner\":\"team\",\"plan_refs\":\"docs/plans/2026-02-28-bd-only-coordination-migration-plan.md\",\"superseded_by\":null,\"supersedes\":null},\"notes\":\"Provenance linked: bb-u6f.6, bb-u6f.6.1, beadboard-r1i\"}","old_value":"{\"id\":\"beadboard-dvp\",\"title\":\"[MEMORY][AGENT][SOFT] Parallelize independent work with clear ownership\",\"description\":\"Scope: Any task with 2+ independent units of work.\\nOut of Scope: Single-file trivial edits.\\nRule: Parallelize independent reads/exploration and isolate ownership for independent execution threads.\\nRationale: Reduces cycle time while preserving traceability.\\nFailure Mode: Serial execution on independent work causes avoidable delays.\\n\",\"acceptance_criteria\":\"Given independent subtasks, when execution starts, then each subtask has explicit ownership and verification evidence.\\nVerification command(s): bd dep tree \\u003cepic-id\\u003e; bd ready; git status --short\",\"status\":\"closed\",\"priority\":1,\"issue_type\":\"decision\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:39:56Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:39:57Z\",\"closed_at\":\"2026-03-02T00:39:57Z\",\"close_reason\":\"Ratified canonical memory\",\"metadata\":{\"domain\":\"memory-agent\",\"effective_date\":\"2026-03-02\",\"memory_strength\":\"soft\",\"memory_version\":1,\"owner\":\"team\",\"superseded_by\":null,\"supersedes\":null}}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:54:01Z","event_type":"updated","id":174,"issue_id":"beadboard-60a","new_value":"{\"metadata\":{\"domain\":\"memory-arch\",\"effective_date\":\"2026-03-02\",\"evidence_ids\":\"bb-bvn,beadboard-r1i,beadboard-68k\",\"memory_strength\":\"hard\",\"memory_version\":1,\"owner\":\"team\",\"plan_refs\":\"docs/plans/2026-02-22-dag-views-ux-design.md\",\"superseded_by\":null,\"supersedes\":null},\"notes\":\"Provenance linked: bb-bvn, beadboard-r1i, beadboard-68k\"}","old_value":"{\"id\":\"beadboard-60a\",\"title\":\"[MEMORY][ARCH][HARD] Dependencies model execution order, not visual order\",\"description\":\"Scope: Dependency graph design and updates.\\nOut of Scope: Visual layout decisions that do not alter execution semantics.\\nRule: Dependencies encode execution order and blocking semantics, never visual grouping.\\nRationale: Keeps ready/blocked states truthful and machine-reliable.\\nFailure Mode: Incorrect dependency direction causes false blocking or unsafe parallelism.\\n\",\"acceptance_criteria\":\"Given a dependency update, when graph state is queried, then blocked/ready outcomes match intended execution order.\\nVerification command(s): bd dep tree \\u003cissue-id\\u003e; bd blocked; bd ready\",\"status\":\"closed\",\"priority\":1,\"issue_type\":\"decision\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:39:57Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:39:58Z\",\"closed_at\":\"2026-03-02T00:39:58Z\",\"close_reason\":\"Ratified canonical memory\",\"metadata\":{\"domain\":\"memory-arch\",\"effective_date\":\"2026-03-02\",\"memory_strength\":\"hard\",\"memory_version\":1,\"owner\":\"team\",\"superseded_by\":null,\"supersedes\":null}}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:54:02Z","event_type":"updated","id":175,"issue_id":"beadboard-zas","new_value":"{\"metadata\":{\"domain\":\"memory-arch\",\"effective_date\":\"2026-03-02\",\"evidence_ids\":\"beadboard-68k.4,beadboard-68k.5,beadboard-r1i.1\",\"memory_strength\":\"hard\",\"memory_version\":1,\"owner\":\"team\",\"plan_refs\":\"docs/plans/2026-02-22-dag-views-ux-design.md,docs/plans/2026-02-15-unified-ux-prd.md\",\"superseded_by\":null,\"supersedes\":null},\"notes\":\"Provenance linked: beadboard-68k.4, beadboard-68k.5, beadboard-r1i.1\"}","old_value":"{\"id\":\"beadboard-zas\",\"title\":\"[MEMORY][ARCH][HARD] Shared logic for cross-view behavior\",\"description\":\"Scope: Repeated logic used by multiple views or pages.\\nOut of Scope: One-off prototypes and disposable experiments.\\nRule: Reuse shared paths/components for cross-view behavior; avoid one-off logic drift.\\nRationale: Prevents silent divergence between Kanban, Graph, and API views.\\nFailure Mode: Patching one surface only creates inconsistent user behavior.\\n\",\"acceptance_criteria\":\"Given a behavior change touching multiple views, when implementation lands, then shared logic path is reused and covered by tests.\\nVerification command(s): rg \\\"\\u003cshared-function-or-hook\\u003e\\\" src tests; npm run test\",\"status\":\"closed\",\"priority\":1,\"issue_type\":\"decision\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:39:59Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:39:59Z\",\"closed_at\":\"2026-03-02T00:39:59Z\",\"close_reason\":\"Ratified canonical memory\",\"metadata\":{\"domain\":\"memory-arch\",\"effective_date\":\"2026-03-02\",\"memory_strength\":\"hard\",\"memory_version\":1,\"owner\":\"team\",\"superseded_by\":null,\"supersedes\":null}}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:54:04Z","event_type":"updated","id":176,"issue_id":"beadboard-duo","new_value":"{\"metadata\":{\"domain\":\"memory-ux\",\"effective_date\":\"2026-03-02\",\"evidence_ids\":\"beadboard-68k.4,beadboard-68k.2,bb-u6f.3\",\"memory_strength\":\"soft\",\"memory_version\":1,\"owner\":\"team\",\"plan_refs\":\"docs/plans/2026-02-16-social-view-redesign-plan.md,docs/plans/2026-02-15-unified-ux-prd.md\",\"superseded_by\":null,\"supersedes\":null},\"notes\":\"Provenance linked: beadboard-68k.4, beadboard-68k.2, bb-u6f.3\"}","old_value":"{\"id\":\"beadboard-duo\",\"title\":\"[MEMORY][UX][SOFT] User-facing copy must stay simple and explicit\",\"description\":\"Scope: UI copy in labels, controls, and status messaging.\\nOut of Scope: Internal comments and engineering-only diagnostics.\\nRule: Use simple user-facing language and explicit status words.\\nRationale: Reduces ambiguity and onboarding friction.\\nFailure Mode: Dense or vague copy increases mistakes and support load.\\n\",\"acceptance_criteria\":\"Given newly introduced UI copy, when reviewed, then wording is concise and unambiguous for first-time users.\\nVerification command(s): npm run lint; targeted UI review in changed components\",\"status\":\"closed\",\"priority\":1,\"issue_type\":\"decision\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:40:00Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:40:01Z\",\"closed_at\":\"2026-03-02T00:40:01Z\",\"close_reason\":\"Ratified canonical memory\",\"metadata\":{\"domain\":\"memory-ux\",\"effective_date\":\"2026-03-02\",\"memory_strength\":\"soft\",\"memory_version\":1,\"owner\":\"team\",\"superseded_by\":null,\"supersedes\":null}}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:54:06Z","event_type":"updated","id":177,"issue_id":"beadboard-6fv","new_value":"{\"metadata\":{\"domain\":\"memory-reliability\",\"effective_date\":\"2026-03-02\",\"evidence_ids\":\"beadboard-03r,beadboard-8rg,bb-xtu,bb-tpc.3\",\"memory_strength\":\"hard\",\"memory_version\":1,\"owner\":\"team\",\"plan_refs\":\"docs/plans/2026-02-28-bd-only-coordination-migration-plan.md\",\"superseded_by\":null,\"supersedes\":null},\"notes\":\"Provenance linked: beadboard-03r, beadboard-8rg, bb-xtu, bb-tpc.3\"}","old_value":"{\"id\":\"beadboard-6fv\",\"title\":\"[MEMORY][RELIABILITY][HARD] Triage stale-state bugs via parity and watcher checks\",\"description\":\"Scope: Bug triage and remediation for stale state, watcher, and refresh failures.\\nOut of Scope: Non-state-related cosmetic bugs.\\nRule: Verify source-of-truth parity first, then inspect read paths and watcher inputs before patching symptoms.\\nRationale: Prevents superficial fixes that hide core data flow faults.\\nFailure Mode: Repeated regressions when stale-state root cause remains unresolved.\\n\",\"acceptance_criteria\":\"Given a stale update bug, when triage starts, then parity, read path, and watcher inputs are explicitly checked before implementation.\\nVerification command(s): bd show \\u003cissue-id\\u003e; npm run test -- tests/lib/watcher.test.ts\",\"status\":\"closed\",\"priority\":1,\"issue_type\":\"decision\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:40:01Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:40:02Z\",\"closed_at\":\"2026-03-02T00:40:02Z\",\"close_reason\":\"Ratified canonical memory\",\"metadata\":{\"domain\":\"memory-reliability\",\"effective_date\":\"2026-03-02\",\"memory_strength\":\"hard\",\"memory_version\":1,\"owner\":\"team\",\"superseded_by\":null,\"supersedes\":null}}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:54:07Z","event_type":"updated","id":178,"issue_id":"beadboard-fga","new_value":"{\"metadata\":{\"domain\":\"memory-reliability\",\"effective_date\":\"2026-03-02\",\"evidence_ids\":\"bb-ff6,bb-6bx,beadboard-5vs\",\"memory_strength\":\"soft\",\"memory_version\":1,\"owner\":\"team\",\"plan_refs\":\"docs/plans/2026-02-28-bd-only-coordination-migration-plan.md,docs/plans/2026-02-22-dag-views-ux-design.md\",\"superseded_by\":null,\"supersedes\":null},\"notes\":\"Provenance linked: bb-ff6, bb-6bx, beadboard-5vs\"}","old_value":"{\"id\":\"beadboard-fga\",\"title\":\"[MEMORY][RELIABILITY][SOFT] Workarounds require trigger rollback and owner\",\"description\":\"Scope: Temporary workaround decisions under delivery pressure.\\nOut of Scope: Final architecture decisions already ratified.\\nRule: Any workaround must include trigger conditions, rollback criteria, and owner for retirement.\\nRationale: Keeps tactical decisions from becoming accidental permanent architecture.\\nFailure Mode: Undocumented workaround debt accumulates and obscures system intent.\\n\",\"acceptance_criteria\":\"Given a workaround task, when created, then trigger, rollback criteria, and retirement owner are present.\\nVerification command(s): bd show \\u003cworkaround-id\\u003e\",\"status\":\"closed\",\"priority\":1,\"issue_type\":\"decision\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:40:02Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:40:03Z\",\"closed_at\":\"2026-03-02T00:40:03Z\",\"close_reason\":\"Ratified canonical memory\",\"metadata\":{\"domain\":\"memory-reliability\",\"effective_date\":\"2026-03-02\",\"memory_strength\":\"soft\",\"memory_version\":1,\"owner\":\"team\",\"superseded_by\":null,\"supersedes\":null}}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:54:57Z","event_type":"updated","id":179,"issue_id":"beadboard-i4c","new_value":"{\"notes\":\"Completed provenance upgrade: all 7 canonical memory beads now link to source closed beads and include metadata keys evidence_ids + plan_refs. Updated help/memory docs to require provenance capture and provenance checks in task-start workflow.\"}","old_value":"{\"id\":\"beadboard-i4c\",\"title\":\"Add provenance links and evidence metadata to canonical memory nodes\",\"description\":\"Strengthen memory retrieval for fresh agents by relating canonical memory nodes to source closed beads/plans and adding explicit evidence metadata fields.\",\"acceptance_criteria\":\"All existing canonical memory nodes have source bead relations and evidence_ids/plan_refs metadata; help docs require provenance capture.\",\"notes\":\"Starting provenance enrichment for canonical memories: source bead links + evidence metadata + doc protocol update.\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:53:19Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:53:24Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:54:57Z","event_type":"closed","id":180,"issue_id":"beadboard-i4c","new_value":"Canonical memory provenance linked to historical beads and help/memory updated","old_value":""}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:56:32Z","event_type":"created","id":181,"issue_id":"beadboard-ij8","new_value":"","old_value":""}
|
|
{"actor":"ZenchantLive","comment":"Added label: memory","created_at":"2026-03-01T16:56:32Z","event_type":"label_added","id":182,"issue_id":"beadboard-ij8","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":"Added label: docs","created_at":"2026-03-01T16:56:32Z","event_type":"label_added","id":183,"issue_id":"beadboard-ij8","new_value":null,"old_value":null}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:56:39Z","event_type":"status_changed","id":184,"issue_id":"beadboard-ij8","new_value":"{\"notes\":\"Adding regular memory contribution cadence and provenance relation rules to both AGENTS manuals.\",\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-ij8\",\"title\":\"Enforce regular memory contribution + provenance relations in AGENTS manuals\",\"description\":\"Update root and beadboard AGENTS manuals to require recurring memory additions and explicit provenance relation/metadata rules for canonical memory nodes.\",\"acceptance_criteria\":\"Both manuals include mandatory post-close memory review cadence and provenance relation commands/requirements.\",\"notes\":\"Scope: AGENTS docs only.\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:56:31Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:56:31Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:57:17Z","event_type":"updated","id":185,"issue_id":"beadboard-ij8","new_value":"{\"notes\":\"Updated both AGENTS manuals: added mandatory post-close memory review cadence, provenance relation commands, required evidence_ids/plan_refs metadata, and fresh-agent provenance validation steps.\"}","old_value":"{\"id\":\"beadboard-ij8\",\"title\":\"Enforce regular memory contribution + provenance relations in AGENTS manuals\",\"description\":\"Update root and beadboard AGENTS manuals to require recurring memory additions and explicit provenance relation/metadata rules for canonical memory nodes.\",\"acceptance_criteria\":\"Both manuals include mandatory post-close memory review cadence and provenance relation commands/requirements.\",\"notes\":\"Adding regular memory contribution cadence and provenance relation rules to both AGENTS manuals.\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T00:56:31Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T00:56:36Z\"}"}
|
|
{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-01T16:57:17Z","event_type":"closed","id":186,"issue_id":"beadboard-ij8","new_value":"AGENTS manuals now enforce regular memory additions and provenance relations","old_value":""}
|