Commit graph

431 commits

Author SHA1 Message Date
jedarden
cd24f596f7 docs(bf-3oy5): verify SemanticNarrativePanel tests passing
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Re-verified all 59 tests in SemanticNarrativePanel.test.ts pass.
The issue was already fixed in commit 6237010 (bf-48nk).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 16:38:55 -04:00
jedarden
ce5d3eb012 docs(bf-30p4): verify all FileContextPanel tests passing
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
All 57 tests pass - failures were already fixed in commits 4839d48
and 797c9f1 (render() public, hide/show methods, test mock setup).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 16:35:08 -04:00
jedarden
1c96499119 docs(bf-30p4): update verification timestamp
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Re-verified all 57 tests passing on 2026-05-22 16:32.
No code changes required - all fixes were in previous commits.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 16:32:30 -04:00
jedarden
f4ad8eead4 docs(bf-30p4): verify all FileContextPanel tests passing
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Re-verified all 57 tests in FileContextPanel.test.ts pass.
The bead was already fixed by commits 4839d48 and 797c9f1.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 16:31:12 -04:00
jedarden
2ea64081e5 docs(bf-30p4): verify all tests pass, document recent fixes
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Updated verification notes confirming all 57 tests pass. The test failures
described in the original bead were fixed by commits 797c9f1 and 4839d48,
which addressed mock setup issues and made render() public.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 16:28:52 -04:00
jedarden
4839d48bd9 fix(tests): make render() public and standardize hide/show methods
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
- Make render() public so tests can call it directly without casting
- Change hide() to call this.render() instead of this.box.screen.render() directly
- This makes hide() consistent with show() and improves test compatibility

These changes address test failures in FileContextPanel.test.ts where:
- Tests call (panel as any).render() directly
- Tests expect mainBoxInstance.screen.render to be called after show/hide

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 16:23:20 -04:00
jedarden
797c9f144e fix(tests): fix FileContextPanel test mock setup
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
The original mock returned the same instance for all blessed.box() calls,
but the implementation creates 4 separate boxes (main, fileInfo, fileContent,
fileHistory). This caused tests to fail because they couldn't distinguish
which methods were called on which elements.

Changes:
- Make the mock return a new instance for each blessed.box() call
- Track all mock instances in a mockBoxes array
- Keep mainBoxInstance reference for tests that need the primary box
- Fix test expecting setContent on main box to use mockBoxes[1] (fileInfo)

All 57 FileContextPanel tests now pass.
2026-05-22 16:17:27 -04:00
jedarden
22a2739b91 fix(tests): fix CommandPalette test mock instance capture
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Fixed test setup to correctly capture the mock instances that were
actually used during CommandPalette construction. The previous
approach of re-calling blessedMock.box() after clearing mocks
resulted in checking different mock instances than those used by
the actual palette object.

Changed from:
- Calling blessedMock.box() after construction (different instances)

To:
- Accessing blessedMock.box.mock.results[0]?.value (same instances)

This ensures tests correctly verify the behavior of the actual
CommandPalette instance, not mock instances that were never used
by the palette.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 16:08:57 -04:00
jedarden
838fe5c654 docs(bf-48nk): verify all implementation gaps closed
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Confirmed that all issues from genesis bead description were already
fixed in previous runs:
- src/memoryProfiler.ts exists and fully implemented (255 lines)
- FileHeatmap treemap + timelapse: 31 tests pass
- SpanDag zoom/pan: tests pass
- All 2484 tests pass (4 skipped)

The original test failures were due to better-sqlite3 native module
version mismatch, not missing implementations.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 16:05:20 -04:00
jedarden
5a6a606ec8 docs(bf-48nk): document native module rebuild fix
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
All tests were failing due to better-sqlite3 native module version
mismatch (NODE_MODULE_VERSION 137 vs 127). Rebuilt the module
with 'npm rebuild better-sqlite3' - all 2484 tests now pass.

No source code changes were needed; src/memoryProfiler.ts was already
present and complete.
2026-05-22 16:01:59 -04:00
jedarden
7a873f62d9 docs(bf-48nk): document genesis bead resolution
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
The bead description claimed missing modules and features, but investigation
showed all implementation gaps were already closed. Test failures were due
to better-sqlite3 native module version mismatch (NODE_MODULE_VERSION 115
vs 137), resolved by rebuilding the module.

All 2484 tests now pass (4 skipped). No source code changes were needed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 15:58:34 -04:00
jedarden
654377df50 fix(tests): fix failing unit tests
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
- Fix beadWorkspaceScanner.test.ts: make beforeEach async to use top-level await
- Fix parser.real-logs.integration.test.ts: change sequence test to non-decreasing (real logs have duplicate sequences)
- Fix FleetSummaryBar.test.tsx: correct expected separator count from 5 to 4

