Part of #3276.
Purpose
Static collocation analysis says declared zones do not match observed coupling: Louvain modularity 0.564 for detected communities vs 0.373 for declared zones; 48 files sit in a community that is ≥80% another zone. This issue drives the decision pass and lands the first unambiguous moves.
No blockers. Analysis baseline: ff685ad80. The full candidate list is in the umbrella issue body (section 5).
Required behavior
- Decision table: one row per candidate file in the umbrella list —
move, merge, or keep with a one-line reason. Land it as docs/adr/ (or extend the architecture-ownership table if that is the owning declaration site).
- Land the first
refactor(move) PR batch with the moves that need no design work:
src/sdk/limrun.ts, src/sdk/limrun-runtime-types.ts → provider-limrun
src/provider-limrun-runtime.ts → provider-limrun
capture-kit/src/durable-json.ts and the four capture-kit/src/capture-admission/*ledger.ts files → managed-allocation (per the candidate notes; re-verify direction against the current import graph before moving)
contracts/src/managed-device-allocation.ts → managed-allocation
- Moves are
git mv + import fixes only (refactor(move)), each batch provable with git diff -M90% --stat (move-only PRs are exempt from the size budget). Update ownership tables/exports maps in the final chore(gates) commit.
- Where a move is refused, the decision row is the record; where a move is impossible because the target package has no seam, say so in the row and file nothing.
Done when
- Every candidate in the umbrella list has a merged decision row.
- The first move batch is merged and
pnpm depgraph/layering gates are green; zone modularity is re-measured and reported (expect a small improvement; do not chase the number).
- Remaining moves are enumerated as follow-up child issues or listed here as unchecked items.
Constraints
- One command family/package group per PR; do not mix decisions with moves in a single commit.
- Keep the public export surface stable: re-export from the old facade only if something outside the repo can observe it (
fallow production-exports gate will tell you).
- Follow
docs/agents/pull-requests.md (size budget, commit shape, validation).
Follow-up checklist (post #3287 decision pass)
Part of #3276.
Purpose
Static collocation analysis says declared zones do not match observed coupling: Louvain modularity 0.564 for detected communities vs 0.373 for declared zones; 48 files sit in a community that is ≥80% another zone. This issue drives the decision pass and lands the first unambiguous moves.
No blockers. Analysis baseline:
ff685ad80. The full candidate list is in the umbrella issue body (section 5).Required behavior
move,merge, orkeepwith a one-line reason. Land it asdocs/adr/(or extend the architecture-ownership table if that is the owning declaration site).refactor(move)PR batch with the moves that need no design work:src/sdk/limrun.ts,src/sdk/limrun-runtime-types.ts→provider-limrunsrc/provider-limrun-runtime.ts→provider-limruncapture-kit/src/durable-json.tsand the fourcapture-kit/src/capture-admission/*ledger.tsfiles →managed-allocation(per the candidate notes; re-verify direction against the current import graph before moving)contracts/src/managed-device-allocation.ts→managed-allocationgit mv+ import fixes only (refactor(move)), each batch provable withgit diff -M90% --stat(move-only PRs are exempt from the size budget). Update ownership tables/exports maps in the finalchore(gates)commit.Done when
pnpm depgraph/layering gates are green; zone modularity is re-measured and reported (expect a small improvement; do not chase the number).Constraints
fallowproduction-exports gate will tell you).docs/agents/pull-requests.md(size budget, commit shape, validation).Follow-up checklist (post #3287 decision pass)
src/daemon-diagnostics-scope.ts,src/runtime-command-surface.ts,src/runtime-factory.ts. refactor(layering): rank every root module so R5 sees through (root) #3288's zone assignments classify them only; reclassification is not completed collocation.