# Files over 1000 lines once formatted to dprint.json, each as `path # reason`: debt waiting for a split,
# or an exemption whose reason says why no responsibility boundary exists. This ledger may only shrink:
# split a file (or let it fall under the limit), then delete its line. See scripts/checks/check_source_file_size.mjs.
apps/client-next/src/engine/foundation/navigation/clipper.ts # one movement-clipper owner: installed region grids, object placements, the event registry and every clip query read the same install-sequence state, and the worker and main-thread instances must answer identically, so the algorithm stays in one file
apps/client-next/src/engine/foundation/ui/pet-design-data.ts # generated from the server's petdesign.json by pet_design_export.py (check:pet-design); skill, gear and affix IDs form one matched client/server design contract
apps/client-next/src/engine/foundation/ui/skill-tooltip-params.ts # not yet analysed; split on its responsibility boundaries when formatted
apps/client-next/src/engine/runtime/characters/characters.ts # one frame coordinator: the state index, action/event lanes and actor pass share one ordered frame; the lanes it calls are separate owners
apps/client-next/src/engine/runtime/characters/pose-presentation.ts # one sampled-pose owner: the frame clock, origin offset, sampled and untimed tracks and their recovery geometry share each frame's state; the interpolated own walk is already its own owner (own-walk-interpolation.ts), leaving only the dispatch here
apps/client-next/src/engine/runtime/characters/effects/effects.ts # formatted 2026-10-01; step() still owns cast stages, attached buffs, status, item and system effects and flights: split along those owners
apps/client-next/src/engine/runtime/platform/platform.ts # platform composition root: the returned handle carries one row per platform owner (canvas, cursor, telemetry, display); rows join and leave with their owners and no responsibility boundary runs inside the table
apps/client-next/src/engine/runtime/platform/ui/ui.ts # one DOM bridge owner: control lifetime, pointer/touch routing, focus and IME share each control's element and its per-frame publication; the drag shield and cursor are already separate owners
apps/client-next/src/engine/runtime/renderer/device/geometry.ts # cohesive draw-resource and binding lifetime owner; upload snapshots have a separate owner
apps/client-next/src/engine/runtime/renderer/characters/characters.ts # synchronous model, pose and draw-batch lifetime owner; shared admission and retirement must stay ordered
apps/client-next/src/engine/runtime/renderer/world/world.ts # not yet analysed; split on its responsibility boundaries when formatted
apps/client-next/src/engine/runtime/runtime.ts # one frame/lifetime orchestrator; extracted diagnostics owner is separate, but splitting the sealed frame order would obscure its lifecycle
apps/client-next/src/engine/runtime/simulation/worker/session/world/entities/entities.ts # one transactional entity packet dispatcher owns spawn, movement, visibility and retirement state
apps/client-next/src/engine/runtime/simulation/worker/session/world/gameplay/gameplay.ts # synchronous composition of gameplay owners; command admission, packet commits and snapshot publication share one frame transaction
apps/client-next/src/engine/runtime/simulation/worker/session/world/gameplay/inventory/inventory.ts # one owner of the slot map and the single pending item transaction that moves, uses, trades, buybacks and COS transfers share (native replies carry no transaction ID); alchemy and Magic Pop are already child owners
apps/client-next/src/engine/runtime/simulation/worker/session/world/gameplay/movement/movement.ts # one owner of the local walk: prediction, receipts, corrections and the cast hold read and write the same pose, segment and walk state
apps/client-next/src/engine/runtime/ui/ui.ts # one closure holds state, input and rendering for every window; split per window
apps/client-next/tests/runtime/character-animation-audio.test.mjs # test file; split by feature
apps/client-next/tests/runtime/character-effects.test.mjs # test file; split by feature
apps/client-next/tests/runtime/character-presentation.test.mjs # test file; split by feature
apps/client-next/tests/runtime/character-resources.test.mjs # test file; split by feature
apps/client-next/tests/runtime/gameplay.test.mjs # test file; split by feature
apps/client-next/tests/runtime/ui-behavior.test.mjs # test file covering every window; split per window
apps/client-next/tests/runtime/world-renderer.test.mjs # test file; split by feature
apps/client-next/tests/runtime/world.test.mjs # test file; split by feature
apps/server/internal/game/quest/runtime.go # one quest-runtime owner: definition lookup, acceptance, NPC option projection and the reward transaction share the character door and the active-quest list; the per-programme composition rows (acceptance grants, grant-day stamps, offer and re-grant hooks) join their programmes here, with no responsibility boundary inside the transaction owner
scripts/build/shared/cifRuntimeImageCatalog.mjs # not yet analysed; split on its responsibility boundaries when formatted

apps/client-next/src/engine/runtime/renderer/renderer.ts # GPU lifetime and ordered frame closure share one cohesive owner; splitting requires new mutable state plumbing.