All 2484 tests now pass (was 89 failed due to wrong Node.js version + 3 test bugs).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 15:55:35 -04:00
jedarden
58c1187794 feat(bf-3t8): worker card shows beadsCompleted + currentBead, removes eventCount
Phase 9 UI change 2. Updated WorkerGrid component to display bead progress
instead of raw event count. Shows current bead when WORKING state.

- Added beadsCompleted and currentBead fields to frontend WorkerInfo type
- Worker card now shows "bead: bf-5r22 / 31 completed" when WORKING
- Shows "31 completed" when not WORKING or no current bead
- Removed eventCount display from worker card UI
- Updated tests to cover new display format

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 15:50:34 -04:00
jedarden
072f9c71f4 feat(bf-4f3): add FleetSummaryBar component to web dashboard
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Phase 9 UI change 1: Add always-visible summary line at top of web dashboard.

- New FleetSummaryBar component showing:
  - N WORKING (workers in WORKING needleState)
  - N SELECTING (workers in SELECTING needleState)
  - N EXHAUSTED (workers in EXHAUSTED_IDLE or STOPPED)
  - N beads today (sum of beadsCompleted from workers)
  - N stuck (count of workers with stuck=true)

- Wired into App.tsx above WorkerGrid
- Comprehensive frontend tests covering all states and reactivity
- CSS styling with color-coded states

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 15:46:46 -04:00
jedarden
5e029c142c feat(bf-3xp): add bead workspace scanner + project breakdown in /api/productivity
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Phase 9 implementation: Bead workspace scanner and project breakdown.

- Add beadWorkspaceScanner.ts to scan .beads/issues.jsonl files
- Count CLOSED beads per project, deriving project from bead id prefix
- Use close_reason/closed_at/assignee for productivity tracking
- Add configurable workspace list in config.ts (WorkspaceConfig interface)
- Extend GET /api/productivity to add byProject array
- Add By Project section to ProductivityPanel React component
- Add tests for bead workspace scanner

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 15:34:20 -04:00
jedarden
d79a407468 chore(beads): restore bead history + add Phase 9 gap beads
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
The working-tree issues.jsonl had been wiped (db reset); this restores the
authoritative 153-bead history and adds the Phase 9 Productivity Analytics
gap beads created 2026-05-22:
  bf-2wf  epic: Phase 9 remaining gaps
  bf-60j  currentBead field on WorkerInfo (completed by worker)
  bf-3xp  bead workspace scanner + /api/productivity project breakdown
  bf-4f3  fleet summary bar component
  bf-3t8  worker-card enrichment (blocked by bf-60j)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 15:32:17 -04:00
jedarden
e0581f09cb feat(bf-60j): add currentBead field to WorkerInfo
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Add currentBead field to WorkerInfo in src/types.ts and maintain it in
src/store.ts: set it from bead.claim.succeeded (event.bead) and clear it
(null) on bead.released. Foundation for the worker-card current-bead
display. Update src/store.test.ts to cover claim->set and release->clear.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 15:25:05 -04:00
jedarden
93b3e9e038 feat(bf-6bx7): add /api/productivity endpoint and Productivity panel
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run
Adds GET /api/productivity returning daily bead completion counts (last 30
days) from bead.released/release_success events and a worker leaderboard
sorted by beadsCompleted. Adds a Productivity tab in the web UI with a 14-day
SVG bar chart and a worker leaderboard table.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 16:58:35 -04:00
jedarden
c36ce6da37 feat(bf-3jyx): fire beadsCompleted on bead.released/release_success
Modern NEEDLE emits bead.released with reason=release_success instead of
legacy bead.completed. Update store.ts and workerAnalytics.ts to handle
this event: increment beadsCompleted, set status to idle, and clear
activeBead/activeFiles/activeDirectories.

