feat(FN-5009): merge fusion/fn-5009

This commit is contained in:
gsxdsm
2026-05-18 12:31:21 -07:00
parent 9aa7518bad
commit a8a413cc91
10 changed files with 513 additions and 0 deletions

View File

@@ -29,6 +29,7 @@ import type { MeshLeaseManager } from "./mesh-lease-manager.js";
import { selectPermanentAgentForTask } from "./agent-assignment.js";
import type { AutoClaimSnapshotManager } from "./auto-claim-snapshot.js";
import { StaleTaskReporter } from "./stale-task-reporter.js";
import { BacklogPressureReporter } from "./backlog-pressure-reporter.js";
import { createRunAuditor, generateSyntheticRunId } from "./run-audit.js";
/**
@@ -281,7 +282,9 @@ export class Scheduler {
/** Tracks dispatch-queued reason signatures to avoid per-tick log spam. */
private wasDispatchQueuedReasonLogged = new Set<string>();
private readonly staleTaskReporter: StaleTaskReporter;
private readonly backlogPressureReporter: BacklogPressureReporter;
private lastStaleTaskReportAt = 0;
private lastBacklogPressureReportAt = 0;
private readonly lastHighOverlapFanoutWarningKey = new Map<string, string>();
/**
@@ -296,6 +299,11 @@ export class Scheduler {
private options: SchedulerOptions = {},
) {
this.staleTaskReporter = new StaleTaskReporter({ store: this.store });
this.backlogPressureReporter = new BacklogPressureReporter({
store: this.store,
projectId: this.store.getRootDir(),
logger: schedulerLog,
});
/**
* Event-driven scheduling: when a task is created, trigger a scheduling
* pass immediately instead of waiting for the next poll interval.
@@ -1399,6 +1407,16 @@ export class Scheduler {
schedulerLog.warn("Stale task reporter failed", error);
}
}
if (settings.backlogPressureAlertEnabled !== false && Date.now() - this.lastBacklogPressureReportAt >= 60_000) {
try {
await this.backlogPressureReporter.report();
} catch (error) {
schedulerLog.warn("Backlog pressure reporter failed", error);
} finally {
this.lastBacklogPressureReportAt = Date.now();
}
}
} catch (err) {
schedulerLog.error("Scheduling error:", err);
} finally {