Commit graph

294 commits

Author SHA1 Message Date
jedarden
4a649b806d test(bd-2x9): Add E2E test for WorkerGrid status color rendering
Create vitest E2E test that verifies WorkerGrid component renders
worker entries with correct status colors:
- Green (light-green-fg) for active workers
- Yellow (light-yellow-fg) for idle workers
- Red (light-red-fg) for error workers

The test mocks blessed screen and verifies the content contains
appropriate color tags matching the theme system's status colors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 22:30:15 -04:00
jedarden
8434701bd5 fix(ci): handle missing homedir in ThemeManager for CI environments
Wrap os.homedir() in try/catch and guard against undefined return value
in ThemeManager.getConfigPath(). In CI environments, os.homedir() may be
undefined, causing path.join() to throw and preventing SessionReplay
from being constructed. When homedir is unavailable, theme persistence
is gracefully skipped and the default dark theme is used.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:38:40 -04:00
jedarden
d35c9adcdc fix(bd-9sm): Replace substring matching with NEEDLE event type in persistSession
persistSession() still used msg.includes('completed'/'finished'/'closed') to
find bead completion events. With NEEDLE format, msg is the event type string
(e.g. 'bead.completed'), so substring matching can misfire on
'bead.agent_completed'. Match on exact event types 'bead.completed' and
'bead.failed' instead — consistent with the fix already applied to
updateWorkerInfo() and trackTaskForHistory() in bd-vqd.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 23:56:40 -04:00
jedarden
b0f7c5020e feat(bd-288): Add systemd service for persistent FABRIC web server
Deploy FABRIC web dashboard as a systemd user service that starts on
boot and auto-restarts on crash. Includes service.sh management script
for start/stop/restart/deploy operations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 23:51:07 -04:00
jedarden
374be30dac fix(bd-vqd): Align NeedleLogEntry and parser with NEEDLE telemetry format
- NeedleLogEntry.worker: accept string | NeedleWorkerObject (NEEDLE emits
  flat runner-provider-model-identifier strings)
- Add optional level field to NeedleLogEntry (NEEDLE always includes it)
- parseNeedleFormat: reconstruct worker as runner-provider-model-identifier
  from legacy object form (was missing provider and model)
- parseNeedleFormat: gate provider/model extraction on object form (was
  accessing .provider/.model unconditionally, yielding undefined)
- parseNeedleFormat: prefer entry.level over inferred level
- inferLogLevel: match NEEDLE's _needle_telemetry_infer_level rules exactly
  (prefix/suffix matching: error.*, *.failed, *.retry, debug.*)
- Add NeedleEventType, NeedleWorkerStatus types to types.ts
- Add session/provider/model optional fields to LogEvent
- Fix store.ts status detection: match on exact NEEDLE event types instead
  of substring-based heuristics
- Update all tests to match corrected behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 22:39:04 -04:00
default
68005c4578 fix(bd-188): Close worker starvation false positive alert
8 open beads with 0 claims available for work - this was a race condition
in the worker discovery loop, not actual starvation.

Available work:
- bd-muv (P0): Gap analysis
- bd-1p8-bd-2x9 (P1): TUI and testing tasks
- bd-o0x (P2): Worker count badge

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-11 07:05:43 +00:00
default
b6747511e3 fix(bd-2bp): Close worker starvation false positive alert
Investigation revealed this was a false positive:
- br ready showed 12 ready issues available
- bd-muv P0 and multiple P1/P2 beads were claimable
- All dependencies on bd-muv were closed
- No blockers existed
- Lock file was empty

The worker starvation detection triggered incorrectly.
Recommend investigating worker's claim/priority logic.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 06:57:10 +00:00
default
5121e43ce9 fix(bd-6rk): Close worker starvation false positive alert
Investigation found 8 open beads available in workspace with no
dependencies. The worker's discovery mechanism failed to detect
existing open beads - ready-queue.json was stale (Mar 7).

