dave
23e22ba49c
refactor: split crdt_state.rs into 6 sub-modules with co-located tests
...
The 2122-line crdt_state.rs is split into a sub-module directory:
- types.rs: CRDT/view types + CrdtEvent (247 lines)
- state.rs: CrdtState struct, statics, init, apply_and_persist (531 lines)
- ops.rs: sync API + apply_remote_op + delta-sync tests (455 lines)
- write.rs: write_item + bug_511 test (273 lines)
- read.rs: read API + dump + dep helpers (469 lines)
- presence.rs: node identity + claim API + heartbeat (176 lines)
- mod.rs: doc, sub-module decls, re-exports, hex helper (53 lines)
Tests are co-located with the code they primarily exercise per Rust convention.
No behaviour change. All 26 crdt_state tests pass; full suite green
(2635 tests with --test-threads=1).
2026-04-26 20:54:15 +00:00
dave
8bdaabd06c
refactor: split crdt_sync.rs into auth/wire/server/dispatch/client modules
...
The 3672-line crdt_sync.rs is split into a sub-module directory with
co-located tests per Rust convention:
- auth.rs: trusted-keys + bearer-token validation (230 lines)
- wire.rs: ChallengeMessage / AuthMessage / SyncMessage types (141 lines)
- server.rs: WebSocket server handler (1680 lines)
- dispatch.rs: incoming-message dispatch + bulk/clock/op handling (1028 lines)
- client.rs: rendezvous client + reconnect/backoff (464 lines)
- mod.rs: doc, cross-cutting constants, re-exports (75 lines)
No behaviour change. All 65 crdt_sync tests pass; full suite green
(2635 tests with --test-threads=1).
2026-04-26 20:36:40 +00:00
dave
795b172bba
Revert "refactor: split top-5 largest files into mod.rs + tests.rs"
...
This reverts commit 65a3767a7a .
2026-04-26 20:15:58 +00:00
dave
65a3767a7a
refactor: split top-5 largest files into mod.rs + tests.rs
...
Five files in server/src/ exceeded 1500 lines, with 50–75% of the line
count being inline `#[cfg(test)] mod tests { ... }` blocks. Agents
working on these files have to navigate huge buffers via Read calls,
costing turn budget that could go toward actual work.
Pattern: convert `foo.rs` to `foo/mod.rs` + `foo/tests.rs`.
Rust resolves `mod foo;` to either form, so no parent-module changes
needed.
Before / after (production-code lines, what an agent has to navigate
when editing the module):
crdt_sync.rs: 3672 → 1003 (mod.rs) + 2667 (tests.rs)
crdt_state.rs: 2122 → 1263 (mod.rs) + 854 (tests.rs)
io/fs/scaffold.rs: 2045 → 702 (mod.rs) + 1342 (tests.rs)
http/mcp/mod.rs: 1882 → 1410 (mod.rs) + 472 (tests.rs)
http/mcp/story_tools.rs: 1864 → 725 (mod.rs) + 1137 (tests.rs)
Side change: scaffold/mod.rs's include_str! paths got an extra `../`
because the file moved one directory deeper.
Tests: full `cargo test` suite passes (2635 passed, 0 failed).
Formatting: cargo fmt --check clean.
Motivation: today's agent thrashing on 644 / 650 / 652 was partly due to
cumulative-counting (now fixed by 650) but also genuinely due to file
size — sonnet's 50-turn budget barely covers reading these files plus
making the change. Smaller production-code files mean more turn budget
left for the actual work.
Committed straight to master because this is an enabling refactor for
agent autonomy work; running it through the normal pipeline would
require an agent that has to navigate the very files it's about to
split, defeating the purpose.
2026-04-26 20:08:24 +00:00
dave
ff51a1a465
huskies: merge 651_bug_remove_git_reset_clean_behaviour_from_bug_645_s_recovery_path_uncommitted_work_in_worktrees_is_never_junk
2026-04-26 16:46:25 +00:00
dave
365b907ba4
huskies: merge 650_bug_watchdog_turns_used_and_budget_used_usd_accumulate_across_all_sessions_restart_counts_against_limits_from_prior_runs
2026-04-26 16:24:10 +00:00
dave
148c88bd40
huskies: merge 646_bug_watchdog_from_bug_624_is_not_actually_enforcing_max_turns_max_budget_usd_in_production
2026-04-26 13:11:48 +00:00
dave
8673e563a9
huskies: merge 643_story_web_ui_consumer_for_the_unified_status_broadcaster
2026-04-26 11:30:32 +00:00
dave
f88bb5f486
huskies: merge 645_bug_agent_runtime_panics_with_output_write_bytes_is_ok_assertion_marking_stories_falsely_blocked
2026-04-26 10:54:58 +00:00
dave
d8f9be5b23
huskies: merge 641_story_unified_status_update_delivery_across_chat_web_ui_and_top_level_agent_context
2026-04-26 02:27:34 +00:00
dave
dc7ae3a23c
huskies: merge 637_story_peer_mesh_discovery_via_crdt_node_presence_list
2026-04-26 01:57:31 +00:00
dave
b84ce1f6bb
huskies: merge 636_story_full_crdt_snapshot_compaction_with_cross_node_coordination
2026-04-26 01:19:05 +00:00
dave
c12a49487e
huskies: merge 634_story_deterministic_claim_priority_via_hash_based_tie_break
2026-04-25 22:27:20 +00:00
dave
7548486a53
huskies: merge 633_story_crdt_sync_bearer_token_connection_auth
2026-04-25 22:13:42 +00:00
dave
d826daaf41
huskies: merge 632_story_crdt_sync_handshake_with_explicit_ready_ack
2026-04-25 21:51:09 +00:00
dave
fd52c29302
huskies: merge 631_story_crdt_delta_sync_via_vector_clocks_replace_full_bulk_dumps
2026-04-25 21:32:39 +00:00
dave
853f53e8e6
huskies: merge 630_story_crdt_sync_websocket_keepalive_ping_pong
2026-04-25 21:10:06 +00:00
dave
14b158d0b2
huskies: merge 629_refactor_migrate_commanddispatch_and_commandcontext_to_services_bundle
2026-04-25 20:41:19 +00:00
dave
2a3f88fdcf
huskies: merge 639_refactor_migrate_whatsapp_transport_to_services_bundle
2026-04-25 19:51:59 +00:00
dave
120745d102
huskies: merge 640_bug_create_story_create_refactor_create_bug_silently_drop_the_depends_on_parameter
2026-04-25 19:37:55 +00:00
dave
e4dd4bbe2c
huskies: merge 638_refactor_migrate_discord_transport_to_services_bundle
2026-04-25 19:33:01 +00:00
dave
33cb2bed3e
huskies: merge 627_refactor_migrate_slack_discord_and_whatsapp_transports_to_services_bundle
2026-04-25 19:01:45 +00:00
dave
4b089c1ed8
huskies: merge 626_refactor_introduce_services_bundle_and_migrate_appcontext_matrix_transport
2026-04-25 15:08:46 +00:00
dave
aeff0b55be
huskies: merge 628_story_websocket_connect_time_mutual_auth_using_node_identity_primitives
2026-04-25 14:33:47 +00:00
dave
9e3d2f6a69
huskies: merge 602_spike_node_identity_keypair_foundation_for_distributed_huskies
2026-04-25 14:03:59 +00:00
dave
61da29a904
huskies: merge 625_bug_cannot_add_acceptance_criteria_to_a_spike_that_s_been_converted_to_a_story
2026-04-25 13:42:56 +00:00
dave
e20083a283
huskies: merge 624_bug_agent_turn_and_budget_limits_not_enforced_coder_1_ran_5_6x_over_max_turns
2026-04-25 13:11:30 +00:00
dave
e1bfbf4232
huskies: merge 619_story_service_common_consolidation_sweep
2026-04-24 21:36:49 +00:00
dave
c16d9e471d
huskies: merge 618_story_extract_mcp_only_domain_services
2026-04-24 21:16:19 +00:00
dave
360bca45c8
huskies: merge 617_story_split_gateway_into_service_and_transport
2026-04-24 18:43:26 +00:00
dave
271f8ea6a8
huskies: merge 616_story_extract_notifications_service
2026-04-24 18:05:42 +00:00
dave
eca0ef792c
huskies: merge 615_story_extract_timer_service
2026-04-24 17:43:53 +00:00
dave
62bfaf20f4
huskies: merge 611_story_extract_settings_service
2026-04-24 17:11:55 +00:00
dave
da6ae89667
huskies: merge 610_story_extract_wizard_service
2026-04-24 16:46:09 +00:00
dave
60a9c87794
huskies: merge 609_story_extract_oauth_service
2026-04-24 16:19:26 +00:00
dave
2dc2513fac
huskies: merge 620_refactor_enforce_test_fixture_discipline_in_service_modules
2026-04-24 16:07:00 +00:00
dave
65c896f07f
huskies: merge 608_story_extract_io_and_anthropic_services
2026-04-24 15:54:50 +00:00
dave
aba3120388
huskies: merge 607_story_extract_bot_command_service
2026-04-24 15:28:03 +00:00
dave
1910365321
huskies: merge 606_story_extract_project_service
2026-04-24 15:01:04 +00:00
dave
d9e883c21d
huskies: merge 612_story_extract_ws_service
2026-04-24 14:36:44 +00:00
dave
23890a1d33
huskies: merge 605_story_extract_events_and_health_services
2026-04-24 14:08:39 +00:00
dave
2f07365745
huskies: merge 604_story_service_module_conventions_and_first_extraction
2026-04-24 13:45:22 +00:00
dave
3521649cbf
huskies: merge 599_story_cross_project_status_notifications_in_chat
2026-04-23 12:09:35 +00:00
dave
4b765bbc39
huskies: merge 601_story_project_local_agent_prompt_layer_for_huskies
2026-04-23 11:56:19 +00:00
dave
c9e8ed030e
huskies: merge 600_story_gateway_aggregated_pipeline_status_mcp_and_chat
2026-04-23 10:42:37 +00:00
dave
b3da321a3b
huskies: merge 598_story_expose_huskies_init_as_a_gateway_mcp_tool
2026-04-22 21:39:29 +00:00
dave
f2d9926c4c
huskies: merge 597_bug_rmtree_command_missing_from_web_ui_slash_dispatch
2026-04-21 12:29:51 +00:00
dave
135e9c4639
huskies: merge 596_bug_restore_missing_htop_command_in_bot_and_web_ui
2026-04-21 12:17:06 +00:00
Timmy
0181dbbb16
Bump version to 0.10.4
2026-04-21 12:48:56 +01:00
Timmy
09151e37ef
Fix gateway bot Claude Code cwd so MCP tools are discovered
...
In gateway mode the bot's Claude Code CLI was spawned with cwd set to
a nonexistent project subdirectory (gateway_config_dir/project_name).
This meant it couldn't find .mcp.json and had no MCP tools available.
Now the bot uses the gateway config directory as cwd in gateway mode,
where the auto-generated .mcp.json points to the gateway's MCP proxy.
Also fixes cargo fmt formatting.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-21 12:15:04 +01:00