Give packages/gittensory-engine a real, checked semver identity that both consumers (the review-stack backend and the future miner) can assert against, so "which engine version produced this verdict" is always answerable — the phase brief calls for extraction "with a version pin." Add an ENGINE_VERSION constant sourced from the package's own package.json at build time (mirroring how packages/gittensory-mcp/bin/gittensory-mcp.js hardcodes packageVersion = "0.6.0" matching its package.json), and surface it on PredictedGateVerdict so any consumer (including the miner's self-review) can log/compare it.
Deliverables
References
packages/gittensory-mcp/bin/gittensory-mcp.js (line 14) — const packageVersion = "0.6.0"; hardcoded-but-package.json-matching version pattern to mirror.
packages/gittensory-engine/src/predicted-gate.ts — the PredictedGateVerdict type to extend (created by an earlier issue in this phase; must land first).
- Phase brief: "extract reusable deterministic logic ... out of src/ into the new engine package with a version pin."
Give
packages/gittensory-enginea real, checked semver identity that both consumers (the review-stack backend and the future miner) can assert against, so "which engine version produced this verdict" is always answerable — the phase brief calls for extraction "with a version pin." Add anENGINE_VERSIONconstant sourced from the package's ownpackage.jsonat build time (mirroring howpackages/gittensory-mcp/bin/gittensory-mcp.jshardcodespackageVersion = "0.6.0"matching itspackage.json), and surface it onPredictedGateVerdictso any consumer (including the miner's self-review) can log/compare it.Deliverables
packages/gittensory-engine/src/version.tsexportingENGINE_VERSION: string, sourced from (or kept in lockstep with, via a checked test)packages/gittensory-engine/package.json'sversionfield.ENGINE_VERSION === require("../package.json").versionso the constant can never silently drift from the published package version (mirrors the version/package.json lockstep pattern implied bygittensory-mcp's hardcodedpackageVersion+ its own version-audit tooling).PredictedGateVerdict(inpackages/gittensory-engine/src/predicted-gate.ts) gains anengineVersion: stringfield populated fromENGINE_VERSION.src/rules/predicted-gate.ts's existing test suite is updated to assert the new field is present and non-empty (this IS an allowed test change since it is additive, not weakening).packages/gittensory-engine/src/index.tsre-exportsENGINE_VERSION.References
packages/gittensory-mcp/bin/gittensory-mcp.js(line 14) —const packageVersion = "0.6.0";hardcoded-but-package.json-matching version pattern to mirror.packages/gittensory-engine/src/predicted-gate.ts— thePredictedGateVerdicttype to extend (created by an earlier issue in this phase; must land first).