Commit Graph

902 Commits

Author SHA1 Message Date
Dave
83b91aace3 story-kit: create 112_story_add_test_coverage_for_app_tsx 2026-02-23 21:13:46 +00:00
Dave
69b058e257 story-kit: create 111_story_add_test_coverage_for_api_agents_ts 2026-02-23 21:13:41 +00:00
Dave
d321294cc9 story-kit: create 110_story_add_test_coverage_for_api_settings_ts 2026-02-23 21:13:36 +00:00
Dave
5d6b269ed4 story-kit: create 109_story_add_test_coverage_for_lozengeflycontext_selectionscreen_and_chatheader_components 2026-02-23 21:13:30 +00:00
Dave
c3b9b29fa9 story-kit: accept 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating 2026-02-23 21:13:22 +00:00
Dave
ee2cce0b26 story-kit: queue 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating for merge 2026-02-23 21:12:50 +00:00
Dave
4740a24032 fix: add text reporter to vitest so coverage script can parse frontend coverage
The coverage script parses "All files" from vitest text table output, but
vitest was only configured with json-summary reporter. This caused frontend
coverage to show as 0%, pulling overall coverage below threshold.

Frontend line coverage is 68.4%, making overall coverage 66.4% vs 64.60% threshold.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:11:51 +00:00
Dave
b5cec1942b story-kit: create 108_story_test_coverage_http_agents_rs_to_70 2026-02-23 21:11:10 +00:00
Dave
e284483cbb story-kit: create 107_story_test_coverage_http_assets_rs_to_85 2026-02-23 21:11:07 +00:00
Dave
a4ce32ca88 story-kit: create 106_story_test_coverage_http_settings_rs_to_80 2026-02-23 21:11:05 +00:00
Dave
ecab2ef916 story-kit: create 105_story_test_coverage_io_shell_rs_to_95 2026-02-23 21:11:02 +00:00
Dave
4a206f3294 story-kit: create 104_story_test_coverage_io_search_rs_to_95 2026-02-23 21:11:00 +00:00
Dave
8502bdf80c story-kit: create 103_story_test_coverage_http_project_rs_to_80 2026-02-23 21:10:54 +00:00
Dave
c09f91ff27 story-kit: create 102_story_test_coverage_http_model_rs_to_80 2026-02-23 21:10:52 +00:00
Dave
76d72a66a1 story-kit: create 101_story_test_coverage_http_chat_rs_to_80 2026-02-23 21:10:49 +00:00
Dave
9b8f9d788b story-kit: create 100_story_test_coverage_http_context_rs_to_100 2026-02-23 21:10:47 +00:00
Dave
73fbd11689 story-kit: create 99_story_test_coverage_http_health_rs_to_100 2026-02-23 21:10:45 +00:00
Dave
6498f9d994 story-kit: start 98_story_expand_work_item_to_full_screen_detail_view 2026-02-23 21:02:03 +00:00
Dave
25802b8a28 story-kit: create 98_story_expand_work_item_to_full_screen_detail_view 2026-02-23 21:01:27 +00:00
Dave
058ea8f398 story-kit: create 98_story_expand_work_item_to_full_screen_detail_view 2026-02-23 21:00:39 +00:00
Dave
6d87355577 Merge branch 'feature/story-97_bug_agent_pool_allows_multiple_instances_of_the_same_agent_to_run_concurrently' 2026-02-23 20:53:54 +00:00
Dave
a0f317292c story-kit: merge 93_story_expose_server_logs_to_agents_via_mcp
Adds log_buffer ring buffer and slog! macro for in-memory server log
capture, plus get_server_logs MCP tool for agents to read recent logs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 20:53:37 +00:00
Dave
bed46fea1b story-kit: accept 96_story_reset_agent_lozenge_to_idle_state_when_returning_to_roster 2026-02-23 20:52:06 +00:00
Dave
b09b6ce4f1 fix(agents): enforce single-instance concurrency per agent name
The agent pool allowed the same agent (e.g. "qa") to run concurrently
on multiple stories because start_agent() only checked whether that
story+agent combo was already active. It did not check whether the
agent was busy on a different story.

Two concurrent QA runs each spawn cargo clippy + cargo test + vitest,
causing extreme CPU load (load average >33 on M1 Mac).

Fix: before registering a new agent as Pending, scan all active entries
for any Running or Pending entry with the same agent_name. If one is
found, return an error explaining that the story will be picked up when
the agent becomes available.

The existing auto_assign_available_work() mechanism already scans
pipeline directories (3_qa/, 4_merge/, etc.) for unassigned stories
and uses find_free_agent_for_stage() — which respects single-instance
limits — to assign work when an agent slot opens up. So the queuing
behaviour is naturally provided: the story stays in its directory,
and auto-assign picks it up when the previous run completes.

