@slope-dev/slope 1.60.0 → 1.62.0

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 (135) hide show
  1. package/README.md +6 -0
  2. package/dist/cli/commands/agent.js +2 -2
  3. package/dist/cli/commands/agent.js.map +1 -1
  4. package/dist/cli/commands/commit-ready.js +1 -1
  5. package/dist/cli/commands/commit-ready.js.map +1 -1
  6. package/dist/cli/commands/next.d.ts +1 -1
  7. package/dist/cli/commands/next.d.ts.map +1 -1
  8. package/dist/cli/commands/next.js +31 -2
  9. package/dist/cli/commands/next.js.map +1 -1
  10. package/dist/cli/commands/now.d.ts +3 -0
  11. package/dist/cli/commands/now.d.ts.map +1 -1
  12. package/dist/cli/commands/now.js +14 -2
  13. package/dist/cli/commands/now.js.map +1 -1
  14. package/dist/cli/commands/pr.d.ts +11 -3
  15. package/dist/cli/commands/pr.d.ts.map +1 -1
  16. package/dist/cli/commands/pr.js +81 -31
  17. package/dist/cli/commands/pr.js.map +1 -1
  18. package/dist/cli/commands/review-run.d.ts +40 -6
  19. package/dist/cli/commands/review-run.d.ts.map +1 -1
  20. package/dist/cli/commands/review-run.js +235 -105
  21. package/dist/cli/commands/review-run.js.map +1 -1
  22. package/dist/cli/commands/review-state.d.ts.map +1 -1
  23. package/dist/cli/commands/review-state.js +61 -7
  24. package/dist/cli/commands/review-state.js.map +1 -1
  25. package/dist/cli/commands/review.d.ts +9 -1
  26. package/dist/cli/commands/review.d.ts.map +1 -1
  27. package/dist/cli/commands/review.js +67 -39
  28. package/dist/cli/commands/review.js.map +1 -1
  29. package/dist/cli/commands/roadmap.d.ts.map +1 -1
  30. package/dist/cli/commands/roadmap.js +364 -5
  31. package/dist/cli/commands/roadmap.js.map +1 -1
  32. package/dist/cli/commands/sprint.d.ts.map +1 -1
  33. package/dist/cli/commands/sprint.js +353 -54
  34. package/dist/cli/commands/sprint.js.map +1 -1
  35. package/dist/cli/guards/claim-required.d.ts.map +1 -1
  36. package/dist/cli/guards/claim-required.js +19 -4
  37. package/dist/cli/guards/claim-required.js.map +1 -1
  38. package/dist/cli/guards/next-action.js +1 -1
  39. package/dist/cli/guards/next-action.js.map +1 -1
  40. package/dist/cli/guards/phase-boundary.d.ts.map +1 -1
  41. package/dist/cli/guards/phase-boundary.js +8 -2
  42. package/dist/cli/guards/phase-boundary.js.map +1 -1
  43. package/dist/cli/guards/post-push.js +2 -2
  44. package/dist/cli/guards/post-push.js.map +1 -1
  45. package/dist/cli/guards/review-tier.d.ts.map +1 -1
  46. package/dist/cli/guards/review-tier.js +2 -3
  47. package/dist/cli/guards/review-tier.js.map +1 -1
  48. package/dist/cli/guards/roadmap-edit-shipped.d.ts.map +1 -1
  49. package/dist/cli/guards/roadmap-edit-shipped.js +143 -7
  50. package/dist/cli/guards/roadmap-edit-shipped.js.map +1 -1
  51. package/dist/cli/guards/scope-drift.d.ts.map +1 -1
  52. package/dist/cli/guards/scope-drift.js +8 -2
  53. package/dist/cli/guards/scope-drift.js.map +1 -1
  54. package/dist/cli/guards/session-briefing.js +6 -2
  55. package/dist/cli/guards/session-briefing.js.map +1 -1
  56. package/dist/cli/guards/sprint-completion.d.ts.map +1 -1
  57. package/dist/cli/guards/sprint-completion.js +94 -18
  58. package/dist/cli/guards/sprint-completion.js.map +1 -1
  59. package/dist/cli/index.js +4 -2
  60. package/dist/cli/index.js.map +1 -1
  61. package/dist/cli/registry.d.ts.map +1 -1
  62. package/dist/cli/registry.js +31 -0
  63. package/dist/cli/registry.js.map +1 -1
  64. package/dist/cli/review-diff.d.ts +72 -0
  65. package/dist/cli/review-diff.d.ts.map +1 -0
  66. package/dist/cli/review-diff.js +416 -0
  67. package/dist/cli/review-diff.js.map +1 -0
  68. package/dist/cli/roadmap-source-migration.d.ts +113 -0
  69. package/dist/cli/roadmap-source-migration.d.ts.map +1 -0
  70. package/dist/cli/roadmap-source-migration.js +721 -0
  71. package/dist/cli/roadmap-source-migration.js.map +1 -0
  72. package/dist/cli/roadmap-source-store.d.ts +44 -0
  73. package/dist/cli/roadmap-source-store.d.ts.map +1 -0
  74. package/dist/cli/roadmap-source-store.js +307 -0
  75. package/dist/cli/roadmap-source-store.js.map +1 -0
  76. package/dist/cli/sprint-inference.js +1 -1
  77. package/dist/cli/sprint-inference.js.map +1 -1
  78. package/dist/cli/sprint-rollover.d.ts +102 -0
  79. package/dist/cli/sprint-rollover.d.ts.map +1 -0
  80. package/dist/cli/sprint-rollover.js +558 -0
  81. package/dist/cli/sprint-rollover.js.map +1 -0
  82. package/dist/cli/sprint-state.d.ts +72 -1
  83. package/dist/cli/sprint-state.d.ts.map +1 -1
  84. package/dist/cli/sprint-state.js +203 -5
  85. package/dist/cli/sprint-state.js.map +1 -1
  86. package/dist/cli/template-generator.d.ts.map +1 -1
  87. package/dist/cli/template-generator.js +45 -32
  88. package/dist/cli/template-generator.js.map +1 -1
  89. package/dist/cli/workflow-resync.d.ts.map +1 -1
  90. package/dist/cli/workflow-resync.js +9 -8
  91. package/dist/cli/workflow-resync.js.map +1 -1
  92. package/dist/core/briefing.d.ts.map +1 -1
  93. package/dist/core/briefing.js +254 -14
  94. package/dist/core/briefing.js.map +1 -1
  95. package/dist/core/builder.d.ts +16 -2
  96. package/dist/core/builder.d.ts.map +1 -1
  97. package/dist/core/builder.js +82 -5
  98. package/dist/core/builder.js.map +1 -1
  99. package/dist/core/index.d.ts +9 -3
  100. package/dist/core/index.d.ts.map +1 -1
  101. package/dist/core/index.js +4 -1
  102. package/dist/core/index.js.map +1 -1
  103. package/dist/core/roadmap-focus.d.ts +101 -0
  104. package/dist/core/roadmap-focus.d.ts.map +1 -0
  105. package/dist/core/roadmap-focus.js +293 -0
  106. package/dist/core/roadmap-focus.js.map +1 -0
  107. package/dist/core/roadmap-migration.d.ts +101 -0
  108. package/dist/core/roadmap-migration.d.ts.map +1 -0
  109. package/dist/core/roadmap-migration.js +630 -0
  110. package/dist/core/roadmap-migration.js.map +1 -0
  111. package/dist/core/roadmap-sources.d.ts +52 -0
  112. package/dist/core/roadmap-sources.d.ts.map +1 -0
  113. package/dist/core/roadmap-sources.js +487 -0
  114. package/dist/core/roadmap-sources.js.map +1 -0
  115. package/dist/core/roadmap.d.ts +25 -1
  116. package/dist/core/roadmap.d.ts.map +1 -1
  117. package/dist/core/roadmap.js +62 -45
  118. package/dist/core/roadmap.js.map +1 -1
  119. package/dist/core/workflow-engine.d.ts.map +1 -1
  120. package/dist/core/workflow-engine.js +17 -2
  121. package/dist/core/workflow-engine.js.map +1 -1
  122. package/dist/mcp/registry.d.ts +1 -1
  123. package/dist/mcp/registry.d.ts.map +1 -1
  124. package/dist/mcp/registry.js +5 -4
  125. package/dist/mcp/registry.js.map +1 -1
  126. package/package.json +1 -1
  127. package/src/core/workflows/sprint-standard.yaml +1 -1
  128. package/templates/claude-code/CLAUDE.md +3 -1
  129. package/templates/claude-code/commands/start-sprint.md +9 -5
  130. package/templates/claude-code/rules/sprint-checklist.md +13 -10
  131. package/templates/codex/plugins/slope/.codex-plugin/plugin.json +1 -1
  132. package/templates/codex/plugins/slope/skills/slope-sprint/SKILL.md +5 -4
  133. package/templates/cursor/rules/slope-sprint-checklist.mdc +11 -8
  134. package/templates/generic/SLOPE-CHECKLIST.md +10 -7
  135. package/templates/pi/skills/start-sprint.md +9 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap-migration.js","sourceRoot":"","sources":["../../src/core/roadmap-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { RoadmapDefinition, RoadmapPhase, RoadmapSprint } from './roadmap.js';
