The story's per-repo COVERAGE + INTEGRATION gate, run against real Postgres after the three feature cards have merged. It measures their REAL merged coverage, tops up the seams between them, and asserts the guarantees a percentage cannot see.
Run coverage over the surface this story changed — lib/jobs/indexFleetSteps.ts, lib/jobs/definitions/ciRunnerFleet.ts, lib/jobs/engine/dispatcher.ts, lib/jobs/engine/registry.ts, the touched parts of codeGraphIndexDispatchService and ciRunnerBootService — and write whatever unit and branch tests are needed to reach motir-core/CLAUDE.md's per-file floor of ≥90% branch / function / line. "Already covered by the per-subtask floor" is the EXPECTED normal here, not a reason the card has nothing to do: the gate's job is the seams between the three cards, not their interiors.
⚠️ Sort the report before writing a bullet. These files are full of defensive arms — catch blocks around provider reads, ?? null on optional session fields, the MAX_CONSECUTIVE_READ_FAILURES limb — which are uncovered because they are unreachable at least as often as because nobody wrote them. For each gap say what would have to be true for the arm to FIRE, reading the code that BUILDS the value rather than the arm itself; where an arm is genuinely dead, the criterion is a test asserting the INVARIANT plus an ignore directive citing that test by name, never a fixture nobody can build and never a dropped bullet.
These are the writer→consumer pairs the units mock, driven end-to-end against real Postgres:
job_run per repo, succeeded, with ONE output.repoRef; a run whose container did not exit 0 writes a FAILED row carrying the named exit class.job_step. The step rows a completed supervision writes are a small CONSTANT, and the number does not grow with the poll count. Assert the number, not merely that it is "small" — this is the property the whole collapse buys, and a regression here is silent.codeGraphIndexAdmissionService and lib/ciFleet/limits.ts are named in MOTIR-3417's criteria as forbidden ground because a regression there costs money. Assert the budgets by value.INDEX_FLEET_TIME_BUDGETS, INDEX_ADMISSION_BUDGETS, FLEET_TIME_BUDGETS, indexPollWaitMs, indexAdmissionWaitMs, pollWaitMs — read from the shipped constants, so a collapse that quietly changed a cadence fails here.null and merges unrelated repos into one bucket. codeGraphRefresh's own header names that failure explicitly.job_queue rows. The switch's default-to-Inngest safety property has a test in MOTIR-3414's gate for the same reason.ONE composition is structural, not stylistic. A guard asserting that a poll loop appears in exactly one place per fleet — the thing this story deletes cannot grow back by copy-paste, and only a test that reads the tree can say so.ENDS at: this repo's vitest suite green, at the floor, with the seams and guards above.
One repo, one suite, one PR. Everything this story touches is motir-core; there is no second gate card.
Does NOT assert anything about the E2E flow — the story E2E drives the browser-visible path and is a sibling, not a dependency.
Does NOT re-derive coverage the three feature cards already ship. Each of them owes its own units; this card tops up what falls between them.
Does NOT assert a claim about PRODUCTION. The ids are not in MOTIR_POSTGRES_JOB_IDS when this lands — that is the operator task, after the merge.
job_step count for a completed supervision is asserted as an exact number, and the test proves it is independent of poll count by running the same supervision at two different poll budgets.motir-core/CLAUDE.md § coverage — the ≥90% per-file floor this measures againsttests/jobs/engine-worker.test.ts · tests/jobs/engine-step-shim.test.ts · tests/jobs/engine-story-gate.test.ts — the engine's existing gate lane and its crash-resume shapetests/jobs/engine-dispatcher.test.ts — the fan-out and idempotency tests the debounce sits besidetests/jobs/debounce-burst.test.ts — the Inngest-side coalescing guard, whose engine twin belongs heretests/helpers/perWorkerDb.ts — the real-Postgres harnesstests/ciFleet/ — the CI fleet's existing suites, including the admission-wake caller of runIntentlib/services/codeGraphIndexAdmissionService.ts · lib/ciFleet/limits.ts — the untouchable budgets to assert by value