Goal / finish line
Each of these pairs is split by operation into files under 600 lines, with tests split alongside their subject:
packages/sync/src/domain/provider-command.service.ts (2,154) + .db.test.ts (4,345)
packages/web/src/events/mutations/useEventMutations.ts (1,127) + .test.tsx (2,191)
packages/web/src/views/Forms/EventForm/EventForm.tsx (1,085) + .test.tsx (1,795)
packages/sync/src/server/connection.routes.ts (1,076) + .db.test.ts (1,798)
Acceptance
- No source or test file in those four areas exceeds 600 lines;
bun run knip stays clean; no barrels introduced (bun lint enforces).
- Same test count before and after per package.
- One PR per pair so each stays inside the merge-guard rails.
Context
These four pairs are about 17,000 lines (7% of the repo) on the highest-churn paths. Touching provider-command.service.ts costs an agent ~180k characters of reading to change one behavior.
Package scope
sync, web
Verify commands
bun test:sync
bun test:web
bun run verify --strict
Approval boundary
allow
Untrusted input
Goal / finish line
Each of these pairs is split by operation into files under 600 lines, with tests split alongside their subject:
packages/sync/src/domain/provider-command.service.ts(2,154) +.db.test.ts(4,345)packages/web/src/events/mutations/useEventMutations.ts(1,127) +.test.tsx(2,191)packages/web/src/views/Forms/EventForm/EventForm.tsx(1,085) +.test.tsx(1,795)packages/sync/src/server/connection.routes.ts(1,076) +.db.test.ts(1,798)Acceptance
bun run knipstays clean; no barrels introduced (bun lintenforces).Context
These four pairs are about 17,000 lines (7% of the repo) on the highest-churn paths. Touching
provider-command.service.tscosts an agent ~180k characters of reading to change one behavior.Package scope
sync, web
Verify commands
Approval boundary
allow
Untrusted input