feat(engine): extract settings leaf modules to loopover-engine - #5779
Conversation
Continue the settings/ slice extraction (JSONbored#4879): move the dependency-free pure leaf global-contributor-cap.ts into packages/loopover-engine, and converge the two already-twinned pure leaves auto-close-exempt.ts and moderation-rules.ts onto their engine copies. Each src/ path becomes a thin re-export shim (relative source path, per src/signals/check-summary.ts), so every consumer and test resolves unchanged and the single implementation now lives in the engine. All three are pure (no Env/D1) and at 100% coverage; the engine copies are byte-identical to the former src/ twins, so behavior is unchanged. The two converted twins were directory-scanned parity pairs (not named pairs), so the drift tripwire correctly skips their new shims — no scripts/ change needed. The remaining settings files (agent-* guarded, and the import-bearing ones) stay for follow-ups. Closes JSONbored#4879
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5779 +/- ##
==========================================
- Coverage 95.07% 95.06% -0.01%
==========================================
Files 582 580 -2
Lines 46219 46156 -63
Branches 14822 14804 -18
==========================================
- Hits 43943 43880 -63
Misses 1516 1516
Partials 760 760
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
Tip 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-14 14:50:46 UTC
✅ Suggested Action - Approve/Merge
Review summary Nits — 5 non-blocking
Linked issue satisfactionPartially addressed Review context
Contributor next steps
Signal definitions
[BETA] Chat with GittensoryAsk Gittensory a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
Summary
Continues the
settings/slice extraction (#4879) by consolidating the pure leaf modules into@loopover/engine, following the established shim convention (seesrc/signals/check-summary.ts):global-contributor-cap.ts— a dependency-free pure leaf that was not yet extracted. Moved intopackages/loopover-engine/src/settings/(byte-identicalgit mv) with a thin re-export shim left at its oldsrc/path.auto-close-exempt.tsandmoderation-rules.ts— already-extracted pure leaves that were still carried as hand-maintained twins (identical impl in bothsrc/and the engine). Converged eachsrc/copy to a thin re-export shim, so the single implementation now lives only in the engine.Every consumer and test keeps its existing
src/settings/<file>import and resolves through the shim — no consumer or test import changed.Why these three, and why it's safe
Env/D1) and at 100% coverage, so the moves are coverage-safe.NAMED_TWIN_PAIRS(those areadvisory,safe-url,review-diff,signals/engine,secret-patterns). The drift tripwire'sisThinEngineReExportShimcorrectly skips the new shims, so no guardedscripts/change is needed — the parity check still passes (20 pairs agree).settings/files are deferred:agent-actions/agent-execution/agent-sweep/autonomyare guardrail paths, and the import-bearing files (automation-bot-skip→ guardedagent-actions,effective-config-summary,repository-settings) need their dependencies handled first.Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.settings/slice extraction #4879.Validation
git diff --checknpm run typecheck(root +@loopover/enginebuild both clean)npm run test:coverage— all three moved engine files and all three shims at 100% line + branch coverage (v8 JSON report); the direct settings tests and engine-twin tests pass unchanged (265), and consumer suites (agent-actions,agent-approval-queue,focus-manifest-loader,agent-action-executor,automation-bot-skip) resolve through the shims and pass (379 + more).20 hand-duplicated pairs agree); the parity discovery regression guard (>= 14pairs) still holds.npm run command-reference:checkand docs-drift check pass (unaffected).mainimmediately before pushing — merges clean, no base conflict.If any required check was skipped, explain why:
actionlint,test:workers,ui:*,npm auditwere not run — this change adds no workflow, worker, UI, or dependency surface. The fullnpm run test:ciruns them on CI.Safety
Auth/CORS/session, API/OpenAPI/MCP, and UI safety boxes are not applicable — this PR changes none of those surfaces.