@ktpartners/dgs-platform 2.7.3 → 2.7.4

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.
@@ -92,6 +92,32 @@ If a requirement fits multiple phases → assign to ONE (usually the first that
92
92
 
93
93
  </philosophy>
94
94
 
95
+ <milestone_handling>
96
+
97
+ ## Milestone Version
98
+
99
+ The orchestrator passes a `<milestone>` block in the planning context with `version` and `name`.
100
+
101
+ **Reading:** Extract `version` (e.g., "v17.0") and `name` (e.g., "Git Push and Pull Integration") from the `<milestone>` tag in the prompt.
102
+
103
+ **If no `<milestone>` block provided:** Default to `v1.0` / `milestone` (greenfield).
104
+
105
+ **Usage:**
106
+
107
+ When writing **STATE.md frontmatter**, use the provided version:
108
+ ```yaml
109
+ ---
110
+ dgs_state_version: 1.0
111
+ milestone: {version} # e.g., v17.0, NOT hardcoded v1.0
112
+ milestone_name: {name}
113
+ status: planning
114
+ ---
115
+ ```
116
+
117
+ When writing **ROADMAP.md**, use the version in milestone headings and references instead of assuming v1.0.
118
+
119
+ </milestone_handling>
120
+
95
121
  <goal_backward_phases>
96
122
 
97
123
  ## Deriving Phase Success Criteria
@@ -402,6 +428,7 @@ Orchestrator provides:
402
428
  - REQUIREMENTS.md content (v1 requirements with REQ-IDs)
403
429
  - research/SUMMARY.md content (if exists - phase suggestions)
404
430
  - config.json (granularity setting)
431
+ - Milestone version and name (from `<milestone>` block -- use when writing STATE.md/ROADMAP.md)
405
432
 
406
433
  Parse and confirm understanding before proceeding.
407
434
 
@@ -462,8 +489,10 @@ If gaps found, include in draft for user decision.
462
489
  Write files first, then return. This ensures artifacts persist even if context is lost.
463
490
 
464
491
  1. **Write ROADMAP.md** using output format
492
+ Use milestone version from `<milestone>` block for headings (e.g., "v17.0 [Name]" not "v1.0 MVP").
465
493
 
466
494
  2. **Write STATE.md** using output format
495
+ Use milestone version from `<milestone>` block in frontmatter (`milestone: {version}`, `milestone_name: {name}`).
467
496
 
468
497
  3. **Update REQUIREMENTS.md traceability section**
469
498
 
@@ -397,6 +397,7 @@ function cmdInitNewProject(cwd, raw) {
397
397
  const config = loadConfig(cwd);
398
398
  const ctx = resolveProjectContext(cwd);
399
399
  const planRootRel = path.relative(cwd, getPlanningRoot(cwd)) || '.';
400
+ const milestone = getMilestoneInfo(cwd);
400
401
 
401
402
  // Detect Brave Search API key availability
402
403
  const homedir = require('os').homedir();
@@ -461,6 +462,10 @@ function cmdInitNewProject(cwd, raw) {
461
462
  requirements_path: ctx.root ? path.join(ctx.root, 'REQUIREMENTS.md') : path.join(planRootRel, 'REQUIREMENTS.md'),
462
463
  research_dir: ctx.root ? path.join(ctx.root, 'research') : path.join(planRootRel, 'research'),
463
464
 
465
+ // Milestone info (product-level, shared across projects)
466
+ milestone_version: milestone.version,
467
+ milestone_name: milestone.name,
468
+
464
469
  // v2 context
465
470
  dgs_mode: ctx.dgs_mode,
466
471
  current_project: ctx.current_project,
@@ -227,6 +227,14 @@ describe('v1 mode: init new-project', () => {
227
227
  it('returns dgs_mode v1', () => {
228
228
  assert.equal(result.dgs_mode, 'v1');
229
229
  });
230
+
231
+ it('returns milestone_version defaulting to v1.0 when no milestones exist', () => {
232
+ assert.equal(result.milestone_version, 'v1.0');
233
+ });
234
+
235
+ it('returns milestone_name defaulting to milestone', () => {
236
+ assert.equal(result.milestone_name, 'milestone');
237
+ });
230
238
  });
231
239
 
232
240
  // ─── v1 Mode: other init commands ────────────────────────────────────────────
@@ -462,6 +470,10 @@ describe('v2 mode with project: init new-project', () => {
462
470
  it('returns dgs_mode v2', () => {
463
471
  assert.equal(result.dgs_mode, 'v2');
464
472
  });
473
+
474
+ it('returns milestone_version defaulting to v1.0 when no milestones exist', () => {
475
+ assert.equal(result.milestone_version, 'v1.0');
476
+ });
465
477
  });
466
478
 
467
479
  describe('v2 mode with project: init progress', () => {
@@ -64,7 +64,7 @@ If the `--auto` argument references a spec file path or spec ID:
64
64
  INIT=$(node ~/.claude/deliver-great-systems/bin/dgs-tools.cjs init new-project)
65
65
  ```
66
66
 
67
- Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `project_path`, `state_path`, `roadmap_path`, `requirements_path`, `research_dir`.
67
+ Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `project_path`, `state_path`, `roadmap_path`, `requirements_path`, `research_dir`, `milestone_version`, `milestone_name`.
68
68
 
69
69
  Load planning-tier context files:
70
70
 
@@ -857,6 +857,11 @@ Task(prompt="
857
857
  ${product_doc_files}
858
858
  </files_to_read>
859
859
 
860
+ <milestone>
861
+ version: ${milestone_version}
862
+ name: ${milestone_name}
863
+ </milestone>
864
+
860
865
  </planning_context>
861
866
 
862
867
  <instructions>
@@ -864,6 +869,7 @@ Create roadmap:
864
869
  1. Derive phases from requirements (don't impose structure)
865
870
  2. Map every v1 requirement to exactly one phase
866
871
  3. Derive 2-5 success criteria per phase (observable user behaviors)
872
+ Use the milestone version from <milestone> when writing STATE.md frontmatter and ROADMAP.md headings.
867
873
  4. Validate 100% coverage
868
874
  5. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
869
875
  6. Return ROADMAP CREATED with summary
@@ -121,7 +121,7 @@ Exit.
121
121
  <step name="show_changes_and_confirm">
122
122
  **If update available**, fetch and show what's new BEFORE updating:
123
123
 
124
- 1. Fetch changelog from GitHub raw URL
124
+ 1. Read changelog from installed package (CHANGELOG.md in the DGS install directory)
125
125
  2. Extract entries between installed and latest versions
126
126
  3. Display preview and ask for confirmation:
127
127
 
@@ -209,7 +209,7 @@ Format completion message (changelog was already shown in confirmation step):
209
209
 
210
210
  ⚠️ Restart Claude Code to pick up the new commands.
211
211
 
212
- [View full changelog](https://github.com/glittercowboy/deliver-great-systems/blob/main/CHANGELOG.md)
212
+ [View full changelog](https://github.com/KT-Partners-Ltd/deliver-great-systems/blob/main/CHANGELOG.md)
213
213
  ```
214
214
  </step>
215
215
 
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "bugs": {
5
5
  "url": "https://github.com/KT-Partners-Ltd/dgs-platform-docs/issues"
6
6
  },
7
- "version": "2.7.3",
7
+ "version": "2.7.4",
8
8
  "description": "Deliver Great Systems Platform — A meta-prompting, context engineering and spec-driven development system for Claude Code and Gemini by KT Partners.",
9
9
  "bin": {
10
10
  "dgs": "bin/install.js"
@@ -18,7 +18,8 @@
18
18
  "agents",
19
19
  "hooks/dist",
20
20
  "scripts",
21
- "LICENSE"
21
+ "LICENSE",
22
+ "CHANGELOG.md"
22
23
  ],
23
24
  "keywords": [
24
25
  "claude",