diff --git a/packages/engine/src/scheduler.ts b/packages/engine/src/scheduler.ts index b0ececb1ee..d7de5c9c49 100644 --- a/packages/engine/src/scheduler.ts +++ b/packages/engine/src/scheduler.ts @@ -960,7 +960,7 @@ export class Scheduler { logger: schedulerLog, }); /* - FNXC:ConcurrencyAdmission 2026-08-06-09:00: + FNXC:ConcurrencyAdmission 2026-07-31-09:00: FN-8453's union must outlive a single scheduler poll. A temporary provider was gone before planning/merge asked for capacity, allowing newer work to overtake ready execute work. The refreshed map is the durable lane view. @@ -1404,7 +1404,7 @@ export class Scheduler { const deletedParked = await resolveTaskParkedColumns(this.store, task.id); /* - FNXC:WorkflowLifecycleColumns 2026-08-01-05:00: + FNXC:WorkflowLifecycleColumns 2026-07-31-05:00: A HALF-CONVERTED PAIR, one line apart. The hold read above already resolved its lane while the wip read below stayed on the literal, so on a renamed board this dependent sweep saw the queued cards and none of the running ones — a dependency held by an in-flight task was @@ -2255,7 +2255,7 @@ export class Scheduler { && typeof task.worktree === "string" && task.worktree.length > 0) .map((task) => task.id); /* - FNXC:WorkflowScheduling 2026-08-01-01:05 (self-deadlock in the widened ledger, observed live): + FNXC:WorkflowScheduling 2026-07-31-01:05 (self-deadlock in the widened ledger, observed live): A planned Ready card RETAINS its planning worktree for execution reuse, so counting it as a holder must not block ITS OWN release — on release the slot TRANSFERS (the card executes in the same worktree), it does not add. Without this exclusion the first unpause released only