Also fixes workerAnalytics trackBeadEvent to use explicit isReleasedSuccess
check instead of broad msg.includes('success') which could false-positive.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 16:57:38 -04:00
jedarden
cffeb26e79 feat(bf-6b9f): sort workers by needle state + hide test workers toggle
WorkerGrid now sorts by WORKING > CLAIMING > SELECTING > BOOTING >
CLOSING > EXHAUSTED_IDLE > STOPPED and filters out test workers
(test-*, claude-test-*, nonexistent-*, needle-test, strand-runner,
-test-worker) by default. App header gets a toggle button to show/hide
test workers. EXHAUSTED_IDLE added to NeedleState type and propagated
to WorkerDetail and WorkerGrid state maps.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 16:54:23 -04:00
jedarden
402e9340ad docs(bf-48nk): update bead states and add Phase 9 productivity analytics plan
All implementation gaps from Phases 1-8 are closed (2418 tests passing).
Phase 9 planning added to docs/plan.md with productivity analytics design.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bead-Id: bf-48nk
2026-05-13 16:58:47 -04:00
jedarden
c627976dbc feat(bf-52d6): integrate conversation transcript parser with store and web API
Integrate the conversationParser module with the InMemoryEventStore and web server
to provide complete conversation transcript functionality.

Store integration:
- Add conversation session caching with 5-second TTL
- Invalidate cache when conversation events are added
- Add methods: getConversationSessions, getWorkerConversationSessions,
  getBeadConversationSession, getConversationSession,
  getConversationEvents, getWorkerConversationEvents,
  getBeadConversationEvents

Web API integration:
- GET /api/conversations/sessions - Get all conversation sessions
- GET /api/conversations/workers/:workerId - Get sessions for worker
- GET /api/conversations/beads/:beadId - Get session for bead
- GET /api/conversations/:sessionId - Get session by ID
- GET /api/conversations/events - Get all conversation events
- GET /api/conversations/workers/:workerId/events - Get worker events
- GET /api/conversations/beads/:beadId/events - Get bead events

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 14:29:12 -04:00
jedarden
3da90f1be0 feat(bf-52d6): add conversation transcript parser module
Add standalone conversationParser module to extract full conversation
transcripts from NEEDLE logs. This completes Phase 1 Core Infrastructure
item for conversation parsing.

Implementation:
- isConversationSpanEvent(): Identify conversation-related span events
- buildConversationSessions(): Build sessions from log events
- getWorkerConversationSessions(): Filter sessions by worker
- getBeadConversationSession(): Get session for a specific bead
- extractConversationEvents(): Extract all conversation events

Types supported:
- PromptEvent: User input/prompt
- ResponseEvent: Assistant response text
- ThinkingEvent: Internal reasoning/thinking blocks
- ToolCallEvent: Tool invocations with arguments
- ToolResultEvent: Tool call results

Also updates docs/plan.md to mark Phase 1 Core Infrastructure items complete.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 14:29:12 -04:00
jedarden
1484adb7a1 docs(bf-5klc): verify fix already applied - all tests passing
The vitest mock hoisting errors were already fixed in commit 7686974.
CrossReferencePanel.test.ts and WorkerAnalyticsPanel.test.ts both
use vi.hoisted() correctly and all 2399 tests pass.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 17:15:35 -04:00
jedarden
3751bb0887 docs(bf-48nk): re-verify all implementation gaps - all tests pass
All claimed gaps verified complete:
- src/memoryProfiler.ts exists and fully implemented
- FileHeatmap treemap + timelapse implemented
- SpanDag zoom/pan interaction implemented
- Unit tests: 2399 passed, 4 skipped, 0 failed

E2E test failures (53) are unrelated to claimed implementation gaps.
No E2E tests exist for FileHeatmap or SpanDag features.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 17:12:40 -04:00
jedarden
bbcf264771 fix: resolve vitest mock hoisting errors in test files
Fix CrossReferencePanel.test.ts and WorkerAnalyticsPanel.test.ts
which failed to load due to vi.mock() hoisting issues.

The vi.mock() factory functions referenced variables declared after
the mock call. When vitest hoists these mocks to the top of the
file, those variables weren't initialized yet, causing
"Cannot access before initialization" errors.

Solution: Use vi.hoisted() to declare mock variables before the
factory runs, ensuring they're available when the mock is evaluated.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 17:07:24 -04:00
jedarden
3a3d136342 docs(bf-3oy5): verify SemanticNarrativePanel tests - already fixed
Verified that the 3 failing tests in SemanticNarrativePanel.test.ts were
already fixed in commit 62370103. The issue was test mocks missing required
fields (workerId, events, startTime, endTime, durationMs) added to the
SemanticNarrative type.

