Bring the DOCUMENTS into line with the substrate that now runs — the engine's own debounce, and the fact that the ceiling every stepped-supervisor explanation reasons from no longer exists.
Audience: whoever next has to reason about a long-running job. They will read these documents before they read the code, and today all three of them argue confidently from a premise this story falsified.
1 · docs/jobs.md — rule 1. "A STEP, NOT A RUN, IS THE UNIT THE PLATFORM'S TIMEOUT APPLIES TO" is quoted by name in lib/jobs/indexFleetSteps.ts and lib/jobs/definitions/ciRunnerFleet.ts and is the sentence the entire stepped shape was built on. It was a fact about Vercel's maxDuration = 300. State what is true now — a long-lived worker with a renewed lease, where a RUN may span half an hour and durability comes from memoized steps rather than from short ones — and say that the old rule was right about the platform it was written for. A reader must be able to see the world changed, not just the text.
2 · docs/jobs.md § Debounce. The section is currently a report on INNGEST's executor: MOTIR-2994's burst table, the finding that the timeout cap does not fire for a stream faster than ~1 event/second, and the note that an unresolvable key MERGES rather than disabling the debounce. That measurement stays — it is history, and deleting it would lose the reason the option is written the way it is — but it must be labelled as being about the lane a job is on, and the engine's own behaviour documented beside it: how the key is resolved, when the resolver refuses, what pushes run_at forward, what happens to a same-key event arriving while the debounced run is already executing, and whether the deferral cap fires (it does, which is the one place the engine is stricter than what it replaces).
3 · docs/decisions/code-graph-index-fleet.md. §2 and §11 explain the container path partly from the invocation ceiling; §7.3 / §7.4 reason from the debounce being Inngest's. Amend rather than rewrite — this record's convention is dated amendments, and its own §7.4 is the model.
4 · docs/decisions/job-lane-occupancy.md §1–§2. The arithmetic there ("~128 sub-second steps a 30-minute index actually occupies") is a measurement of a shape this story deleted, and it is load-bearing in the argument that a supervisor does not delay the fast lane. Say what the shape is now. Do not restate the conclusion as though nothing happened — the conclusion still holds and its reason changed, and those are two different sentences.
ENDS at: the four documents describing the substrate that actually runs.
Does NOT touch docs/decisions/job-queue-foundation.md. The restart decision amends that file, and two cards editing one record is how a merge conflict becomes a lost amendment. If something here needs to reference the durability rule, LINK to it.
⚠️ docs/jobs.md is edited by THREE cards in this epic, in three different sections. MOTIR-3460 owns the emit seam and engine-side idempotency; MOTIR-3474 owns § Scheduled jobs; this card owns rule 1 and § Debounce. Expect to rebase, and do not correct a sentence that belongs to one of the others — a well-meant fix in a neighbouring section is the conflict nobody sees coming.
Does NOT claim Inngest is retired. It is not, when this lands: three families still run on it and the SDK is still a dependency. Every statement here is about what the engine DOES, never about what has been removed — MOTIR-3418 owns the retirement and its documentation.
Changes no code. If a code comment is found to be wrong while writing this, it belongs to whichever collapse card owns that file — and both of them carry a criterion for exactly that.
git grep -n "maxDuration" docs/ returns no hit that asserts the ceiling as a CURRENT constraint; each surviving mention is either historical and labelled as such, or gone.docs/jobs.md rule 1 describes the long-lived worker, and says what the rule was true of before.docs/jobs.md § Debounce documents the ENGINE's mechanism — key resolution and its refusal case, what pushes run_at, the already-claimed case, and the deferral cap — beside MOTIR-2994's Inngest measurement, which is retained and attributed to its lane.docs/decisions/code-graph-index-fleet.md carries a dated amendment in the style of its own §7.4, covering §2, §7.3 and §11.docs/decisions/job-lane-occupancy.md §1–§2 states the current shape, and the argument that a supervisor does not delay the fast lane is re-grounded rather than merely reasserted.git diff --stat shows no change under docs/decisions/job-queue-foundation.md, lib/, or tests/.origin/main at the time of writing and not carried from this card's own text.docs/jobs.md — rule 1, and § Debounce with MOTIR-2994's burst tabledocs/decisions/code-graph-index-fleet.md — §2, §7.3, §7.4 (the amendment style to follow), §11docs/decisions/job-lane-occupancy.md — §1 the sleeping-slot finding, §2 the step arithmeticlib/jobs/engine/worker.ts — the lease and heartbeat the new rule 1 describeslib/jobs/engine/step.ts — what durability now rests on