Gantt bars use the capacity-aware lane layout (match the forecast)
ganttView ran schedule() — the single-serial-worker layout — while the Monte Carlo forecast ran scheduleWithCapacity() over the real lanes. So the bars you saw didn't match what was forecast (serial 1.0/day vs the team's actual lanes). Switch ganttView to scheduleWithCapacity(open, deps, workers): startDay/endDay now come from the same lane layout each forecast trial uses, and `who` shows the lane an issue actually landed on (falling back to assignee, then blank). The dogfood harness had the same split — updated it to match and to print the lane per row. Verified: typecheck clean, 14 fixture e2e green, live-onboarding e2e renders the real capacity-aware Gantt with no uncaught errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,7 @@ import {
|
||||
inferLifecycle,
|
||||
parseCapacityConfig,
|
||||
capacityPerWorkday,
|
||||
schedule,
|
||||
scheduleWithCapacity,
|
||||
type GiteaIssue,
|
||||
type DependencyEdge,
|
||||
type Worker,
|
||||
@@ -94,7 +94,7 @@ async function main() {
|
||||
assignee: i.assignee,
|
||||
}))
|
||||
|
||||
const plan = schedule(toSchedulable(open), edges)
|
||||
const plan = scheduleWithCapacity(toSchedulable(open), edges, workers)
|
||||
const today = new Date()
|
||||
const f = forecast(toSchedulable(open), edges, { workers })
|
||||
|
||||
@@ -108,9 +108,10 @@ async function main() {
|
||||
console.log(`\n Schedule (dependency + priority order, ${workers.length || 1} lane${workers.length === 1 ? '' : 's'}):`)
|
||||
for (const it of plan.items) {
|
||||
const crit = it.critical ? ' ★crit' : ''
|
||||
const lane = it.worker ? ` [${it.worker}]` : ''
|
||||
const blocks = it.blocks.length ? ` blocks ${it.blocks.map((b) => '#' + b).join(',')}` : ''
|
||||
console.log(
|
||||
` #${String(it.number).padEnd(3)} ${fmt(addWorkingDays(today, it.startDay))}→${fmt(addWorkingDays(today, it.endDay))}${crit.padEnd(7)} ${it.title.slice(0, 40)}${blocks}`,
|
||||
` #${String(it.number).padEnd(3)} ${fmt(addWorkingDays(today, it.startDay))}→${fmt(addWorkingDays(today, it.endDay))}${crit.padEnd(7)}${lane} ${it.title.slice(0, 38)}${blocks}`,
|
||||
)
|
||||
}
|
||||
if (plan.cycle) console.log(` ⚠ dependency cycle: ${plan.cycle.join(' → ')}`)
|
||||
|
||||
Reference in New Issue
Block a user