Move the pure, dependency-light type surface of src/rules/predicted-gate.ts (the PredictedGateVerdict, PredictedGateInput types and the predictedGateNote/publicSafeFinding pure helpers) into packages/gittensory-engine/src/predicted-gate.ts, re-exported from the engine's barrel. This is a TYPES-AND-PURE-HELPERS-FIRST slice of the full extraction (the follow-up issue moves buildPredictedGateVerdict itself once its signal dependencies are also extracted) so the surface area per PR stays small. src/rules/predicted-gate.ts re-exports from the engine package rather than duplicating the types, so there is exactly one definition.
Deliverables
References
src/rules/predicted-gate.ts (lines 36-93) — the exact types and helpers to move.
packages/gittensory-engine/ — created by the package-skeleton issue (must land first).
.claude/skills/contributing-to-gittensory/SKILL.md Phase 2 — "trace the closest analogue end-to-end" convention this port must follow faithfully.
Move the pure, dependency-light type surface of
src/rules/predicted-gate.ts(thePredictedGateVerdict,PredictedGateInputtypes and thepredictedGateNote/publicSafeFindingpure helpers) intopackages/gittensory-engine/src/predicted-gate.ts, re-exported from the engine's barrel. This is a TYPES-AND-PURE-HELPERS-FIRST slice of the full extraction (the follow-up issue movesbuildPredictedGateVerdictitself once its signal dependencies are also extracted) so the surface area per PR stays small.src/rules/predicted-gate.tsre-exports from the engine package rather than duplicating the types, so there is exactly one definition.Deliverables
packages/gittensory-engine/src/predicted-gate.tswithPredictedGateVerdict,PredictedGateInputtypes and the purepredictedGateNote/publicSafeFindingfunctions, ported verbatim (same doc comments, same behavior).packages/gittensory-engine/src/index.tsre-exports the new module.src/rules/predicted-gate.tsimportsPredictedGateVerdict,PredictedGateInput,predictedGateNote,publicSafeFindingfrom@jsonbored/gittensory-engineinstead of defining them locally; deletes the now-duplicate local definitions.npm run typecheckand the existingpredicted-gatetest suite pass unmodified (behavior must be byte-identical — no test changes needed if the port is faithful).@jsonbored/gittensory-engineas adependenciesentry in rootpackage.json(workspace-linked) sosrc/can import it.References
src/rules/predicted-gate.ts(lines 36-93) — the exact types and helpers to move.packages/gittensory-engine/— created by the package-skeleton issue (must land first)..claude/skills/contributing-to-gittensory/SKILL.mdPhase 2 — "trace the closest analogue end-to-end" convention this port must follow faithfully.