From 4d9717516246cd128ea32d4b4bef9da99e4c0e63 Mon Sep 17 00:00:00 2001 From: ZenchantLive Date: Mon, 2 Mar 2026 15:05:21 -0800 Subject: [PATCH] bd: backup 2026-03-02 23:05 --- .beads/backup/backup_state.json | 6 +++--- .beads/backup/events.jsonl | 5 +++++ .beads/backup/issues.jsonl | 6 +++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.beads/backup/backup_state.json b/.beads/backup/backup_state.json index f5a9e30..6297379 100644 --- a/.beads/backup/backup_state.json +++ b/.beads/backup/backup_state.json @@ -1,10 +1,10 @@ { - "last_dolt_commit": "q4e7c8gfsv3l8pjc80uje6gf7dfiqmk3", + "last_dolt_commit": "3ho4bvgav6t9laucfdn8ho84c0235ep4", "last_event_id": 0, - "timestamp": "2026-03-02T22:49:37.615522265Z", + "timestamp": "2026-03-02T23:05:16.92019878Z", "counts": { "issues": 488, - "events": 549, + "events": 554, "comments": 12, "dependencies": 662, "labels": 775, diff --git a/.beads/backup/events.jsonl b/.beads/backup/events.jsonl index dca7b4f..e432bf1 100644 --- a/.beads/backup/events.jsonl +++ b/.beads/backup/events.jsonl @@ -547,3 +547,8 @@ {"actor":"ZenchantLive","comment":null,"created_at":"2026-03-02T14:09:48Z","event_type":"closed","id":551,"issue_id":"beadboard-btt","new_value":"Install/discovery contract and human-facing SKILL.md positioning are implemented and verified.","old_value":""} {"actor":"ZenchantLive","comment":null,"created_at":"2026-03-02T14:09:50Z","event_type":"updated","id":552,"issue_id":"beadboard-c70","new_value":"{\"notes\":\"Completed beadboard-btt: install/discovery contract + human-convincing SKILL.md framing. Remaining children: beadboard-i0q (global-skill project context contract), beadboard-05a (global package/distribution strategy).\"}","old_value":"{\"id\":\"beadboard-c70\",\"title\":\"[EPIC] BeadBoard Installation + Discovery Contract for Driver Skill\",\"description\":\"TASK CONTEXT\\\\n- Bead ID: auto\\\\n- Parent: none\\\\n- Dependencies: none\\\\n\\\\nTASK CONTRACT\\\\n- Goal: Make beadboard-driver reliably detect BeadBoard installation and provide clear install/remediation UX for both agents and humans.\\\\n- Success Criteria:\\\\n - Skill docs include explicit BeadBoard identity and GitHub link\\\\n - Driver scripts produce deterministic install guidance when BeadBoard tooling is missing\\\\n - Global vs repo-local usage model is documented and testable\\\\n- Scope:\\\\n - Installation checks and remediation messages\\\\n - Global package/distribution strategy decision\\\\n - Optional project template contract for global skills\\\\n- Out of Scope:\\\\n - Full package publish implementation unless split into child beads\\\\n\\\\nIMPLEMENTATION CONSTRAINTS\\\\n- Preserve existing bd as source-of-truth workflow semantics\\\\n- Keep user-facing copy simple and explicit\\\\n\\\\nVERIFICATION REQUIREMENTS\\\\n- Required commands: npm run typecheck, npm run lint, npm run test\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"epic\",\"assignee\":\"beadboard-frf\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T21:59:02Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T22:00:17Z\"}"} {"actor":"ZenchantLive","comment":null,"created_at":"2026-03-02T14:49:37Z","event_type":"status_changed","id":553,"issue_id":"beadboard-i0q","new_value":"{\"assignee\":\"beadboard-frf\",\"status\":\"in_progress\"}","old_value":"{\"id\":\"beadboard-i0q\",\"title\":\"Global skill project-context contract (project.md optional path model)\",\"description\":\"TASK CONTEXT\\\\n- Bead ID: beadboard-c70.2\\\\n- Parent: beadboard-c70\\\\n- Dependencies: beadboard-c70.1\\\\n\\\\nTASK CONTRACT\\\\n- Goal: Make project template usage clear for global vs repo-local skill installs.\\\\n- Success Criteria:\\\\n - SKILL.md explains project template as source template and optional target-repo copy\\\\n - scripts optionally support external project context file path (if needed)\\\\n- Scope:\\\\n - docs + contract tests\\\\n- Out of Scope:\\\\n - UI integration changes\\\\n\\\\nVERIFICATION REQUIREMENTS\\\\n- Required commands: npm run typecheck, npm run lint, npm run test\",\"status\":\"open\",\"priority\":1,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T22:00:44Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T22:00:44Z\"}"} +{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-02T14:52:29Z","event_type":"updated","id":554,"issue_id":"beadboard-i0q","new_value":"{\"notes\":\"Implemented global-skill project context contract: removed in-skill project.md runtime file, added skills/beadboard-driver/project.template.md as template source, added scripts/ensure-project-context.mjs to create \\u003ctarget-repo\\u003e/project.md only when missing, and updated SKILL.md + command matrix accordingly. Added contract test skills/beadboard-driver/tests/ensure-project-context.contract.test.mjs and wired into run-tests.mjs. Verification: node skills/beadboard-driver/tests/run-tests.mjs (pass, 10 tests), npm run typecheck (pass), npm run lint (0 errors, 22 warnings).\"}","old_value":"{\"id\":\"beadboard-i0q\",\"title\":\"Global skill project-context contract (project.md optional path model)\",\"description\":\"TASK CONTEXT\\\\n- Bead ID: beadboard-c70.2\\\\n- Parent: beadboard-c70\\\\n- Dependencies: beadboard-c70.1\\\\n\\\\nTASK CONTRACT\\\\n- Goal: Make project template usage clear for global vs repo-local skill installs.\\\\n- Success Criteria:\\\\n - SKILL.md explains project template as source template and optional target-repo copy\\\\n - scripts optionally support external project context file path (if needed)\\\\n- Scope:\\\\n - docs + contract tests\\\\n- Out of Scope:\\\\n - UI integration changes\\\\n\\\\nVERIFICATION REQUIREMENTS\\\\n- Required commands: npm run typecheck, npm run lint, npm run test\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"task\",\"assignee\":\"beadboard-frf\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T22:00:44Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T22:49:37Z\"}"} +{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-02T14:52:32Z","event_type":"closed","id":555,"issue_id":"beadboard-i0q","new_value":"Global-vs-local project context behavior clarified and implemented via template+ensure workflow.","old_value":""} +{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-02T14:52:34Z","event_type":"updated","id":556,"issue_id":"beadboard-c70","new_value":"{\"notes\":\"Completed beadboard-i0q. Remaining epic child: beadboard-05a (global package/distribution strategy decision).\"}","old_value":"{\"id\":\"beadboard-c70\",\"title\":\"[EPIC] BeadBoard Installation + Discovery Contract for Driver Skill\",\"description\":\"TASK CONTEXT\\\\n- Bead ID: auto\\\\n- Parent: none\\\\n- Dependencies: none\\\\n\\\\nTASK CONTRACT\\\\n- Goal: Make beadboard-driver reliably detect BeadBoard installation and provide clear install/remediation UX for both agents and humans.\\\\n- Success Criteria:\\\\n - Skill docs include explicit BeadBoard identity and GitHub link\\\\n - Driver scripts produce deterministic install guidance when BeadBoard tooling is missing\\\\n - Global vs repo-local usage model is documented and testable\\\\n- Scope:\\\\n - Installation checks and remediation messages\\\\n - Global package/distribution strategy decision\\\\n - Optional project template contract for global skills\\\\n- Out of Scope:\\\\n - Full package publish implementation unless split into child beads\\\\n\\\\nIMPLEMENTATION CONSTRAINTS\\\\n- Preserve existing bd as source-of-truth workflow semantics\\\\n- Keep user-facing copy simple and explicit\\\\n\\\\nVERIFICATION REQUIREMENTS\\\\n- Required commands: npm run typecheck, npm run lint, npm run test\",\"notes\":\"Completed beadboard-btt: install/discovery contract + human-convincing SKILL.md framing. Remaining children: beadboard-i0q (global-skill project context contract), beadboard-05a (global package/distribution strategy).\",\"status\":\"in_progress\",\"priority\":1,\"issue_type\":\"epic\",\"assignee\":\"beadboard-frf\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T21:59:02Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T22:09:50Z\"}"} +{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-02T14:52:45Z","event_type":"updated","id":557,"issue_id":"beadboard-frf","new_value":"{\"notes\":\"Implemented project template/runtime split for global skill usage and closed beadboard-i0q.\"}","old_value":"{\"id\":\"beadboard-frf\",\"title\":\"Agent: codex-skill-marketing\",\"description\":\"Refine beadboard-driver SKILL.md to sell human value while preserving agent execution contract\",\"status\":\"open\",\"priority\":0,\"issue_type\":\"task\",\"owner\":\"jordanlive121@gmail.com\",\"created_at\":\"2026-03-02T22:00:09Z\",\"created_by\":\"ZenchantLive\",\"updated_at\":\"2026-03-02T22:00:09Z\"}"} +{"actor":"ZenchantLive","comment":null,"created_at":"2026-03-02T14:52:47Z","event_type":"closed","id":558,"issue_id":"beadboard-frf","new_value":"Session scope complete.","old_value":""} diff --git a/.beads/backup/issues.jsonl b/.beads/backup/issues.jsonl index 6f40dc8..e32f748 100644 --- a/.beads/backup/issues.jsonl +++ b/.beads/backup/issues.jsonl @@ -411,7 +411,7 @@ {"acceptance_criteria":"","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":"2026-03-02T06:34:26Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"3c9ffc764c5d237b5070c88ba9fba055d55c997d7e09d147115d0ee345ec636a","created_at":"2026-03-02T06:27:53Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"TASK CONTEXT\n- Bead ID: beadboard-btn.1\n- Parent: beadboard-btn ([EPIC] BeadBoard Driver Skill v4 Rewrite)\n- Dependencies: None\n\nTASK CONTRACT\n- Goal: Document how agents use beadboard's memory system\n- Success Criteria:\n - Reference docs cover full memory workflow\n - Includes query commands, provenance validation, contract creation\n- Scope:\n - Memory workflow (query → attach → ratify → evolve)\n - Domain anchors\n - Canonical memory nodes\n - Memory contracts\n - Noise budget\n- Out of Scope:\n - Frontend UI for memory\n\nIMPLEMENTATION CONSTRAINTS\n- Reference docs in skills/beadboard-driver/references/\n- Follow memory_fabric_workflow.txt patterns\n\nVERIFICATION REQUIREMENTS\n- Required commands: npm run typecheck, npm run lint","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-btn.1","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"closed","target":"","timeout_ns":0,"title":"Memory System Docs: Query → Attach → Ratify → Evolve","updated_at":"2026-03-02T06:34:26Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"","actor":"","agent_state":"","assignee":"beadboard-frf","await_id":"","await_type":"","close_reason":"Install/discovery contract and human-facing SKILL.md positioning are implemented and verified.","closed_at":"2026-03-02T22:09:48Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"a8f57ddd9897be3e26cb697cb5c8358dd6707c3716184bcb959c067701b30700","created_at":"2026-03-02T22:00:41Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"TASK CONTEXT\\n- Bead ID: beadboard-c70.1\\n- Parent: beadboard-c70\\n- Dependencies: none\\n\\nTASK CONTRACT\\n- Goal: Define and implement deterministic install/discovery checks for beadboard-driver scripts.\\n- Success Criteria:\\n - session-preflight and diagnose-env return explicit BeadBoard install guidance with GitHub link\\n - Contract tests cover missing-tool remediation output\\n- Scope:\\n - bd command discovery\\n - bb path resolution behavior\\n - remediation copy\\n- Out of Scope:\\n - package publishing\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands: npm run typecheck, npm run lint, npm run test","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-btt","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"Rewrote skills/beadboard-driver/SKILL.md in stronger product+manual voice (manifesto/outcomes/proof/runbook), with explicit BeadBoard identity and GitHub install path. Added install confidence section and 'use-this-when' reference mapping. Install/discovery remediation copy is present in scripts/session-preflight.mjs and scripts/diagnose-env.mjs. Verification: node skills/beadboard-driver/tests/run-tests.mjs (pass), npm run typecheck (pass), npm run lint (0 errors, 22 warnings).","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"closed","target":"","timeout_ns":0,"title":"Driver install check contract (bd+bb discovery + remediation UX)","updated_at":"2026-03-02T22:09:48Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"","actor":"","agent_state":"","assignee":"sysarchitect-01","await_id":"","await_type":"","close_reason":"","closed_at":"2026-02-21T05:03:50Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"28d5443e989a71f0e7d9401694808fac30965cdf14414649ed256d1a1ec514c7","created_at":"2026-02-21T04:01:08Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-c08","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"closed","target":"","timeout_ns":0,"title":"Analyze Legacy System","updated_at":"2026-02-21T05:03:50Z","waiters":"","wisp_type":"","work_type":"mutex"} -{"acceptance_criteria":"","actor":"","agent_state":"","assignee":"beadboard-frf","await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"48b68bfe217bdda9d6db9cb4de0c280fa3fd2f005056aac422092919aa7c8198","created_at":"2026-03-02T21:59:02Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"TASK CONTEXT\\n- Bead ID: auto\\n- Parent: none\\n- Dependencies: none\\n\\nTASK CONTRACT\\n- Goal: Make beadboard-driver reliably detect BeadBoard installation and provide clear install/remediation UX for both agents and humans.\\n- Success Criteria:\\n - Skill docs include explicit BeadBoard identity and GitHub link\\n - Driver scripts produce deterministic install guidance when BeadBoard tooling is missing\\n - Global vs repo-local usage model is documented and testable\\n- Scope:\\n - Installation checks and remediation messages\\n - Global package/distribution strategy decision\\n - Optional project template contract for global skills\\n- Out of Scope:\\n - Full package publish implementation unless split into child beads\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing bd as source-of-truth workflow semantics\\n- Keep user-facing copy simple and explicit\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands: npm run typecheck, npm run lint, npm run test","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-c70","is_template":0,"issue_type":"epic","last_activity":null,"metadata":"{}","mol_type":"","notes":"Completed beadboard-btt: install/discovery contract + human-convincing SKILL.md framing. Remaining children: beadboard-i0q (global-skill project context contract), beadboard-05a (global package/distribution strategy).","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"in_progress","target":"","timeout_ns":0,"title":"[EPIC] BeadBoard Installation + Discovery Contract for Driver Skill","updated_at":"2026-03-02T22:09:50Z","waiters":"","wisp_type":"","work_type":""} +{"acceptance_criteria":"","actor":"","agent_state":"","assignee":"beadboard-frf","await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"48b68bfe217bdda9d6db9cb4de0c280fa3fd2f005056aac422092919aa7c8198","created_at":"2026-03-02T21:59:02Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"TASK CONTEXT\\n- Bead ID: auto\\n- Parent: none\\n- Dependencies: none\\n\\nTASK CONTRACT\\n- Goal: Make beadboard-driver reliably detect BeadBoard installation and provide clear install/remediation UX for both agents and humans.\\n- Success Criteria:\\n - Skill docs include explicit BeadBoard identity and GitHub link\\n - Driver scripts produce deterministic install guidance when BeadBoard tooling is missing\\n - Global vs repo-local usage model is documented and testable\\n- Scope:\\n - Installation checks and remediation messages\\n - Global package/distribution strategy decision\\n - Optional project template contract for global skills\\n- Out of Scope:\\n - Full package publish implementation unless split into child beads\\n\\nIMPLEMENTATION CONSTRAINTS\\n- Preserve existing bd as source-of-truth workflow semantics\\n- Keep user-facing copy simple and explicit\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands: npm run typecheck, npm run lint, npm run test","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-c70","is_template":0,"issue_type":"epic","last_activity":null,"metadata":"{}","mol_type":"","notes":"Completed beadboard-i0q. Remaining epic child: beadboard-05a (global package/distribution strategy decision).","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"in_progress","target":"","timeout_ns":0,"title":"[EPIC] BeadBoard Installation + Discovery Contract for Driver Skill","updated_at":"2026-03-02T22:52:34Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"1dafbb5c4d9daaa58832c82f8e6970f25243e6a66cef0243c4b200f216d94e49","created_at":"2026-03-01T23:37:59Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"When a comment is added via 'bd comments add' (or the ThreadDrawer POST), the JSONL file is mutated but the Chokidar watcher does not broadcast an SSE event. Users have to manually refresh to see new comments. The watcher snapshot diff likely only diffs top-level issue fields (status, title, etc.) and does not detect the comments array changing. Fix should: (1) detect comment-count changes in the snapshot diff, (2) emit an SSE activity/change event so subscribed clients re-fetch and display the new comment without a full page refresh.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-cc8","is_template":0,"issue_type":"epic","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"SSE watcher misses comment additions — no live refresh on bd comment add","updated_at":"2026-03-01T23:37:59Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"File created: src/hooks/use-graph-analysis.ts; Hook exports GraphAnalysis interface with: graphModel, signalById, cycleNodeIdSet, actionableNodeIds, blockerTooltipMap, blockerAnalysis, chainNodeIds; Hook takes (issues, projectRoot, selectedId) parameters; npm run typecheck passes","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"9ae1d444b1c2ed81d0d6df2a8b2243b2e0a873454df1964b7c2711172025fc05","created_at":"2026-02-24T01:37:13Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-ck0","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"## TASK CONTEXT\n- Bead ID: beadboard-ck0\n- Title: Create useGraphAnalysis hook\n- Parent/Epic: beadboard-uui (Unify Graph + Swarm into Single Enhanced Graph View)\n- Dependencies (must be done first): None\n\n## GOAL\nExtract duplicated graph computation logic from workflow-graph.tsx (lines 73-135) and dependency-graph-page.tsx (lines 327-433) into a reusable hook. This consolidates the graph analysis logic that is currently duplicated across two files.\n\n## SUCCESS CRITERIA\n- File created: src/hooks/use-graph-analysis.ts (~100 lines)\n- Hook exports GraphAnalysis interface with: graphModel, signalById, cycleNodeIdSet, actionableNodeIds, blockerTooltipMap, blockerAnalysis, chainNodeIds\n- Hook takes (issues: BeadIssue[], projectRoot: string, selectedId: string | null | undefined) parameters\n- Uses existing buildGraphModel from ../../lib/graph\n- Uses analyzeBlockedChain, detectDependencyCycles from ../../lib/graph-view\n- npm run typecheck passes\n\n## SCOPE\n- Create new hook file at src/hooks/use-graph-analysis.ts\n- Export GraphAnalysis interface\n- Use useMemo for all computed values\n- Document each computed field with JSDoc comments\n\n## OUT OF SCOPE\n- Modifying existing components (that happens in beadboard-5sr)\n- Adding new graph analysis features\n- Changes to buildGraphModel or graph-view functions\n\n## IMPLEMENTATION NOTES\nThe hook should compute:\n1. graphModel: Result of buildGraphModel(issues, { projectKey: projectRoot })\n2. signalById: Map of issue.id -\u003e { blockedBy: number, blocks: number }\n3. cycleNodeIdSet: Set of node IDs that are part of dependency cycles\n4. actionableNodeIds: Set of node IDs that have no open blockers (ready to work)\n5. blockerTooltipMap: Map of issue.id -\u003e string[] of blocker descriptions\n6. blockerAnalysis: Result of analyzeBlockedChain for selectedId (null if no selection)\n7. chainNodeIds: Set of selectedId + all blocker node IDs\n\n## VERIFICATION REQUIREMENTS\n- Required commands:\n - npm run typecheck\n- Required artifacts:\n - Screenshot of new hook file structure","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"tombstone","target":"","timeout_ns":0,"title":"Create useGraphAnalysis hook","updated_at":"2026-02-24T01:40:31Z","waiters":"","wisp_type":"","work_type":"mutex"} {"acceptance_criteria":"UnifiedShell has assignMode and selectedAssignIssue state; SmartDag receives onAssignModeChange and onSelectedIssueChange callbacks; When view===graph \u0026\u0026 assignMode, right panel renders AssignmentPanel; Otherwise right panel renders ContextualRightPanel; Remove if (view === 'swarm') block and SwarmWorkspace import; npm run typecheck, lint, test all pass","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"a8729938cc2c763ba0878950a5ccf14deb1fa8aee16ec8d951678f37bb3d29c5","created_at":"2026-02-24T01:37:47Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-cm8","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"tombstone","target":"","timeout_ns":0,"title":"Wire assign mode into UnifiedShell","updated_at":"2026-02-24T01:40:31Z","waiters":"","wisp_type":"","work_type":"mutex"} @@ -431,7 +431,7 @@ {"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","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Ratified canonical memory","closed_at":"2026-03-02T00:40:03Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"b63e0ea4d4920bde46d19ad0a3bbe214fb4669e0f0a1d346cca2a4dabe8d252e","created_at":"2026-03-02T00:40:02Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"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","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-fga","is_template":0,"issue_type":"decision","last_activity":null,"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}","mol_type":"","notes":"Provenance linked: bb-ff6, bb-6bx, beadboard-5vs","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"closed","target":"","timeout_ns":0,"title":"[MEMORY][RELIABILITY][SOFT] Workarounds require trigger rollback and owner","updated_at":"2026-03-02T00:54:07Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"Canonical UI/UX memories are related to this anchor via bd dep relate.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"20f7b859593b2616b5e07a51d20d07e392aa37468421e31d2854243508fbacde","created_at":"2026-03-02T00:39:16Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"Domain anchor for UI/UX rules, accessibility constraints, and component usage patterns.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-fld","is_template":0,"issue_type":"epic","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"[MEMORY-ANCHOR] UI/UX","updated_at":"2026-03-02T00:39:16Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"6 archetypes with comprehensive system prompts (200-400 lines each), handoff protocols defined, all prompts follow structured format (phases, output format, examples), archetypes load correctly in UI, test-agent.json deleted","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Completed 6 comprehensive agent archetypes with detailed system prompts (200-400 lines each), handoff protocols, workflow phases, and examples. All verification gates pass.","closed_at":"2026-02-26T03:14:31Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"35fb89e510008e4ecc977565f01996e074296f356dce072ed6d74097d8a87fcb","created_at":"2026-02-26T02:52:12Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-fp5","is_template":0,"issue_type":"epic","last_activity":null,"metadata":"{}","mol_type":"","notes":"Created 6 comprehensive archetypes: architect, engineer, reviewer, tester, investigator, shipper. Each has 200+ line system prompts with workflow phases, handoff protocols, and examples. Deleted test-agent.json placeholder. All verification gates pass (typecheck, lint warnings only, tests pass).","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"closed","target":"","timeout_ns":0,"title":"Comprehensive Agent Archetype System v2","updated_at":"2026-02-26T03:14:31Z","waiters":"","wisp_type":"","work_type":"mutex"} -{"acceptance_criteria":"","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"249f0ee0db1341a9297788e402d93dfd5d0fb82a0024c2dde5754e0f6c3a698f","created_at":"2026-03-02T22:00:09Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"Refine beadboard-driver SKILL.md to sell human value while preserving agent execution contract","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-frf","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":0,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Agent: codex-skill-marketing","updated_at":"2026-03-02T22:00:09Z","waiters":"","wisp_type":"","work_type":""} +{"acceptance_criteria":"","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Session scope complete.","closed_at":"2026-03-02T22:52:48Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"249f0ee0db1341a9297788e402d93dfd5d0fb82a0024c2dde5754e0f6c3a698f","created_at":"2026-03-02T22:00:09Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"Refine beadboard-driver SKILL.md to sell human value while preserving agent execution contract","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-frf","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"Implemented project template/runtime split for global skill usage and closed beadboard-i0q.","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":0,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"closed","target":"","timeout_ns":0,"title":"Agent: codex-skill-marketing","updated_at":"2026-03-02T22:52:48Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"8fd7102d911f66fc12c0218596be2d43b56c8a8252a0b8895bfdd5dea5e0cf27","created_at":"2026-02-24T01:41:40Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-gb0","is_template":0,"issue_type":"epic","last_activity":null,"metadata":"{}","mol_type":"","notes":"## TASK CONTEXT\n- Bead ID: beadboard-gb0\n- Title: Unify Graph + Swarm into Single Enhanced Graph View\n- Parent/Epic: None (this is the epic)\n- Dependencies: None\n\n## GOAL\nMerge the duplicate graph implementations (`?view=graph`, `?view=swarm`, and `/graph` page) into one enhanced graph view with two modes:\n- **Analysis mode** (default): Full dependency DAG with progressive disclosure (filters toolbar, tabs)\n- **Assign mode** (toggled): DAG highlights ready nodes, right panel transforms into assignment controls\n\n## PROBLEM STATEMENT\nBeadBoard has two views that both render the same `WorkflowGraph` DAG component, creating duplication:\n- `?view=graph` is a bare 49-line wrapper (`SmartDag`) with no rich features\n- `?view=swarm` duplicates the DAG with swarm-specific UI\n- Standalone `/graph` page (`DependencyGraphPage`) has rich features stranded from the shell view\n\n## SUCCESS CRITERIA\n- `?view=graph` shows enhanced DAG with all dependency analysis features\n- 'Assign' toggle enables task assignment workflow\n- `?view=swarm` deprecated (falls back to default view)\n- Archetypes/Templates accessible from assign mode right panel\n- All child tasks completed and verified\n- `npm run typecheck \u0026\u0026 npm run lint \u0026\u0026 npm run test` all pass\n\n## SCOPE\n- SmartDag rewrite with progressive disclosure + tabs + assign mode\n- AssignmentPanel component for assign mode\n- useGraphAnalysis hook extraction\n- Swarm view removal from navigation\n- Delete deprecated swarm files (swarm-workspace.tsx, telemetry-grid.tsx, specialized-agent-dag.tsx)\n\n## OUT OF SCOPE\n- Backend API changes (use existing `/api/swarm/prep`)\n- New archetypes/templates features\n- Mobile-specific layouts\n- Changes to archetype-inspector.tsx, template-inspector.tsx (kept for AssignmentPanel)\n\n## REFERENCE\n- PRD: `docs/prd/unified-graph-view.md`\n- Step 1 (agent animations): Already COMPLETED\n\n## CHILD TASKS\n1. `beadboard-gb0.4`: Create useGraphAnalysis hook (INDEPENDENT)\n2. `beadboard-gb0.2`: Add assign mode to WorkflowGraph + GraphNodeCard (INDEPENDENT)\n3. `beadboard-gb0.3`: Create AssignmentPanel component (INDEPENDENT)\n4. `beadboard-gb0.8`: Remove swarm view from navigation (INDEPENDENT)\n5. `beadboard-gb0.1`: Rewrite SmartDag with progressive disclosure (BLOCKED BY: gb0.4)\n6. `beadboard-gb0.5`: Wire assign mode into UnifiedShell (BLOCKED BY: gb0.3, gb0.1)\n7. `beadboard-gb0.7`: Delete deprecated swarm files (BLOCKED BY: gb0.5, gb0.8)\n8. `beadboard-gb0.6`: Update standalone /graph page (BLOCKED BY: gb0.7)\n\n## PARALLELIZATION\nPhase 1 (parallel): gb0.4, gb0.2, gb0.3, gb0.8\nPhase 2 (sequential): gb0.1 (after gb0.4)\nPhase 3 (sequential): gb0.5 (after gb0.3, gb0.1)\nPhase 4 (sequential): gb0.7 (after gb0.5, gb0.8)\nPhase 5 (sequential): gb0.6 (after gb0.7)","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"open","target":"","timeout_ns":0,"title":"Unify Graph + Swarm into Single Enhanced Graph View","updated_at":"2026-02-24T01:43:10Z","waiters":"","wisp_type":"","work_type":"mutex"} {"acceptance_criteria":"Toolbar with Filters and Assign toggles; Filters row with hop depth, hide closed, blocking-only, sort ready first; Tab switcher: Tasks/Dependencies; Tasks tab with TaskCardGrid; Dependencies tab with DependencyFlowStrip + GraphSection; onAssignModeChange and onSelectedIssueChange callbacks; npm run typecheck, lint, test pass","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Closed","closed_at":"2026-02-24T03:08:34Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"ec99a8e7756a1f9b4b0016e9e0338054bf4cbf6475cee93b141110d04da6f174","created_at":"2026-02-24T01:42:05Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-gb0.1","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"## Completed Implementation\n\n### Files Changed\n- **src/components/graph/smart-dag.tsx**: Rewrote from 49-line wrapper to 272-line enhanced DAG with:\n - Toolbar with Filters toggle + Assign toggle\n - WorkflowTabs for Tasks/Dependencies switching\n - Collapsible filter row (hide closed, ready first, depth, blocking only)\n - Tasks tab with TaskCardGrid\n - Dependencies tab with WorkflowGraph (passing assignMode)\n\n- **tests/components/graph/smart-dag.test.tsx**: Created 12 TDD tests (all passing)\n- **package.json**: Added smart-dag.test.tsx to test script\n\n### Tests Written (TDD)\nAll 12 tests pass:\n1. SmartDag - file exists and exports\n2. SmartDag - contains Filters toggle button\n3. SmartDag - contains Assign toggle button\n4. SmartDag - contains WorkflowTabs\n5. SmartDag - supports onAssignModeChange callback\n6. SmartDag - supports onSelectedIssueChange callback\n7. SmartDag - imports TaskCardGrid\n8. SmartDag - imports WorkflowGraph\n9. SmartDag - passes assignMode to WorkflowGraph\n10. SmartDag - manages hideClosed filter\n11. SmartDag - manages sortReadyFirst filter\n12. SmartDag - uses useGraphAnalysis hook\n\n### Verification Gates\n- npm run typecheck: ✓ PASS\n- npm run lint: ✓ PASS (0 errors, 21 warnings - all pre-existing)\n- npm run test: ✓ PASS (all tests including new smart-dag tests)\n\n### Deferred\n- DependencyFlowStrip: Created TODO bead `beadboard-58u` for future enhancement\n\n### Evidence\n```\nnpm run typecheck\n\u003e tsc --noEmit\n(no output = success)\n\nnpm run lint\n✖ 21 problems (0 errors, 21 warnings)\n\nnpm run test\n# tests 12 (smart-dag suite)\n# pass 12\n# fail 0\n```","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"closed","target":"","timeout_ns":0,"title":"Rewrite SmartDag with progressive disclosure","updated_at":"2026-02-24T03:08:34Z","waiters":"","wisp_type":"","work_type":"mutex"} {"acceptance_criteria":"WorkflowGraphProps includes assignMode?: boolean; GraphNodeData includes isAssignMode?: boolean; Non-actionable nodes dimmed with opacity-20 in assign mode; Actionable nodes highlighted with emerald ring; npm run typecheck passes","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Added assign mode data flow to WorkflowGraph and GraphNodeCard with proper visual differentiation. All gates pass.","closed_at":"2026-02-24T02:11:52Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"ca4509e28f164107029341136dede24517d670c92e56ce72760aec7627235527","created_at":"2026-02-24T01:42:05Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-gb0.2","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"## Evidence\n- workflow-graph.tsx: Added assignMode?: boolean to WorkflowGraphProps (line 31)\n- workflow-graph.tsx: Added isAssignMode: assignMode to node data (line 116)\n- graph-node-card.tsx: Added isAssignMode?: boolean to GraphNodeData (line 38)\n- graph-node-card.tsx: Conditional styling for assign mode (lines 117-120)\n - isAssignMode \u0026\u0026 !isActionable: opacity-20 (dims non-ready nodes)\n - isAssignMode \u0026\u0026 isActionable: ring-2 ring-emerald-400/50 (highlights ready nodes)\n- npm run typecheck: PASS\n- npm run lint: PASS (0 errors)\n- npm run test: PASS (31/31)\n\n## Files Changed\n- MODIFIED: src/components/shared/workflow-graph.tsx\n- MODIFIED: src/components/graph/graph-node-card.tsx","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"closed","target":"","timeout_ns":0,"title":"Add assign mode to WorkflowGraph + GraphNodeCard","updated_at":"2026-02-24T02:11:52Z","waiters":"","wisp_type":"","work_type":"mutex"} @@ -443,7 +443,7 @@ {"acceptance_criteria":"ViewType removes swarm; VALID_VIEWS removes swarm; Left panel removes swarm entry; Mobile nav removes swarm tab; npm run typecheck, lint, test pass","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Removed swarm view from navigation across all components and updated tests. All gates pass.","closed_at":"2026-02-24T02:11:59Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"0bf894def5cec06893c6d1d15a50458974915ca99cfd17f3837653c8db8bdcf2","created_at":"2026-02-24T01:42:12Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-gb0.8","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"## Evidence\n- use-url-state.ts: ViewType removes 'swarm' (line 6)\n- use-url-state.ts: VALID_VIEWS removes 'swarm' (line 46)\n- left-panel.tsx: views array removes swarm entry (lines 187-190)\n- mobile-nav.tsx: tabs array removes swarm tab (lines 6-9)\n- unified-shell.tsx: Removed dead view === 'swarm' branches\n- swarm-mission-picker.tsx: Changed setView('swarm') to setView('graph')\n- Updated tests for swarm fallback behavior\n- npm run typecheck: PASS\n- npm run lint: PASS (0 errors)\n- npm run test: PASS (31/31)\n\n## Files Changed\n- MODIFIED: src/hooks/use-url-state.ts\n- MODIFIED: src/components/shared/left-panel.tsx\n- MODIFIED: src/components/shared/mobile-nav.tsx\n- MODIFIED: src/components/shared/unified-shell.tsx\n- MODIFIED: src/components/swarm/swarm-mission-picker.tsx\n- MODIFIED: tests/hooks/url-state-integration.test.ts\n- MODIFIED: tests/components/shared/top-bar.test.tsx\n- MODIFIED: tests/components/shared/mobile-nav.test.tsx","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"closed","target":"","timeout_ns":0,"title":"Remove swarm view from navigation","updated_at":"2026-02-24T02:11:59Z","waiters":"","wisp_type":"","work_type":"mutex"} {"acceptance_criteria":"Color palette with presets + custom picker, icon/emoji selector, live preview in inspector, suggested capabilities, duplicate/clone feature, archetype cards show icon/emoji","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Completed full archetype customization: color palette (30 presets), icon/emoji selector (40 emojis), capability autocomplete (30 suggestions), live preview, clone functionality, icon field support in all display components. All verification gates pass.","closed_at":"2026-02-26T04:01:05Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"eab91d6249aa43e9e6f8c0885bc476e42b9d17d60a26f2f8cf255f94b02c4a59","created_at":"2026-02-26T03:26:35Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"Enable users to fully customize their archetypes with color presets, icons/emojis, and better UX","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-gv7","is_template":0,"issue_type":"epic","last_activity":null,"metadata":"{}","mol_type":"","notes":"Completed: color palette with 30 presets, icon/emoji selector with 40 emojis, suggested capabilities with autocomplete, live preview, clone functionality, updated all display components to use icon field. All verification gates pass.","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"closed","target":"","timeout_ns":0,"title":"Enhanced Archetype Customization","updated_at":"2026-02-26T04:01:05Z","waiters":"","wisp_type":"","work_type":"mutex"} {"acceptance_criteria":"","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Old test bead","closed_at":"2026-03-02T06:35:14Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"ae28ed72ac9799b7b4dce806bbaa0033e83ce60e3495d03df1d5eae9a2dc9a3e","created_at":"2026-02-21T20:28:30Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-hhy","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":0,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"closed","target":"","timeout_ns":0,"title":"Testing another flow","updated_at":"2026-03-02T06:35:14Z","waiters":"","wisp_type":"","work_type":"mutex"} -{"acceptance_criteria":"","actor":"","agent_state":"","assignee":"beadboard-frf","await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"bac42d51bcaa19c4dfbc5d2e3b98a2e26dd7720afc483ffff4b13c420ae5d4dc","created_at":"2026-03-02T22:00:44Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"TASK CONTEXT\\n- Bead ID: beadboard-c70.2\\n- Parent: beadboard-c70\\n- Dependencies: beadboard-c70.1\\n\\nTASK CONTRACT\\n- Goal: Make project template usage clear for global vs repo-local skill installs.\\n- Success Criteria:\\n - SKILL.md explains project template as source template and optional target-repo copy\\n - scripts optionally support external project context file path (if needed)\\n- Scope:\\n - docs + contract tests\\n- Out of Scope:\\n - UI integration changes\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands: npm run typecheck, npm run lint, npm run test","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-i0q","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"in_progress","target":"","timeout_ns":0,"title":"Global skill project-context contract (project.md optional path model)","updated_at":"2026-03-02T22:49:37Z","waiters":"","wisp_type":"","work_type":""} +{"acceptance_criteria":"","actor":"","agent_state":"","assignee":"beadboard-frf","await_id":"","await_type":"","close_reason":"Global-vs-local project context behavior clarified and implemented via template+ensure workflow.","closed_at":"2026-03-02T22:52:32Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"bac42d51bcaa19c4dfbc5d2e3b98a2e26dd7720afc483ffff4b13c420ae5d4dc","created_at":"2026-03-02T22:00:44Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"TASK CONTEXT\\n- Bead ID: beadboard-c70.2\\n- Parent: beadboard-c70\\n- Dependencies: beadboard-c70.1\\n\\nTASK CONTRACT\\n- Goal: Make project template usage clear for global vs repo-local skill installs.\\n- Success Criteria:\\n - SKILL.md explains project template as source template and optional target-repo copy\\n - scripts optionally support external project context file path (if needed)\\n- Scope:\\n - docs + contract tests\\n- Out of Scope:\\n - UI integration changes\\n\\nVERIFICATION REQUIREMENTS\\n- Required commands: npm run typecheck, npm run lint, npm run test","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-i0q","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"Implemented global-skill project context contract: removed in-skill project.md runtime file, added skills/beadboard-driver/project.template.md as template source, added scripts/ensure-project-context.mjs to create \u003ctarget-repo\u003e/project.md only when missing, and updated SKILL.md + command matrix accordingly. Added contract test skills/beadboard-driver/tests/ensure-project-context.contract.test.mjs and wired into run-tests.mjs. Verification: node skills/beadboard-driver/tests/run-tests.mjs (pass, 10 tests), npm run typecheck (pass), npm run lint (0 errors, 22 warnings).","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"closed","target":"","timeout_ns":0,"title":"Global skill project-context contract (project.md optional path model)","updated_at":"2026-03-02T22:52:32Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"All existing canonical memory nodes have source bead relations and evidence_ids/plan_refs metadata; help docs require provenance capture.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"Canonical memory provenance linked to historical beads and help/memory updated","closed_at":"2026-03-02T00:54:56Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"dca0bf2efdbf8f386504ed0c7473105b39e0471986abd0f6ea621aac7d191504","created_at":"2026-03-02T00:53:19Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"Strengthen memory retrieval for fresh agents by relating canonical memory nodes to source closed beads/plans and adding explicit evidence metadata fields.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-i4c","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","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.","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"closed","target":"","timeout_ns":0,"title":"Add provenance links and evidence metadata to canonical memory nodes","updated_at":"2026-03-02T00:54:56Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"Both manuals include mandatory post-close memory review cadence and provenance relation commands/requirements.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"AGENTS manuals now enforce regular memory additions and provenance relations","closed_at":"2026-03-02T00:57:15Z","closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"94801679101f97c806f8bada08cbf366d258173ce388dafbb4135a3bfec22b49","created_at":"2026-03-02T00:56:31Z","created_by":"ZenchantLive","crystallizes":0,"defer_until":null,"description":"Update root and beadboard AGENTS manuals to require recurring memory additions and explicit provenance relation/metadata rules for canonical memory nodes.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-ij8","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","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.","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"closed","target":"","timeout_ns":0,"title":"Enforce regular memory contribution + provenance relations in AGENTS manuals","updated_at":"2026-03-02T00:57:15Z","waiters":"","wisp_type":"","work_type":""} {"acceptance_criteria":"WorkflowGraphProps includes assignMode?: boolean; GraphNodeData includes isAssignMode?: boolean; When isAssignMode=true and !isActionable: node has opacity-20; When isAssignMode=true and isActionable: node has ring-2 ring-emerald-400/50 shadow-[0_0_24px_rgba(16,185,129,0.2)]; npm run typecheck passes","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"dd64afe3fa8c5aebaa14f15c73385a964cf584eed523b103825eecfe2e8257bc","created_at":"2026-02-24T01:37:40Z","created_by":"zenchantlive","crystallizes":0,"defer_until":null,"description":"","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"beadboard-j3u","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"## TASK CONTEXT\n- Bead ID: beadboard-j3u\n- Title: Add assign mode data flow to WorkflowGraph + GraphNodeCard\n- Parent/Epic: beadboard-uui (Unify Graph + Swarm into Single Enhanced Graph View)\n- Dependencies (must be done first): None\n\n## GOAL\nEnable visual differentiation of actionable vs non-actionable nodes when assign mode is active. This provides the visual foundation for the 'Assign' toggle functionality.\n\n## SUCCESS CRITERIA\n- WorkflowGraphProps interface includes assignMode?: boolean\n- GraphNodeData interface includes isAssignMode?: boolean\n- In WorkflowGraphInner, pass isAssignMode: assignMode to each node's data\n- In GraphNodeCard, when data.isAssignMode is true:\n - If !data.isActionable: add opacity-20 class (extra dimming)\n - If data.isActionable: add ring-2 ring-emerald-400/50 shadow-[0_0_24px_rgba(16,185,129,0.2)] (highlight ring)\n- npm run typecheck passes\n\n## SCOPE\n- Modify src/components/shared/workflow-graph.tsx:\n - Add assignMode?: boolean to WorkflowGraphProps (line 24-31)\n - Pass assignMode to WorkflowGraphInner\n - In flowModel useMemo, add isAssignMode: assignMode to each node's data (line 154-175)\n- Modify src/components/graph/graph-node-card.tsx:\n - Add isAssignMode?: boolean to GraphNodeData interface\n - Add conditional styling based on isAssignMode \u0026\u0026 isActionable\n\n## OUT OF SCOPE\n- SmartDag changes (beadboard-5sr)\n- AssignmentPanel component (beadboard-d4n)\n- UnifiedShell wiring (beadboard-cm8)\n\n## IMPLEMENTATION NOTES\nThe visual treatment should:\n1. Non-actionable nodes in assign mode: fade them out so user focuses on ready nodes\n2. Actionable nodes in assign mode: glowing emerald ring to draw attention\n3. Preserve existing styling for non-assign mode\n\n## VERIFICATION REQUIREMENTS\n- Required commands:\n - npm run typecheck\n- Manual verification:\n - When assignMode=true, actionable nodes have green ring\n - When assignMode=true, non-actionable nodes are dimmed\n - When assignMode=false, existing styling preserved","original_size":null,"owner":"jordanlive121@gmail.com","payload":"","pinned":0,"priority":1,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":".","source_system":"","spec_id":null,"status":"tombstone","target":"","timeout_ns":0,"title":"Add assign mode data flow to WorkflowGraph + GraphNodeCard","updated_at":"2026-02-24T01:40:31Z","waiters":"","wisp_type":"","work_type":"mutex"}