All 59 tests now pass. The implementation methods (refresh, updateFromWorker,
updateAggregated) were always correct - the failure was purely test data.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 17:05:26 -04:00
jedarden
634aaa7498 docs(bf-48nk): close genesis bead - all FABRIC gaps already implemented
Verified all claimed implementation gaps were already closed:
- src/memoryProfiler.ts: complete (255 lines)
- FileHeatmap.tsx: treemap + timelapse views fully implemented
- SpanDag.tsx: zoom/pan interactions fully implemented
- All 2399 tests passing (4 skipped, 0 failed)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 17:05:26 -04:00
jedarden
7b6a30c844 docs(bf-30p4): verify FileContextPanel tests passing - all 57 tests pass
Verified all 57 tests in src/tui/components/FileContextPanel.test.ts pass.
The implementation already includes all expected functionality from the
original bead description. The bead was based on stale information.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 17:03:20 -04:00
jedarden
d7a35e7e35 docs(bf-48nk): verify all implementation gaps complete
All unit tests passing (2399 tests, 4 skipped):
- memoryProfiler.ts exists and is fully implemented
- FileHeatmap treemap + timelapse fully implemented
- SpanDag zoom/pan fully implemented

E2E test improvements (7 failures, down from 15):
- Fixed focus mode multipin test expectations
- Updated getPinnedCount helper to count directly

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 17:01:13 -04:00
jedarden
467a4601fd docs(bf-48nk): close genesis bead - all gaps already implemented
Verified all claimed implementation gaps were already complete:
- src/memoryProfiler.ts exists and works (7530 bytes)
- FileHeatmap treemap + timelapse fully implemented
- SpanDag zoom/pan fully implemented
- All 2399 tests passing (4 skipped, 0 failed)

This was a retrospective tracking bead for work completed
in previous commits (f824c2e, ae4c12c, 6237010).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:53:29 -04:00
jedarden
4eb89d3e10 docs(bf-48nk): close child beads - FileHeatmap treemap/timelapse and SpanDag zoom/pan already implemented
All features verified working:
- FileHeatmap.tsx: treemap view (lines 443-523) and timelapse animation (lines 526-641)
- SpanDag.tsx: zoom/pan interactions (lines 103-334)
- All tests passing: 31 FileHeatmap tests, 35 SpanDag tests

Closed child beads:
- bf-3vwc: FileHeatmap treemap view (5 failing tests → all passing)
- bf-4xm8: FileHeatmap timelapse animation (11 failing tests → all passing)
- bf-m27d: SpanDag zoom/pan interactions (13 failing tests → all passing)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:53:29 -04:00
jedarden
14fc3d3a7e docs(bf-30p4): document test verification - all FileContextPanel tests passing
Investigation found that all 57 FileContextPanel tests are passing.
The issues described in the bead were already fixed in the original
implementation (bd-2u6). No code changes required.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:53:29 -04:00
jedarden
e3ebc8a8f3 docs(bf-48nk): update retrospective notes
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:28:13 -04:00
jedarden
6237010368 test(bf-48nk): fix SemanticNarrativePanel test mocks - add required fields
Fixed test mocks to include required fields added to SemanticNarrative type:
- workerId: required string field
- events: array field for narrative events
- startTime, endTime, durationMs: temporal fields

Also fixed store.ts to handle potential undefined avgModificationInterval.

All 2399 unit tests pass (4 skipped).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:27:28 -04:00
jedarden
6197c37297 docs(bf-izw3): verify CommandPalette tests - all already passing
All 5 tests mentioned in the bead are passing. The required public API
(addSuggestion, addSuggestions, clearSuggestions, setSuggestions) and
behaviors (empty query returns all suggestions, navigation wrap-around)
are fully implemented in src/tui/components/CommandPalette.ts.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:27:28 -04:00
jedarden
52ab686fee docs(bf-48nk): close genesis bead - all gaps already implemented
Verified all implementation gaps from the genesis bead checklist are complete:
- memoryProfiler.ts: Fully implemented with snapshot tracking and V8 heap dumps
- FileHeatmap treemap + timelapse: Both views fully implemented with playback controls
- SpanDag zoom/pan: Fully implemented with wheel zoom and drag-to-pan

All 2399 tests pass (4 skipped).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:21:34 -04:00
jedarden
cda09b1e0f docs(bf-48nk): close genesis bead - all gaps already implemented
Investigation revealed all claimed implementation gaps were already complete:
- memoryProfiler.ts exists and fully implemented
- FileHeatmap treemap/timelapse fully implemented
- SpanDag zoom/pan fully implemented
- All 2399 tests passing (4 skipped)

Only work done was updating retrospective notes in notes/bf-48nk.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:14:59 -04:00
jedarden
07fc0dc472 docs(bf-1373): verify parseDiff implementation - all tests pass
The parseDiff function in src/tui/components/DiffView.ts correctly:
- Returns empty array for empty input
- Splits diff on newlines
- Classifies '+++' and '---' as headers (not added/removed)
- Classifies '+' lines as added
- Classifies '-' lines as removed

