Dave
f71677256a
story-kit: create 113_story_add_test_coverage_for_usepathcompletion_hook
2026-02-23 21:13:52 +00:00
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
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 and Claude Opus 4.6
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 and Claude Sonnet 4.6
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 and Claude Sonnet 4.6
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 and Claude Sonnet 4.6
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
aa2149e506
story-kit: create 95_bug_pipeline_auto_restart_has_no_retry_limit_causing_infinite_loop
2026-02-23 20:15:28 +00:00
Dave
8d58e3999d
story-kit: create 94_bug_stale_agent_state_persists_after_server_restart
2026-02-23 20:04:46 +00:00
Dave
06586a5b70
story-kit: queue 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating for QA
2026-02-23 20:02:47 +00:00
Dave
9da25a149d
story-kit: create 93_story_expose_server_logs_to_agents_via_mcp
2026-02-23 19:59:07 +00:00
Dave
1a7948b15a
story-kit: queue 91_bug_permissions_dialog_never_triggers_in_web_ui for QA
2026-02-23 19:54:05 +00:00
Dave
41fce3322c
story-kit: start 91_bug_permissions_dialog_never_triggers_in_web_ui
2026-02-23 19:52:53 +00:00
Dave
7f139917b4
story-kit: create 91_bug_permissions_dialog_never_triggers_in_web_ui
2026-02-23 19:52:26 +00:00
Dave and Claude Opus 4.6
d1d7ce47ac
Switch all Sonnet agents from 4.6 to 4.5 for speed
...
Sonnet 4.6 is too slow for small stories — agents burn through turns
without completing. Reverting coders, QA, and mergemaster to Sonnet 4.5.
Supervisor and coder-opus remain on Opus.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 19:50:10 +00:00
Dave
02a617eee3
story-kit: queue 93_bug_agent_session_id_is_null_while_running for QA
2026-02-23 19:49:04 +00:00
Dave
306514e6d2
story-kit: start 93_bug_agent_session_id_is_null_while_running
2026-02-23 19:43:18 +00:00
Dave
0aaefc34c2
story-kit: create 93_bug_agent_session_id_is_null_while_running
2026-02-23 19:39:37 +00:00
Dave
03f243b670
story-kit: create 92_spike_stop_auto_committing_intermediate_pipeline_moves
2026-02-23 19:37:28 +00:00
Dave
63cfd5818c
story-kit: start 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating
2026-02-23 19:27:08 +00:00
Dave
a91d663894
story-kit: create 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating
2026-02-23 19:26:54 +00:00
Dave and Claude Opus 4.6
04e7a1e854
Remove invalid --directory flag that broke agent spawning
...
The --directory flag does not exist in Claude Code CLI. It was added in
c169cfc but caused every agent spawn to exit immediately with "unknown
option", resulting in Session: None errors. The process cwd (set via
cmd.cwd()) already correctly pins agents to the worktree directory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 19:26:37 +00:00
Dave
42ad712a74
story-kit: queue 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating for QA
2026-02-23 19:19:44 +00:00
Dave
c70399a39b
story-kit: start 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating
2026-02-23 19:13:35 +00:00
Dave
8b9d77e2f2
story-kit: remove 92_story_test_story_creation_without_test_plan
2026-02-23 19:13:11 +00:00
Dave
23043dbd29
story-kit: create 92_story_test_story_creation_without_test_plan
2026-02-23 19:12:52 +00:00
Dave and Claude Opus 4.6
31037f5bf5
Remove test_plan gate from the codebase
...
The test_plan field was a gate from the old interactive web UI workflow
where a human would approve a test plan before the LLM could write code.
With autonomous coder agents, this gate is dead weight — coders sometimes
obey the README's "wait for approval" instruction and produce no code.
Removes: TestPlanStatus enum, ensure_test_plan_approved checks in fs/shell,
set_test_plan MCP tool + handler, test_plan from story/bug front matter
creation, test_plan validation in validate_story_dirs, and all related tests.
Updates README to remove Step 2 (Test Planning) and renumber steps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 19:12:05 +00:00
Dave
cc2511b792
story-kit: create 35_story_agent_security_and_sandboxing
2026-02-23 19:08:42 +00:00
Dave
e13338b212
story-kit: create 35_story_agent_security_and_sandboxing
2026-02-23 19:08:38 +00:00
Dave
ed2829b641
story-kit: accept 86_story_show_live_activity_status_instead_of_static_thinking_indicator_in_chat
2026-02-23 19:07:47 +00:00
Dave
520c1a0990
story-kit: create 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating
2026-02-23 18:55:54 +00:00
Dave and Claude Opus 4.6
1539e52b19
Inject story content into agent prompts so coders know what to build
...
The worktree doesn't have .story_kit/work/ so agents had no access to
the story requirements. Read the story file from the project root and
prepend it to the prompt. Without this, coders would start, read
CLAUDE.md, have nothing to implement, and exit with no code.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 18:50:41 +00:00
Dave
5374ee316e
story-kit: accept 89_story_persistent_per_session_agent_logs
2026-02-23 18:47:46 +00:00
Dave
8729175ba1
story-kit: queue 89_story_persistent_per_session_agent_logs for merge
2026-02-23 18:47:34 +00:00
Dave
70d5766aa1
story-kit: accept 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating
2026-02-23 18:47:25 +00:00
Dave
b03b17724a
story-kit: queue 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating for merge
2026-02-23 18:47:04 +00:00
Dave
829e700bb2
story-kit: queue 89_story_persistent_per_session_agent_logs for QA
2026-02-23 18:46:41 +00:00
Dave
3af7a5d19e
story-kit: queue 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating for QA
2026-02-23 18:46:03 +00:00
Dave and Claude Opus 4.6
c169cfc9fa
Pass --directory flag to Claude Code agents to prevent worktree escape
...
Claude Code resolves its project root by walking up from cwd looking
for .git. In worktrees, .git is a file pointing back to the main
checkout, so Claude Code would resolve the main repo as its project
and write files there instead of in the worktree. Adding --directory
explicitly pins it to the worktree path.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 18:43:23 +00:00
Dave
d8e35dbbf8
story-kit: accept 86_story_show_live_activity_status_instead_of_static_thinking_indicator_in_chat
2026-02-23 18:38:30 +00:00
Dave
af1625a132
story-kit: merge 86_story_show_live_activity_status_instead_of_static_thinking_indicator_in_chat
2026-02-23 18:38:15 +00:00
Dave
da8ded460e
story-kit: queue 86_story_show_live_activity_status_instead_of_static_thinking_indicator_in_chat for merge
2026-02-23 18:38:01 +00:00
Dave
201740d4d2
story-kit: create 91_bug_permissions_dialog_never_triggers_in_web_ui
2026-02-23 18:36:54 +00:00
Dave
c37a86d1fd
story-kit: queue 86_story_show_live_activity_status_instead_of_static_thinking_indicator_in_chat for QA
2026-02-23 18:34:51 +00:00
Dave
cde607f455
story-kit: create 90_story_fetch_real_context_window_size_from_anthropic_models_api
2026-02-23 18:32:56 +00:00
Dave
f67f720ec3
story-kit: start 86_story_show_live_activity_status_instead_of_static_thinking_indicator_in_chat
2026-02-23 18:26:09 +00:00
Dave
f1c600a9e6
story-kit: start 89_story_persistent_per_session_agent_logs
2026-02-23 18:25:41 +00:00
Dave
ef427a28b9
story-kit: start 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating
2026-02-23 18:25:09 +00:00
Dave
eb0b1b0cd6
story-kit: accept 88_story_auto_assign_agents_to_available_work_on_server_startup
2026-02-23 18:23:19 +00:00
Dave
4079188084
story-kit: accept 87_story_update_agent_lozenge_colour_scheme_across_panels
2026-02-23 18:23:15 +00:00
Dave
ac22e9a882
story-kit: merge 87_story_update_agent_lozenge_colour_scheme_across_panels
2026-02-23 18:23:01 +00:00
Dave
4162eb1d1b
story-kit: queue 87_story_update_agent_lozenge_colour_scheme_across_panels for merge
2026-02-23 18:22:46 +00:00
Dave
8fb6d09aa0
story-kit: start 88_story_auto_assign_agents_to_available_work_on_server_startup
2026-02-23 18:22:23 +00:00
Dave
8e12156e1b
story-kit: accept 88_story_auto_assign_agents_to_available_work_on_server_startup
2026-02-23 18:20:45 +00:00
Dave
225073649b
story-kit: start 88_story_auto_assign_agents_to_available_work_on_server_startup
2026-02-23 18:20:24 +00:00
Dave
8b5704c8f6
story-kit: queue 88_story_auto_assign_agents_to_available_work_on_server_startup for merge
2026-02-23 18:20:11 +00:00
Dave
2e0f516530
story-kit: queue 88_story_auto_assign_agents_to_available_work_on_server_startup for QA
2026-02-23 18:17:25 +00:00
Dave
393cd567c2
story-kit: create 85_story_agent_lozenges_move_between_roster_and_work_items_instead_of_duplicating
2026-02-23 18:12:33 +00:00
Dave
7146f2a70c
story-kit: queue 87_story_update_agent_lozenge_colour_scheme_across_panels for QA
2026-02-23 18:12:29 +00:00