Dependency-aware queue implementation CS-001
● Changes requestedReview RV-001Base: main@faec4c7 → Candidate: cs-001@8bd27aeTask: Queue legality + DAG validation
Changed files · 6
queue.ts+89 −19
task.ts+61 −19
dependency.ts+74 −0
queue-dnd.ts+68 −8
queue.test.ts+112 −2
queue.md+34 −0
118118export function moveTask(queue, taskId, targetIndex) {
119- queue.splice(targetIndex, 0, task)
119+ const legal = legalPlacementRange(queue, taskId)
120+ if (!legal.includes(targetIndex)) {
121+ throw new DependencyOrderError(taskId, targetIndex)
122+ }
120123 return reorder(queue, taskId, targetIndex)
121124}
146149export function legalPlacementRange(queue, taskId) {
150+ const prerequisites = graph.prerequisites(taskId)
151+ const dependents = graph.dependents(taskId)
152+ return rangeAfter(prerequisites).before(dependents)
147153}
Blocking finding at line 152
Cross-Plan prerequisites are filtered out by the local queue projection. Server-side legality can accept an invalid placement when the prerequisite belongs to another Plan.
MergeGate — not ready
Merge is unavailable because Review has one blocking finding. Start a correction from this exact candidate; the correction produces a new ChangeSet revision and re-evaluates Review/evidence.