@ktpartners/dgs-platform 2.9.0 → 3.3.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 (166) hide show
  1. package/CHANGELOG.md +197 -0
  2. package/README.md +34 -2
  3. package/agents/dgs-executor.md +124 -3
  4. package/agents/dgs-idea-researcher.md +447 -0
  5. package/agents/dgs-plan-checker.md +61 -3
  6. package/agents/dgs-planner.md +51 -8
  7. package/bin/install.js +44 -0
  8. package/commands/dgs/abandon-quick.md +28 -0
  9. package/commands/dgs/add-tests.md +2 -2
  10. package/commands/dgs/audit-milestone.md +4 -3
  11. package/commands/dgs/capture-principle.md +11 -11
  12. package/commands/dgs/cleanup.md +2 -2
  13. package/commands/dgs/complete-milestone.md +11 -11
  14. package/commands/dgs/complete-quick.md +28 -0
  15. package/commands/dgs/create-milestone-job.md +2 -2
  16. package/commands/dgs/debug.md +3 -3
  17. package/commands/dgs/develop-idea.md +1 -1
  18. package/commands/dgs/diff-report.md +124 -0
  19. package/commands/dgs/fast.md +3 -1
  20. package/commands/dgs/health.md +1 -1
  21. package/commands/dgs/map-codebase.md +6 -6
  22. package/commands/dgs/new-milestone.md +5 -5
  23. package/commands/dgs/new-project.md +8 -21
  24. package/commands/dgs/package-scan.md +43 -0
  25. package/commands/dgs/plan-milestone-gaps.md +1 -1
  26. package/commands/dgs/progress.md +3 -3
  27. package/commands/dgs/quick-abandon.md +8 -0
  28. package/commands/dgs/quick-complete.md +8 -0
  29. package/commands/dgs/quick.md +10 -3
  30. package/commands/dgs/research-idea.md +3 -2
  31. package/commands/dgs/research-phase.md +3 -3
  32. package/commands/dgs/switch-project.md +14 -1
  33. package/commands/dgs/write-spec.md +3 -3
  34. package/deliver-great-systems/bin/dgs-tools.cjs +401 -32
  35. package/deliver-great-systems/bin/lib/audit-tolerance.cjs +77 -0
  36. package/deliver-great-systems/bin/lib/audit-tolerance.test.cjs +101 -0
  37. package/deliver-great-systems/bin/lib/commands.cjs +626 -46
  38. package/deliver-great-systems/bin/lib/commands.test.cjs +451 -0
  39. package/deliver-great-systems/bin/lib/commit-verify.test.cjs +236 -0
  40. package/deliver-great-systems/bin/lib/config.cjs +80 -6
  41. package/deliver-great-systems/bin/lib/config.test.cjs +309 -0
  42. package/deliver-great-systems/bin/lib/context.cjs +120 -0
  43. package/deliver-great-systems/bin/lib/core.cjs +35 -14
  44. package/deliver-great-systems/bin/lib/core.test.cjs +79 -1
  45. package/deliver-great-systems/bin/lib/execution.cjs +49 -17
  46. package/deliver-great-systems/bin/lib/fast-routing.cjs +199 -0
  47. package/deliver-great-systems/bin/lib/fast-routing.test.cjs +108 -0
  48. package/deliver-great-systems/bin/lib/final-commit-precondition.test.cjs +87 -0
  49. package/deliver-great-systems/bin/lib/fixtures/package-scan/bundler-audit-gemfile.json +21 -0
  50. package/deliver-great-systems/bin/lib/fixtures/package-scan/gate-parity-expected.md +186 -0
  51. package/deliver-great-systems/bin/lib/fixtures/package-scan/gate-parity-runresult.json +235 -0
  52. package/deliver-great-systems/bin/lib/fixtures/package-scan/govulncheck-import.json +3 -0
  53. package/deliver-great-systems/bin/lib/fixtures/package-scan/npm-audit-v10.json +37 -0
  54. package/deliver-great-systems/bin/lib/fixtures/package-scan/osv-clean.json +3 -0
  55. package/deliver-great-systems/bin/lib/fixtures/package-scan/osv-vulns.json +77 -0
  56. package/deliver-great-systems/bin/lib/fixtures/package-scan/pip-audit-requirements.json +28 -0
  57. package/deliver-great-systems/bin/lib/fixtures/package-scan/snyk-lodash.json +30 -0
  58. package/deliver-great-systems/bin/lib/fixtures/package-scan/snyk-workspaces.json +55 -0
  59. package/deliver-great-systems/bin/lib/flat-migration.test.cjs +396 -0
  60. package/deliver-great-systems/bin/lib/frontmatter.cjs +1 -1
  61. package/deliver-great-systems/bin/lib/governance.cjs +211 -0
  62. package/deliver-great-systems/bin/lib/governance.test.cjs +339 -0
  63. package/deliver-great-systems/bin/lib/health-untracked-phase.test.cjs +269 -0
  64. package/deliver-great-systems/bin/lib/ideas.cjs +206 -91
  65. package/deliver-great-systems/bin/lib/ideas.test.cjs +244 -1
  66. package/deliver-great-systems/bin/lib/init.cjs +357 -61
  67. package/deliver-great-systems/bin/lib/init.test.cjs +625 -8
  68. package/deliver-great-systems/bin/lib/jobs.cjs +131 -25
  69. package/deliver-great-systems/bin/lib/jobs.test.cjs +193 -74
  70. package/deliver-great-systems/bin/lib/migration.cjs +409 -1
  71. package/deliver-great-systems/bin/lib/migration.test.cjs +158 -1
  72. package/deliver-great-systems/bin/lib/milestone.cjs +154 -31
  73. package/deliver-great-systems/bin/lib/milestone.test.cjs +203 -0
  74. package/deliver-great-systems/bin/lib/package-adapters.cjs +530 -0
  75. package/deliver-great-systems/bin/lib/package-adapters.test.cjs +618 -0
  76. package/deliver-great-systems/bin/lib/package-ecosystems.cjs +350 -0
  77. package/deliver-great-systems/bin/lib/package-ecosystems.test.cjs +348 -0
  78. package/deliver-great-systems/bin/lib/package-runner.cjs +199 -0
  79. package/deliver-great-systems/bin/lib/package-runner.test.cjs +198 -0
  80. package/deliver-great-systems/bin/lib/package-scan-provenance.cjs +56 -0
  81. package/deliver-great-systems/bin/lib/package-scan-provenance.test.cjs +103 -0
  82. package/deliver-great-systems/bin/lib/package-scan-report.cjs +1140 -0
  83. package/deliver-great-systems/bin/lib/package-scan-report.test.cjs +1963 -0
  84. package/deliver-great-systems/bin/lib/package-scan-skill.cjs +96 -0
  85. package/deliver-great-systems/bin/lib/package-scan-skill.test.cjs +136 -0
  86. package/deliver-great-systems/bin/lib/package-scan.cjs +919 -0
  87. package/deliver-great-systems/bin/lib/package-scan.test.cjs +2147 -0
  88. package/deliver-great-systems/bin/lib/phase.cjs +146 -3
  89. package/deliver-great-systems/bin/lib/phase.test.cjs +420 -0
  90. package/deliver-great-systems/bin/lib/plan-number-validity.test.cjs +48 -0
  91. package/deliver-great-systems/bin/lib/projects.cjs +65 -10
  92. package/deliver-great-systems/bin/lib/projects.test.cjs +198 -2
  93. package/deliver-great-systems/bin/lib/quick.cjs +739 -0
  94. package/deliver-great-systems/bin/lib/quick.test.cjs +730 -0
  95. package/deliver-great-systems/bin/lib/repos.cjs +37 -13
  96. package/deliver-great-systems/bin/lib/review.cjs +1821 -0
  97. package/deliver-great-systems/bin/lib/roadmap.cjs +34 -13
  98. package/deliver-great-systems/bin/lib/specs.cjs +3 -81
  99. package/deliver-great-systems/bin/lib/state-transition-gate.test.cjs +160 -0
  100. package/deliver-great-systems/bin/lib/state.cjs +147 -55
  101. package/deliver-great-systems/bin/lib/summary-frontmatter.cjs +54 -0
  102. package/deliver-great-systems/bin/lib/summary-frontmatter.test.cjs +78 -0
  103. package/deliver-great-systems/bin/lib/sweep-scope.test.cjs +263 -0
  104. package/deliver-great-systems/bin/lib/sync.cjs +75 -0
  105. package/deliver-great-systems/bin/lib/verify.cjs +198 -7
  106. package/deliver-great-systems/bin/lib/verify.test.cjs +82 -0
  107. package/deliver-great-systems/bin/lib/wave-0-template-rename.test.cjs +40 -0
  108. package/deliver-great-systems/bin/lib/worktrees.cjs +790 -0
  109. package/deliver-great-systems/bin/lib/worktrees.test.cjs +963 -0
  110. package/deliver-great-systems/references/agent-step-reliability.md +60 -0
  111. package/deliver-great-systems/references/conflict-resolution.md +4 -0
  112. package/deliver-great-systems/references/context-tiers.md +4 -0
  113. package/deliver-great-systems/references/package-scan-config.md +151 -0
  114. package/deliver-great-systems/references/questioning.md +0 -30
  115. package/deliver-great-systems/references/spec-review-loop.md +1 -2
  116. package/deliver-great-systems/references/workflow-conventions.md +29 -0
  117. package/deliver-great-systems/skills/dgs-tests/package-scan.md +44 -0
  118. package/deliver-great-systems/templates/REVIEW.md +35 -0
  119. package/deliver-great-systems/templates/VALIDATION.md +1 -1
  120. package/deliver-great-systems/templates/claude-md.md +27 -0
  121. package/deliver-great-systems/templates/package-scan-report.md +108 -0
  122. package/deliver-great-systems/templates/project.md +6 -170
  123. package/deliver-great-systems/templates/summary.md +3 -1
  124. package/deliver-great-systems/workflows/abandon-quick.md +89 -0
  125. package/deliver-great-systems/workflows/add-idea.md +3 -3
  126. package/deliver-great-systems/workflows/add-phase.md +5 -0
  127. package/deliver-great-systems/workflows/add-tests.md +14 -0
  128. package/deliver-great-systems/workflows/add-todo.md +1 -0
  129. package/deliver-great-systems/workflows/approve-spec.md +25 -4
  130. package/deliver-great-systems/workflows/audit-milestone.md +66 -10
  131. package/deliver-great-systems/workflows/audit-phase.md +15 -5
  132. package/deliver-great-systems/workflows/cancel-job.md +2 -2
  133. package/deliver-great-systems/workflows/check-todos.md +2 -3
  134. package/deliver-great-systems/workflows/codereview.md +103 -9
  135. package/deliver-great-systems/workflows/complete-milestone.md +218 -24
  136. package/deliver-great-systems/workflows/complete-quick.md +106 -0
  137. package/deliver-great-systems/workflows/consolidate-ideas.md +1 -1
  138. package/deliver-great-systems/workflows/create-milestone-job.md +4 -4
  139. package/deliver-great-systems/workflows/develop-idea.md +11 -11
  140. package/deliver-great-systems/workflows/diagnose-issues.md +14 -0
  141. package/deliver-great-systems/workflows/discuss-idea.md +1 -1
  142. package/deliver-great-systems/workflows/discuss-phase.md +3 -2
  143. package/deliver-great-systems/workflows/execute-phase.md +209 -33
  144. package/deliver-great-systems/workflows/execute-plan.md +22 -22
  145. package/deliver-great-systems/workflows/help.md +53 -20
  146. package/deliver-great-systems/workflows/import-spec.md +65 -7
  147. package/deliver-great-systems/workflows/init-product.md +45 -167
  148. package/deliver-great-systems/workflows/new-milestone.md +140 -33
  149. package/deliver-great-systems/workflows/new-project.md +60 -331
  150. package/deliver-great-systems/workflows/package-scan.md +59 -0
  151. package/deliver-great-systems/workflows/plan-phase.md +79 -1
  152. package/deliver-great-systems/workflows/progress-all.md +133 -0
  153. package/deliver-great-systems/workflows/quick-abandon.md +89 -0
  154. package/deliver-great-systems/workflows/quick-complete.md +106 -0
  155. package/deliver-great-systems/workflows/quick.md +328 -26
  156. package/deliver-great-systems/workflows/refine-spec.md +1 -1
  157. package/deliver-great-systems/workflows/research-idea.md +77 -139
  158. package/deliver-great-systems/workflows/resume-project.md +2 -2
  159. package/deliver-great-systems/workflows/run-job.md +29 -43
  160. package/deliver-great-systems/workflows/settings.md +13 -77
  161. package/deliver-great-systems/workflows/validate-phase.md +39 -1
  162. package/deliver-great-systems/workflows/verify-work.md +14 -0
  163. package/deliver-great-systems/workflows/write-spec.md +11 -13
  164. package/hooks/dist/dgs-enforce-discipline.js +196 -0
  165. package/package.json +1 -1
  166. package/scripts/build-hooks.js +1 -0
