fix(gsd): set slice sequence at all three insertion sites
All slices got sequence=0 because the three code paths that insert slices never set the sequence column. This made positional ordering degenerate to alphabetical-by-ID, causing deadlocks when dependency- free slices were ordered after blocked ones. Now passes sequence at: - plan-milestone: array index from agent-ordered params.slices - reassess-roadmap: existingCount + index for newly added slices - md-importer: parse order from roadmap content Closes #3356 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
b4c6229360
commit
2d3723691a
3 changed files with 11 additions and 4 deletions
|
|
@ -586,7 +586,8 @@ export function migrateHierarchyToDb(basePath: string): {
|
|||
// Parse roadmap for slices
|
||||
if (!roadmap) continue;
|
||||
|
||||
for (const sliceEntry of roadmap.slices) {
|
||||
for (let si = 0; si < roadmap.slices.length; si++) {
|
||||
const sliceEntry = roadmap.slices[si]!;
|
||||
// Per K002: use 'complete' not 'done'
|
||||
const sliceStatus = sliceEntry.done ? 'complete' : 'pending';
|
||||
|
||||
|
|
@ -606,6 +607,7 @@ export function migrateHierarchyToDb(basePath: string): {
|
|||
risk: sliceEntry.risk,
|
||||
depends: sliceEntry.depends,
|
||||
demo: sliceEntry.demo,
|
||||
sequence: si + 1, // Preserve roadmap parse order (#3356)
|
||||
planning: {
|
||||
goal: plan?.goal ?? '',
|
||||
},
|
||||
|
|
|
|||
|
|
@ -256,7 +256,8 @@ export async function handlePlanMilestone(
|
|||
boundaryMapMarkdown: params.boundaryMapMarkdown,
|
||||
});
|
||||
|
||||
for (const slice of params.slices) {
|
||||
for (let i = 0; i < params.slices.length; i++) {
|
||||
const slice = params.slices[i]!;
|
||||
// Preserve completed/done status on re-plan (#2558).
|
||||
// Without this, a re-plan after milestone transition would reset
|
||||
// already-completed slices back to "pending".
|
||||
|
|
@ -272,6 +273,7 @@ export async function handlePlanMilestone(
|
|||
risk: slice.risk,
|
||||
depends: slice.depends,
|
||||
demo: slice.demo,
|
||||
sequence: i + 1, // Preserve agent-ordered sequence (#3356)
|
||||
});
|
||||
upsertSlicePlanning(params.milestoneId, slice.sliceId, {
|
||||
goal: slice.goal,
|
||||
|
|
|
|||
|
|
@ -186,8 +186,10 @@ export async function handleReassessRoadmap(
|
|||
});
|
||||
}
|
||||
|
||||
// Insert new slices
|
||||
for (const added of params.sliceChanges.added) {
|
||||
// Insert new slices — assign sequence after existing slices (#3356)
|
||||
const existingCount = getMilestoneSlices(params.milestoneId).length;
|
||||
for (let i = 0; i < params.sliceChanges.added.length; i++) {
|
||||
const added = params.sliceChanges.added[i]!;
|
||||
insertSlice({
|
||||
id: added.sliceId,
|
||||
milestoneId: params.milestoneId,
|
||||
|
|
@ -196,6 +198,7 @@ export async function handleReassessRoadmap(
|
|||
risk: added.risk,
|
||||
depends: added.depends,
|
||||
demo: added.demo ?? "",
|
||||
sequence: existingCount + i + 1,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue