| 1 | { |
| 2 | "_comment": "One-way source ownership ceilings. Deletion and line-neutral ownership moves pass; new packages, binaries, 1000-line module paths, a larger maximum module, or aggregate owned Rust growth require an explicit reviewed update.", |
| 3 | "_todo_2026_08_03": "TODO(v0.9.5): aggregate ceiling bumped 649350 -> 659633 during v0.9.4 train hygiene, then 659633 -> 662389 at the end of the train (incl. the 2026-08-04 downtime bug-hunt fixes) (corrected tool descriptions, the File parameter hardening split, and the work-bar persistence/click regression fix). The 30-PR stack on 2026-08-02/03 grew owned production Rust by ~10.3k lines; both new thousand-line modules from the stack (crates/tui/src/native_memory.rs, crates/tui/src/tui/views/fleet_roster.rs) were split back under the threshold instead of raising the per-file ceilings. v0.9.4 overspent; pay the aggregate back down by deletion/dedup in v0.9.5 rather than treating this as the new normal. Reviewed 2026-08-05 for the v0.9.4 Fleet rebuild: aggregate 662389 -> 668406 and three new 1000-line modules (fleet/store.rs 1114 - the named Fleet store v2; tui/transcript.rs 1062 - the release-quality transcript pass; views/fleet_detail.rs 1056 - the secondary named-Fleet editor behind /fleet fleets). Split candidates for v0.9.5.", |
| 4 | "_todo_2026_08_05_ship": "v0.9.4 ship re-baseline: aggregate 668406 -> 668607 (+201 lines) for the must-fix ship items - composer cursor/wrap unification (paste regression + caret lag, ff97641b7), Windows start_turn stack-overflow Box::pin, the #5032 dangling xAI OAuth generation repair + its regression test, the platform-aware /status safety-policy test, and the 0.9.4 constitution checkpoint bump. No new 1000-line modules; growth is in existing files. Pay down in v0.9.5.", |
| 5 | "_todo_2026_08_05_ui_split": "v0.9.4 ui.rs decomposition (the first ceiling DECREASE in this file's history): crates/tui/src/tui/ui.rs 19132 -> 3657 lines, moved verbatim into eleven ui/ submodules (event_loop, apply, handlers, dispatch, frame, session_state, provider_routes, overlays, terminal, release_check, motion). max_module_lines 19110 -> 17596 - the largest production module is now crates/tui/src/main.rs, not ui.rs. large-module count 168 -> 174 and aggregate +417 lines are the arithmetic cost of the split itself (per-module headers and `use super::*`), not new behavior; no logic changed and `cargo test -p codewhale-tui --bins` stayed at 9851 passed / 0 failed across the move. Remaining floor: run_event_loop is a single 4565-line function, so ui/event_loop.rs cannot shrink further by moving code - it needs genuine decomposition (v0.9.5). Same for handle_view_events (1152), apply_env_overrides_unlocked (1073), apply_command_result (960).", |
| 6 | "allowed_large_modules": [ |
| 7 | "crates/agent/src/lib.rs", |
| 8 | "crates/app-server/src/chat_completions.rs", |
| 9 | "crates/app-server/src/lib.rs", |
| 10 | "crates/cli/src/lib.rs", |
| 11 | "crates/cli/src/metrics.rs", |
| 12 | "crates/cli/src/update.rs", |
| 13 | "crates/config/src/lib.rs", |
| 14 | "crates/config/src/provider.rs", |
| 15 | "crates/config/src/user_constitution.rs", |
| 16 | "crates/config/src/xai_credentials.rs", |
| 17 | "crates/core/src/lib.rs", |
| 18 | "crates/execpolicy/src/lib.rs", |
| 19 | "crates/lane/src/control.rs", |
| 20 | "crates/lane/src/runtime.rs", |
| 21 | "crates/mcp/src/lib.rs", |
| 22 | "crates/protocol/src/fleet.rs", |
| 23 | "crates/secrets/src/lib.rs", |
| 24 | "crates/state/src/lib.rs", |
| 25 | "crates/tui/src/acp_server.rs", |
| 26 | "crates/tui/src/automation_manager.rs", |
| 27 | "crates/tui/src/child_env.rs", |
| 28 | "crates/tui/src/client.rs", |
| 29 | "crates/tui/src/client/anthropic.rs", |
| 30 | "crates/tui/src/client/chat.rs", |
| 31 | "crates/tui/src/client/prepared.rs", |
| 32 | "crates/tui/src/command_safety.rs", |
| 33 | "crates/tui/src/commands/groups/config/config.rs", |
| 34 | "crates/tui/src/commands/groups/core/constitution.rs", |
| 35 | "crates/tui/src/commands/groups/core/core.rs", |
| 36 | "crates/tui/src/commands/groups/project/init.rs", |
| 37 | "crates/tui/src/commands/groups/session/export.rs", |
| 38 | "crates/tui/src/commands/groups/session/session.rs", |
| 39 | "crates/tui/src/commands/groups/session/structcopy.rs", |
| 40 | "crates/tui/src/commands/groups/skills/skills.rs", |
| 41 | "crates/tui/src/commands/mod.rs", |
| 42 | "crates/tui/src/commands/user_registry.rs", |
| 43 | "crates/tui/src/compaction.rs", |
| 44 | "crates/tui/src/config.rs", |
| 45 | "crates/tui/src/config_persistence.rs", |
| 46 | "crates/tui/src/config_ui.rs", |
| 47 | "crates/tui/src/context_report.rs", |
| 48 | "crates/tui/src/core/engine.rs", |
| 49 | "crates/tui/src/core/engine/preview.rs", |
| 50 | "crates/tui/src/core/engine/tool_catalog.rs", |
| 51 | "crates/tui/src/core/engine/turn_loop.rs", |
| 52 | "crates/tui/src/cost_status.rs", |
| 53 | "crates/tui/src/fleet/exact.rs", |
| 54 | "crates/tui/src/fleet/executor.rs", |
| 55 | "crates/tui/src/fleet/host.rs", |
| 56 | "crates/tui/src/fleet/ledger.rs", |
| 57 | "crates/tui/src/fleet/manager.rs", |
| 58 | "crates/tui/src/fleet/profile.rs", |
| 59 | "crates/tui/src/fleet/scheduler.rs", |
| 60 | "crates/tui/src/fleet/store.rs", |
| 61 | "crates/tui/src/fleet/task_spec.rs", |
| 62 | "crates/tui/src/fleet/worker_runtime.rs", |
| 63 | "crates/tui/src/hooks/config.rs", |
| 64 | "crates/tui/src/hooks/executor.rs", |
| 65 | "crates/tui/src/llm_client/mod.rs", |
| 66 | "crates/tui/src/localization.rs", |
| 67 | "crates/tui/src/main.rs", |
| 68 | "crates/tui/src/mcp.rs", |
| 69 | "crates/tui/src/mcp/oauth.rs", |
| 70 | "crates/tui/src/model_routing.rs", |
| 71 | "crates/tui/src/models.rs", |
| 72 | "crates/tui/src/palette/themes.rs", |
| 73 | "crates/tui/src/plugins/manifest.rs", |
| 74 | "crates/tui/src/plugins/registry.rs", |
| 75 | "crates/tui/src/pricing.rs", |
| 76 | "crates/tui/src/project_context.rs", |
| 77 | "crates/tui/src/prompts.rs", |
| 78 | "crates/tui/src/provider_lake.rs", |
| 79 | "crates/tui/src/provider_readiness.rs", |
| 80 | "crates/tui/src/remote_control.rs", |
| 81 | "crates/tui/src/repl/runtime.rs", |
| 82 | "crates/tui/src/request_manifest.rs", |
| 83 | "crates/tui/src/route_billing.rs", |
| 84 | "crates/tui/src/route_runtime.rs", |
| 85 | "crates/tui/src/runtime_api.rs", |
| 86 | "crates/tui/src/runtime_api/sessions.rs", |
| 87 | "crates/tui/src/runtime_threads.rs", |
| 88 | "crates/tui/src/sandbox/mod.rs", |
| 89 | "crates/tui/src/scorecard.rs", |
| 90 | "crates/tui/src/session_manager.rs", |
| 91 | "crates/tui/src/settings.rs", |
| 92 | "crates/tui/src/skills/audit.rs", |
| 93 | "crates/tui/src/skills/install.rs", |
| 94 | "crates/tui/src/skills/mod.rs", |
| 95 | "crates/tui/src/skills/mutation.rs", |
| 96 | "crates/tui/src/snapshot/repo.rs", |
| 97 | "crates/tui/src/task_manager.rs", |
| 98 | "crates/tui/src/tool_inspection.rs", |
| 99 | "crates/tui/src/tools/apply_patch.rs", |
| 100 | "crates/tui/src/tools/file.rs", |
| 101 | "crates/tui/src/tools/goal.rs", |
| 102 | "crates/tui/src/tools/mcp_registry.rs", |
| 103 | "crates/tui/src/tools/registry.rs", |
| 104 | "crates/tui/src/tools/review.rs", |
| 105 | "crates/tui/src/tools/rlm.rs", |
| 106 | "crates/tui/src/tools/schema_sanitize.rs", |
| 107 | "crates/tui/src/tools/search.rs", |
| 108 | "crates/tui/src/tools/shell.rs", |
| 109 | "crates/tui/src/tools/spec.rs", |
| 110 | "crates/tui/src/tools/subagent/coord.rs", |
| 111 | "crates/tui/src/tools/subagent/mod.rs", |
| 112 | "crates/tui/src/tools/tasks.rs", |
| 113 | "crates/tui/src/tools/terminal_session.rs", |
| 114 | "crates/tui/src/tools/tool_result_retrieval.rs", |
| 115 | "crates/tui/src/tools/truncate.rs", |
| 116 | "crates/tui/src/tools/verifier.rs", |
| 117 | "crates/tui/src/tools/verify.rs", |
| 118 | "crates/tui/src/tools/web/extract.rs", |
| 119 | "crates/tui/src/tools/web_run.rs", |
| 120 | "crates/tui/src/tools/web_search.rs", |
| 121 | "crates/tui/src/tools/workflow.rs", |
| 122 | "crates/tui/src/tools/workflow_plan_approval.rs", |
| 123 | "crates/tui/src/tui/ambient_life.rs", |
| 124 | "crates/tui/src/tui/app.rs", |
| 125 | "crates/tui/src/tui/app/composer.rs", |
| 126 | "crates/tui/src/tui/app/types.rs", |
| 127 | "crates/tui/src/tui/approval.rs", |
| 128 | "crates/tui/src/tui/auto_review.rs", |
| 129 | "crates/tui/src/tui/clipboard.rs", |
| 130 | "crates/tui/src/tui/color_compat.rs", |
| 131 | "crates/tui/src/tui/command_palette.rs", |
| 132 | "crates/tui/src/tui/context_inspector.rs", |
| 133 | "crates/tui/src/tui/file_mention.rs", |
| 134 | "crates/tui/src/tui/file_picker.rs", |
| 135 | "crates/tui/src/tui/history.rs", |
| 136 | "crates/tui/src/tui/history/latex_render.rs", |
| 137 | "crates/tui/src/tui/hotbar/actions.rs", |
| 138 | "crates/tui/src/tui/hotbar/setup.rs", |
| 139 | "crates/tui/src/tui/live_transcript.rs", |
| 140 | "crates/tui/src/tui/markdown_render.rs", |
| 141 | "crates/tui/src/tui/model_picker.rs", |
| 142 | "crates/tui/src/tui/mouse_ui.rs", |
| 143 | "crates/tui/src/tui/notifications.rs", |
| 144 | "crates/tui/src/tui/pager.rs", |
| 145 | "crates/tui/src/tui/prompt_suggestion.rs", |
| 146 | "crates/tui/src/tui/provider_picker.rs", |
| 147 | "crates/tui/src/tui/session_picker.rs", |
| 148 | "crates/tui/src/tui/setup/mod.rs", |
| 149 | "crates/tui/src/tui/setup/tools_mcp.rs", |
| 150 | "crates/tui/src/tui/sidebar.rs", |
| 151 | "crates/tui/src/tui/startup_defaults.rs", |
| 152 | "crates/tui/src/tui/subagent_routing.rs", |
| 153 | "crates/tui/src/tui/tool_routing.rs", |
| 154 | "crates/tui/src/tui/transcript.rs", |
| 155 | "crates/tui/src/tui/ui.rs", |
| 156 | "crates/tui/src/tui/ui/activity_detail.rs", |
| 157 | "crates/tui/src/tui/ui/apply.rs", |
| 158 | "crates/tui/src/tui/ui/dispatch.rs", |
| 159 | "crates/tui/src/tui/ui/event_loop.rs", |
| 160 | "crates/tui/src/tui/ui/frame.rs", |
| 161 | "crates/tui/src/tui/ui/handlers.rs", |
| 162 | "crates/tui/src/tui/ui/session_state.rs", |
| 163 | "crates/tui/src/tui/underwater.rs", |
| 164 | "crates/tui/src/tui/views/fleet_detail.rs", |
| 165 | "crates/tui/src/tui/views/fleet_setup.rs", |
| 166 | "crates/tui/src/tui/views/help.rs", |
| 167 | "crates/tui/src/tui/views/mod.rs", |
| 168 | "crates/tui/src/tui/views/skills_manager.rs", |
| 169 | "crates/tui/src/tui/widgets/agent_card.rs", |
| 170 | "crates/tui/src/tui/widgets/mod.rs", |
| 171 | "crates/tui/src/tui/widgets/workflow_panel.rs", |
| 172 | "crates/tui/src/tui/work_surface/mod.rs", |
| 173 | "crates/tui/src/tui/work_surface/model.rs", |
| 174 | "crates/tui/src/utils.rs", |
| 175 | "crates/tui/src/work_graph/runtime.rs", |
| 176 | "crates/tui/src/working_set.rs", |
| 177 | "crates/tui/src/xai_oauth.rs", |
| 178 | "crates/workflow-js/src/vm.rs", |
| 179 | "crates/workflow/src/fleet_exact.rs", |
| 180 | "crates/workflow/src/fleet_reasoning.rs", |
| 181 | "crates/workflow/src/lib.rs" |
| 182 | ], |
| 183 | "binary_targets": [ |
| 184 | "codewhale-cli:codew", |
| 185 | "codewhale-cli:codewhale", |
| 186 | "codewhale-tui:codewhale-tui" |
| 187 | ], |
| 188 | "_todo_2026_08_06_windows_lane": "v0.9.4 Windows/no-sandbox test-lane repair: aggregate 673296 -> 673375 (+79 lines). The 12 failures blocking the ship were not Windows-only - 7 fail on any host with no OS sandbox backend (all Windows, Linux without bubblewrap), and release.yml's parity job runs the full suite on ubuntu-latest, so the tag itself would have failed. Growth is a pinned sandbox backend in the underwater test fixture plus one new test covering the unenforced rendering the fixture no longer exercises, the rooted-mention and native-separator fixes in file_mention, and their comments. No new modules; growth is in existing files. Pay down in v0.9.5.", |
| 189 | "document_kind": "codewhale.source_structure_budget", |
| 190 | "large_module_threshold_lines": 1000, |
| 191 | "max_large_module_count": 175, |
| 192 | "max_module_lines": 17596, |
| 193 | "max_total_owned_rust_lines": 673375, |
| 194 | "schema_version": 1, |
| 195 | "workspace_packages": [ |
| 196 | "codewhale-agent", |
| 197 | "codewhale-app-server", |
| 198 | "codewhale-build-support", |
| 199 | "codewhale-cli", |
| 200 | "codewhale-config", |
| 201 | "codewhale-core", |
| 202 | "codewhale-execpolicy", |
| 203 | "codewhale-hooks", |
| 204 | "codewhale-lane", |
| 205 | "codewhale-mcp", |
| 206 | "codewhale-paths", |
| 207 | "codewhale-protocol", |
| 208 | "codewhale-release", |
| 209 | "codewhale-secrets", |
| 210 | "codewhale-state", |
| 211 | "codewhale-telemetry", |
| 212 | "codewhale-tools", |
| 213 | "codewhale-tui", |
| 214 | "codewhale-workflow", |
| 215 | "codewhale-workflow-js" |
| 216 | ] |
| 217 | } |
| 218 |