Adds two regression tests:
- start_agent_rejects_when_same_agent_already_running_on_another_story
- start_agent_allows_new_story_when_previous_run_is_completed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 20:46:51 +00:00
Dave
7f18542c09 story-kit: queue 93_story_expose_server_logs_to_agents_via_mcp for merge 2026-02-23 20:42:26 +00:00
Dave
0de1a3f113 story-kit: queue 89_story_persistent_per_session_agent_logs for merge 2026-02-23 20:42:23 +00:00
Dave
1366f64c3d story-kit: queue 89_story_persistent_per_session_agent_logs for QA 2026-02-23 20:40:24 +00:00
Dave
b46a72730c story-kit: queue 93_story_expose_server_logs_to_agents_via_mcp for QA 2026-02-23 20:40:13 +00:00
Dave
c1ff530e50 fix: allow e2e tests to reuse existing vite server on port conflict
Set reuseExistingServer:true in playwright config so acceptance gates
don't fail when port 41700 is already occupied by a prior test run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 20:39:57 +00:00
Dave
ec0f48656b story-kit: start 97_bug_agent_pool_allows_multiple_instances_of_the_same_agent_to_run_concurrently 2026-02-23 20:39:47 +00:00
Dave
64e76f4bb9 story-kit: accept 94_bug_stale_agent_state_persists_after_server_restart 2026-02-23 20:38:37 +00:00
Dave
8c6bd4cf74 feat(story-93): expose server logs to agents via get_server_logs MCP tool
- Add log_buffer module: bounded 1000-line ring buffer with push/get_recent API
- Add slog! macro: drop-in for eprintln! that also captures to ring buffer
- Replace all eprintln! calls across agents, watcher, search, chat, worktree, claude_code with slog!
- Add get_server_logs MCP tool: accepts count (1-500) and optional filter params
- 5 unit tests for log_buffer covering push/retrieve, eviction, filtering, count limits, empty buffer
- 262 tests passing, clippy clean

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 20:38:19 +00:00
Dave
cd902ff219 story-kit: merge 94_bug_stale_agent_state_persists_after_server_restart 2026-02-23 20:38:17 +00:00
Dave
39dbace8bf story-kit: create 97_bug_agent_pool_allows_multiple_instances_of_the_same_agent_to_run_concurrently 2026-02-23 20:38:16 +00:00
Dave
dc1e441a86 story-kit: queue 94_bug_stale_agent_state_persists_after_server_restart for merge 2026-02-23 20:38:04 +00:00
Dave
1a70d4303d story-kit: queue 94_bug_stale_agent_state_persists_after_server_restart for QA 2026-02-23 20:36:52 +00:00
Dave
c291613887 story-kit: start 96_story_reset_agent_lozenge_to_idle_state_when_returning_to_roster 2026-02-23 20:34:54 +00:00
Dave
7925fd8fbc story-kit: queue 95_bug_pipeline_auto_restart_has_no_retry_limit_causing_infinite_loop for QA 2026-02-23 20:33:36 +00:00
Dave
d371960d05 story-kit: create 96_story_reset_agent_lozenge_to_idle_state_when_returning_to_roster 2026-02-23 20:33:02 +00:00
Dave
f0ec507cc4 story-kit: start 93_story_expose_server_logs_to_agents_via_mcp 2026-02-23 20:31:01 +00:00
Dave
3d480e7c22 story-kit: accept 78_story_create_spike_mcp_tool 2026-02-23 20:27:28 +00:00
Dave
a25553f1bc story-kit: merge 78_story_create_spike_mcp_tool 2026-02-23 20:27:09 +00:00
Dave
2b3063ace2 story-kit: queue 78_story_create_spike_mcp_tool for merge 2026-02-23 20:26:55 +00:00
Dave
0c9883fe10 story-kit: start 89_story_persistent_per_session_agent_logs 2026-02-23 20:26:24 +00:00
Dave
421c702aad story-kit: queue 78_story_create_spike_mcp_tool for QA 2026-02-23 20:25:47 +00:00
Dave
c4f92ee7db story-kit: start 94_bug_stale_agent_state_persists_after_server_restart 2026-02-23 20:24:15 +00:00
Dave
64e76b21c3 story-kit: start 95_bug_pipeline_auto_restart_has_no_retry_limit_causing_infinite_loop 2026-02-23 20:23:45 +00:00
Dave
22b862023b story-kit: start 78_story_create_spike_mcp_tool 2026-02-23 20:21:35 +00:00
Dave
a18d4350ae chore: add .vite/ Vitest cache to .gitignore 2026-02-23 20:19:11 +00:00
Dave
aa2149e506 story-kit: create 95_bug_pipeline_auto_restart_has_no_retry_limit_causing_infinite_loop 2026-02-23 20:15:28 +00:00