GraphNodeData interface includes labels field. WorkflowGraph passes issue.labels to node data. Tests verify labels are present in node data.

Completed. Added labels field to GraphNodeData interface and passed issue.labels through WorkflowGraph and dependency-graph-page. All 4 TDD tests pass. All verification gates pass.

## Completed Implementation

### Files Changed
- **src/components/graph/graph-node-card.tsx**: Added `labels: string[]` field to GraphNodeData interface
- **src/components/shared/workflow-graph.tsx**: Added `labels: issue.labels` to node data
- **src/components/graph/dependency-graph-page.tsx**: Added `labels: issue.labels` to node data (deprecated page kept working)
- **tests/components/graph/graph-node-labels.test.tsx**: Created 4 TDD tests
- **package.json**: Added new test file to test script

### Tests Written (TDD)
All 4 tests pass:
1. GraphNodeData interface includes labels field
2. GraphNodeData labels is typed as string array
3. WorkflowGraph passes issue.labels to node data
4. WorkflowGraph uses labels from issue in node mapping

### Verification Gates
- npm run typecheck: ✓ PASS
- npm run lint: ✓ PASS (0 errors, 21 warnings - all pre-existing)
- npm run test: ✓ PASS (all tests)

### Evidence
```
npm run typecheck
> tsc --noEmit
(no output = success)

npm run lint
✖ 21 problems (0 errors, 21 warnings)

npm run test
# tests 13 (including new graph-node-labels suite)
# pass 13
# fail 0
```

Pass labels to graph nodes


Anchors exist, at least 5 canonical memory nodes exist and are closed, links to anchors exist, and plan docs updated.

Phase 1 memory fabric bootstrapped in bd with anchors and canonical memory nodes

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.

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.

Bootstrap Phase 1 Memory Fabric (anchors + canonical nodes)


Completed: Created TelemetryStrip with real /api/activity + SSE data. Commit 114bb18.

Created new TelemetryStrip component - a minimized right sidebar that shows recent activity event dots from /api/activity + SSE (same data source as ActivityPanel). Uses getEventTone() color coding. Includes maximize button to restore full activity feed. Scope: telemetry-strip.tsx (NEW), unified-shell.tsx. Success Criteria: TelemetryStrip shows real activity events as colored dots, maximize restores full feed.

Create TelemetryStrip minimized sidebar component


Given a behavior change touching multiple views, when implementation lands, then shared logic path is reused and covered by tests.
Verification command(s): rg "<shared-function-or-hook>" src tests; npm run test

Scope: Repeated logic used by multiple views or pages.
Out of Scope: One-off prototypes and disposable experiments.
Rule: Reuse shared paths/components for cross-view behavior; avoid one-off logic drift.
Rationale: Prevents silent divergence between Kanban, Graph, and API views.
Failure Mode: Patching one surface only creates inconsistent user behavior.

Provenance linked: beadboard-68k.4, beadboard-68k.5, beadboard-r1i.1

[MEMORY][ARCH][HARD] Shared logic for cross-view behavior


pulse:maf8-recipient-1772602336486-77cc:1772602343524


pulse:maf8-recipient-1772605221538-e98f:1772605224897


pulse:maf8-recipient-1772602590511-8617:1772602599861


pulse:maf8-recipient-1772604568395-181a:1772604572634


pulse:maf8-sender-1772605221538-c382:1772605223361


pulse:maf8-recipient-1772604399694-3b18:1772604409020


pulse:maf8-recipient-1772594345463-5e30:1772594360649


pulse:maf8-recipient-1772604126900-0df6:1772604136199


pulse:maf8-sender-1772604568395-a777:1772604569982


pulse:maf8-sender-1772602408666-4c54:1772602412603


pulse:maf8-sender-1772605233998-56b0:1772605238399


pulse:maf8-recipient-1772602336486-77cc:1772602342360


pulse:maf8-recipient-1772603344712-1862:1772603348942


pulse:maf8-recipient-1772603344712-1862:1772603347709


pulse:maf8-recipient-1772602543590-2e77:1772602547725


pulse:maf8-recipient-1772595830876-a2bd:1772595843035


pulse:maf8-recipient-1772605258835-7419:1772605270341


pulse:maf8-recipient-1772594345463-5e30:1772594358748


pulse:maf8-recipient-1772604399694-3b18:1772604405332


pulse:maf8-sender-1772604535950-26bb:1772604537592


pulse:maf8-recipient-1772603406999-2bf7:1772603416157


pulse:maf8-recipient-1772602336486-77cc:1772602345847


pulse:maf8-recipient-1772604535950-4030:1772604541420


pulse:maf8-recipient-1772603406999-2bf7:1772603412462


pulse:maf8-recipient-1772604535950-4030:1772604538983


pulse:test-coord-izs2:1772590713612


pulse:maf8-recipient-1772603447464-07c5:1772603454149


pulse:maf8-sender-1772594142586-920f:1772594153763


pulse:maf8-recipient-1772602498124-349c:1772602507029