@@ -0,0 +1,77 @@
1
+ // deliver-great-systems/bin/lib/audit-tolerance.cjs
2
+ // REL-10: cross-reference matrix for /dgs:audit-milestone status determination.
3
+ // Extends the existing 5d matrix with soft-tolerance for empty requirements_completed
4
+ // when VERIFICATION explicitly lists the ID and status: passed.
5
+ //
6
+ // Soft-warning channel: 'summary-frontmatter-empty-but-verified' — distinct from
7
+ // real partials. Surfaces under audit JSON `soft_warnings.summary_frontmatter_empty_but_verified`,
8
+ // NOT under `gaps.requirements`. Removal trigger: 3 consecutive milestones ship
9
+ // with zero soft-warnings → drop the tolerance row, restore strict default.
10
+
11
+ const SOFT_WARNING_EMPTY_BUT_VERIFIED = 'summary-frontmatter-empty-but-verified';
12
+
13
+ function applyMatrix(input) {
14
+ const {
15
+ verificationStatus,
16
+ requirementsClaimed = [],
17
+ summaryRequirementsCompleted = [],
18
+ reqId,
19
+ strictAudit = false,
20
+ } = input;
21
+
22
+ if (!reqId) {
23
+ return { status: 'unsatisfied', softWarning: null };
24
+ }
25
+
26
+ // gaps_found short-circuits everything — VERIFICATION explicitly failed.
27
+ if (verificationStatus === 'gaps_found') {
28
+ return { status: 'unsatisfied', softWarning: null };
29
+ }
30
+
31
+ const summaryListsId = summaryRequirementsCompleted.includes(reqId);
32
+ const verificationListsId = requirementsClaimed.includes(reqId);
33
+
34
+ // Happy path: VERIFICATION passed AND SUMMARY explicitly populated.
35
+ if (verificationStatus === 'passed' && summaryListsId) {
36
+ return { status: 'satisfied', softWarning: null };
37
+ }
38
+
39
+ // Tolerance path: VERIFICATION passed AND lists ID, SUMMARY empty/missing, NOT strict.
40
+ if (
41
+ verificationStatus === 'passed' &&
42
+ !summaryListsId &&
43
+ verificationListsId &&
44
+ !strictAudit
45
+ ) {
46
+ return { status: 'satisfied', softWarning: SOFT_WARNING_EMPTY_BUT_VERIFIED };
47
+ }
48
+
49
+ // Strict path: same input as tolerance path but --strict-audit forces partial.
50
+ if (
51
+ verificationStatus === 'passed' &&
52
+ !summaryListsId &&
53
+ verificationListsId &&
54
+ strictAudit
55
+ ) {
56
+ return { status: 'partial', softWarning: null };
57
+ }
58
+
59
+ // VERIFICATION passed but does NOT list the ID, SUMMARY empty → real partial.
60
+ // (Tolerance must NOT mask this — the safety net per spec.)
61
+ if (verificationStatus === 'passed' && !summaryListsId && !verificationListsId) {
62
+ return { status: 'partial', softWarning: null };
63
+ }
64
+
65
+ // VERIFICATION missing → unsatisfied (orphan-style).
66
+ if (verificationStatus === 'missing') {
67
+ if (summaryListsId) {
68
+ return { status: 'partial', softWarning: null };
69
+ }
70
+ return { status: 'unsatisfied', softWarning: null };
71
+ }
72
+
73
+ // Default fallthrough.
74
+ return { status: 'unsatisfied', softWarning: null };
75
+ }
76
+
77
+ module.exports = { applyMatrix, SOFT_WARNING_EMPTY_BUT_VERIFIED };
@@ -0,0 +1,101 @@
1
+ // deliver-great-systems/bin/lib/audit-tolerance.test.cjs
2
+ // REL-10 regression test scaffold — initially RED. Turns GREEN after plan 03
3
+ // extends the audit cross-reference matrix with soft-tolerance + adds
4
+ // --strict-audit flag handling.
5
+
6
+ const test = require('node:test');
7
+ const assert = require('node:assert');
8
+
9
+ // REL-10 surfaces a function applyMatrix(input) -> { status, softWarning? }
10
+ // in a new module bin/lib/audit-tolerance.cjs. Plan 03 implements it.
11
+ // applyMatrix input shape:
12
+ // { verificationStatus: 'passed'|'gaps_found'|'missing',
13
+ // requirementsClaimed: string[], // from VERIFICATION.md frontmatter
14
+ // summaryRequirementsCompleted: string[], // from SUMMARY.md frontmatter (canonical key)
15
+ // reqId: string, // requirement ID under evaluation
16
+ // strictAudit: boolean // --strict-audit flag
17
+ // }
18
+ // applyMatrix output:
19
+ // { status: 'satisfied'|'partial'|'unsatisfied',
20
+ // softWarning: 'summary-frontmatter-empty-but-verified' | null
21
+ // }
22
+
23
+ function getApplyMatrix() {
24
+ try {
25
+ return require('./audit-tolerance.cjs').applyMatrix;
26
+ } catch (err) {
27
+ assert.fail('REL-10 audit-tolerance module not yet implemented: bin/lib/audit-tolerance.cjs (plan 03 task)');
28
+ }
29
+ }
30
+
31
+ test('REL-10: empty SUMMARY + VERIFICATION lists ID + status passed → satisfied + soft-warning', () => {
32
+ const applyMatrix = getApplyMatrix();
33
+ const result = applyMatrix({
34
+ verificationStatus: 'passed',
35
+ requirementsClaimed: ['TEST-01'],
36
+ summaryRequirementsCompleted: [],
37
+ reqId: 'TEST-01',
38
+ strictAudit: false,
39
+ });
40
+
41
+ assert.strictEqual(result.status, 'satisfied');
42
+ assert.strictEqual(result.softWarning, 'summary-frontmatter-empty-but-verified');
43
+ });
44
+
45
+ test('REL-10: --strict-audit preserves old strict behaviour (empty SUMMARY → partial)', () => {
46
+ const applyMatrix = getApplyMatrix();
47
+ const result = applyMatrix({
48
+ verificationStatus: 'passed',
49
+ requirementsClaimed: ['TEST-01'],
50
+ summaryRequirementsCompleted: [],
51
+ reqId: 'TEST-01',
52
+ strictAudit: true,
53
+ });
54
+
55
+ assert.strictEqual(result.status, 'partial');
56
+ // soft-warning may be null OR may still flag; spec is silent; canonical: null under strict
57
+ assert.strictEqual(result.softWarning || null, null);
58
+ });
59
+
60
+ test('REL-10: tolerance does NOT mask real partials (VERIFICATION not listing ID still partial)', () => {
61
+ const applyMatrix = getApplyMatrix();
62
+ const result = applyMatrix({
63
+ verificationStatus: 'passed',
64
+ requirementsClaimed: ['OTHER-01'], // does NOT list TEST-01
65
+ summaryRequirementsCompleted: [],
66
+ reqId: 'TEST-01',
67
+ strictAudit: false,
68
+ });
69
+
70
+ assert.strictEqual(result.status, 'partial');
71
+ assert.strictEqual(result.softWarning || null, null);
72
+ });
73
+
74
+ test('REL-10: gaps_found VERIFICATION → unsatisfied regardless of SUMMARY shape', () => {
75
+ const applyMatrix = getApplyMatrix();
76
+ const result = applyMatrix({
77
+ verificationStatus: 'gaps_found',
78
+ requirementsClaimed: ['TEST-01'],
79
+ summaryRequirementsCompleted: ['TEST-01'],
80
+ reqId: 'TEST-01',
81
+ strictAudit: false,
82
+ });
83
+
84
+ assert.strictEqual(result.status, 'unsatisfied');
85
+ });
86
+
87
+ test('REL-10: SUMMARY explicitly populated + VERIFICATION passed → satisfied (no soft-warning)', () => {
88
+ const applyMatrix = getApplyMatrix();
89
+ const result = applyMatrix({
90
+ verificationStatus: 'passed',
91
+ requirementsClaimed: ['TEST-01'],
92
+ summaryRequirementsCompleted: ['TEST-01'],
93
+ reqId: 'TEST-01',
94
+ strictAudit: false,
95
+ });
96
+
97
+ assert.strictEqual(result.status, 'satisfied');
98
+ assert.strictEqual(result.softWarning || null, null);
99
+ });
100
+
101
+ // REL-10 sentinel — flag this file as a Wave-0 RED scaffold for plan 03.