Extend .github/workflows/ci.yml's existing path-filter + conditional-step pattern (currently backend/ui/mcp/rees filters, each gating its own build/test steps) with two new filter keys — engine (paths: packages/gittensory-engine/**) and miner (paths: packages/gittensory-miner/**) — and matching conditional steps that run npm run build --workspace @jsonbored/gittensory-engine, the engine's own test suite, node --check (or tsc --noEmit) over the miner CLI, and the new npm run test:engine-parity script from the parity-suite issue. Also add both new scripts to the root test:ci chain so a push-to-main run (which always runs everything, per the existing github.event_name == 'push' fallback in every conditional) always exercises them, not only PRs that happen to touch those paths.
Deliverables
References
.github/workflows/ci.yml (changes job, lines ~30-55; the mcp filter's conditional steps, lines ~156-163) — the exact pattern to replicate for engine/miner.
package.json test:ci script (line 62) — the chain to extend.
packages/gittensory-engine/, packages/gittensory-miner/ — created by earlier issues in this phase (both must land first, since this issue only wires their ALREADY-EXISTING build/test scripts into CI, it does not create new ones).
Extend
.github/workflows/ci.yml's existing path-filter + conditional-step pattern (currentlybackend/ui/mcp/reesfilters, each gating its own build/test steps) with two new filter keys —engine(paths:packages/gittensory-engine/**) andminer(paths:packages/gittensory-miner/**) — and matching conditional steps that runnpm run build --workspace @jsonbored/gittensory-engine, the engine's own test suite,node --check(ortsc --noEmit) over the miner CLI, and the newnpm run test:engine-parityscript from the parity-suite issue. Also add both new scripts to the roottest:cichain so a push-to-main run (which always runs everything, per the existinggithub.event_name == 'push'fallback in every conditional) always exercises them, not only PRs that happen to touch those paths.Deliverables
.github/workflows/ci.ymlchangesjob gainsengineandminerfilter outputs (newfilters:block entries, pathspackages/gittensory-engine/**andpackages/gittensory-miner/**respectively).Build engine package/Engine test suite/Build miner CLI/Miner CLI check, each gated ongithub.event_name == 'push' || needs.changes.outputs.engine == 'true'(or.minerfor the miner steps) — mirroring the exact conditional shape already used for themcpfilter'sBuild MCP/MCP package checksteps.package.jsongainsbuild:engine,test:engine(or folds into the existingtest:unit/test:coveragescope if the engine package's tests live under the roottest/tree rather than its own — confirm and match whichever the engine-package-skeleton issue actually established), andbuild:minerscripts.test:ci's chain inpackage.json(currently ending... && npm run ui:lint && npm run ui:typecheck && npm run ui:test && npm run ui:build) gains the newbuild:engine/build:miner/test:engine-paritysteps in a sensible position (alongside the existingbuild:mcp && npm run test:mcp-packpair, since they're the closest existing analogue).npm run test:ci(or at minimum the new scripts in isolation) confirmed green before opening the PR.References
.github/workflows/ci.yml(changesjob, lines ~30-55; themcpfilter's conditional steps, lines ~156-163) — the exact pattern to replicate forengine/miner.package.jsontest:ciscript (line 62) — the chain to extend.packages/gittensory-engine/,packages/gittensory-miner/— created by earlier issues in this phase (both must land first, since this issue only wires their ALREADY-EXISTING build/test scripts into CI, it does not create new ones).