From f44ce1ddbbc48b523d2fddd80c4a6a3927c8ebf3 Mon Sep 17 00:00:00 2001 From: "Russ T. Fugal" Date: Fri, 12 Jun 2026 03:26:02 -0600 Subject: [PATCH] style: prettier pass on serialSGS ModeSelection changes --- src/level-core/search/serialSGS.ts | 32 +++++++++++++++++++++++++----- src/level-core/weeklyProfile.ts | 5 ++++- test/level-core/serialSGS.test.ts | 4 +++- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/level-core/search/serialSGS.ts b/src/level-core/search/serialSGS.ts index 5710c74..dd6291b 100644 --- a/src/level-core/search/serialSGS.ts +++ b/src/level-core/search/serialSGS.ts @@ -416,7 +416,11 @@ function placeTask( const recordRealized = (mode: PlacementMode): void => { if (!isModeTask) return; // single static mode → buildResourceLoad uses resolved.assignments for (const r of mode.demand) { - realized.push({ taskUniqueId: task.uniqueId, resourceUniqueId: r.resourceUniqueId, units: r.units }); + realized.push({ + taskUniqueId: task.uniqueId, + resourceUniqueId: r.resourceUniqueId, + units: r.units, + }); } }; @@ -435,7 +439,7 @@ function placeTask( uniqueId: task.uniqueId, startDay: lowerBound, finishDay: lowerBound, - modeId: isModeTask ? (modes[0]!.modeId) : null, + modeId: isModeTask ? modes[0]!.modeId : null, }); recordRealized(modes[0]!); return { explanation: null }; @@ -461,10 +465,25 @@ function placeTask( } anyModeMeetsDeadline = true; if ( - isFeasible(task.uniqueId, startDay, finishDay, mode.demand, cal, caps, load, unitCaps, unitLoad) + isFeasible( + task.uniqueId, + startDay, + finishDay, + mode.demand, + cal, + caps, + load, + unitCaps, + unitLoad, + ) ) { applyLoad(task.uniqueId, startDay, finishDay, mode.demand, cal, load, unitCaps, unitLoad); - scheduled.set(task.uniqueId, { uniqueId: task.uniqueId, startDay, finishDay, modeId: mode.modeId }); + scheduled.set(task.uniqueId, { + uniqueId: task.uniqueId, + startDay, + finishDay, + modeId: mode.modeId, + }); recordRealized(mode); return { explanation: null }; } @@ -479,7 +498,10 @@ function placeTask( explanation: { violated: { kind: "Deadline", taskUniqueId: task.uniqueId, latestFinish: deadline }, involvedTaskIds: [task.uniqueId], - atDays: { fromDay: startDay, toDay: minMissFinish === Infinity ? deadline : minMissFinish }, + atDays: { + fromDay: startDay, + toDay: minMissFinish === Infinity ? deadline : minMissFinish, + }, message: `Deadline ${String(deadline)} violated: task ${String(task.uniqueId)} earliest feasible finish is ${String(minMissFinish)}`, }, }; diff --git a/src/level-core/weeklyProfile.ts b/src/level-core/weeklyProfile.ts index b6c5ad6..eafd514 100644 --- a/src/level-core/weeklyProfile.ts +++ b/src/level-core/weeklyProfile.ts @@ -29,7 +29,10 @@ export function buildResourceLoad(schedule: Schedule): ResourceLoad { const realized = schedule.realizedAssignments; const overridden = realized ? new Set(realized.map((a) => a.taskUniqueId)) : null; const effective = realized - ? [...schedule.resolved.assignments.filter((a) => !overridden!.has(a.taskUniqueId)), ...realized] + ? [ + ...schedule.resolved.assignments.filter((a) => !overridden!.has(a.taskUniqueId)), + ...realized, + ] : schedule.resolved.assignments; for (const a of effective) { diff --git a/test/level-core/serialSGS.test.ts b/test/level-core/serialSGS.test.ts index 5ad459d..bcbb5a4 100644 --- a/test/level-core/serialSGS.test.ts +++ b/test/level-core/serialSGS.test.ts @@ -622,7 +622,9 @@ describe("serialSGS — ModeSelection (multi-mode RCPSP)", () => { const s = schedule.tasks.find((t) => t.uniqueId === 1)!; expect(s.startDay).toBe(0); expect(s.modeId).toBe(0); // home crew, not borrowed - expect(schedule.realizedAssignments).toEqual([{ taskUniqueId: 1, resourceUniqueId: 100, units: 1 }]); + expect(schedule.realizedAssignments).toEqual([ + { taskUniqueId: 1, resourceUniqueId: 100, units: 1 }, + ]); }); test("borrows the second mode to start earlier when the home resource is saturated", async () => { -- 2.54.0