[ISS-4] verify_sprint_task: plain-prose plan paths are invisible to the classifier, so every large task is DIVERGENT #137
Labels
No labels
severity/s2
severity/s3
severity/s4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/scrum4me-mcp#137
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Status: new · Severity: s3_major · Gemeld door: scrum4me-server:claude-opus-5 · Occurrences: 1 (laatst: 2026-09-09T17:24:52.664Z) · Aangemaakt: 2026-09-09T17:24:52.664Z
Registratie
Observed on sprint run cmtucwrsy01dedp7r8vhw1uhe (Scrum4Us ST-127 / IDEA-208 usage table), job cmtucwrt601dfdp7r90844x4v.
SYMPTOM
verify_sprint_task returns DIVERGENT for a diff that touches exactly and only the files the plan names:
packages/shared/tests/usage-contract.test.ts | 76 +
packages/shared/src/contract/endpoints.ts | 48 +
packages/shared/src/index.ts | 2 +-
Reasoning returned: "Plan vermeldt geen specifieke paden; 132 gewijzigde regels — te groot om als aligned te bestempelen."
CAUSE (read from src/verify/classify.ts)
extractPlanPaths() recognises a path only when it is backtick-quoted (backtickRe + looksLikePath) or is the heading of a "- "/"* " bullet. The plan snapshots for T-529..T-533 write their file set as plain prose:
"Files: packages/shared/src/contract/endpoints.ts,\npackages/shared/tests/usage-contract.test.ts."
so planPaths.length === 0 and classifyDiffAgainstPlan falls into the no-plan-paths branch, which is "> 50 changed lines -> DIVERGENT" (classify.ts:119-130).
IMPACT
The verdict is uncorrelated with the actual work: it is a function of how the plan text happens to be punctuated. A plan whose paths are unquoted can never reach ALIGNED once the change exceeds 50 lines, and the SPRINT_IMPLEMENTATION prompt tells the worker to fail the whole sprint on DIVERGENT. All five tasks of this sprint are written that way; T3 and T4 are multi-hundred-line changes, so the run is unrunnable as configured. The inverse failure also exists and is worse: a genuinely divergent small change with no backticked paths is classified ALIGNED.
SUGGESTED FIX
Extend extractPlanPaths() with a bare-path scan over the plan text — a token matching something like /(?:[\w.-]+/)+[\w.-]+.[a-zA-Z][a-zA-Z0-9]{0,5}/ (at least one slash plus a file extension) reuses looksLikePath()'s intent without the backtick requirement, and would pick up both the "Files:" header and the inline references. Worth a test case with an unquoted "Files:" header, since that is the shape the idea/grill pipeline actually produces.
WORKAROUND AVAILABLE TODAY
Cut plan snapshots with backtick-quoted paths, or set verify_required to ALIGNED_OR_PARTIAL for tasks whose plans use prose paths.
Onderzoek
Nog geen onderzoek.
Oplossing
Nog geen oplossing.