@slope-dev/slope 1.63.0 → 1.64.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/cli/commands/claim.d.ts.map +1 -1
  2. package/dist/cli/commands/claim.js +57 -1
  3. package/dist/cli/commands/claim.js.map +1 -1
  4. package/dist/cli/commands/guard.d.ts.map +1 -1
  5. package/dist/cli/commands/guard.js +43 -14
  6. package/dist/cli/commands/guard.js.map +1 -1
  7. package/dist/cli/commands/init.d.ts.map +1 -1
  8. package/dist/cli/commands/init.js +3 -2
  9. package/dist/cli/commands/init.js.map +1 -1
  10. package/dist/cli/commands/now.d.ts.map +1 -1
  11. package/dist/cli/commands/now.js +5 -2
  12. package/dist/cli/commands/now.js.map +1 -1
  13. package/dist/cli/commands/pr.d.ts +10 -3
  14. package/dist/cli/commands/pr.d.ts.map +1 -1
  15. package/dist/cli/commands/pr.js +45 -5
  16. package/dist/cli/commands/pr.js.map +1 -1
  17. package/dist/cli/commands/retro.d.ts.map +1 -1
  18. package/dist/cli/commands/retro.js +31 -4
  19. package/dist/cli/commands/retro.js.map +1 -1
  20. package/dist/cli/commands/review.d.ts +13 -1
  21. package/dist/cli/commands/review.d.ts.map +1 -1
  22. package/dist/cli/commands/review.js +99 -8
  23. package/dist/cli/commands/review.js.map +1 -1
  24. package/dist/cli/commands/roadmap.d.ts.map +1 -1
  25. package/dist/cli/commands/roadmap.js +75 -22
  26. package/dist/cli/commands/roadmap.js.map +1 -1
  27. package/dist/cli/commands/session.d.ts.map +1 -1
  28. package/dist/cli/commands/session.js +81 -15
  29. package/dist/cli/commands/session.js.map +1 -1
  30. package/dist/cli/commands/sprint.d.ts.map +1 -1
  31. package/dist/cli/commands/sprint.js +24 -6
  32. package/dist/cli/commands/sprint.js.map +1 -1
  33. package/dist/cli/commands/standup.d.ts.map +1 -1
  34. package/dist/cli/commands/standup.js +68 -0
  35. package/dist/cli/commands/standup.js.map +1 -1
  36. package/dist/cli/commands/status.d.ts.map +1 -1
  37. package/dist/cli/commands/status.js +25 -0
  38. package/dist/cli/commands/status.js.map +1 -1
  39. package/dist/cli/commands/transcript.d.ts.map +1 -1
  40. package/dist/cli/commands/transcript.js +15 -4
  41. package/dist/cli/commands/transcript.js.map +1 -1
  42. package/dist/cli/commands/validate.d.ts +11 -0
  43. package/dist/cli/commands/validate.d.ts.map +1 -1
  44. package/dist/cli/commands/validate.js +45 -5
  45. package/dist/cli/commands/validate.js.map +1 -1
  46. package/dist/cli/guards/claim-area.d.ts +27 -0
  47. package/dist/cli/guards/claim-area.d.ts.map +1 -0
  48. package/dist/cli/guards/claim-area.js +44 -0
  49. package/dist/cli/guards/claim-area.js.map +1 -0
  50. package/dist/cli/guards/claim-required.d.ts.map +1 -1
  51. package/dist/cli/guards/claim-required.js +41 -14
  52. package/dist/cli/guards/claim-required.js.map +1 -1
  53. package/dist/cli/guards/docs.d.ts.map +1 -1
  54. package/dist/cli/guards/docs.js +7 -0
  55. package/dist/cli/guards/docs.js.map +1 -1
  56. package/dist/cli/guards/phase-boundary.d.ts.map +1 -1
  57. package/dist/cli/guards/phase-boundary.js +34 -1
  58. package/dist/cli/guards/phase-boundary.js.map +1 -1
  59. package/dist/cli/guards/plan-analysis.d.ts +2 -2
  60. package/dist/cli/guards/plan-analysis.d.ts.map +1 -1
  61. package/dist/cli/guards/plan-analysis.js +16 -2
  62. package/dist/cli/guards/plan-analysis.js.map +1 -1
  63. package/dist/cli/guards/pr-review.d.ts +0 -8
  64. package/dist/cli/guards/pr-review.d.ts.map +1 -1
  65. package/dist/cli/guards/pr-review.js +31 -0
  66. package/dist/cli/guards/pr-review.js.map +1 -1
  67. package/dist/cli/guards/scope-drift.d.ts.map +1 -1
  68. package/dist/cli/guards/scope-drift.js +2 -4
  69. package/dist/cli/guards/scope-drift.js.map +1 -1
  70. package/dist/cli/guards/shell-write.d.ts +23 -0
  71. package/dist/cli/guards/shell-write.d.ts.map +1 -0
  72. package/dist/cli/guards/shell-write.js +81 -0
  73. package/dist/cli/guards/shell-write.js.map +1 -0
  74. package/dist/cli/guards/sprint-completion.js +11 -5
  75. package/dist/cli/guards/sprint-completion.js.map +1 -1
  76. package/dist/cli/guards/workflow-step-gate.d.ts.map +1 -1
  77. package/dist/cli/guards/workflow-step-gate.js +28 -3
  78. package/dist/cli/guards/workflow-step-gate.js.map +1 -1
  79. package/dist/cli/guards/worktree-check.d.ts.map +1 -1
  80. package/dist/cli/guards/worktree-check.js +86 -52
  81. package/dist/cli/guards/worktree-check.js.map +1 -1
  82. package/dist/cli/index.js +2 -1
  83. package/dist/cli/index.js.map +1 -1
  84. package/dist/cli/loop/workflow-adapter.d.ts.map +1 -1
  85. package/dist/cli/loop/workflow-adapter.js +3 -0
  86. package/dist/cli/loop/workflow-adapter.js.map +1 -1
  87. package/dist/cli/registry.d.ts.map +1 -1
  88. package/dist/cli/registry.js +2 -0
  89. package/dist/cli/registry.js.map +1 -1
  90. package/dist/cli/roadmap-source-store.d.ts +27 -1
  91. package/dist/cli/roadmap-source-store.d.ts.map +1 -1
  92. package/dist/cli/roadmap-source-store.js +213 -22
  93. package/dist/cli/roadmap-source-store.js.map +1 -1
  94. package/dist/cli/session-scope.d.ts +35 -0
  95. package/dist/cli/session-scope.d.ts.map +1 -0
  96. package/dist/cli/session-scope.js +79 -0
  97. package/dist/cli/session-scope.js.map +1 -0
  98. package/dist/cli/session-state.d.ts.map +1 -1
  99. package/dist/cli/session-state.js +5 -2
  100. package/dist/cli/session-state.js.map +1 -1
  101. package/dist/cli/sprint-rollover.d.ts +17 -2
  102. package/dist/cli/sprint-rollover.d.ts.map +1 -1
  103. package/dist/cli/sprint-rollover.js +163 -40
  104. package/dist/cli/sprint-rollover.js.map +1 -1
  105. package/dist/cli/sprint-state.d.ts +18 -0
  106. package/dist/cli/sprint-state.d.ts.map +1 -1
  107. package/dist/cli/sprint-state.js +26 -0
  108. package/dist/cli/sprint-state.js.map +1 -1
  109. package/dist/cli/template-generator.d.ts.map +1 -1
  110. package/dist/cli/template-generator.js +1 -0
  111. package/dist/cli/template-generator.js.map +1 -1
  112. package/dist/cli/workflow-resync.d.ts +5 -2
  113. package/dist/cli/workflow-resync.d.ts.map +1 -1
  114. package/dist/cli/workflow-resync.js +28 -0
  115. package/dist/cli/workflow-resync.js.map +1 -1
  116. package/dist/core/config.d.ts +3 -0
  117. package/dist/core/config.d.ts.map +1 -1
  118. package/dist/core/config.js.map +1 -1
  119. package/dist/core/formatter.js +4 -4
  120. package/dist/core/formatter.js.map +1 -1
  121. package/dist/core/guard.d.ts +1 -1
  122. package/dist/core/guard.d.ts.map +1 -1
  123. package/dist/core/guard.js +9 -0
  124. package/dist/core/guard.js.map +1 -1
  125. package/dist/core/index.d.ts +7 -3
  126. package/dist/core/index.d.ts.map +1 -1
  127. package/dist/core/index.js +4 -2
  128. package/dist/core/index.js.map +1 -1
  129. package/dist/core/roadmap-source-patch.d.ts +26 -0
  130. package/dist/core/roadmap-source-patch.d.ts.map +1 -0
  131. package/dist/core/roadmap-source-patch.js +172 -0
  132. package/dist/core/roadmap-source-patch.js.map +1 -0
  133. package/dist/core/roadmap-sources.d.ts +44 -0
  134. package/dist/core/roadmap-sources.d.ts.map +1 -1
  135. package/dist/core/roadmap-sources.js +235 -37
  136. package/dist/core/roadmap-sources.js.map +1 -1
  137. package/dist/core/roadmap.d.ts +50 -1
  138. package/dist/core/roadmap.d.ts.map +1 -1
  139. package/dist/core/roadmap.js +72 -6
  140. package/dist/core/roadmap.js.map +1 -1
  141. package/dist/core/sprint-id.d.ts +29 -0
  142. package/dist/core/sprint-id.d.ts.map +1 -0
  143. package/dist/core/sprint-id.js +86 -0
  144. package/dist/core/sprint-id.js.map +1 -0
  145. package/dist/core/standup.d.ts +18 -0
  146. package/dist/core/standup.d.ts.map +1 -1
  147. package/dist/core/standup.js +23 -1
  148. package/dist/core/standup.js.map +1 -1
  149. package/package.json +4 -2
  150. package/templates/claude-code/commands/wrap-session.md +36 -0
  151. package/templates/codex/plugins/slope/.codex-plugin/plugin.json +1 -1
  152. package/templates/pi/skills/wrap-session.md +41 -0
