Context
Part of the src/ ↔ @loopover/engine convergence epic (#6202). 9 files in src/review/ are byte-identical (or near-identical, modulo an import-path/doc-comment delta already confirmed via diff) duplicates of the same-named file at packages/loopover-engine/src/review/<file> — full copies that should be thin re-export shims instead, matching the pattern already proven for src/settings/auto-close-exempt.ts, moderation-rules.ts, global-contributor-cap.ts, and src/signals/duplicate-winner.ts.
Affected files (all in src/review/, each with an identical-path counterpart in packages/loopover-engine/src/review/):
advisory-ai-routing-config.ts
cla-check.ts
enrichment-analyzer-names.ts
guardrail-config.ts
linked-issue-hard-rules-config.ts
linked-issue-label-propagation.ts
pre-merge-checks.ts
screenshot-table-gate.ts
unlinked-issue-guardrail-config.ts
Requirements
- Convert each of the 9
src/review/<file> copies into a thin re-export shim of its packages/loopover-engine/src/review/<file> counterpart, following the exact shape already used by src/settings/auto-close-exempt.ts (or any of the other 3 already-correct shim examples).
- Do not change any of the 9 engine-side files — they remain the canonical implementation.
- Before converting each pair, re-confirm via a fresh diff that the two copies are still equivalent (no
src/-side-only behavior added since this audit) — if one genuinely diverges, note it in the PR and skip converting that specific file rather than silently dropping real behavior.
- Update every import site across
src/** that currently imports the src/review/<file> path directly, if the shim's export shape requires it (it shouldn't, if the re-export is a faithful export * from / named re-export, but verify no call site breaks).
Test Coverage Requirements
99%+ Codecov patch coverage on the changed files; every existing test for both the src/review/ copies and their engine counterparts must continue passing unchanged — a shim conversion is a behavior-preserving refactor, not a functional change.
Deliverables
Expected Outcome
src/review/ no longer hand-duplicates 9 files that already have a canonical implementation in @loopover/engine — a future fix to any of them only needs to happen once.
Links & Resources
Context
Part of the
src/↔@loopover/engineconvergence epic (#6202). 9 files insrc/review/are byte-identical (or near-identical, modulo an import-path/doc-comment delta already confirmed via diff) duplicates of the same-named file atpackages/loopover-engine/src/review/<file>— full copies that should be thin re-export shims instead, matching the pattern already proven forsrc/settings/auto-close-exempt.ts,moderation-rules.ts,global-contributor-cap.ts, andsrc/signals/duplicate-winner.ts.Affected files (all in
src/review/, each with an identical-path counterpart inpackages/loopover-engine/src/review/):advisory-ai-routing-config.tscla-check.tsenrichment-analyzer-names.tsguardrail-config.tslinked-issue-hard-rules-config.tslinked-issue-label-propagation.tspre-merge-checks.tsscreenshot-table-gate.tsunlinked-issue-guardrail-config.tsRequirements
src/review/<file>copies into a thin re-export shim of itspackages/loopover-engine/src/review/<file>counterpart, following the exact shape already used bysrc/settings/auto-close-exempt.ts(or any of the other 3 already-correct shim examples).src/-side-only behavior added since this audit) — if one genuinely diverges, note it in the PR and skip converting that specific file rather than silently dropping real behavior.src/**that currently imports thesrc/review/<file>path directly, if the shim's export shape requires it (it shouldn't, if the re-export is a faithfulexport * from/ named re-export, but verify no call site breaks).Test Coverage Requirements
99%+ Codecov patch coverage on the changed files; every existing test for both the
src/review/copies and their engine counterparts must continue passing unchanged — a shim conversion is a behavior-preserving refactor, not a functional change.Deliverables
Expected Outcome
src/review/no longer hand-duplicates 9 files that already have a canonical implementation in@loopover/engine— a future fix to any of them only needs to happen once.Links & Resources
#4879(original convergence effort)src/settings/auto-close-exempt.ts(the shim pattern to replicate)packages/loopover-engine/src/review/(the 9 canonical counterparts)