Move the two smallest, fully self-contained signal modules — src/signals/test-evidence.ts (32 lines: isTestPath, hasLocalTestEvidence, classifyTestCoverage) and src/signals/local-scorer.ts (34 lines: computeLocalScorerTokens) — into packages/gittensory-engine/src/. These have no non-trivial internal dependencies (local-scorer only imports types from local-branch.ts, which stays in src/ for now — the engine version accepts the same shape via a locally-declared type instead of importing across the boundary) and are good first extractions to prove the pattern before the larger slop/reward-risk modules.
Deliverables
References
src/signals/test-evidence.ts (32 lines) — full file to port.
src/signals/local-scorer.ts (34 lines) — full file to port; note its LocalBranchScorer/LocalBranchChangedFile/LocalBranchValidation type dependency on ./local-branch, which this issue re-declares locally rather than cross-importing.
packages/gittensory-engine/ — created by the package-skeleton issue (must land first).
Move the two smallest, fully self-contained signal modules —
src/signals/test-evidence.ts(32 lines:isTestPath,hasLocalTestEvidence,classifyTestCoverage) andsrc/signals/local-scorer.ts(34 lines:computeLocalScorerTokens) — intopackages/gittensory-engine/src/. These have no non-trivial internal dependencies (local-scorer only imports types fromlocal-branch.ts, which stays insrc/for now — the engine version accepts the same shape via a locally-declared type instead of importing across the boundary) and are good first extractions to prove the pattern before the larger slop/reward-risk modules.Deliverables
packages/gittensory-engine/src/test-evidence.ts— verbatim port ofisTestPath,hasLocalTestEvidence,classifyTestCoverage.packages/gittensory-engine/src/local-scorer.ts— verbatim port ofcomputeLocalScorerTokens, withLocalBranchChangedFile/LocalBranchScorer/LocalBranchValidationre-declared as local types (matching shapes) rather than importing fromsrc/signals/local-branch.ts, since that module stays in the backend tree.src/signals/test-evidence.tsandsrc/signals/local-scorer.tsbecome thin re-export shims from@jsonbored/gittensory-engine(keep the files so every existingimport from "./test-evidence"/"./local-scorer"insrc/keeps working with zero call-site churn).test/unit/) pass unmodified against the shim.packages/gittensory-engine/src/index.tsre-exports both new modules.References
src/signals/test-evidence.ts(32 lines) — full file to port.src/signals/local-scorer.ts(34 lines) — full file to port; note itsLocalBranchScorer/LocalBranchChangedFile/LocalBranchValidationtype dependency on./local-branch, which this issue re-declares locally rather than cross-importing.packages/gittensory-engine/— created by the package-skeleton issue (must land first).