Available work for other workers:
- bd-1p8 (P1) - Hot reload for TUI
- bd-129 (P1) - Integration test for log parsing
- bd-1j9 (P1) - E2E test WorkerDetail
- bd-29t (P1) - E2E test ActivityStream
- bd-2x9 (P1) - E2E test WorkerGrid
- bd-o0x (P2) - Worker count badge
- bd-3rf (P1) - Regression test suite

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-11 06:47:01 +00:00
default
036067bf8e fix(bd-3tz): Close worker starvation false positive alerts
Closed bd-3tz, bd-h0u, bd-1n3 as false positives - task beads
were available in workspace (bd-muv, bd-1p8, bd-3rf, etc.) when
these starvation alerts were incorrectly triggered.

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-11 06:37:08 +00:00
default
3bf328bbc7 fix(bd-1al): Close worker starvation false positive alert
Investigation revealed:
- 8 open beads exist in FABRIC workspace
- All are assigned to 'coder', preventing workers from claiming them
- This is a false positive - work exists but is not claimable
- Available unblocked work: bd-1p8 (P1), bd-o0x (P2)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 06:06:55 +00:00
default
b5088a08eb fix(bd-2wh): Close worker starvation false positive alert
- Closed 4 duplicate worker starvation alerts (bd-2wh, bd-34h, bd-1b5, bd-2xk)
- Root cause: Alert triggered despite 8 open tasks being available
- Available work: bd-muv, bd-1p8, bd-3rf, bd-129, bd-1j9, bd-29t, bd-2x9, bd-o0x

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-11 05:57:53 +00:00
default
13e3090ca1 fix(bd-jec): Fix TypeScript build error and resolve worker starvation alert
- Fixed corrupted auth middleware code in server.ts that was causing build failure
- Verified TUI color rendering works correctly (bd-2b3)
- Resolved bd-jec: Found 8 beads in ready queue, worker starvation was due to assignee filtering

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 05:49:33 +00:00
default
a2e3161134 feat(bd-n8y): Add authentication/authorization to FABRIC event ingestion endpoint
- Added authToken option to WebServerOptions interface
- Created createAuthMiddleware function for Bearer token auth
- Applied auth middleware to POST /api/events and /api/events/batch
- Updated CLI to read FABRIC_AUTH_TOKEN env var
- Added comprehensive tests for authentication scenarios

- Updated POST /api/events test cases to use auth token
- All tests passing successfully
2026-03-11 05:13:12 +00:00
default
30459a0736 chore(bd-2bt): close completed bead
POST /api/events endpoint implemented and tested:
- Accepts NEEDLE telemetry events via HTTP POST
- Validates required fields (ts, event)
- Stores events and broadcasts to WebSocket clients
- Comprehensive test coverage (66 tests passing)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 04:58:57 +00:00
default
446c3a655c test(bd-2bt): add comprehensive tests for POST /api/events endpoint
Tests cover:
- Valid NEEDLE format event ingestion
- Event storage in store
- WebSocket broadcast on event receipt
- Error handling (missing ts/event fields, invalid JSON)
- Batch endpoint for multiple events
- Batch error reporting for partial failures

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 04:57:09 +00:00
default
5f92f1ac83 chore(bd-1c1): close NEEDLE stuck alert as false positive
The NEEDLE stuck alert was triggered incorrectly. Investigation showed:
- 11 open beads available in the workspace
- 3 in-progress beads being worked on
- System has recovered and work is available

Resolution: Closed as false positive - no action needed.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 04:45:36 +00:00
default
94f7696751 chore(bd-3ip): update beads tracking - close completed bead
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-11 04:43:58 +00:00
default
b21df31ea4 feat(bd-3ip): Add POST /api/events/batch endpoint for batched NEEDLE telemetry
- Add MAX_BATCH_SIZE constant (100 events limit)
- Implement POST /api/events/batch endpoint that accepts JSON array of events
- Validate array format, empty batches, and batch size limits
- Validate each event has required fields (ts, event)
- Store all valid events via store.add()
- Broadcast all ingested events via WebSocket
- Return 201 with ingested count, total count, and errors array
- Handle partial success (valid events processed, errors reported)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-11 04:43:19 +00:00
default
ee90eb05a3 feat(bd-2bt): add POST /api/events endpoint to ingest NEEDLE telemetry
Add HTTP POST endpoint to receive NEEDLE telemetry events from the
fabric.sh forwarder. This bridges NEEDLE and FABRIC, enabling real-time
event ingestion via HTTP.

Changes:
- Add parseEventObject() to parser.ts for parsing JSON objects directly
- Add POST /api/events endpoint with JSON body parser (64KB limit)
- Validate required fields (ts, event) before processing
- Store events and broadcast to WebSocket clients in real-time
- Return 201 Created on success, 400 for invalid payloads