All 44 DiffView tests pass. No code changes needed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:03:47 -04:00
jedarden
a804d01853 docs(bf-48nk): add retrospective notes - all gaps already implemented
The bead description claimed significant implementation gaps, but upon
investigation all mentioned features were already complete:

- memoryProfiler.ts: exists (f824c2e)
- FileHeatmap treemap/timelapse: fully implemented
- SpanDag zoom/pan: fully implemented
- Only 1 test failing (selector bug, now fixed)

All tests pass: 2399 passed, 4 skipped (65 test files)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:01:38 -04:00
jedarden
162a9ee465 test(bf-48nk): fix timelapse play/pause button test selector
The test was looking for `.timelapse-playback button.primary` but the button
only has the "primary" class when isPlaying is true. Initially it's false,
so the selector failed. Changed to `.timelapse-playback button` to find
the button regardless of its play state.

All tests now pass: 2399 passed, 4 skipped (65 test files)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:01:19 -04:00
jedarden
7a2f442cda docs(bf-5r8a): note that memoryProfiler.ts was already implemented
The bead description claimed src/memoryProfiler.ts was missing,
but investigation revealed it was fully implemented in commit
f824c2e. All 90 web server tests pass successfully.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 15:27:15 -04:00
jedarden
64a0f19af0 docs(bf-5r8a): note that memoryProfiler.ts was already implemented
The bead was already closed when picked up. This note documents
that the memoryProfiler module was fully implemented by a previous
agent and all tests pass.
2026-05-02 14:52:54 -04:00
jedarden
e867122e77 docs(bf-5r8a): verify all web server tests pass (90/90)
Re-verified memoryProfiler.ts implementation is complete and functional.
All tests passing, no action required.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 14:42:06 -04:00
jedarden
5da4375bda docs(bf-5r8a): add retrospective addendum noting work was already complete
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 14:40:57 -04:00
jedarden
0cf98154c8 docs(bf-5r8a): add retrospective for memoryProfiler implementation
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 14:38:58 -04:00
jedarden
d99299c5d9 docs(bf-5r8a): note that memoryProfiler.ts was already implemented
The file src/memoryProfiler.ts already exists and was added in commit
233e381. All 90 web server tests pass. The bead description indicated
the file was missing, but it is present and functional.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 14:34:08 -04:00
jedarden
4320beaf27 fix(bf-50gc): enforce maxEvents limit, fix cross-references and bead collision detection
1. maxEvents limit enforcement:
   - Changed trimming condition from `> maxEvents + TRIM_BATCH_SIZE` to `> maxEvents`
   - Now properly trims to exactly maxEvents when limit is exceeded
   - Fixed: tests "should trim old events when over limit", "should keep most recent events",
     "should use default maxEvents of 10000"

2. Cross-Reference Integration:
   - Modified CrossReferenceManager.processEvent() to create immediate worker->event links
   - This ensures every event creates at least one cross-reference link
   - Fixed: tests "should track cross-references when events are added",
     "should create links between events and workers", "should find linked entities"

3. Bead collision detection:
   - Fixed detectBeadCollision() to include all workers in collision set
   - Added time window check: only detect collision if other worker was active within
     BEAD_COLLISION_WINDOW_MS (60 seconds)
   - Fixed: tests "should detect collision when multiple workers work on same bead",
     "should not detect bead collision outside time window", "should update worker
     collision types for bead collision"

All 103 tests now pass (1 skipped).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 14:33:51 -04:00
jedarden
f824c2e9f7 feat(bf-5r8a): add memoryProfiler module for real-time memory profiling
Implements the MemoryProfiler class with:
- Real-time memory usage tracking and trend analysis
- Baseline/diff functionality for leak detection
- V8 heap snapshot capture to disk
- In-memory snapshot ring buffer (max 100)
- Periodic capture support with configurable intervals

Exports getMemoryProfiler() singleton used by server.ts endpoints:
- GET /api/memory/stats
- POST /api/memory/capture
- GET /api/memory/diff
- POST /api/memory/baseline
- POST /api/memory/heap-snapshot
- GET /api/memory/snapshots

Resolves bd-ch6.7 memory profiling plan.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 14:29:47 -04:00
jedarden
22178ca862 test(bd-o0x): add worker stats badge tests
Add comprehensive tests for the worker count badge feature that
displays active/idle/error worker counts in the TUI header.

Tests verify:
- Badge displays with active workers
- Mixed status badges (active, idle, error)
- Real-time updates as workers join/leave
- Filter indicator display
- Graceful handling of no workers

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 08:21:07 -04:00