pulse:maf8-recipient-1772604414201-e81b:1772604418422


pulse:maf8-recipient-1772603406999-2bf7:1772603414974


pulse:maf8-sender-1772604399694-d676:1772604403847


pulse:maf8-sender-1772603344712-93c7:1772603346337


pulse:maf8-recipient-1772594345463-5e30:1772594356613


pulse:maf8-recipient-1772604535950-4030:1772604540190


pulse:maf8-sender-1772605258835-40c6:1772605266346


pulse:maf8-recipient-1772602590511-8617:1772602598638


pulse:maf8-sender-1772603406999-8469:1772603411091


pulse:maf8-recipient-1772594195923-64e9:1772594208703


pulse:maf8-recipient-1772604568395-181a:1772604575117


pulse:maf8-recipient-1772603406999-2bf7:1772603413681


pulse:maf8-recipient-1772594345463-5e30:1772594354573


pulse:maf8-recipient-1772604126900-0df6:1772604134923


pulse:maf8-recipient-1772604568395-181a:1772604573915


pulse:maf8-recipient-1772605258835-7419:1772605271573


pulse:maf8-recipient-1772603344712-1862:1772603351329


pulse:maf8-recipient-1772605258835-7419:1772605269064


pulse:maf8-recipient-1772595830876-a2bd:1772595840876


pulse:maf8-recipient-1772594167363-8d60:1772594178007


pulse:maf8-recipient-1772604126900-0df6:1772604133639


pulse:maf8-recipient-1772605233998-eb34:1772605241154


pulse:maf8-recipient-1772602498124-349c:1772602504668


pulse:maf8-recipient-1772594195923-64e9:1772594206787


pulse:maf8-sender-1772604414201-b833:1772604418269


pulse:maf8-sender-1772602498124-83bc:1772602502097


pulse:maf8-recipient-1772605221538-e98f:1772605228729


pulse:maf8-recipient-1772595830876-a2bd:1772595845187


pulse:maf8-recipient-1772602543590-2e77:1772602548900


pulse:maf8-recipient-1772604414201-e81b:1772604420786


pulse:maf8-recipient-1772605233998-eb34:1772605243654


pulse:maf8-sender-1772603447464-a701:1772603451537


pulse:maf8-recipient-1772603447464-07c5:1772603452929


pulse:maf8-recipient-1772602336486-77cc:1772602344707


pulse:maf8-recipient-1772605233998-eb34:1772605239885


pulse:maf8-recipient-1772594195923-64e9:1772594204897


pulse:silver-scribe:1772591154975


pulse:maf8-sender-1772594345463-989c:1772594352306


pulse:maf8-sender-1772602590511-758a:1772602594720


pulse:maf8-recipient-1772602408666-684a:1772602416347


pulse:maf8-recipient-1772602408666-684a:1772602413959


pulse:maf8-recipient-1772604535950-4030:1772604542620


pulse:maf8-recipient-1772604399694-3b18:1772604406605


pulse:silver-scribe:1772591174677


pulse:maf8-recipient-1772594167363-8d60:1772594176052


pulse:maf8-recipient-1772603447464-07c5:1772603456539


pulse:maf8-recipient-1772604126900-0df6:1772604132410


pulse:maf8-recipient-1772602408666-684a:1772602417502


pulse:maf8-sender-1772602336486-811e:1772602341005


pulse:maf8-recipient-1772603344712-1862:1772603350161


pulse:maf8-recipient-1772602498124-349c:1772602503486


pulse:maf8-recipient-1772604414201-e81b:1772604419643


pulse:maf8-recipient-1772603447464-07c5:1772603455356


pulse:maf8-recipient-1772594195923-64e9:1772594210682


pulse:maf8-recipient-1772604568395-181a:1772604571396


pulse:maf8-recipient-1772602408666-684a:1772602415146


pulse:maf8-sender-1772594195923-b170:1772594202541


pulse:maf8-recipient-1772605258835-7419:1772605267799


pulse:silver-scribe:1772591179460


pulse:maf8-recipient-1772605233998-eb34:1772605242430


pulse:maf8-sender-1772595830876-d567:1772595838320


pulse:maf8-recipient-1772604399694-3b18:1772604407826


pulse:maf8-recipient-1772605221538-e98f:1772605226223


pulse:maf8-recipient-1772602590511-8617:1772602596162


pulse:maf8-recipient-1772604414201-e81b:1772604419648


pulse:maf8-recipient-1772602543590-2e77:1772602546507


pulse:maf8-sender-1772604126900-011d:1772604131043


pulse:maf8-sender-1772602543590-06fb:1772602545115


pulse:maf8-recipient-1772602543590-2e77:1772602550063


pulse:maf8-recipient-1772602498124-349c:1772602505878


pulse:maf8-recipient-1772602590511-8617:1772602597392


pulse:maf8-sender-1772594167363-e2c2:1772594173805


pulse:maf8-recipient-1772595830876-a2bd:1772595847358


pulse:maf8-recipient-1772605221538-e98f:1772605227492