Acceptance criteria met:
- NEEDLE events sent via curl POST arrive in FABRIC's event store
- Events are broadcast to WebSocket clients in real-time
- Invalid payloads return appropriate error codes (400)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:06:55 +00:00
default
3d6f19ec43 feat(bd-288): add FABRIC web server persistent service script
- Add scripts/fabric-web.sh for managing FABRIC web server as tmux session
- Supports start/stop/restart/status/logs commands
- Auto-restarts on crash via tmux session management
- Configurable via FABRIC_PORT and FABRIC_LOG_PATH env vars
- Fix TypeScript build error in CommandPalette.test.ts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:01:48 +00:00
default
3521b892cd chore(bd-1o0): update beads tracking
Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-08 22:53:13 +00:00
default
d6b9976a88 feat(bd-1o0): Command Palette Fuzzy Search
- Integrate fuzzyMatch utility for fzf-style fuzzy matching on label, category, and action fields
- Highlight matching characters in yellow using blessed tags
- Add recent commands history (last 10), persisted to ~/.fabric/recent-commands.json
- Boost recently-used commands in fuzzy search scoring
- Show recent commands first when no query is entered
- Arrow key navigation with wrapping (pre-existing)
- Add comprehensive test suite (13 tests)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-08 22:53:03 +00:00
jeda
629d7430dc feat(bd-2u6): File Context Panel (Split View) implementation
Verified and closed bd-2u6 - FileContextPanel is fully implemented for both TUI and Web:

Features:
- Split view: Activity (left) | File Context (right)
- Auto-update when file event selected
- Syntax highlighting based on file extension (TS, JS, Python, Rust, Go, etc.)
- Line numbers with highlight on relevant lines
- Sticky panel - stays visible while scrolling activity
- File history: see all operations on this file
- Quick toggle between recently touched files ([/]/[] keys)
- 'Open in Editor' button (launches configured editor)

TUI Layout:
- Ctrl+F to toggle file context panel
- { and } to resize split view
- Tab to switch focus between panels

Web Layout:
- Collapsible side panel with toggle button
- Resizable divider
- Pop out to separate window

Editor Integration:
- Uses $EDITOR env var
- Supports VS Code, vim, nano, etc.
- Opens at specific line number

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 12:24:28 +00:00
jeda
04edd827b9 chore(bd-3s3): close starvation alert as false positive
Investigation found 8 beads available in ready-queue.json:
- 5 open beads with NO dependencies ready for pickup
- bd-129 dependency (bd-21r) is closed, making it available

Worker discovery logic failed to find these beads - this is a
bug in the priority chain, not genuine lack of work.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 12:21:10 +00:00
jeda
04e9c08898 chore(bd-uph): close starvation alert as false positive
Work is available in ready-queue.json (8 open beads verified).
Worker discovery logic failed to find these beads.

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 12:17:19 +00:00
jeda
2fb833aab9 chore(bd-i76): close starvation alert as false positive
8 beads available in ready-queue.json - worker discovery logic failed:
bd-2b3 (P0), bd-2x9, bd-29t, bd-1j9, bd-129, bd-3rf (P1), bd-1p8 (P1), bd-o0x (P2)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 05:48:45 +00:00
jeda
1da1455d60 chore(bd-12u): close starvation alert as false positive
Ready-queue.json was stale (last updated 2026-03-05) and contained
closed beads. Regenerated queue with 8 actual open beads:
- bd-2b3 (P0): TUI color verification
- bd-129, bd-1j9, bd-1p8, bd-29t, bd-2x9, bd-3rf (P1): Tests
- bd-o0x (P2): Worker count badge

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 05:40:38 +00:00
jeda
a0f69dd309 chore(bd-2r0): close bead as completed
Focus Mode Presets implementation complete:
- TUI: [ key to save, ] key to cycle presets
- Web: Dropdown UI with save/load/delete
- Presets stored in localStorage (web) or ~/.fabric/ (TUI)
- Command palette integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 05:32:37 +00:00
jeda
93f8e5a407 feat(bd-2r0): Focus Mode Presets
Implements save/load/delete functionality for focus mode pin configurations:

**TUI Changes:**
- [ key to save current focus configuration as named preset
- ] key to cycle through saved presets
- Preset commands in CommandPalette (Ctrl+K):
  - preset:save - Save current focus
  - preset:list - List all presets
  - preset:load:<name> - Load a specific preset
  - preset:delete:<name> - Delete a preset
- Presets stored in ~/.fabric/focus-presets.json
- Updated help text with new keybindings

**Web Changes:**
- Preset dropdown in header with save/load/delete UI
- Modal dialog for saving new presets
- Presets stored in localStorage
- Styled with CSS matching existing UI

**Core:**
- FocusPresetManager utility class for preset CRUD operations
- Storage abstraction (Memory, LocalStorage, File-based)
- Full test coverage for preset management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 05:31:25 +00:00
jeda
54511fcdef chore(bd-3o4): close bead as completed
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 05:20:16 +00:00
jeda
61cd3e321a feat(bd-3o4): Git PR Preview
Add PR preview functionality to the Git Integration panel:

- Generate PR title from commit messages
- Auto-generate PR description with file changes summary
- Generate commit message preview from activity
- List files changed with +/lines count
- Detect potential conflicts with upstream
- Rebase recommendation when conflicts detected
- New keyboard shortcuts: [p] Preview PR, [d] Diff, [s] Status
- PRPreview type with conflict detection and file stats

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 05:19:27 +00:00
jeda
b4f5c8c6e8 chore(bd-1dq): close bead as completed
Export Session Replay functionality implemented.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 05:12:04 +00:00
jeda
7ddbd7820b feat(bd-1dq): Export Session Replay
Add export/import functionality for session replay:

**Export Features:**
- Export as shareable link (base64 encoded events in URL parameter)
- Export as .fabric-replay file (JSON format)
- Share button in replay controls with dropdown menu

**Import Features:**
- Import from .fabric-replay file via file picker
- Import from URL parameter (?replay=base64EncodedEvents)
- Automatic detection and loading of replay data from URL

**Implementation:**
- src/utils/replayExport.ts: Core export/import utilities for Node.js
- src/web/frontend/src/utils/replayExport.ts: Browser-specific utilities
- Updated web SessionReplay.tsx with export dropdown and status messages
- Updated TUI SessionReplay.ts with exportToFile/importFromFile methods
- Added session replay panel to App.tsx with URL parameter support
- Added CSS styles for export dropdown, status messages, and replay panel

**Export Format:**
```json
{
  "version": "1.0",
  "exportedAt": 1709337600,
  "eventCount": 150,
  "events": [...],
  "metadata": {
    "sessionStart": 1709337000,
    "sessionEnd": 1709337600,
    "workerCount": 3
  }
}
```

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 05:11:13 +00:00
jeda
4d6aa15c13 chore(bd-iyz): close bead as completed
Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 05:02:07 +00:00
jeda
e80f891c8a feat(bd-iyz): Anomaly Detection for File Activity
Implements anomaly detection for file activity in the heatmap panel:

- Add anomaly detection types (AnomalyType, AnomalySeverity, FileAnomaly)
- Create fileAnomalyDetection.ts utility with detection algorithms:
  - Config file modifications (e.g., .env, config/, settings.json)
  - Sensitive file access (secrets, credentials, keys)
  - High-frequency modifications (outliers beyond 3x average)
  - Burst activity (rapid successive modifications)
  - Unusual multi-worker patterns (3+ workers on same file)
- Add getFileAnomalies() and getAnomalyStats() methods to store
- Update FileHeatmap component to show anomaly alerts:
  - New [a] keybinding to toggle anomaly-only view
  - "Unexpected activity" section at bottom of heatmap
  - Severity icons (🚨 critical, ⚠️ warning, ℹ️ info)
- Update app.ts to pass anomaly getter to FileHeatmap
- Add comprehensive tests for anomaly detection

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 05:01:42 +00:00
jeda
6c66c71972 chore(bd-40a): close bead as completed
Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 04:50:07 +00:00
jeda
296d547c12 feat(bd-40a): Web Timeline Visualization
Add timeline visualization component to the web dashboard:
- Create TimelineView.tsx component showing worker activity over time
- Support time range selection (5m, 10m, 30m, 1h)
- Click on timeline bar to jump to that time in activity stream
- Color-code by worker status (active/idle/error)
- Add timeline toggle button in header
- Integrate with Focus Mode for filtering workers

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 04:49:37 +00:00
jeda
c2123b6f47 chore(bd-hn5): close bead as completed
Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 04:42:11 +00:00
jeda
e1f81e5bed feat(bd-hn5): Budget Alerts and Projections
Add comprehensive budget monitoring and alert system:

- Burn rate calculation (cost per minute over configurable window)
- Time-to-budget-exhaustion projection with formatted output
- Top consumer identification with cost breakdown and insights
- Real-time alert generation at 80% (warning) and 95% (critical) thresholds
- BudgetAlertPanel TUI component for displaying alerts and projections
- New interfaces: BurnRate, BudgetAlert, TopConsumer
- Formatting utilities: formatBurnRate, formatTimeToExhaustion, getBudgetBadge, formatBudgetAlert

Thresholds updated per plan.md specification (80%/95% instead of 75%/90%).

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 04:41:34 +00:00
jeda
c59e016b67 chore(bd-257): close bead as completed
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 04:34:49 +00:00
jeda
07ee238d80 feat(bd-257): Web Auto-Reconnect with Exponential Backoff
Implement robust WebSocket reconnection logic for the web frontend:

- Detect connection loss immediately via onclose handler
- Show 'Reconnecting...' status indicator with yellow dot
- Implement exponential backoff (1s, 2s, 4s, 8s, 16s, max 30s)
- Re-sync state automatically after successful reconnection
- Show reconnection attempt count in brackets
- Manual reconnect button appears after max retries (10)
- Green dot with glow for connected state
- Red dot for disconnected state
- Animated pulse effect on reconnecting indicator

UI States:
- Connected: Green dot with glow
- Reconnecting: Yellow pulsing dot with countdown and attempt count
- Disconnected: Red dot with manual retry button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 04:34:23 +00:00
jeda
317f8e526c chore(bd-2ot): close bead as completed
Theme Support (Dark/Light) implemented successfully.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 04:29:16 +00:00
jeda
73cf7bae51 feat(bd-2ot): Add theme support (Dark/Light) for TUI and Web
## TUI Theme Support
- Create ThemeManager class with dark/light theme palettes
- Update colors.ts to use theme system via proxy pattern
- Add Ctrl+T keybinding for theme toggle
- Add theme commands to CommandPalette (theme:toggle, theme:dark, theme:light)
- Persist theme preference to ~/.fabric/theme.json
- Update footer to show current theme

## Web Dashboard Theme Support
- Create ThemeContext with React context API
- Add light theme CSS variables (data-theme="light")
- Add ThemeToggle button to header
- Persist theme preference to localStorage
- Support system color scheme preference detection

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 04:28:29 +00:00
jeda
544c4d5700 chore(bd-art): close bead as completed
SQLite Historical Analytics Storage implementation complete:
- SQLite database at ~/.needle/fabric.db
- Sessions, task_metrics, error_history tables
- Automatic write on session close
- Historical query interface for worker analytics
- Error history search for recovery playbook

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 04:19:11 +00:00
jeda
3457ef35d8 feat(bd-art): SQLite Historical Analytics Storage
Implements persistent storage for historical session analytics:

- Add HistoricalStore class using better-sqlite3
- Schema includes sessions, task_metrics, and error_history tables
- Session management: start/end sessions with worker/task/cost metrics
- Task metrics: record per-bead completion times, costs, tokens
- Error history: track errors with resolution status
- Historical queries: worker comparison across sessions
- Learned recoveries: extract patterns from historical error resolutions
- Integration with EventStore for automatic session persistence
- Historical query methods in WorkerAnalytics
- Enhanced recovery suggestions using historical data in RecoveryManager
- Comprehensive unit tests (20 passing tests)

Database stored at ~/.needle/fabric.db for cross-session persistence.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 04:18:45 +00:00
jeda
1d8fc2d74d feat(bd-muv): Gap analysis: Compare implementation against plan.md and create beads for missing features
## Summary
Completed comprehensive gap analysis comparing FABRIC implementation against docs/plan.md.

## Findings
- FABRIC is ~90% complete against plan specification
- Core infrastructure, TUI, and web display fully implemented
- Most intelligence features (phases 4-7) implemented

## Created Beads for Gaps
- bd-40a: Web Timeline Visualization
- bd-hn5: Budget Alerts and Projections
- bd-iyz: Anomaly Detection for File Activity
- bd-257: Web Auto-Reconnect with Backoff
- bd-2r0: Focus Mode Presets
- bd-1o0: Command Palette Fuzzy Search
- bd-2ot: Theme Support (Dark/Light)
- bd-1dq: Export Session Replay
- bd-3o4: Git PR Preview
- bd-art: SQLite Historical Analytics Storage
- bd-2u6: File Context Panel (Split View)

## Documentation
- Created docs/gap-analysis.md with detailed findings

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-07 03:47:50 +00:00
jeda
e9a24904d7 chore(bd-2vd): close false positive worker starvation alert
FALSE POSITIVE: 8 beads available (br ready confirms). Worker discovery logic failed.

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-05 05:31:01 +00:00
jeda
14a1668cb2 chore(bd-3rc): close false positive worker starvation alert
8 beads available (br ready confirms). Worker discovery logic failed.

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-05 05:26:21 +00:00
jeda
a7ab76bf99 chore(bd-2iy): close false positive worker starvation alert
8 beads available (br ready confirms). Worker discovery logic failed.

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-05 05:24:00 +00:00
jeda
cb68929195 chore(bd-1ne): close false positive worker starvation alert
Worker reported no work available, but br ready shows 8 beads ready.
This is a worker discovery logic failure, not actual starvation.

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-05 05:19:25 +00:00