@@ -1,9 +1,17 @@
1
1
  import { isAbsolute, posix } from 'node:path';
2
2
  import { parseDocument } from 'yaml';
3
3
  import { castRoadmapStructure, getRoadmapTicketKey, validateRoadmap } from './roadmap.js';
4
- import { compareRoadmapSprintIds, roadmapSprintOrderValue } from './roadmap.js';
4
+ import { compareRoadmapSprintIds, describeSprintIdAmbiguity, roadmapSprintKey } from './roadmap.js';
5
+ import { sprintIdKey } from './sprint-id.js';
5
6
  export class RoadmapSourceError extends Error {
6
7
  sourcePath;
8
+ /**
9
+ * True when the failure is a refusal to discard authored content that exists
10
+ * only in the generated projection. Callers must treat this as fatal rather
11
+ * than downgrading it to a warning — reporting success while planning work is
12
+ * destroyed is the whole defect (GH #637).
13
+ */
14
+ projectionContentLoss;
7
15
  constructor(message, sourcePath) {
8
16
  super(sourcePath ? `${normalizeDiagnosticPath(sourcePath)}: ${message}` : message);
9
17
  this.sourcePath = sourcePath;
@@ -118,7 +126,46 @@ export function parseRoadmapSourceProject(yaml, sourcePath = 'docs/roadmap/proje
118
126
  sources,
119
127
  };
120
128
  }
129
+ /**
130
+ * Reject sprint ids written with a trailing zero in the fraction before YAML
131
+ * parsing collapses them.
132
+ *
133
+ * `458.10` parses to the number 458.1, so by the time any validator sees the
134
+ * document the id has already silently become an existing sprint — the text is the
135
+ * only place the ambiguity is still visible (GH #635).
136
+ *
137
+ * Scans only the two positions a sprint id is written: a `- <number>` item under
138
+ * `phase.sprints`, and an `id: <number>` key on a sprint mapping. Other decimals in
139
+ * the file (par, slope, version) are left alone.
140
+ */
141
+ function assertNoAmbiguousWrittenSprintIds(yaml, sourcePath) {
142
+ const lines = yaml.split(/\r?\n/);
143
+ let inPhaseSprints = false;
144
+ for (const [index, line] of lines.entries()) {
145
+ if (/^\s*sprints:\s*$/.test(line)) {
146
+ // `phase.sprints` is indented; the top-level `sprints:` list is not.
147
+ inPhaseSprints = /^\s+sprints:\s*$/.test(line);
148
+ continue;
149
+ }
150
+ const idMatch = line.match(/^\s*-?\s*id:\s*([0-9]+\.[0-9]+)\s*(?:#.*)?$/);
151
+ const itemMatch = inPhaseSprints
152
+ ? line.match(/^\s*-\s*([0-9]+\.[0-9]+)\s*(?:#.*)?$/)
153
+ : null;
154
+ const written = idMatch?.[1] ?? itemMatch?.[1];
155
+ if (!written) {
156
+ // Any non-list, non-blank line ends the phase.sprints block.
157
+ if (inPhaseSprints && line.trim() && !/^\s*-/.test(line))
158
+ inPhaseSprints = false;
159
+ continue;
160
+ }
161
+ const problem = describeSprintIdAmbiguity(written);
162
+ if (problem) {
163
+ throw new RoadmapSourceError(`line ${index + 1}: ${problem}`, sourcePath);
164
+ }
165
+ }
166
+ }
121
167
  export function parseRoadmapSourceDocument(yaml, sourcePath) {
168
+ assertNoAmbiguousWrittenSprintIds(yaml, sourcePath);
122
169
  const raw = parseYamlMapping(yaml, sourcePath);
123
170
  const version = parseVersion(raw.version, sourcePath);
124
171
  if (!raw.phase || typeof raw.phase !== 'object' || Array.isArray(raw.phase)) {
@@ -133,10 +180,25 @@ export function parseRoadmapSourceDocument(yaml, sourcePath) {
133
180
  throw new RoadmapSourceError(`phase.${field} must be a string when present`, sourcePath);
134
181
  }
135
182
  }
136
- if (!Array.isArray(phase.sprints)
137
- || phase.sprints.some(id => typeof id !== 'number' || !Number.isFinite(id) || id <= 0)) {
138
- throw new RoadmapSourceError('phase.sprints must be a sequence of positive numeric sprint IDs', sourcePath);
183
+ // Accept string-authored membership ids (e.g. "458.10") alongside numbers.
184
+ // Record the canonical keys and coerce the numeric mirror (GH #635).
185
+ if (!Array.isArray(phase.sprints)) {
186
+ throw new RoadmapSourceError('phase.sprints must be a sequence of sprint IDs', sourcePath);
187
+ }
188
+ const memberKeys = [];
189
+ let anyStringMember = false;
190
+ for (const [i, member] of phase.sprints.entries()) {
191
+ if (typeof member === 'string')
192
+ anyStringMember = true;
193
+ const key = typeof member === 'number' || typeof member === 'string' ? sprintIdKey(member) : null;
194
+ if (key === null) {
195
+ throw new RoadmapSourceError(`phase.sprints[${i}] is not a valid sprint id`, sourcePath);
196
+ }
197
+ memberKeys.push(key);
198
+ phase.sprints[i] = Number(key);
139
199
  }
200
+ if (anyStringMember)
201
+ phase.sprint_keys = memberKeys;
140
202
  if (!Array.isArray(raw.sprints)) {
141
203
  throw new RoadmapSourceError('sprints must be a sequence', sourcePath);
142
204
  }
@@ -157,8 +219,19 @@ export function parseRoadmapSourceDocument(yaml, sourcePath) {
157
219
  throw new RoadmapSourceError(`sprints[${sprintIndex}] must be a mapping`, sourcePath);
158
220
  }
159
221
  const sprint = value;
160
- if (typeof sprint.id !== 'number' || !Number.isFinite(sprint.id) || sprint.id <= 0) {
161
- throw new RoadmapSourceError(`sprints[${sprintIndex}].id must be a positive number`, sourcePath);
222
+ // Accept a string-authored id to preserve an exact suffix a number cannot
223
+ // hold (e.g. "458.10"). Record the canonical id_key and coerce id to its
224
+ // numeric mirror for ordering and the store (GH #635).
225
+ if (typeof sprint.id === 'string') {
226
+ const key = sprintIdKey(sprint.id);
227
+ if (key === null) {
228
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].id is not a valid sprint id: ${sprint.id}`, sourcePath);
229
+ }
230
+ sprint.id_key = key;
231
+ sprint.id = Number(key);
232
+ }
233
+ else if (typeof sprint.id !== 'number' || !Number.isFinite(sprint.id) || sprint.id <= 0) {
234
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].id must be a positive number or a quoted sprint id`, sourcePath);
162
235
  }
163
236
  if (typeof sprint.theme !== 'string' || !sprint.theme.trim()) {
164
237
  throw new RoadmapSourceError(`sprints[${sprintIndex}].theme must be a non-empty string`, sourcePath);
@@ -172,10 +245,20 @@ export function parseRoadmapSourceDocument(yaml, sourcePath) {
172
245
  if (typeof sprint.type !== 'string' || !sprint.type.trim()) {
173
246
  throw new RoadmapSourceError(`sprints[${sprintIndex}].type must be a non-empty string`, sourcePath);
174
247
  }
175
- if (sprint.depends_on != null
176
- && (!Array.isArray(sprint.depends_on)
177
- || sprint.depends_on.some(id => typeof id !== 'number' || !Number.isFinite(id) || id <= 0))) {
178
- throw new RoadmapSourceError(`sprints[${sprintIndex}].depends_on must contain numeric sprint IDs`, sourcePath);
248
+ // depends_on may reference a canonical string id (e.g. "458.10"); coerce to
249
+ // the numeric mirror. Distinctness between coexisting 458.1 and 458.10 in a
250
+ // dependency uses the numeric mirror, the same boundary as the store (GH #635).
251
+ if (sprint.depends_on != null) {
252
+ if (!Array.isArray(sprint.depends_on)) {
253
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].depends_on must be a sequence of sprint IDs`, sourcePath);
254
+ }
255
+ for (const [i, dep] of sprint.depends_on.entries()) {
256
+ const key = typeof dep === 'number' || typeof dep === 'string' ? sprintIdKey(dep) : null;
257
+ if (key === null) {
258
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].depends_on[${i}] is not a valid sprint id`, sourcePath);
259
+ }
260
+ sprint.depends_on[i] = Number(key);
261
+ }
179
262
  }
180
263
  for (const field of ['status', 'note', 'outcome', 'phase', 'wave']) {
181
264
  if (sprint[field] != null && typeof sprint[field] !== 'string') {
@@ -327,6 +410,111 @@ export function compileRoadmapSources(project, sources) {
327
410
  export function serializeRoadmapProjection(roadmap) {
328
411
  return `${JSON.stringify(roadmap, null, 2)}\n`;
329
412
  }
413
+ /**
414
+ * Key of the generated-file marker written into the compiled projection.
415
+ *
416
+ * The marker exists only in the bytes on disk. `serializeRoadmapProjection`
417
+ * stays canonical and marker-free, because projection bytes are compared in four
418
+ * places — compile write, closeout reconciliation, archive planning, and the
419
+ * migration planner/applier `expected_projection_sha256` pair. Stamping the
420
+ * marker into those canonical bytes broke migration receipt binding (seven
421
+ * tests), so it is applied at the write boundary and stripped again on read
422
+ * (GH #644, deferred from #637).
423
+ */
424
+ export const ROADMAP_PROJECTION_MARKER_KEY = '_generated';
425
+ /** Add the generated-file marker to projection bytes about to be written. */
426
+ export function withRoadmapProjectionMarker(projection, sourcePath) {
427
+ let parsed;
428
+ try {
429
+ parsed = JSON.parse(projection);
430
+ }
431
+ catch {
432
+ return projection;
433
+ }
434
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
435
+ return projection;
436
+ const marked = {
437
+ [ROADMAP_PROJECTION_MARKER_KEY]: {
438
+ by: 'slope roadmap compile',
439
+ source: sourcePath,
440
+ warning: `GENERATED FILE — do not edit. Edit the modular sources under docs/roadmap/ and re-run \`slope roadmap compile\`. Edits here are refused or discarded.`,
441
+ },
442
+ ...parsed,
443
+ };
444
+ return `${JSON.stringify(marked, null, 2)}\n`;
445
+ }
446
+ /**
447
+ * Remove the generated-file marker so on-disk bytes can be compared against
448
+ * canonical projection bytes. Returns the input unchanged when no marker exists,
449
+ * so projections written before this change still compare correctly.
450
+ */
451
+ export function stripRoadmapProjectionMarker(projection) {
452
+ if (!projection.includes(`"${ROADMAP_PROJECTION_MARKER_KEY}"`))
453
+ return projection;
454
+ let parsed;
455
+ try {
456
+ parsed = JSON.parse(projection);
457
+ }
458
+ catch {
459
+ return projection;
460
+ }
461
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
462
+ return projection;
463
+ const rest = { ...parsed };
464
+ if (!(ROADMAP_PROJECTION_MARKER_KEY in rest))
465
+ return projection;
466
+ delete rest[ROADMAP_PROJECTION_MARKER_KEY];
467
+ return `${JSON.stringify(rest, null, 2)}\n`;
468
+ }
469
+ /**
470
+ * Find content that exists only in the checked-out projection.
471
+ *
472
+ * A projection that merely lags its sources contains nothing the sources do not
473
+ * produce, so it is safe to overwrite. Content present *only* on disk is
474
+ * authored planning work that a blind rewrite would destroy — which is exactly
475
+ * how a phase, six sprints and 26 tickets were lost on a success exit (GH #637).
476
+ *
477
+ * Returns null when nothing would be lost.
478
+ */
479
+ export function findRoadmapProjectionDivergence(existing, compiled) {
480
+ let parsed;
481
+ try {
482
+ parsed = JSON.parse(existing);
483
+ }
484
+ catch {
485
+ // Unparseable projections carry no recoverable authored content.
486
+ return null;
487
+ }
488
+ if (!parsed || typeof parsed !== 'object')
489
+ return null;
490
+ const disk = parsed;
491
+ const compiledSprints = new Set((compiled.sprints ?? []).map(sprint => String(sprint.id)));
492
+ const diskSprints = Array.isArray(disk.sprints) ? disk.sprints : [];
493
+ const sprints = diskSprints
494
+ .map(sprint => (sprint && typeof sprint === 'object' ? sprint.id : undefined))
495
+ .filter(id => id != null)
496
+ .map(id => String(id))
497
+ .filter(id => !compiledSprints.has(id));
498
+ const compiledPhases = new Set((compiled.phases ?? []).map(phase => phase.name));
499
+ const diskPhases = Array.isArray(disk.phases) ? disk.phases : [];
500
+ const phases = diskPhases
501
+ .filter((phase) => !!phase && typeof phase === 'object')
502
+ .filter(phase => typeof phase.name === 'string' && !compiledPhases.has(phase.name))
503
+ // A phase whose sprints all still compile was renamed or reorganised, not
504
+ // lost. Reporting it as content loss made every phase rename look destructive
505
+ // and blocked the compile — the original #637 case lost the phase *and* its
506
+ // six sprints, so requiring an orphaned sprint keeps that caught.
507
+ .filter(phase => {
508
+ const ids = Array.isArray(phase.sprints) ? phase.sprints : [];
509
+ if (ids.length === 0)
510
+ return true;
511
+ return ids.some(id => id != null && !compiledSprints.has(String(id)));
512
+ })
513
+ .map(phase => phase.name);
514
+ if (sprints.length === 0 && phases.length === 0)
515
+ return null;
516
+ return { sprints: [...new Set(sprints)], phases: [...new Set(phases)] };
517
+ }
330
518
  function sourceLabel(source) {
331
519
  return normalizeDiagnosticPath(source.entry.path);
332
520
  }
@@ -361,6 +549,12 @@ export function validateRoadmapSourceFederation(project, sources) {
361
549
  const sprintDefinitions = new Map();
362
550
  const sprintMemberships = new Map();
363
551
  const ticketDefinitions = new Map();
552
+ // Identity is the canonical key so 458.10 and 458.1 stay distinct through the
553
+ // uniqueness and membership checks (GH #635). No roadmap-aware legacy decode is
554
+ // needed here — within a source, id_key is set for string-authored ids and a
555
+ // numeric id is its own consistent key.
556
+ const defKey = (sprint) => sprint.id_key ?? String(sprint.id);
557
+ const membershipKeys = (phase) => phase.sprint_keys ?? phase.sprints.map(String);
364
558
  for (const source of sources) {
365
559
  const label = sourceLabel(source);
366
560
  const priorPhase = phaseNames.get(source.document.phase.name);
@@ -374,30 +568,30 @@ export function validateRoadmapSourceFederation(project, sources) {
374
568
  else {
375
569
  phaseNames.set(source.document.phase.name, label);
376
570
  }
377
- const localMembership = source.document.phase.sprints;
378
- const localDefinitions = source.document.sprints.map(sprint => sprint.id);
571
+ const localMembership = membershipKeys(source.document.phase);
572
+ const localDefinitions = source.document.sprints.map(defKey);
379
573
  const membershipSet = new Set(localMembership);
380
574
  const definitionSet = new Set(localDefinitions);
381
- for (const id of localMembership) {
382
- const memberships = sprintMemberships.get(id) ?? [];
575
+ for (const key of localMembership) {
576
+ const memberships = sprintMemberships.get(key) ?? [];
383
577
  memberships.push(label);
384
- sprintMemberships.set(id, memberships);
385
- if (!definitionSet.has(id)) {
578
+ sprintMemberships.set(key, memberships);
579
+ if (!definitionSet.has(key)) {
386
580
  errors.push({
387
581
  code: 'missing_sprint_definition',
388
582
  source: label,
389
- sprint: id,
390
- message: `Phase membership S${id} has no sprint definition in the same bundle.`,
583
+ sprint: Number(key),
584
+ message: `Phase membership S${key} has no sprint definition in the same bundle.`,
391
585
  });
392
586
  }
393
587
  }
394
- for (const id of localDefinitions) {
395
- if (!membershipSet.has(id)) {
588
+ for (const key of localDefinitions) {
589
+ if (!membershipSet.has(key)) {
396
590
  errors.push({
397
591
  code: 'orphan_sprint_definition',
398
592
  source: label,
399
- sprint: id,
400
- message: `Sprint S${id} is defined but missing from phase.sprints in the same bundle.`,
593
+ sprint: Number(key),
594
+ message: `Sprint S${key} is defined but missing from phase.sprints in the same bundle.`,
401
595
  });
402
596
  }
403
597
  }
@@ -408,17 +602,18 @@ export function validateRoadmapSourceFederation(project, sources) {
408
602
  errors.push({ code: 'duplicate_local_sprint', source: label, message: 'Bundle contains duplicate sprint definitions.' });
409
603
  }
410
604
  for (const sprint of source.document.sprints) {
411
- const priorSprint = sprintDefinitions.get(sprint.id);
605
+ const key = defKey(sprint);
606
+ const priorSprint = sprintDefinitions.get(key);
412
607
  if (priorSprint) {
413
608
  errors.push({
414
609
  code: 'duplicate_sprint',
415
610
  source: label,
416
611
  sprint: sprint.id,
417
- message: `Sprint S${sprint.id} is also defined in ${priorSprint}.`,
612
+ message: `Sprint S${key} is also defined in ${priorSprint}.`,
418
613
  });
419
614
  }
420
615
  else {
421
- sprintDefinitions.set(sprint.id, label);
616
+ sprintDefinitions.set(key, label);
422
617
  }
423
618
  for (const ticket of sprint.tickets) {
424
619
  const key = getRoadmapTicketKey(ticket);
@@ -440,29 +635,32 @@ export function validateRoadmapSourceFederation(project, sources) {
440
635
  }
441
636
  }
442
637
  }
443
- for (const [sprint, memberships] of sprintMemberships) {
638
+ for (const [key, memberships] of sprintMemberships) {
444
639
  if (memberships.length > 1) {
445
640
  errors.push({
446
641
  code: 'multiple_phase_membership',
447
- sprint,
448
- message: `Sprint S${sprint} belongs to multiple phase bundles: ${memberships.join(', ')}.`,
642
+ sprint: Number(key),
643
+ message: `Sprint S${key} belongs to multiple phase bundles: ${memberships.join(', ')}.`,
449
644
  });
450
645
  }
451
646
  }
452
- const normalizedSprintIds = new Map();
647
+ // Collision is by canonical identity, not the float order value: 458.1 and
648
+ // 458.10 are legitimately distinct (their id_keys differ), while a legacy 435
649
+ // and an explicit 43.5 still resolve to the same key "43.5" and collide (GH #635).
650
+ const canonicalIds = new Map();
453
651
  for (const sprint of roadmap.sprints) {
454
- const normalized = roadmapSprintOrderValue(roadmap, sprint.id);
455
- const prior = normalizedSprintIds.get(normalized);
456
- if (prior && prior.id !== sprint.id) {
652
+ const key = roadmapSprintKey(roadmap, sprint);
653
+ const prior = canonicalIds.get(key);
654
+ if (prior) {
457
655
  errors.push({
458
656
  code: 'logical_sprint_collision',
459
- source: sprintDefinitions.get(sprint.id),
657
+ source: sprintDefinitions.get(defKey(sprint)),
460
658
  sprint: sprint.id,
461
- message: `Sprint S${sprint.id} and Sprint S${prior.id} resolve to the same roadmap identity (${normalized}); first defined in ${prior.source ?? 'unknown source'}.`,
659
+ message: `Sprint S${key} and Sprint S${prior.key} resolve to the same roadmap identity (${key}); first defined in ${prior.source ?? 'unknown source'}.`,
462
660
  });
463
661
  }
464
662
  else {
465
- normalizedSprintIds.set(normalized, { id: sprint.id, source: sprintDefinitions.get(sprint.id) });
663
+ canonicalIds.set(key, { key, source: sprintDefinitions.get(defKey(sprint)) });
466
664
  }
467
665
  }
468
666
  const roadmapValidation = validateRoadmap(roadmap);
@@ -470,7 +668,7 @@ export function validateRoadmapSourceFederation(project, sources) {
470
668
  errors.push({
471
669
  code: 'roadmap_validation',
472
670
  message: issue.message,
473
- ...(issue.sprint != null ? { sprint: issue.sprint, source: sprintDefinitions.get(issue.sprint) } : {}),
671
+ ...(issue.sprint != null ? { sprint: issue.sprint, source: sprintDefinitions.get(String(issue.sprint)) } : {}),
474
672
  ...(issue.ticket ? { ticket: issue.ticket } : {}),
475
673
  });
476
674
  }
@@ -478,7 +676,7 @@ export function validateRoadmapSourceFederation(project, sources) {
478
676
  warnings.push({
479
677
  code: 'roadmap_validation',
480
678
  message: issue.message,
481
- ...(issue.sprint != null ? { sprint: issue.sprint, source: sprintDefinitions.get(issue.sprint) } : {}),
679
+ ...(issue.sprint != null ? { sprint: issue.sprint, source: sprintDefinitions.get(String(issue.sprint)) } : {}),
482
680
  ...(issue.ticket ? { ticket: issue.ticket } : {}),
483
681
  });
484
682
  }
@@ -1 +1 @@
1
- {"version":3,"file":"roadmap-sources.js","sourceRoot":"","sources":["../../src/core/roadmap-sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roadmap-sources.js","sourceRoot":"","sources":["../../src/core/roadmap-sources.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,13 @@ export interface RoadmapTicket {
17
17
  /** A sprint within the roadmap */
18
18
  export interface RoadmapSprint {
19
19
  id: number;
20
+ /**
21
+ * Canonical string id, present only when authored as a string to preserve an
22
+ * exact suffix a number cannot hold (e.g. "458.10", distinct from 458.1). When
23
+ * absent, identity derives from `id` via the roadmap-aware helpers. `id` remains
24
+ * the numeric mirror used for ordering arithmetic and the store (GH #635).
25
+ */
26
+ id_key?: string;
20
27
  theme: string;
21
28
  par: 3 | 4 | 5;
22
29
  slope: number;
@@ -36,6 +43,13 @@ export interface RoadmapSprint {
36
43
  export interface RoadmapPhase {
37
44
  name: string;
38
45
  sprints: number[];
46
+ /**
47
+ * Canonical membership keys, present when any member was authored as a string
48
+ * to preserve an exact suffix (e.g. "458.10" alongside "458.1"). When present,
49
+ * this is the authoritative membership; `sprints` is the numeric mirror, which
50
+ * cannot distinguish 458.10 from 458.1 (GH #635).
51
+ */
52
+ sprint_keys?: string[];
39
53
  description?: string;
40
54
  status?: string;
41
55
  note?: string;
@@ -78,15 +92,43 @@ export declare function sprintOrderValue(id: number): number;
78
92
  export declare function formatSprintNumber(id: number): string;
79
93
  /** Format a full sprint label, e.g. S95 or S43.5. */
80
94
  export declare function formatSprintLabel(id: number): string;
95
+ /**
96
+ * Describe why a written sprint id cannot round-trip, or null when it is fine.
97
+ *
98
+ * Sprint ids are stored as JSON/YAML numbers, so a decimal whose fraction ends in
99
+ * a zero loses that zero and silently becomes a different — usually existing —
100
+ * sprint: `458.10` reads back as `458.1`, and `458.0` as `458`. That corrupts
101
+ * dependencies, focused context, evidence lookup and scorecard identity, and it is
102
+ * why a phase had to be renumbered to whole sprints (GH #635).
103
+ *
104
+ * Takes a **string** deliberately. By the time such an id has been parsed into a
105
+ * number the trailing zero is already gone, so the ambiguity is only detectable in
106
+ * the text as written.
107
+ *
108
+ * Rejecting these is a stopgap; the durable fix is canonical string ids.
109
+ */
110
+ export declare function describeSprintIdAmbiguity(written: string): string | null;
81
111
  /** Parse human-entered sprint ids such as "114", "114.5", or "S114.5". */
82
112
  export declare function parseSprintNumber(value: string | number): number | null;
83
113
  export declare function compareSprintIds(a: number, b: number): number;
84
114
  /** Return the next canonical sprint id after a completed sprint/inserted sprint. */
85
115
  export declare function nextCanonicalSprintId(id: number): number;
86
116
  export declare const ROADMAP_TERMINAL_STATUSES: Set<string>;
117
+ /**
118
+ * Statuses that are not durably terminal but are intentionally not offered as
119
+ * the next sprint to work on. A deferred sprint is postponed by choice — it is
120
+ * neither done (so not terminal) nor queued work (so not selectable). It becomes
121
+ * selectable again once its status is edited back to planned/active (GH #660).
122
+ */
123
+ export declare const ROADMAP_DEFERRED_STATUSES: Set<string>;
87
124
  /** Return true when a roadmap sprint has a durable terminal disposition. */
88
125
  export declare function isRoadmapSprintTerminal(sprint: RoadmapSprint): boolean;
89
- /** Return true when a roadmap sprint should still be considered selectable work. */
126
+ /**
127
+ * Return true when a roadmap sprint should still be considered selectable work —
128
+ * the pool the "next sprint" pickers, rollover target, and current-sprint
129
+ * inference draw from. Excludes both terminal statuses and deferred (a
130
+ * deliberately postponed sprint must not be surfaced as the next thing to do).
131
+ */
90
132
  export declare function isRoadmapSprintPending(sprint: RoadmapSprint): boolean;
91
133
  type RoadmapTicketInput = Partial<RoadmapTicket> & {
92
134
  id?: unknown;
@@ -98,6 +140,13 @@ export declare function isEncodedInsertedSprintInRoadmap(roadmap: RoadmapDefinit
98
140
  export declare function roadmapSprintOrderValue(roadmap: RoadmapDefinition, id: number): number;
99
141
  export declare function compareRoadmapSprintIds(roadmap: RoadmapDefinition, a: number, b: number): number;
100
142
  export declare function formatRoadmapSprintLabel(roadmap: RoadmapDefinition, id: number): string;
143
+ /**
144
+ * Canonical string identity for a sprint: the authored `id_key` when present
145
+ * (preserving an exact suffix), else derived from the numeric `id` with the same
146
+ * roadmap-aware legacy decode as the label. This is THE identity for a sprint —
147
+ * use it wherever `458.10` must stay distinct from `458.1` (GH #635).
148
+ */
149
+ export declare function roadmapSprintKey(roadmap: RoadmapDefinition, sprint: RoadmapSprint): string;
101
150
  /** Validate a roadmap definition for structural correctness.
102
151
  * Optionally cross-check sprint status against scorecards and/or shipped
103
152
  * sprint commits on main when provided. Caller is responsible for collecting
@@ -1 +1 @@
1
- {"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../src/core/roadmap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../src/core/roadmap.ts"],"names":[],"mappings":"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"}