2
+ export type RoadmapSourceKind = 'phase' | 'backlog' | 'archive';
3
+ export interface RoadmapSourceEntry {
4
+ path: string;
5
+ kind: RoadmapSourceKind;
6
+ }
7
+ export interface RoadmapSourceProject {
8
+ version: '1';
9
+ name: string;
10
+ description?: string;
11
+ output: string;
12
+ sources: RoadmapSourceEntry[];
13
+ }
14
+ export interface RoadmapSourceDocument {
15
+ version: '1';
16
+ phase: RoadmapPhase;
17
+ sprints: RoadmapSprint[];
18
+ scorecards?: Record<string, string>;
19
+ }
20
+ export interface LoadedRoadmapSource {
21
+ entry: RoadmapSourceEntry;
22
+ document: RoadmapSourceDocument;
23
+ absolutePath?: string;
24
+ }
25
+ export interface RoadmapSourceValidationIssue {
26
+ code: string;
27
+ message: string;
28
+ source?: string;
29
+ sprint?: number;
30
+ ticket?: string;
31
+ }
32
+ export interface RoadmapSourceValidationResult {
33
+ valid: boolean;
34
+ errors: RoadmapSourceValidationIssue[];
35
+ warnings: RoadmapSourceValidationIssue[];
36
+ roadmap: RoadmapDefinition;
37
+ }
38
+ export declare class RoadmapSourceError extends Error {
39
+ readonly sourcePath?: string | undefined;
40
+ constructor(message: string, sourcePath?: string | undefined);
41
+ }
42
+ export declare function normalizeDiagnosticPath(path: string): string;
43
+ export declare function normalizeRoadmapSourcePath(path: string, label?: string): string;
44
+ export declare function parseRoadmapSourceProject(yaml: string, sourcePath?: string): RoadmapSourceProject;
45
+ export declare function parseRoadmapSourceDocument(yaml: string, sourcePath: string): RoadmapSourceDocument;
46
+ export declare function sourceProjectToRoadmap(project: RoadmapSourceProject): Pick<RoadmapDefinition, 'name' | 'description'>;
47
+ /** Compile ordered authoring bundles into the existing roadmap compatibility shape. */
48
+ export declare function compileRoadmapSources(project: RoadmapSourceProject, sources: LoadedRoadmapSource[]): RoadmapDefinition;
49
+ export declare function serializeRoadmapProjection(roadmap: RoadmapDefinition): string;
50
+ /** Validate source federation invariants before any compatibility write. */
51
+ export declare function validateRoadmapSourceFederation(project: RoadmapSourceProject, sources: LoadedRoadmapSource[]): RoadmapSourceValidationResult;
52
+ //# sourceMappingURL=roadmap-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap-sources.d.ts","sourceRoot":"","sources":["../../src/core/roadmap-sources.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEnF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACvC,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACzC,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAGzC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACN,UAAU,CAAC,EAAE,MAAM,YAAA;CAK/B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAgB,GAAG,MAAM,CAWtF;AAmDD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,UAAU,SAA8B,GACvC,oBAAoB,CAgDtB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,qBAAqB,CA2JvB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,aAAa,CAAC,CAKrH;AAqBD,uFAAuF;AACvF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,mBAAmB,EAAE,GAC7B,iBAAiB,CA4BnB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAE7E;AAMD,4EAA4E;AAC5E,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,mBAAmB,EAAE,GAC7B,6BAA6B,CA0J/B"}
@@ -0,0 +1,487 @@
1
+ import { isAbsolute, posix } from 'node:path';
2
+ import { parseDocument } from 'yaml';
3
+ import { castRoadmapStructure, getRoadmapTicketKey, validateRoadmap } from './roadmap.js';
4
+ import { compareRoadmapSprintIds, roadmapSprintOrderValue } from './roadmap.js';
5
+ export class RoadmapSourceError extends Error {
6
+ sourcePath;
7
+ constructor(message, sourcePath) {
8
+ super(sourcePath ? `${normalizeDiagnosticPath(sourcePath)}: ${message}` : message);
9
+ this.sourcePath = sourcePath;
10
+ this.name = 'RoadmapSourceError';
11
+ }
12
+ }
13
+ export function normalizeDiagnosticPath(path) {
14
+ return path.replace(/\\/g, '/');
15
+ }
16
+ export function normalizeRoadmapSourcePath(path, label = 'source path') {
17
+ const portable = normalizeDiagnosticPath(path).trim();
18
+ if (!portable)
19
+ throw new RoadmapSourceError(`${label} must not be empty`);
20
+ if (isAbsolute(portable) || /^[A-Za-z]:\//.test(portable)) {
21
+ throw new RoadmapSourceError(`${label} must be relative: ${portable}`);
22
+ }
23
+ const normalized = posix.normalize(portable).replace(/^\.\//, '');
24
+ if (normalized === '..' || normalized.startsWith('../')) {
25
+ throw new RoadmapSourceError(`${label} escapes its allowed root: ${portable}`);
26
+ }
27
+ return normalized;
28
+ }
29
+ function normalizeOutputPath(path) {
30
+ const portable = normalizeDiagnosticPath(path).trim();
31
+ if (!portable)
32
+ throw new RoadmapSourceError('output must not be empty');
33
+ if (isAbsolute(portable) || /^[A-Za-z]:\//.test(portable)) {
34
+ throw new RoadmapSourceError(`output must be relative: ${portable}`);
35
+ }
36
+ const normalized = posix.normalize(portable).replace(/^\.\//, '');
37
+ if (!normalized.endsWith('.json')) {
38
+ throw new RoadmapSourceError(`output must be a JSON compatibility artifact: ${portable}`);
39
+ }
40
+ const parentEscapes = normalized.split('/').filter(part => part === '..').length;
41
+ if (parentEscapes > 1) {
42
+ throw new RoadmapSourceError(`output escapes the roadmap compatibility area: ${portable}`);
43
+ }
44
+ return normalized;
45
+ }
46
+ function parseYamlMapping(yaml, sourcePath) {
47
+ const document = parseDocument(yaml, { schema: 'core', uniqueKeys: true });
48
+ if (document.errors.length > 0) {
49
+ throw new RoadmapSourceError(`YAML parse error: ${document.errors[0].message}`, sourcePath);
50
+ }
51
+ if (document.warnings.length > 0) {
52
+ throw new RoadmapSourceError(`YAML warning: ${document.warnings[0].message}`, sourcePath);
53
+ }
54
+ let value;
55
+ try {
56
+ value = document.toJS({ maxAliasCount: 100 });
57
+ }
58
+ catch (error) {
59
+ throw new RoadmapSourceError(`YAML expansion error: ${error.message}`, sourcePath);
60
+ }
61
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
62
+ throw new RoadmapSourceError('document must be a YAML mapping', sourcePath);
63
+ }
64
+ return value;
65
+ }
66
+ function parseVersion(value, sourcePath) {
67
+ if (value !== 1 && value !== '1') {
68
+ throw new RoadmapSourceError('version must be 1', sourcePath);
69
+ }
70
+ return '1';
71
+ }
72
+ function parseSourceKind(value, sourcePath, index) {
73
+ if (value === 'phase' || value === 'backlog' || value === 'archive')
74
+ return value;
75
+ throw new RoadmapSourceError(`sources[${index}].kind must be phase, backlog, or archive`, sourcePath);
76
+ }
77
+ export function parseRoadmapSourceProject(yaml, sourcePath = 'docs/roadmap/project.yaml') {
78
+ const raw = parseYamlMapping(yaml, sourcePath);
79
+ const version = parseVersion(raw.version, sourcePath);
80
+ if (typeof raw.name !== 'string' || !raw.name.trim()) {
81
+ throw new RoadmapSourceError('name must be a non-empty string', sourcePath);
82
+ }
83
+ if (raw.description != null && typeof raw.description !== 'string') {
84
+ throw new RoadmapSourceError('description must be a string when present', sourcePath);
85
+ }
86
+ if (typeof raw.output !== 'string') {
87
+ throw new RoadmapSourceError('output must be a relative path', sourcePath);
88
+ }
89
+ const output = normalizeOutputPath(raw.output);
90
+ if (!Array.isArray(raw.sources) || raw.sources.length === 0) {
91
+ throw new RoadmapSourceError('sources must be a non-empty sequence', sourcePath);
92
+ }
93
+ const sources = raw.sources.map((value, index) => {
94
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
95
+ throw new RoadmapSourceError(`sources[${index}] must be a mapping`, sourcePath);
96
+ }
97
+ const entry = value;
98
+ if (typeof entry.path !== 'string') {
99
+ throw new RoadmapSourceError(`sources[${index}].path must be a string`, sourcePath);
100
+ }
101
+ const path = normalizeRoadmapSourcePath(entry.path, `sources[${index}].path`);
102
+ const kind = parseSourceKind(entry.kind, sourcePath, index);
103
+ const expectedPrefix = kind === 'phase' ? 'phases/' : `${kind}/`;
104
+ if (!path.startsWith(expectedPrefix)) {
105
+ throw new RoadmapSourceError(`sources[${index}] kind ${kind} must use ${expectedPrefix} (received ${path})`, sourcePath);
106
+ }
107
+ return { path, kind };
108
+ });
109
+ const uniquePaths = new Set(sources.map(source => source.path));
110
+ if (uniquePaths.size !== sources.length) {
111
+ throw new RoadmapSourceError('sources contains duplicate paths', sourcePath);
112
+ }
113
+ return {
114
+ version,
115
+ name: raw.name.trim(),
116
+ ...(raw.description ? { description: raw.description } : {}),
117
+ output,
118
+ sources,
119
+ };
120
+ }
121
+ export function parseRoadmapSourceDocument(yaml, sourcePath) {
122
+ const raw = parseYamlMapping(yaml, sourcePath);
123
+ const version = parseVersion(raw.version, sourcePath);
124
+ if (!raw.phase || typeof raw.phase !== 'object' || Array.isArray(raw.phase)) {
125
+ throw new RoadmapSourceError('phase must be a mapping', sourcePath);
126
+ }
127
+ const phase = raw.phase;
128
+ if (typeof phase.name !== 'string' || !phase.name.trim()) {
129
+ throw new RoadmapSourceError('phase.name must be a non-empty string', sourcePath);
130
+ }
131
+ for (const field of ['description', 'status', 'note']) {
132
+ if (phase[field] != null && typeof phase[field] !== 'string') {
133
+ throw new RoadmapSourceError(`phase.${field} must be a string when present`, sourcePath);
134
+ }
135
+ }
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);
139
+ }
140
+ if (!Array.isArray(raw.sprints)) {
141
+ throw new RoadmapSourceError('sprints must be a sequence', sourcePath);
142
+ }
143
+ const validClubs = new Set(['driver', 'long_iron', 'short_iron', 'wedge', 'putter']);
144
+ // Pre-schema compatibility values are deliberately bounded rather than
145
+ // normalized: federation must reproduce accepted historical JSON exactly.
146
+ const validComplexities = new Set([
147
+ 'trivial',
148
+ 'small',
149
+ 'standard',
150
+ 'moderate',
151
+ 'multi_package',
152
+ 'multi-package',
153
+ 'risky',
154
+ ]);
155
+ for (const [sprintIndex, value] of raw.sprints.entries()) {
156
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
157
+ throw new RoadmapSourceError(`sprints[${sprintIndex}] must be a mapping`, sourcePath);
158
+ }
159
+ 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);
162
+ }
163
+ if (typeof sprint.theme !== 'string' || !sprint.theme.trim()) {
164
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].theme must be a non-empty string`, sourcePath);
165
+ }
166
+ if (![3, 4, 5].includes(sprint.par)) {
167
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].par must be 3, 4, or 5`, sourcePath);
168
+ }
169
+ if (typeof sprint.slope !== 'number' || !Number.isFinite(sprint.slope)) {
170
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].slope must be numeric`, sourcePath);
171
+ }
172
+ if (typeof sprint.type !== 'string' || !sprint.type.trim()) {
173
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].type must be a non-empty string`, sourcePath);
174
+ }
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);
179
+ }
180
+ for (const field of ['status', 'note', 'outcome', 'phase', 'wave']) {
181
+ if (sprint[field] != null && typeof sprint[field] !== 'string') {
182
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].${field} must be a string when present`, sourcePath);
183
+ }
184
+ }
185
+ for (const field of ['artifacts', 'expected_artifacts', 'research']) {
186
+ if (sprint[field] != null
187
+ && (!Array.isArray(sprint[field]) || sprint[field].some(item => typeof item !== 'string'))) {
188
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].${field} must contain string paths`, sourcePath);
189
+ }
190
+ }
191
+ if (!Array.isArray(sprint.tickets)) {
192
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets must be a sequence`, sourcePath);
193
+ }
194
+ for (const [ticketIndex, ticketValue] of sprint.tickets.entries()) {
195
+ if (!ticketValue || typeof ticketValue !== 'object' || Array.isArray(ticketValue)) {
196
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets[${ticketIndex}] must be a mapping`, sourcePath);
197
+ }
198
+ const ticket = ticketValue;
199
+ const key = typeof ticket.key === 'string' && ticket.key.trim()
200
+ ? ticket.key
201
+ : typeof ticket.id === 'string' && ticket.id.trim() ? ticket.id : null;
202
+ if (!key) {
203
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets[${ticketIndex}] requires key or id`, sourcePath);
204
+ }
205
+ if (typeof ticket.title !== 'string' || !ticket.title.trim()) {
206
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets[${ticketIndex}].title must be a non-empty string`, sourcePath);
207
+ }
208
+ if (!validClubs.has(String(ticket.club))) {
209
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets[${ticketIndex}].club is invalid`, sourcePath);
210
+ }
211
+ if (!validComplexities.has(String(ticket.complexity))) {
212
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets[${ticketIndex}].complexity is invalid`, sourcePath);
213
+ }
214
+ if (ticket.depends_on != null
215
+ && (!Array.isArray(ticket.depends_on)
216
+ || ticket.depends_on.some(id => typeof id !== 'string' || !id.trim()))) {
217
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets[${ticketIndex}].depends_on must contain ticket keys`, sourcePath);
218
+ }
219
+ const issueValues = Array.isArray(ticket.github_issue) ? ticket.github_issue : [ticket.github_issue];
220
+ if (ticket.github_issue != null
221
+ && (issueValues.length === 0
222
+ || issueValues.some(issue => typeof issue !== 'number' || !Number.isInteger(issue) || issue <= 0))) {
223
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets[${ticketIndex}].github_issue must be a positive integer or non-empty sequence of positive integers`, sourcePath);
224
+ }
225
+ if (ticket.note != null && typeof ticket.note !== 'string') {
226
+ throw new RoadmapSourceError(`sprints[${sprintIndex}].tickets[${ticketIndex}].note must be a string`, sourcePath);
227
+ }
228
+ }
229
+ }
230
+ const structural = castRoadmapStructure({
231
+ name: phase.name,
232
+ phases: [phase],
233
+ sprints: raw.sprints,
234
+ });
235
+ if (!structural) {
236
+ throw new RoadmapSourceError('sprints could not be read as roadmap definitions', sourcePath);
237
+ }
238
+ for (const [index, sprint] of structural.sprints.entries()) {
239
+ if (typeof sprint.id !== 'number' || !Number.isFinite(sprint.id)) {
240
+ throw new RoadmapSourceError(`sprints[${index}].id must be numeric`, sourcePath);
241
+ }
242
+ if (!Array.isArray(sprint.tickets)) {
243
+ throw new RoadmapSourceError(`sprints[${index}].tickets must be a sequence`, sourcePath);
244
+ }
245
+ }
246
+ let scorecards;
247
+ if (raw.scorecards != null) {
248
+ if (typeof raw.scorecards !== 'object' || Array.isArray(raw.scorecards)) {
249
+ throw new RoadmapSourceError('scorecards must be a mapping of sprint ID to repo-relative path', sourcePath);
250
+ }
251
+ scorecards = {};
252
+ for (const [sprint, value] of Object.entries(raw.scorecards)) {
253
+ if (!/^\d+(?:\.\d+)?$/.test(sprint) || Number(sprint) <= 0) {
254
+ throw new RoadmapSourceError(`scorecards key must be a positive sprint ID: ${sprint}`, sourcePath);
255
+ }
256
+ if (typeof value !== 'string') {
257
+ throw new RoadmapSourceError(`scorecards.${sprint} must be a string path`, sourcePath);
258
+ }
259
+ scorecards[sprint] = normalizeRoadmapSourcePath(value, `scorecards.${sprint}`);
260
+ }
261
+ }
262
+ return {
263
+ version,
264
+ phase: structural.phases[0],
265
+ // The strict checks above accept `id` as a legacy ticket-key alias. Keep
266
+ // the authored record intact here: `castRoadmapStructure` normalizes that
267
+ // alias by materializing `key`, which would introduce compatibility
268
+ // projection drift during a storage-only migration.
269
+ sprints: raw.sprints,
270
+ ...(scorecards ? { scorecards } : {}),
271
+ };
272
+ }
273
+ export function sourceProjectToRoadmap(project) {
274
+ return {
275
+ name: project.name,
276
+ ...(project.description ? { description: project.description } : {}),
277
+ };
278
+ }
279
+ function clonePhase(phase) {
280
+ return { ...phase, sprints: [...phase.sprints] };
281
+ }
282
+ function cloneSprint(sprint) {
283
+ return {
284
+ ...sprint,
285
+ ...(sprint.depends_on ? { depends_on: [...sprint.depends_on] } : {}),
286
+ tickets: sprint.tickets.map(ticket => ({
287
+ ...ticket,
288
+ ...(ticket.depends_on ? { depends_on: [...ticket.depends_on] } : {}),
289
+ ...(Array.isArray(ticket.github_issue) ? { github_issue: [...ticket.github_issue] } : {}),
290
+ })),
291
+ ...(sprint.artifacts ? { artifacts: [...sprint.artifacts] } : {}),
292
+ ...(sprint.expected_artifacts ? { expected_artifacts: [...sprint.expected_artifacts] } : {}),
293
+ ...(sprint.research ? { research: [...sprint.research] } : {}),
294
+ };
295
+ }
296
+ /** Compile ordered authoring bundles into the existing roadmap compatibility shape. */
297
+ export function compileRoadmapSources(project, sources) {
298
+ const byPath = new Map();
299
+ for (const source of sources) {
300
+ if (byPath.has(source.entry.path)) {
301
+ throw new RoadmapSourceError(`Loaded source is duplicated: ${source.entry.path}`);
302
+ }
303
+ byPath.set(source.entry.path, source);
304
+ }
305
+ const manifestPaths = new Set(project.sources.map(source => source.path));
306
+ const unexpected = sources.find(source => !manifestPaths.has(source.entry.path));
307
+ if (unexpected)
308
+ throw new RoadmapSourceError(`Loaded source is not declared by the manifest: ${unexpected.entry.path}`);
309
+ const ordered = project.sources.map(entry => {
310
+ const source = byPath.get(entry.path);
311
+ if (!source)
312
+ throw new RoadmapSourceError(`Manifest source was not loaded: ${entry.path}`);
313
+ if (source.entry.kind !== entry.kind) {
314
+ throw new RoadmapSourceError(`Source kind mismatch for ${entry.path}: expected ${entry.kind}, received ${source.entry.kind}`);
315
+ }
316
+ return source;
317
+ });
318
+ const roadmap = {
319
+ name: project.name,
320
+ ...(project.description ? { description: project.description } : {}),
321
+ phases: ordered.map(source => clonePhase(source.document.phase)),
322
+ sprints: ordered.flatMap(source => source.document.sprints.map(cloneSprint)),
323
+ };
324
+ roadmap.sprints.sort((a, b) => compareRoadmapSprintIds(roadmap, a.id, b.id));
325
+ return roadmap;
326
+ }
327
+ export function serializeRoadmapProjection(roadmap) {
328
+ return `${JSON.stringify(roadmap, null, 2)}\n`;
329
+ }
330
+ function sourceLabel(source) {
331
+ return normalizeDiagnosticPath(source.entry.path);
332
+ }
333
+ /** Validate source federation invariants before any compatibility write. */
334
+ export function validateRoadmapSourceFederation(project, sources) {
335
+ const errors = [];
336
+ const warnings = [];
337
+ let roadmap;
338
+ try {
339
+ roadmap = compileRoadmapSources(project, sources);
340
+ }
341
+ catch (error) {
342
+ roadmap = { name: project.name, phases: [], sprints: [] };
343
+ errors.push({ code: 'manifest_fidelity', message: error.message });
344
+ return { valid: false, errors, warnings, roadmap };
345
+ }
346
+ const sourcePaths = new Map();
347
+ for (const source of sources) {
348
+ const prior = sourcePaths.get(source.entry.path);
349
+ if (prior != null) {
350
+ errors.push({
351
+ code: 'duplicate_source_path',
352
+ source: sourceLabel(source),
353
+ message: `Source path is listed more than once (entries ${prior + 1} and ${sourcePaths.size + 1}).`,
354
+ });
355
+ }
356
+ else {
357
+ sourcePaths.set(source.entry.path, sourcePaths.size);
358
+ }
359
+ }
360
+ const phaseNames = new Map();
361
+ const sprintDefinitions = new Map();
362
+ const sprintMemberships = new Map();
363
+ const ticketDefinitions = new Map();
364
+ for (const source of sources) {
365
+ const label = sourceLabel(source);
366
+ const priorPhase = phaseNames.get(source.document.phase.name);
367
+ if (priorPhase) {
368
+ errors.push({
369
+ code: 'duplicate_phase',
370
+ source: label,
371
+ message: `Phase "${source.document.phase.name}" is also defined in ${priorPhase}.`,
372
+ });
373
+ }
374
+ else {
375
+ phaseNames.set(source.document.phase.name, label);
376
+ }
377
+ const localMembership = source.document.phase.sprints;
378
+ const localDefinitions = source.document.sprints.map(sprint => sprint.id);
379
+ const membershipSet = new Set(localMembership);
380
+ const definitionSet = new Set(localDefinitions);
381
+ for (const id of localMembership) {
382
+ const memberships = sprintMemberships.get(id) ?? [];
383
+ memberships.push(label);
384
+ sprintMemberships.set(id, memberships);
385
+ if (!definitionSet.has(id)) {
386
+ errors.push({
387
+ code: 'missing_sprint_definition',
388
+ source: label,
389
+ sprint: id,
390
+ message: `Phase membership S${id} has no sprint definition in the same bundle.`,
391
+ });
392
+ }
393
+ }
394
+ for (const id of localDefinitions) {
395
+ if (!membershipSet.has(id)) {
396
+ errors.push({
397
+ code: 'orphan_sprint_definition',
398
+ source: label,
399
+ sprint: id,
400
+ message: `Sprint S${id} is defined but missing from phase.sprints in the same bundle.`,
401
+ });
402
+ }
403
+ }
404
+ if (membershipSet.size !== localMembership.length) {
405
+ errors.push({ code: 'duplicate_phase_membership', source: label, message: 'phase.sprints contains duplicate IDs.' });
406
+ }
407
+ if (definitionSet.size !== localDefinitions.length) {
408
+ errors.push({ code: 'duplicate_local_sprint', source: label, message: 'Bundle contains duplicate sprint definitions.' });
409
+ }
410
+ for (const sprint of source.document.sprints) {
411
+ const priorSprint = sprintDefinitions.get(sprint.id);
412
+ if (priorSprint) {
413
+ errors.push({
414
+ code: 'duplicate_sprint',
415
+ source: label,
416
+ sprint: sprint.id,
417
+ message: `Sprint S${sprint.id} is also defined in ${priorSprint}.`,
418
+ });
419
+ }
420
+ else {
421
+ sprintDefinitions.set(sprint.id, label);
422
+ }
423
+ for (const ticket of sprint.tickets) {
424
+ const key = getRoadmapTicketKey(ticket);
425
+ if (!key)
426
+ continue;
427
+ const priorTicket = ticketDefinitions.get(key);
428
+ if (priorTicket) {
429
+ errors.push({
430
+ code: 'duplicate_ticket',
431
+ source: label,
432
+ sprint: sprint.id,
433
+ ticket: key,
434
+ message: `Ticket ${key} is also defined in ${priorTicket}.`,
435
+ });
436
+ }
437
+ else {
438
+ ticketDefinitions.set(key, label);
439
+ }
440
+ }
441
+ }
442
+ }
443
+ for (const [sprint, memberships] of sprintMemberships) {
444
+ if (memberships.length > 1) {
445
+ errors.push({
446
+ code: 'multiple_phase_membership',
447
+ sprint,
448
+ message: `Sprint S${sprint} belongs to multiple phase bundles: ${memberships.join(', ')}.`,
449
+ });
450
+ }
451
+ }
452
+ const normalizedSprintIds = new Map();
453
+ 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) {
457
+ errors.push({
458
+ code: 'logical_sprint_collision',
459
+ source: sprintDefinitions.get(sprint.id),
460
+ 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'}.`,
462
+ });
463
+ }
464
+ else {
465
+ normalizedSprintIds.set(normalized, { id: sprint.id, source: sprintDefinitions.get(sprint.id) });
466
+ }
467
+ }
468
+ const roadmapValidation = validateRoadmap(roadmap);
469
+ for (const issue of roadmapValidation.errors) {
470
+ errors.push({
471
+ code: 'roadmap_validation',
472
+ message: issue.message,
473
+ ...(issue.sprint != null ? { sprint: issue.sprint, source: sprintDefinitions.get(issue.sprint) } : {}),
474
+ ...(issue.ticket ? { ticket: issue.ticket } : {}),
475
+ });
476
+ }
477
+ for (const issue of roadmapValidation.warnings) {
478
+ warnings.push({
479
+ code: 'roadmap_validation',
480
+ message: issue.message,
481
+ ...(issue.sprint != null ? { sprint: issue.sprint, source: sprintDefinitions.get(issue.sprint) } : {}),
482
+ ...(issue.ticket ? { ticket: issue.ticket } : {}),
483
+ });
484
+ }
485
+ return { valid: errors.length === 0, errors, warnings, roadmap };
486
+ }
487
+ //# sourceMappingURL=roadmap-sources.js.map