sddflow 2.7.52__tar.gz → 2.7.53__tar.gz

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 (756) hide show
  1. {sddflow-2.7.52 → sddflow-2.7.53}/PKG-INFO +39 -1
  2. {sddflow-2.7.52 → sddflow-2.7.53}/README.md +38 -0
  3. {sddflow-2.7.52 → sddflow-2.7.53}/pyproject.toml +1 -1
  4. sddflow-2.7.53/sdd/__init__.py +1 -0
  5. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/review.py +347 -0
  6. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/upgrade.py +53 -0
  7. {sddflow-2.7.52/sdd/packs/sdd-fullstack → sddflow-2.7.53/sdd/packs/sdd-backend-service}/.github/prompts/specify-brd.prompt.md +10 -3
  8. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/specify-doc.prompt.md +7 -3
  9. {sddflow-2.7.52/sdd/packs/sdd-fullstack → sddflow-2.7.53/sdd/packs/sdd-backend-service}/.github/prompts/specify-srd.prompt.md +7 -3
  10. {sddflow-2.7.52/sdd/packs/sdd-fullstack → sddflow-2.7.53/sdd/packs/sdd-backend-service}/.github/prompts/specify-uc.prompt.md +8 -3
  11. {sddflow-2.7.52/sdd/packs/sdd-universal → sddflow-2.7.53/sdd/packs/sdd-backend-service}/.github/prompts/validate.prompt.md +36 -7
  12. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/manifest.yml +1 -1
  13. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/CLAUDE.md +11 -0
  14. {sddflow-2.7.52/sdd/packs/sdd-mobile → sddflow-2.7.53/sdd/packs/sdd-frontend-spa}/.github/prompts/specify-brd.prompt.md +10 -3
  15. {sddflow-2.7.52/sdd/packs/sdd-fullstack → sddflow-2.7.53/sdd/packs/sdd-frontend-spa}/.github/prompts/specify-doc.prompt.md +7 -3
  16. {sddflow-2.7.52/sdd/packs/sdd-backend-service → sddflow-2.7.53/sdd/packs/sdd-frontend-spa}/.github/prompts/specify-srd.prompt.md +7 -3
  17. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-uc.prompt.md +8 -3
  18. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/validate.prompt.md +36 -7
  19. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/manifest.yml +1 -1
  20. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/CLAUDE.md +11 -0
  21. {sddflow-2.7.52/sdd/packs/sdd-frontend-spa → sddflow-2.7.53/sdd/packs/sdd-fullstack}/.github/prompts/specify-brd.prompt.md +10 -3
  22. {sddflow-2.7.52/sdd/packs/sdd-frontend-spa → sddflow-2.7.53/sdd/packs/sdd-fullstack}/.github/prompts/specify-doc.prompt.md +7 -3
  23. {sddflow-2.7.52/sdd/packs/sdd-frontend-spa → sddflow-2.7.53/sdd/packs/sdd-fullstack}/.github/prompts/specify-srd.prompt.md +7 -3
  24. {sddflow-2.7.52/sdd/packs/sdd-backend-service → sddflow-2.7.53/sdd/packs/sdd-fullstack}/.github/prompts/specify-uc.prompt.md +8 -3
  25. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/validate.prompt.md +36 -7
  26. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/manifest.yml +1 -1
  27. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/CLAUDE.md +11 -0
  28. {sddflow-2.7.52/sdd/packs/sdd-backend-service → sddflow-2.7.53/sdd/packs/sdd-mobile}/.github/prompts/specify-brd.prompt.md +10 -3
  29. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/specify-doc.prompt.md +7 -3
  30. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/specify-srd.prompt.md +7 -3
  31. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/specify-uc.prompt.md +8 -3
  32. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/validate.prompt.md +36 -7
  33. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/manifest.yml +1 -1
  34. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/CLAUDE.md +11 -0
  35. sddflow-2.7.53/sdd/packs/sdd-universal/.github/prompts/specify-brd.prompt.md +227 -0
  36. sddflow-2.7.53/sdd/packs/sdd-universal/.github/prompts/specify-doc.prompt.md +313 -0
  37. sddflow-2.7.53/sdd/packs/sdd-universal/.github/prompts/specify-srd.prompt.md +240 -0
  38. sddflow-2.7.53/sdd/packs/sdd-universal/.github/prompts/specify-uc.prompt.md +259 -0
  39. {sddflow-2.7.52/sdd/packs/sdd-backend-service → sddflow-2.7.53/sdd/packs/sdd-universal}/.github/prompts/validate.prompt.md +36 -7
  40. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/manifest.yml +1 -1
  41. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/CLAUDE.md +11 -0
  42. sddflow-2.7.52/sdd/__init__.py +0 -1
  43. sddflow-2.7.52/sdd/packs/sdd-universal/.github/prompts/specify-brd.prompt.md +0 -220
  44. sddflow-2.7.52/sdd/packs/sdd-universal/.github/prompts/specify-doc.prompt.md +0 -309
  45. sddflow-2.7.52/sdd/packs/sdd-universal/.github/prompts/specify-srd.prompt.md +0 -236
  46. sddflow-2.7.52/sdd/packs/sdd-universal/.github/prompts/specify-uc.prompt.md +0 -254
  47. {sddflow-2.7.52 → sddflow-2.7.53}/.gitignore +0 -0
  48. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/__main__.py +0 -0
  49. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/__init__.py +0 -0
  50. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/config.py +0 -0
  51. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/confluence.py +0 -0
  52. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/cr.py +0 -0
  53. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/dashboard.py +0 -0
  54. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/init.py +0 -0
  55. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/jira.py +0 -0
  56. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/commands/pr.py +0 -0
  57. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/address-review.md +0 -0
  58. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/analyze.md +0 -0
  59. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/ava.md +0 -0
  60. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/bug-assess.md +0 -0
  61. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/bug-fix.md +0 -0
  62. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/change.md +0 -0
  63. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/check-review.md +0 -0
  64. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/checklist.md +0 -0
  65. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/clarify.md +0 -0
  66. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/create-context.md +0 -0
  67. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/implement.md +0 -0
  68. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/jira-push.md +0 -0
  69. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/kai.md +0 -0
  70. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/leo.md +0 -0
  71. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/maya.md +0 -0
  72. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/morgan.md +0 -0
  73. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/orchestrate.md +0 -0
  74. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/plan-adr.md +0 -0
  75. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/plan-arch.md +0 -0
  76. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/plan-design.md +0 -0
  77. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/plan-hld.md +0 -0
  78. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/plan-lld.md +0 -0
  79. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/pre-review.md +0 -0
  80. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/quinn.md +0 -0
  81. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/release.md +0 -0
  82. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/rex.md +0 -0
  83. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/riley.md +0 -0
  84. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/specify-brd.md +0 -0
  85. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/specify-doc.md +0 -0
  86. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/specify-srd.md +0 -0
  87. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/specify-uc.md +0 -0
  88. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/specify.md +0 -0
  89. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/start.md +0 -0
  90. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/submit-review.md +0 -0
  91. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/task.md +0 -0
  92. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/taskstoissues.md +0 -0
  93. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.claude/commands/validate.md +0 -0
  94. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.cursor/rules/sdd-framework.mdc +0 -0
  95. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/copilot-instructions.md +0 -0
  96. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/instructions/api.instructions.md +0 -0
  97. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/instructions/domain.instructions.md +0 -0
  98. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/instructions/java.instructions.md +0 -0
  99. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/instructions/tests.instructions.md +0 -0
  100. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/address-review.prompt.md +0 -0
  101. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/analyze.prompt.md +0 -0
  102. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/ava.prompt.md +0 -0
  103. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/bug-assess.prompt.md +0 -0
  104. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/bug-fix.prompt.md +0 -0
  105. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/change.prompt.md +0 -0
  106. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/check-review.prompt.md +0 -0
  107. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/checklist.prompt.md +0 -0
  108. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/clarify.prompt.md +0 -0
  109. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/create-context.prompt.md +0 -0
  110. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/implement.prompt.md +0 -0
  111. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/jira-push.prompt.md +0 -0
  112. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/kai.prompt.md +0 -0
  113. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/leo.prompt.md +0 -0
  114. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/maya.prompt.md +0 -0
  115. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/morgan.prompt.md +0 -0
  116. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/orchestrate.prompt.md +0 -0
  117. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/plan-adr.prompt.md +0 -0
  118. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/plan-arch.prompt.md +0 -0
  119. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/plan-design.prompt.md +0 -0
  120. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/plan-hld.prompt.md +0 -0
  121. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/plan-lld.prompt.md +0 -0
  122. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/pre-review.prompt.md +0 -0
  123. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/quinn.prompt.md +0 -0
  124. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/release.prompt.md +0 -0
  125. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/rex.prompt.md +0 -0
  126. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/riley.prompt.md +0 -0
  127. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/specify.prompt.md +0 -0
  128. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/submit-review.prompt.md +0 -0
  129. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/task.prompt.md +0 -0
  130. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/prompts/taskstoissues.prompt.md +0 -0
  131. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.github/workflows/quality-gate.yml +0 -0
  132. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.gitignore +0 -0
  133. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.gitlab-ci.yml +0 -0
  134. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  135. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/integrations.yml.example +0 -0
  136. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/memory/change-rules.md +0 -0
  137. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/memory/constitution.md +0 -0
  138. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/memory/roles.yml +0 -0
  139. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/memory/summary-rules.md +0 -0
  140. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/memory/token-pricing.yml.example +0 -0
  141. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/adr-template.md +0 -0
  142. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/analyze-template.md +0 -0
  143. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/api-spec-template.md +0 -0
  144. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/arch-template.md +0 -0
  145. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/brd-template.md +0 -0
  146. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/changeset-template.md +0 -0
  147. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/checklist-template.md +0 -0
  148. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/clarify-template.md +0 -0
  149. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/constitution-amendment-template.md +0 -0
  150. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/context-template.md +0 -0
  151. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/data-model-template.md +0 -0
  152. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/design-template.md +0 -0
  153. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/docker-config-template.md +0 -0
  154. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/feature-story-template.md +0 -0
  155. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/hld-template.md +0 -0
  156. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/investigation-template.md +0 -0
  157. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/jira-export-template.md +0 -0
  158. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/k8s-manifest-template.md +0 -0
  159. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/lld-template.md +0 -0
  160. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/openapi-template.md +0 -0
  161. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/plan-template.md +0 -0
  162. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/qa-testcases-template.md +0 -0
  163. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/release-template.md +0 -0
  164. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/resilience-template.md +0 -0
  165. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/runbook-template.md +0 -0
  166. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/security-design-template.md +0 -0
  167. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/srd-template.md +0 -0
  168. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/tasks-template.md +0 -0
  169. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/token-usage-template.md +0 -0
  170. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/use-cases-template.md +0 -0
  171. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.specify/templates/validate-template.md +0 -0
  172. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.vscode/extensions.json +0 -0
  173. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/.windsurfrules +0 -0
  174. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/CHANGE-GUIDE.md +0 -0
  175. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/CLAUDE.local.md +0 -0
  176. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/FLOW-ROLES-GATES.md +0 -0
  177. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/HOW-TO-USE.md +0 -0
  178. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/IMPROVEMENT-BACKLOG.md +0 -0
  179. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/PROMPT-GUIDE.md +0 -0
  180. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/QUICKSTART.md +0 -0
  181. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/README.md +0 -0
  182. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/SDLC-COMPLETE-GUIDE.md +0 -0
  183. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/WHY-SDD.md +0 -0
  184. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/azure-pipelines.yml +0 -0
  185. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/bitbucket-pipelines.yml +0 -0
  186. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/docs/SUMMARY-GUIDE.md +0 -0
  187. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/setup.ps1 +0 -0
  188. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-backend-service/setup.sh +0 -0
  189. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/address-review.md +0 -0
  190. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/analyze.md +0 -0
  191. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/ava.md +0 -0
  192. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/bug-assess.md +0 -0
  193. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/bug-fix.md +0 -0
  194. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/change.md +0 -0
  195. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/check-review.md +0 -0
  196. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/checklist.md +0 -0
  197. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/clarify.md +0 -0
  198. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/create-context.md +0 -0
  199. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/implement.md +0 -0
  200. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/jira-push.md +0 -0
  201. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/kai.md +0 -0
  202. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/leo.md +0 -0
  203. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/maya.md +0 -0
  204. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/morgan.md +0 -0
  205. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/orchestrate.md +0 -0
  206. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-adr.md +0 -0
  207. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-arch.md +0 -0
  208. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-design.md +0 -0
  209. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-hld.md +0 -0
  210. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-lld.md +0 -0
  211. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/pre-review.md +0 -0
  212. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/quinn.md +0 -0
  213. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/release.md +0 -0
  214. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/rex.md +0 -0
  215. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/riley.md +0 -0
  216. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-brd.md +0 -0
  217. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-doc.md +0 -0
  218. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-srd.md +0 -0
  219. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-uc.md +0 -0
  220. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/specify.md +0 -0
  221. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/start.md +0 -0
  222. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/submit-review.md +0 -0
  223. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/task.md +0 -0
  224. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/taskstoissues.md +0 -0
  225. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.claude/commands/validate.md +0 -0
  226. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.cursor/rules/sdd-framework.mdc +0 -0
  227. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/copilot-instructions.md +0 -0
  228. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/instructions/components.instructions.md +0 -0
  229. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/instructions/services.instructions.md +0 -0
  230. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/instructions/tests.instructions.md +0 -0
  231. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/address-review.prompt.md +0 -0
  232. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/analyze.prompt.md +0 -0
  233. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/ava.prompt.md +0 -0
  234. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/bug-assess.prompt.md +0 -0
  235. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/bug-fix.prompt.md +0 -0
  236. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/change.prompt.md +0 -0
  237. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/check-review.prompt.md +0 -0
  238. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/checklist.prompt.md +0 -0
  239. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/clarify.prompt.md +0 -0
  240. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/create-context.prompt.md +0 -0
  241. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/implement.prompt.md +0 -0
  242. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/jira-push.prompt.md +0 -0
  243. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/kai.prompt.md +0 -0
  244. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/leo.prompt.md +0 -0
  245. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/maya.prompt.md +0 -0
  246. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/morgan.prompt.md +0 -0
  247. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/orchestrate.prompt.md +0 -0
  248. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-adr.prompt.md +0 -0
  249. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-arch.prompt.md +0 -0
  250. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-design.prompt.md +0 -0
  251. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-hld.prompt.md +0 -0
  252. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-lld.prompt.md +0 -0
  253. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/pre-review.prompt.md +0 -0
  254. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/quinn.prompt.md +0 -0
  255. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/release.prompt.md +0 -0
  256. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/rex.prompt.md +0 -0
  257. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/riley.prompt.md +0 -0
  258. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/specify.prompt.md +0 -0
  259. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/submit-review.prompt.md +0 -0
  260. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/task.prompt.md +0 -0
  261. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/prompts/taskstoissues.prompt.md +0 -0
  262. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.github/workflows/quality-gate.yml +0 -0
  263. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.gitignore +0 -0
  264. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.gitlab-ci.yml +0 -0
  265. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  266. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/integrations.yml.example +0 -0
  267. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/memory/change-rules.md +0 -0
  268. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/memory/constitution.md +0 -0
  269. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/memory/roles.yml +0 -0
  270. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/memory/summary-rules.md +0 -0
  271. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/memory/token-pricing.yml.example +0 -0
  272. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/adr-template.md +0 -0
  273. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/analyze-template.md +0 -0
  274. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/api-spec-template.md +0 -0
  275. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/arch-template.md +0 -0
  276. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/brd-template.md +0 -0
  277. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/changeset-template.md +0 -0
  278. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/checklist-template.md +0 -0
  279. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/clarify-template.md +0 -0
  280. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/component-library-template.md +0 -0
  281. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/component-spec-template.md +0 -0
  282. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/constitution-amendment-template.md +0 -0
  283. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/context-template.md +0 -0
  284. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/data-model-template.md +0 -0
  285. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/design-template.md +0 -0
  286. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/docker-config-template.md +0 -0
  287. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/feature-story-template.md +0 -0
  288. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/hld-template.md +0 -0
  289. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/investigation-template.md +0 -0
  290. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/jira-export-template.md +0 -0
  291. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/lld-template.md +0 -0
  292. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/plan-template.md +0 -0
  293. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/qa-testcases-template.md +0 -0
  294. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/release-template.md +0 -0
  295. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/resilience-template.md +0 -0
  296. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/runbook-template.md +0 -0
  297. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/security-design-template.md +0 -0
  298. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/srd-template.md +0 -0
  299. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/tasks-template.md +0 -0
  300. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/token-usage-template.md +0 -0
  301. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/use-cases-template.md +0 -0
  302. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/ux-flow-template.md +0 -0
  303. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.specify/templates/validate-template.md +0 -0
  304. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.vscode/extensions.json +0 -0
  305. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/.windsurfrules +0 -0
  306. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/CHANGE-GUIDE.md +0 -0
  307. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/CLAUDE.local.md +0 -0
  308. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/FLOW-ROLES-GATES.md +0 -0
  309. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/HOW-TO-USE.md +0 -0
  310. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/IMPROVEMENT-BACKLOG.md +0 -0
  311. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/PROMPT-GUIDE.md +0 -0
  312. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/QUICKSTART.md +0 -0
  313. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/README.md +0 -0
  314. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/SDLC-COMPLETE-GUIDE.md +0 -0
  315. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/WHY-SDD.md +0 -0
  316. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/azure-pipelines.yml +0 -0
  317. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/bitbucket-pipelines.yml +0 -0
  318. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/docs/SUMMARY-GUIDE.md +0 -0
  319. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/setup.ps1 +0 -0
  320. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-frontend-spa/setup.sh +0 -0
  321. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/address-review.md +0 -0
  322. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/analyze.md +0 -0
  323. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/ava.md +0 -0
  324. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/bug-assess.md +0 -0
  325. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/bug-fix.md +0 -0
  326. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/change.md +0 -0
  327. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/check-review.md +0 -0
  328. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/checklist.md +0 -0
  329. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/clarify.md +0 -0
  330. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/create-context.md +0 -0
  331. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/implement.md +0 -0
  332. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/jira-push.md +0 -0
  333. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/kai.md +0 -0
  334. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/leo.md +0 -0
  335. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/maya.md +0 -0
  336. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/morgan.md +0 -0
  337. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/orchestrate.md +0 -0
  338. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/plan-adr.md +0 -0
  339. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/plan-arch.md +0 -0
  340. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/plan-design.md +0 -0
  341. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/plan-hld.md +0 -0
  342. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/plan-lld.md +0 -0
  343. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/pre-review.md +0 -0
  344. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/quinn.md +0 -0
  345. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/release.md +0 -0
  346. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/rex.md +0 -0
  347. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/riley.md +0 -0
  348. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/specify-brd.md +0 -0
  349. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/specify-doc.md +0 -0
  350. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/specify-srd.md +0 -0
  351. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/specify-uc.md +0 -0
  352. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/specify.md +0 -0
  353. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/start.md +0 -0
  354. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/submit-review.md +0 -0
  355. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/task.md +0 -0
  356. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/taskstoissues.md +0 -0
  357. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.claude/commands/validate.md +0 -0
  358. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.cursor/rules/sdd-framework.mdc +0 -0
  359. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/copilot-instructions.md +0 -0
  360. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/instructions/backend-tests.instructions.md +0 -0
  361. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/instructions/components.instructions.md +0 -0
  362. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/instructions/domain.instructions.md +0 -0
  363. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/instructions/frontend-services.instructions.md +0 -0
  364. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/instructions/java.instructions.md +0 -0
  365. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/address-review.prompt.md +0 -0
  366. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/analyze.prompt.md +0 -0
  367. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/ava.prompt.md +0 -0
  368. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/bug-assess.prompt.md +0 -0
  369. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/bug-fix.prompt.md +0 -0
  370. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/change.prompt.md +0 -0
  371. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/check-review.prompt.md +0 -0
  372. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/checklist.prompt.md +0 -0
  373. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/clarify.prompt.md +0 -0
  374. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/create-context.prompt.md +0 -0
  375. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/implement.prompt.md +0 -0
  376. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/jira-push.prompt.md +0 -0
  377. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/kai.prompt.md +0 -0
  378. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/leo.prompt.md +0 -0
  379. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/maya.prompt.md +0 -0
  380. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/morgan.prompt.md +0 -0
  381. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/orchestrate.prompt.md +0 -0
  382. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/plan-adr.prompt.md +0 -0
  383. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/plan-arch.prompt.md +0 -0
  384. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/plan-design.prompt.md +0 -0
  385. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/plan-hld.prompt.md +0 -0
  386. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/plan-lld.prompt.md +0 -0
  387. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/pre-review.prompt.md +0 -0
  388. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/quinn.prompt.md +0 -0
  389. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/release.prompt.md +0 -0
  390. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/rex.prompt.md +0 -0
  391. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/riley.prompt.md +0 -0
  392. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/specify.prompt.md +0 -0
  393. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/submit-review.prompt.md +0 -0
  394. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/task.prompt.md +0 -0
  395. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/prompts/taskstoissues.prompt.md +0 -0
  396. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.github/workflows/quality-gate.yml +0 -0
  397. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.gitignore +0 -0
  398. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.gitlab-ci.yml +0 -0
  399. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  400. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/integrations.yml.example +0 -0
  401. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/memory/change-rules.md +0 -0
  402. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/memory/constitution.md +0 -0
  403. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/memory/roles.yml +0 -0
  404. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/memory/summary-rules.md +0 -0
  405. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/memory/token-pricing.yml.example +0 -0
  406. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/adr-template.md +0 -0
  407. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/analyze-template.md +0 -0
  408. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/api-spec-template.md +0 -0
  409. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/arch-template.md +0 -0
  410. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/brd-template.md +0 -0
  411. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/changeset-template.md +0 -0
  412. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/checklist-template.md +0 -0
  413. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/clarify-template.md +0 -0
  414. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/component-library-template.md +0 -0
  415. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/component-spec-template.md +0 -0
  416. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/constitution-amendment-template.md +0 -0
  417. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/context-template.md +0 -0
  418. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/data-model-template.md +0 -0
  419. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/design-template.md +0 -0
  420. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/docker-config-template.md +0 -0
  421. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/feature-story-template.md +0 -0
  422. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/hld-template.md +0 -0
  423. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/investigation-template.md +0 -0
  424. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/jira-export-template.md +0 -0
  425. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/lld-template.md +0 -0
  426. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/openapi-template.md +0 -0
  427. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/plan-template.md +0 -0
  428. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/qa-testcases-template.md +0 -0
  429. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/release-template.md +0 -0
  430. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/resilience-template.md +0 -0
  431. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/runbook-template.md +0 -0
  432. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/screen-spec-template.md +0 -0
  433. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/security-design-template.md +0 -0
  434. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/srd-template.md +0 -0
  435. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/tasks-template.md +0 -0
  436. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/token-usage-template.md +0 -0
  437. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/use-cases-template.md +0 -0
  438. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/ux-flow-template.md +0 -0
  439. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.specify/templates/validate-template.md +0 -0
  440. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.vscode/extensions.json +0 -0
  441. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/.windsurfrules +0 -0
  442. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/CHANGE-GUIDE.md +0 -0
  443. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/CLAUDE.local.md +0 -0
  444. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/FLOW-ROLES-GATES.md +0 -0
  445. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/HOW-TO-USE.md +0 -0
  446. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/PROMPT-GUIDE.md +0 -0
  447. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/QUICKSTART.md +0 -0
  448. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/README.md +0 -0
  449. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/SDLC-COMPLETE-GUIDE.md +0 -0
  450. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/WHY-SDD.md +0 -0
  451. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/azure-pipelines.yml +0 -0
  452. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/bitbucket-pipelines.yml +0 -0
  453. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/docs/SUMMARY-GUIDE.md +0 -0
  454. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/setup.ps1 +0 -0
  455. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-fullstack/setup.sh +0 -0
  456. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.claude/commands/create-context.md +0 -0
  457. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.claude/commands/implement.md +0 -0
  458. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.claude/commands/specify.md +0 -0
  459. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.claude/commands/start.md +0 -0
  460. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.claude/commands/task.md +0 -0
  461. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.cursor/rules/sdd-framework.mdc +0 -0
  462. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.github/copilot-instructions.md +0 -0
  463. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.github/prompts/create-context.prompt.md +0 -0
  464. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.github/prompts/implement.prompt.md +0 -0
  465. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.github/prompts/specify.prompt.md +0 -0
  466. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.github/prompts/task.prompt.md +0 -0
  467. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  468. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.specify/manifest.yml +0 -0
  469. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.specify/memory/constitution.md +0 -0
  470. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.specify/templates/context-template.md +0 -0
  471. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.specify/templates/tasks-template.md +0 -0
  472. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/.windsurfrules +0 -0
  473. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/CLAUDE.md +0 -0
  474. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/QUICKSTART.md +0 -0
  475. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/README.md +0 -0
  476. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/WHY-SDD.md +0 -0
  477. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/setup.ps1 +0 -0
  478. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-micro/setup.sh +0 -0
  479. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/address-review.md +0 -0
  480. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/analyze.md +0 -0
  481. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/ava.md +0 -0
  482. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/bug-assess.md +0 -0
  483. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/bug-fix.md +0 -0
  484. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/change.md +0 -0
  485. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/check-review.md +0 -0
  486. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/checklist.md +0 -0
  487. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/clarify.md +0 -0
  488. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/create-context.md +0 -0
  489. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/implement.md +0 -0
  490. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/jira-push.md +0 -0
  491. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/kai.md +0 -0
  492. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/leo.md +0 -0
  493. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/maya.md +0 -0
  494. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/morgan.md +0 -0
  495. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/orchestrate.md +0 -0
  496. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/plan-adr.md +0 -0
  497. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/plan-arch.md +0 -0
  498. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/plan-design.md +0 -0
  499. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/plan-hld.md +0 -0
  500. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/plan-lld.md +0 -0
  501. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/pre-review.md +0 -0
  502. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/quinn.md +0 -0
  503. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/release.md +0 -0
  504. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/rex.md +0 -0
  505. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/riley.md +0 -0
  506. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/specify-brd.md +0 -0
  507. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/specify-doc.md +0 -0
  508. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/specify-srd.md +0 -0
  509. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/specify-uc.md +0 -0
  510. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/specify.md +0 -0
  511. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/start.md +0 -0
  512. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/submit-review.md +0 -0
  513. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/task.md +0 -0
  514. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/taskstoissues.md +0 -0
  515. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.claude/commands/validate.md +0 -0
  516. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.cursor/rules/sdd-framework.mdc +0 -0
  517. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/copilot-instructions.md +0 -0
  518. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/instructions/screens.instructions.md +0 -0
  519. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/instructions/services.instructions.md +0 -0
  520. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/instructions/tests.instructions.md +0 -0
  521. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/address-review.prompt.md +0 -0
  522. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/analyze.prompt.md +0 -0
  523. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/ava.prompt.md +0 -0
  524. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/bug-assess.prompt.md +0 -0
  525. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/bug-fix.prompt.md +0 -0
  526. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/change.prompt.md +0 -0
  527. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/check-review.prompt.md +0 -0
  528. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/checklist.prompt.md +0 -0
  529. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/clarify.prompt.md +0 -0
  530. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/create-context.prompt.md +0 -0
  531. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/implement.prompt.md +0 -0
  532. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/jira-push.prompt.md +0 -0
  533. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/kai.prompt.md +0 -0
  534. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/leo.prompt.md +0 -0
  535. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/maya.prompt.md +0 -0
  536. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/morgan.prompt.md +0 -0
  537. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/orchestrate.prompt.md +0 -0
  538. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/plan-adr.prompt.md +0 -0
  539. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/plan-arch.prompt.md +0 -0
  540. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/plan-design.prompt.md +0 -0
  541. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/plan-hld.prompt.md +0 -0
  542. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/plan-lld.prompt.md +0 -0
  543. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/pre-review.prompt.md +0 -0
  544. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/quinn.prompt.md +0 -0
  545. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/release.prompt.md +0 -0
  546. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/rex.prompt.md +0 -0
  547. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/riley.prompt.md +0 -0
  548. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/specify.prompt.md +0 -0
  549. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/submit-review.prompt.md +0 -0
  550. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/task.prompt.md +0 -0
  551. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/prompts/taskstoissues.prompt.md +0 -0
  552. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.github/workflows/quality-gate.yml +0 -0
  553. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.gitignore +0 -0
  554. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.gitlab-ci.yml +0 -0
  555. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  556. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/integrations.yml.example +0 -0
  557. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/memory/change-rules.md +0 -0
  558. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/memory/constitution.md +0 -0
  559. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/memory/roles.yml +0 -0
  560. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/memory/summary-rules.md +0 -0
  561. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/memory/token-pricing.yml.example +0 -0
  562. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/adr-template.md +0 -0
  563. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/analyze-template.md +0 -0
  564. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/api-spec-template.md +0 -0
  565. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/arch-template.md +0 -0
  566. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/brd-template.md +0 -0
  567. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/changeset-template.md +0 -0
  568. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/checklist-template.md +0 -0
  569. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/clarify-template.md +0 -0
  570. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/constitution-amendment-template.md +0 -0
  571. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/context-template.md +0 -0
  572. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/data-model-template.md +0 -0
  573. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/design-template.md +0 -0
  574. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/docker-config-template.md +0 -0
  575. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/feature-story-template.md +0 -0
  576. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/hld-template.md +0 -0
  577. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/investigation-template.md +0 -0
  578. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/jira-export-template.md +0 -0
  579. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/lld-template.md +0 -0
  580. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/plan-template.md +0 -0
  581. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/qa-testcases-template.md +0 -0
  582. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/release-template.md +0 -0
  583. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/resilience-template.md +0 -0
  584. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/runbook-template.md +0 -0
  585. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/screen-spec-template.md +0 -0
  586. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/security-design-template.md +0 -0
  587. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/srd-template.md +0 -0
  588. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/tasks-template.md +0 -0
  589. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/token-usage-template.md +0 -0
  590. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/use-cases-template.md +0 -0
  591. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/ux-flow-template.md +0 -0
  592. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.specify/templates/validate-template.md +0 -0
  593. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.vscode/extensions.json +0 -0
  594. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/.windsurfrules +0 -0
  595. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/CHANGE-GUIDE.md +0 -0
  596. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/CLAUDE.local.md +0 -0
  597. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/FLOW-ROLES-GATES.md +0 -0
  598. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/HOW-TO-USE.md +0 -0
  599. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/IMPROVEMENT-BACKLOG.md +0 -0
  600. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/PROMPT-GUIDE.md +0 -0
  601. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/QUICKSTART.md +0 -0
  602. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/README.md +0 -0
  603. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/SDLC-COMPLETE-GUIDE.md +0 -0
  604. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/WHY-SDD.md +0 -0
  605. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/azure-pipelines.yml +0 -0
  606. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/bitbucket-pipelines.yml +0 -0
  607. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/docs/SUMMARY-GUIDE.md +0 -0
  608. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/setup.ps1 +0 -0
  609. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-mobile/setup.sh +0 -0
  610. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/address-review.md +0 -0
  611. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/analyze.md +0 -0
  612. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/ava.md +0 -0
  613. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/bug-assess.md +0 -0
  614. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/bug-fix.md +0 -0
  615. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/change.md +0 -0
  616. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/check-review.md +0 -0
  617. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/checklist.md +0 -0
  618. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/clarify.md +0 -0
  619. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/create-context.md +0 -0
  620. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/implement.md +0 -0
  621. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/jira-push.md +0 -0
  622. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/kai.md +0 -0
  623. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/leo.md +0 -0
  624. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/maya.md +0 -0
  625. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/morgan.md +0 -0
  626. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/orchestrate.md +0 -0
  627. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/plan-adr.md +0 -0
  628. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/plan-arch.md +0 -0
  629. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/plan-design.md +0 -0
  630. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/plan-hld.md +0 -0
  631. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/plan-lld.md +0 -0
  632. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/pre-review.md +0 -0
  633. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/quinn.md +0 -0
  634. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/release.md +0 -0
  635. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/rex.md +0 -0
  636. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/riley.md +0 -0
  637. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/specify-brd.md +0 -0
  638. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/specify-doc.md +0 -0
  639. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/specify-srd.md +0 -0
  640. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/specify-uc.md +0 -0
  641. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/specify.md +0 -0
  642. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/start.md +0 -0
  643. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/submit-review.md +0 -0
  644. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/task.md +0 -0
  645. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/taskstoissues.md +0 -0
  646. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.claude/commands/validate.md +0 -0
  647. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.cursor/rules/sdd-framework.mdc +0 -0
  648. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/copilot-instructions.md +0 -0
  649. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/instructions/domain.instructions.md +0 -0
  650. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/instructions/entrypoints.instructions.md +0 -0
  651. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/instructions/tests.instructions.md +0 -0
  652. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/address-review.prompt.md +0 -0
  653. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/analyze.prompt.md +0 -0
  654. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/ava.prompt.md +0 -0
  655. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/bug-assess.prompt.md +0 -0
  656. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/bug-fix.prompt.md +0 -0
  657. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/change.prompt.md +0 -0
  658. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/check-review.prompt.md +0 -0
  659. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/checklist.prompt.md +0 -0
  660. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/clarify.prompt.md +0 -0
  661. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/create-context.prompt.md +0 -0
  662. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/implement.prompt.md +0 -0
  663. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/jira-push.prompt.md +0 -0
  664. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/kai.prompt.md +0 -0
  665. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/leo.prompt.md +0 -0
  666. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/maya.prompt.md +0 -0
  667. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/morgan.prompt.md +0 -0
  668. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/orchestrate.prompt.md +0 -0
  669. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/plan-adr.prompt.md +0 -0
  670. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/plan-arch.prompt.md +0 -0
  671. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/plan-design.prompt.md +0 -0
  672. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/plan-hld.prompt.md +0 -0
  673. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/plan-lld.prompt.md +0 -0
  674. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/pre-review.prompt.md +0 -0
  675. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/quinn.prompt.md +0 -0
  676. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/release.prompt.md +0 -0
  677. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/rex.prompt.md +0 -0
  678. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/riley.prompt.md +0 -0
  679. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/specify.prompt.md +0 -0
  680. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/submit-review.prompt.md +0 -0
  681. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/task.prompt.md +0 -0
  682. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/prompts/taskstoissues.prompt.md +0 -0
  683. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.github/workflows/quality-gate.yml +0 -0
  684. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.gitignore +0 -0
  685. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.gitlab-ci.yml +0 -0
  686. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  687. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/integrations.yml.example +0 -0
  688. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/memory/change-rules.md +0 -0
  689. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/memory/constitution.md +0 -0
  690. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/memory/roles.yml +0 -0
  691. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/memory/summary-rules.md +0 -0
  692. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/memory/token-pricing.yml.example +0 -0
  693. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/adr-template.md +0 -0
  694. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/analyze-template.md +0 -0
  695. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/api-spec-template.md +0 -0
  696. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/arch-template.md +0 -0
  697. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/brd-template.md +0 -0
  698. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/changeset-template.md +0 -0
  699. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/checklist-template.md +0 -0
  700. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/clarify-template.md +0 -0
  701. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/constitution-amendment-template.md +0 -0
  702. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/context-template.md +0 -0
  703. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/data-model-template.md +0 -0
  704. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/design-template.md +0 -0
  705. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/docker-config-template.md +0 -0
  706. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/feature-story-template.md +0 -0
  707. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/hld-template.md +0 -0
  708. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/investigation-template.md +0 -0
  709. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/jira-export-template.md +0 -0
  710. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/k8s-manifest-template.md +0 -0
  711. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/lld-template.md +0 -0
  712. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/openapi-template.md +0 -0
  713. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/plan-template.md +0 -0
  714. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/qa-testcases-template.md +0 -0
  715. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/release-template.md +0 -0
  716. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/resilience-template.md +0 -0
  717. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/runbook-template.md +0 -0
  718. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/security-design-template.md +0 -0
  719. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/srd-template.md +0 -0
  720. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/tasks-template.md +0 -0
  721. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/token-usage-template.md +0 -0
  722. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/use-cases-template.md +0 -0
  723. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.specify/templates/validate-template.md +0 -0
  724. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.vscode/extensions.json +0 -0
  725. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/.windsurfrules +0 -0
  726. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/CHANGE-GUIDE.md +0 -0
  727. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/CLAUDE.local.md +0 -0
  728. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/FLOW-ROLES-GATES.md +0 -0
  729. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/HOW-TO-USE.md +0 -0
  730. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/IMPROVEMENT-BACKLOG.md +0 -0
  731. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/PROMPT-GUIDE.md +0 -0
  732. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/QUICKSTART.md +0 -0
  733. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/README.md +0 -0
  734. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/SDLC-COMPLETE-GUIDE.md +0 -0
  735. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/WHY-SDD.md +0 -0
  736. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/azure-pipelines.yml +0 -0
  737. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/bitbucket-pipelines.yml +0 -0
  738. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/docs/SUMMARY-GUIDE.md +0 -0
  739. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/setup.ps1 +0 -0
  740. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/packs/sdd-universal/setup.sh +0 -0
  741. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/__init__.py +0 -0
  742. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/atlassian_auth.py +0 -0
  743. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/cf_to_md.py +0 -0
  744. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/confluence_client.py +0 -0
  745. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/dashboard_comments.py +0 -0
  746. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/detect.py +0 -0
  747. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/git_host.py +0 -0
  748. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/integrations.py +0 -0
  749. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/jira_client.py +0 -0
  750. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/manifest.py +0 -0
  751. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/md_to_cf.py +0 -0
  752. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/mermaid_render.py +0 -0
  753. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/scaffold.py +0 -0
  754. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/sdd_parser.py +0 -0
  755. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/status.py +0 -0
  756. {sddflow-2.7.52 → sddflow-2.7.53}/sdd/utils/validate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sddflow
3
- Version: 2.7.52
3
+ Version: 2.7.53
4
4
  Summary: SDD Framework CLI — initialize and upgrade Spec-Driven Development packs
5
5
  Project-URL: Homepage, https://github.com/sunil1983us/universalguide
6
6
  Project-URL: Repository, https://github.com/sunil1983us/universalguide
@@ -413,6 +413,44 @@ sdd review check --doc brd # poll again after reviewer re-reviews
413
413
 
414
414
  ---
415
415
 
416
+ ### `sdd review push-questions` / `sdd review pull-answers`
417
+
418
+ A document can be blocked before it's ever submitted for review — e.g.
419
+ `validate.md`'s §3a scans `brd.md`/`use-cases.md`/`srd.md` for unresolved
420
+ `[NEEDS CLARIFICATION-NNN: {question}]` markers (numbered locally per
421
+ document, the same discipline `[ASSUMPTION-NNN]` already uses) and refuses
422
+ to proceed while any remain. These two commands let a reviewer answer
423
+ those markers via Jira/Confluence instead of only through direct chat/doc
424
+ edits:
425
+
426
+ ```bash
427
+ sdd review push-questions --doc validate # push open questions to Jira + Confluence
428
+ # reviewer replies as a comment, one line per item:
429
+ # brd:NC-002: 90 days, per data retention policy DR-014
430
+ sdd review pull-answers --doc validate # pull replies, patch the answered markers
431
+ ```
432
+
433
+ `push-questions` reads the blocked document's `| ID | Locations | Question |`
434
+ table (see the doc's own gate for the exact format) and creates/updates
435
+ **one** Jira ticket — reusing `document_reviews.validate`'s
436
+ `reviewer_jira_user`/`reviewer_role`, no separate config needed. It uses
437
+ the *same* idempotency label `sdd review submit` looks for, so once every
438
+ question is answered and the document unblocks, `sdd review submit --doc
439
+ validate` finds and evolves this same ticket in place (a comment marks the
440
+ transition) instead of creating a second one.
441
+
442
+ `pull-answers` fetches every comment on that ticket, matches lines like
443
+ `brd:NC-002: <answer>` against the open items, and replaces each answered
444
+ `[NEEDS CLARIFICATION-NNN]` marker directly in its source document —
445
+ bumping that document's `Version:` header and appending a `## Version
446
+ History` row. A question asked in more than one document (the table's
447
+ `Locations` column lists more than one ID, e.g. `brd:NC-003, srd:NC-001`)
448
+ gets the same answer applied everywhere at once. Safe to call
449
+ unconditionally (e.g. at the top of every `/validate` run) — it exits
450
+ quietly whenever there's nothing to do.
451
+
452
+ ---
453
+
416
454
  ### `sdd review comments`
417
455
 
418
456
  Read or acknowledge dashboard-left comments directly, without going through
@@ -378,6 +378,44 @@ sdd review check --doc brd # poll again after reviewer re-reviews
378
378
 
379
379
  ---
380
380
 
381
+ ### `sdd review push-questions` / `sdd review pull-answers`
382
+
383
+ A document can be blocked before it's ever submitted for review — e.g.
384
+ `validate.md`'s §3a scans `brd.md`/`use-cases.md`/`srd.md` for unresolved
385
+ `[NEEDS CLARIFICATION-NNN: {question}]` markers (numbered locally per
386
+ document, the same discipline `[ASSUMPTION-NNN]` already uses) and refuses
387
+ to proceed while any remain. These two commands let a reviewer answer
388
+ those markers via Jira/Confluence instead of only through direct chat/doc
389
+ edits:
390
+
391
+ ```bash
392
+ sdd review push-questions --doc validate # push open questions to Jira + Confluence
393
+ # reviewer replies as a comment, one line per item:
394
+ # brd:NC-002: 90 days, per data retention policy DR-014
395
+ sdd review pull-answers --doc validate # pull replies, patch the answered markers
396
+ ```
397
+
398
+ `push-questions` reads the blocked document's `| ID | Locations | Question |`
399
+ table (see the doc's own gate for the exact format) and creates/updates
400
+ **one** Jira ticket — reusing `document_reviews.validate`'s
401
+ `reviewer_jira_user`/`reviewer_role`, no separate config needed. It uses
402
+ the *same* idempotency label `sdd review submit` looks for, so once every
403
+ question is answered and the document unblocks, `sdd review submit --doc
404
+ validate` finds and evolves this same ticket in place (a comment marks the
405
+ transition) instead of creating a second one.
406
+
407
+ `pull-answers` fetches every comment on that ticket, matches lines like
408
+ `brd:NC-002: <answer>` against the open items, and replaces each answered
409
+ `[NEEDS CLARIFICATION-NNN]` marker directly in its source document —
410
+ bumping that document's `Version:` header and appending a `## Version
411
+ History` row. A question asked in more than one document (the table's
412
+ `Locations` column lists more than one ID, e.g. `brd:NC-003, srd:NC-001`)
413
+ gets the same answer applied everywhere at once. Safe to call
414
+ unconditionally (e.g. at the top of every `/validate` run) — it exits
415
+ quietly whenever there's nothing to do.
416
+
417
+ ---
418
+
381
419
  ### `sdd review comments`
382
420
 
383
421
  Read or acknowledge dashboard-left comments directly, without going through
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sddflow"
7
- version = "2.7.52"
7
+ version = "2.7.53"
8
8
  description = "SDD Framework CLI — initialize and upgrade Spec-Driven Development packs"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -0,0 +1 @@
1
+ __version__ = "2.7.53"
@@ -298,6 +298,100 @@ def _record_review_link(doc: str, issue_key: str) -> None:
298
298
  _save_review_links(links)
299
299
 
300
300
 
301
+ # ── Open-questions push/pull (blocked-doc Jira Q&A) ────────────────────────────
302
+ # When a document like validate.md is blocked on [NEEDS CLARIFICATION-NNN]
303
+ # markers in its source docs, `sdd review push-questions` lets a reviewer
304
+ # answer them via Jira/Confluence comments instead of waiting for direct
305
+ # chat/doc edits -- `sdd review pull-answers` reads those comments back and
306
+ # patches the answered markers directly into brd.md/use-cases.md/srd.md.
307
+
308
+ _OPEN_QUESTION_ROW_RE = re.compile(
309
+ r'^\|\s*([a-zA-Z0-9_.-]+:NC-\d+)\s*\|\s*([^|]+?)\s*\|\s*([^|]+?)\s*\|\s*$',
310
+ re.MULTILINE,
311
+ )
312
+ _ANSWER_LINE_RE = re.compile(
313
+ r'^\s*([a-zA-Z0-9_.-]+):NC-(\d+)\s*:\s*(.+?)\s*$',
314
+ re.MULTILINE | re.IGNORECASE,
315
+ )
316
+
317
+
318
+ def _parse_open_questions(doc_text: str) -> list[dict]:
319
+ """Parse a blocked document's `| ID | Locations | Question |` table
320
+ (see validate.prompt.md's §3a-BLOCKING format) into structured items.
321
+ Tolerant of table-formatting drift across LLM runs -- anchors on the
322
+ `{doc}:NC-{NNN}` ID pattern itself, not exact column headers.
323
+
324
+ Each item's "locations" is every doc-qualified ID (e.g. "brd:NC-003")
325
+ that a single answer should be applied to -- almost always just its
326
+ own ID, but more than one when the same question was asked in more
327
+ than one document."""
328
+ items: list[dict] = []
329
+ for m in _OPEN_QUESTION_ROW_RE.finditer(doc_text):
330
+ primary_id, locations_raw, question = m.group(1).strip(), m.group(2).strip(), m.group(3).strip()
331
+ locations = [loc.strip() for loc in locations_raw.split(",") if loc.strip()]
332
+ if primary_id not in locations:
333
+ locations.append(primary_id)
334
+ items.append({"id": primary_id, "locations": locations, "question": question})
335
+ return items
336
+
337
+
338
+ def _parse_answers(comments: list[dict]) -> dict[str, str]:
339
+ """Parse every Jira comment for lines like 'brd:NC-002: <answer>'.
340
+ A later comment's answer for the same ID overrides an earlier one
341
+ (a reviewer correcting themselves)."""
342
+ answers: dict[str, str] = {}
343
+ for c in comments:
344
+ text = _extract_text(c.get("body", ""))
345
+ for m in _ANSWER_LINE_RE.finditer(text):
346
+ doc_key, nnn, answer = m.group(1).lower(), m.group(2), m.group(3)
347
+ answers[f"{doc_key}:NC-{nnn}"] = answer
348
+ return answers
349
+
350
+
351
+ def _bump_version_and_log(text: str, note: str) -> str:
352
+ """Bump the `Version: X.Y` header to X.(Y+1) and append a row to
353
+ `## Version History`, matching the same discipline every review-driven
354
+ edit in this codebase uses (see specify-brd.prompt.md's Revision
355
+ Logging). Best-effort: if either the Version header or a recognizable
356
+ `## Version History` table isn't found, the text is returned unchanged
357
+ rather than raising -- the marker replacement itself is what matters;
358
+ this bookkeeping is a bonus that shouldn't block on template drift."""
359
+ version_match = re.search(r'Version:\s*(\d+)\.(\d+)', text)
360
+ if not version_match:
361
+ return text
362
+ major, minor = version_match.group(1), int(version_match.group(2)) + 1
363
+ new_version = f"{major}.{minor}"
364
+ text = text[:version_match.start()] + f"Version: {new_version}" + text[version_match.end():]
365
+
366
+ heading = re.search(r'^## Version History\s*$', text, flags=re.IGNORECASE | re.MULTILINE)
367
+ if not heading:
368
+ return text
369
+ after = text[heading.end():]
370
+ sep_match = re.search(r'\n\|[-| ]+\|\s*\n', after)
371
+ if not sep_match:
372
+ return text
373
+ insert_at = heading.end() + sep_match.end()
374
+ row = f"| {new_version} | {date.today()} | Jira/Confluence | {note} | — |\n"
375
+ return text[:insert_at] + row + text[insert_at:]
376
+
377
+
378
+ def _patch_marker(md_path: Path, nnn: str, answer: str) -> bool:
379
+ """Replace `[NEEDS CLARIFICATION-{nnn}: ...]` with the answer text in
380
+ md_path, bumping its version + Version History. Returns True if a
381
+ matching marker was found and patched, False otherwise (already
382
+ resolved, or nnn doesn't exist in this file)."""
383
+ if not md_path.exists():
384
+ return False
385
+ text = md_path.read_text()
386
+ pattern = re.compile(r'\[NEEDS CLARIFICATION-' + re.escape(nnn) + r':\s*[^\]]*\]')
387
+ if not pattern.search(text):
388
+ return False
389
+ new_text = pattern.sub(lambda _m: answer, text, count=1)
390
+ new_text = _bump_version_and_log(new_text, f"NC-{nnn} resolved via Jira/Confluence comment")
391
+ md_path.write_text(new_text)
392
+ return True
393
+
394
+
301
395
  def _ensure_epic(jira_client: JiraClient, jira_cfg, feature_name: str) -> str | None:
302
396
  """Create the Feature/Epic container if it doesn't already exist yet,
303
397
  using the same content and idempotency label `sdd jira push` uses — so a
@@ -486,9 +580,27 @@ def review_submit(doc, profile, feature):
486
580
  _apply_team_field(fields, cfg.jira, "review")
487
581
 
488
582
  if existing:
583
+ # If this ticket started life as an `sdd review push-questions`
584
+ # "open questions" ticket (same idempotency label -- see that
585
+ # command), the fields update above already retitles/redescribes
586
+ # it into a normal review request. Post a comment marking the
587
+ # transition explicitly so the reviewer's ticket history shows
588
+ # why the ticket suddenly changed shape, rather than reusing it
589
+ # silently -- the "same ticket evolves in place" behavior a user
590
+ # asked for, without ever creating a second ticket for one doc.
591
+ was_open_questions = "sdd-open-questions" in (existing.get("fields", {}).get("labels") or [])
489
592
  jira_client.update_issue(existing["key"], fields)
490
593
  story_key = existing["key"]
491
594
  console.print(f" [dim]·[/dim] Jira review story updated: [cyan]{story_key}[/cyan]")
595
+ if was_open_questions:
596
+ try:
597
+ jira_client.add_comment(
598
+ story_key,
599
+ f"All open questions resolved — {doc.upper()} has been updated "
600
+ f"and is now ready for full review.",
601
+ )
602
+ except Exception:
603
+ pass # best-effort notification only; the ticket update above already succeeded
492
604
  else:
493
605
  result = jira_client.create_issue(fields)
494
606
  story_key = result["key"]
@@ -511,6 +623,241 @@ def review_submit(doc, profile, feature):
511
623
  console.print()
512
624
 
513
625
 
626
+ # ── sdd review push-questions ───────────────────────────────────────────────────
627
+
628
+ @review_command.command("push-questions")
629
+ @click.option("--doc", required=True,
630
+ help="Document key whose blocking gate produced open questions, e.g. validate")
631
+ @click.option("--profile", default=None)
632
+ @click.option("--feature", default=None)
633
+ def review_push_questions(doc, profile, feature):
634
+ """Push a blocked document's open [NEEDS CLARIFICATION-NNN] questions to
635
+ Jira + Confluence, so a reviewer can answer them without waiting for
636
+ the doc's own gate to clear first. Uses the same idempotency label
637
+ `sdd review submit` looks for -- once every question is answered and
638
+ the doc unblocks, `sdd review submit --doc {doc}` finds and evolves
639
+ this same ticket in place instead of creating a second one."""
640
+ console.print()
641
+ console.print("[bold]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[/bold]")
642
+ console.print(f" [bold cyan]Push Open Questions[/bold cyan] — {doc.upper()}")
643
+ console.print("[bold]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[/bold]")
644
+ console.print()
645
+
646
+ try:
647
+ cfg = load_integrations()
648
+ except FileNotFoundError as e:
649
+ console.print(f" [red]✗ {e}[/red]")
650
+ raise SystemExit(1)
651
+
652
+ if doc not in cfg.document_reviews:
653
+ console.print(
654
+ f" [red]✗ '{doc}' not in document_reviews in integrations.yml[/red]\n"
655
+ f" Available: {', '.join(cfg.document_reviews)}"
656
+ )
657
+ raise SystemExit(1)
658
+ if not cfg.jira:
659
+ console.print(" [red]✗ jira: section required in integrations.yml[/red]")
660
+ raise SystemExit(1)
661
+
662
+ manifest = read_manifest() or {}
663
+ proj = manifest.get("project") or {}
664
+ project_name = proj.get("name", "Project")
665
+ feature_name = feature or proj.get("feature", "")
666
+
667
+ try:
668
+ md_path = resolve_doc_path(doc, feature_name)
669
+ except ValueError as e:
670
+ console.print(f" [red]✗ {e}[/red]")
671
+ raise SystemExit(1)
672
+ if not md_path.exists():
673
+ console.print(f" [red]✗ {md_path} not found[/red]")
674
+ raise SystemExit(1)
675
+
676
+ items = _parse_open_questions(md_path.read_text())
677
+ if not items:
678
+ console.print(
679
+ f" [dim]No open [NEEDS CLARIFICATION-NNN] items found in {md_path.name} — nothing to push.[/dim]"
680
+ )
681
+ raise SystemExit(0)
682
+
683
+ try:
684
+ prof = load_profile(profile or cfg.profile)
685
+ session = build_session(prof)
686
+ except Exception as e:
687
+ console.print(f" [red]✗ Auth error: {e}[/red]")
688
+ raise SystemExit(1)
689
+
690
+ jira_client = JiraClient(session, prof.base_url)
691
+ doc_cfg = cfg.document_reviews[doc]
692
+
693
+ # ── Also push the (blocked) doc to Confluence, so reviewers can comment there too ──
694
+ page_title = None
695
+ if cfg.confluence:
696
+ try:
697
+ page_title = _push_doc_page(doc, md_path, feature_name)
698
+ except Exception as e:
699
+ console.print(f" [yellow]! Confluence push failed: {e}[/yellow]")
700
+
701
+ # ── Ensure a Feature/Epic exists (same as review_submit) ──────────────────
702
+ epic_key = _ensure_epic(jira_client, cfg.jira, feature_name)
703
+
704
+ # ── Create / update the SAME ticket review_submit will later find ─────────
705
+ # Same idempotency_label as review_submit uses for --doc {doc} -- this
706
+ # is what makes the ticket "evolve in place" later, with zero extra
707
+ # bookkeeping: review_submit's own find-by-label lookup will discover
708
+ # this ticket and update its fields, rather than creating a second one.
709
+ idempotency_label = f"sdd-doc:{feature_name}:{doc}"
710
+ review_project_key = cfg.jira.key_for("review")
711
+ existing = jira_client.find_by_label(review_project_key, idempotency_label)
712
+
713
+ table_lines = "\n".join(f"{it['id']}: {it['question']}" for it in items)
714
+ desc_text = (
715
+ f"{doc.upper()} is blocked on {len(items)} open question(s) before it can "
716
+ f"go to full review.\n\n"
717
+ f"Answer each item as a comment on THIS ticket, one line per item, "
718
+ f"starting with its ID:\n\n{table_lines}\n\n"
719
+ f"Example: \"{items[0]['id']}: <your answer>\"\n\n"
720
+ f"Once every item is answered, re-run /validate — it pulls the answers "
721
+ f"automatically, updates the spec, and re-checks."
722
+ )
723
+ fields: dict = {
724
+ "project": {"key": review_project_key},
725
+ "issuetype": {"name": cfg.jira.issue_hierarchy.get("story", "Story")},
726
+ "summary": f"Open Questions: {project_name} — {doc.upper()}",
727
+ "labels": cfg.jira.labels + ["sdd-review", "sdd-open-questions", idempotency_label],
728
+ "description": {
729
+ "type": "doc", "version": 1,
730
+ "content": [{"type": "paragraph", "content": [
731
+ {"type": "text", "text": desc_text}
732
+ ]}],
733
+ },
734
+ }
735
+ if doc_cfg.reviewer_jira_user:
736
+ fields["assignee"] = {"accountId": doc_cfg.reviewer_jira_user}
737
+ from sdd.commands.jira import _apply_team_field
738
+ _apply_team_field(fields, cfg.jira, "review")
739
+
740
+ if existing:
741
+ jira_client.update_issue(existing["key"], fields)
742
+ issue_key = existing["key"]
743
+ console.print(f" [dim]·[/dim] Jira ticket updated: [cyan]{issue_key}[/cyan]")
744
+ else:
745
+ result = jira_client.create_issue(fields)
746
+ issue_key = result["key"]
747
+ console.print(f" [green]✓[/green] Jira ticket created: [cyan]{issue_key}[/cyan]")
748
+
749
+ _record_review_link(doc, issue_key)
750
+ if epic_key:
751
+ _link_review_story_to_epic(jira_client, issue_key, epic_key, cfg.jira)
752
+
753
+ issue_url = f"{prof.base_url}/browse/{issue_key}"
754
+ console.print(f" {issue_url}")
755
+ if page_title:
756
+ console.print(f" Also on Confluence: [cyan]{page_title}[/cyan]")
757
+ console.print(
758
+ f" Assigned to: [cyan]{doc_cfg.reviewer_role}[/cyan]"
759
+ f" [dim]({doc_cfg.reviewer_jira_user})[/dim]"
760
+ )
761
+ console.print()
762
+ console.print(f" [bold]{len(items)} open question(s)[/bold] pushed. Reviewer replies as a comment")
763
+ console.print(f" starting with the item's ID, e.g. \"{items[0]['id']}: <answer>\".")
764
+ console.print(f" Run [cyan]sdd review pull-answers --doc {doc}[/cyan] (or just re-run /validate) once answered.")
765
+ console.print()
766
+
767
+
768
+ # ── sdd review pull-answers ──────────────────────────────────────────────────────
769
+
770
+ @review_command.command("pull-answers")
771
+ @click.option("--doc", required=True)
772
+ @click.option("--profile", default=None)
773
+ @click.option("--feature", default=None)
774
+ def review_pull_answers(doc, profile, feature):
775
+ """Pull Jira comments answering a blocked document's open
776
+ [NEEDS CLARIFICATION-NNN] questions and patch them directly into the
777
+ source docs (e.g. brd.md/use-cases.md/srd.md for --doc validate).
778
+ Safe to call unconditionally before re-scanning -- exits 0 quietly
779
+ whenever there's nothing to do (not configured, no ticket yet, no new
780
+ answers)."""
781
+ console.print()
782
+
783
+ try:
784
+ cfg = load_integrations()
785
+ except FileNotFoundError:
786
+ raise SystemExit(0)
787
+
788
+ if doc not in cfg.document_reviews or not cfg.jira:
789
+ raise SystemExit(0)
790
+
791
+ manifest = read_manifest() or {}
792
+ proj = manifest.get("project") or {}
793
+ feature_name = feature or proj.get("feature", "")
794
+
795
+ try:
796
+ md_path = resolve_doc_path(doc, feature_name)
797
+ except ValueError:
798
+ raise SystemExit(0)
799
+ if not md_path.exists():
800
+ raise SystemExit(0)
801
+
802
+ items = _parse_open_questions(md_path.read_text())
803
+ if not items:
804
+ raise SystemExit(0)
805
+
806
+ links = _load_review_links()
807
+ issue_key = (links.get(doc) or {}).get("key")
808
+ if not issue_key:
809
+ console.print(
810
+ f" [dim]· No Jira ticket recorded for {doc} yet — "
811
+ f"run `sdd review push-questions --doc {doc}` first.[/dim]"
812
+ )
813
+ raise SystemExit(0)
814
+
815
+ try:
816
+ prof = load_profile(profile or cfg.profile)
817
+ session = build_session(prof)
818
+ except Exception:
819
+ raise SystemExit(0)
820
+
821
+ jira_client = JiraClient(session, prof.base_url)
822
+ try:
823
+ comments = jira_client.get_comments(issue_key)
824
+ except Exception as e:
825
+ console.print(f" [yellow]! Could not fetch comments from {issue_key}: {e}[/yellow]")
826
+ raise SystemExit(0)
827
+
828
+ answers = _parse_answers(comments)
829
+ if not answers:
830
+ raise SystemExit(0)
831
+
832
+ patched_docs: dict[str, int] = {}
833
+ for item in items:
834
+ # The reviewer only ever cites the row's primary ID (item["id"]) --
835
+ # that single answer must propagate to every location listed for
836
+ # this question, not just the one the reviewer happened to name
837
+ # (a multi-location row exists specifically so one answer can
838
+ # resolve a question duplicated across several docs at once).
839
+ if item["id"] not in answers:
840
+ continue
841
+ answer_text = answers[item["id"]]
842
+ for loc_id in item["locations"]:
843
+ doc_key, nnn = loc_id.split(":NC-")
844
+ try:
845
+ loc_path = resolve_doc_path(doc_key, feature_name)
846
+ except ValueError:
847
+ continue
848
+ if _patch_marker(loc_path, nnn, answer_text):
849
+ patched_docs[doc_key] = patched_docs.get(doc_key, 0) + 1
850
+ console.print(f" [green]✓[/green] {loc_id} resolved in {loc_path.name}")
851
+
852
+ if patched_docs:
853
+ total = sum(patched_docs.values())
854
+ console.print(
855
+ f" [bold]{total} item(s) resolved[/bold] across "
856
+ f"{len(patched_docs)} document(s): {', '.join(patched_docs)}"
857
+ )
858
+ console.print()
859
+
860
+
514
861
  # ── sdd review check ───────────────────────────────────────────────────────────
515
862
 
516
863
  @review_command.command("check")
@@ -2064,6 +2064,59 @@ MIGRATIONS = [
2064
2064
  ],
2065
2065
  "migrate": lambda m: {**m, "sdd_version": "2.7.52"},
2066
2066
  },
2067
+ {
2068
+ "from": "2.7.52",
2069
+ "to": "2.7.53",
2070
+ "description": "Feature: blocked documents (e.g. validate.md, on unresolved [NEEDS CLARIFICATION-NNN] markers) can now collect reviewer answers via Jira/Confluence instead of only direct chat/doc edits -- no manifest schema changes",
2071
+ "notes": [
2072
+ "User-requested: a document like validate.md can be blocked "
2073
+ "before it's ever submitted for formal review (brd.md/"
2074
+ "use-cases.md/srd.md still have unresolved [NEEDS "
2075
+ "CLARIFICATION] markers) -- previously there was no way to "
2076
+ "route those specific open questions through Jira/Confluence "
2077
+ "the way an already-submitted document's reviewer comments "
2078
+ "already could",
2079
+ "[NEEDS CLARIFICATION] markers are now numbered locally per "
2080
+ "document -- [NEEDS CLARIFICATION-NNN: {question}] -- "
2081
+ "matching the [ASSUMPTION-NNN] convention already in use. "
2082
+ "This gives every marker a stable, doc-qualified ID "
2083
+ "({doc}:NC-{NNN}, e.g. brd:NC-002) that a reviewer's answer "
2084
+ "can cite exactly, instead of matching by paraphrased "
2085
+ "question text",
2086
+ "New sdd review push-questions --doc {doc}: parses a blocked "
2087
+ "document's | ID | Locations | Question | table (see "
2088
+ "validate.prompt.md's §3a-BLOCKING) and creates/updates one "
2089
+ "Jira ticket + Confluence page. Uses the SAME idempotency "
2090
+ "label sdd review submit looks for, so once every question "
2091
+ "is answered and the document unblocks, sdd review submit "
2092
+ "finds and evolves this same ticket in place (posting a "
2093
+ "transition comment) instead of creating a second one",
2094
+ "New sdd review pull-answers --doc {doc}: fetches comments "
2095
+ "from that ticket, matches lines like 'brd:NC-002: <answer>' "
2096
+ "against the open items, and patches each answered "
2097
+ "[NEEDS CLARIFICATION-NNN] marker directly into its source "
2098
+ "document -- bumping that document's Version header and "
2099
+ "appending a Version History row. A question asked in more "
2100
+ "than one document (a Locations column listing more than one "
2101
+ "ID) gets the same answer applied to every one of them from "
2102
+ "a single reviewer reply",
2103
+ "validate.prompt.md (all 5 packs, not a shared file) updated: "
2104
+ "§3a-BLOCKING now calls pull-answers before re-scanning and "
2105
+ "push-questions after detecting a block, and its table cites "
2106
+ "doc-qualified marker IDs instead of an ad-hoc Q1..Q7 scheme",
2107
+ "specify-brd/specify-uc/specify-srd/specify-doc.prompt.md "
2108
+ "(shared) and the submit-for-review-step block updated for "
2109
+ "the new marker numbering and ID-based comment matching",
2110
+ "23 new tests in test_review_helpers.py: table/answer "
2111
+ "parsing, marker patching (version bump + Version History, "
2112
+ "multi-location propagation, legacy/missing-marker "
2113
+ "tolerance), and the push-questions -> submit same-ticket "
2114
+ "transition end-to-end",
2115
+ "This migration only bumps sdd_version -- no manifest.yml "
2116
+ "field changes for any pack",
2117
+ ],
2118
+ "migrate": lambda m: {**m, "sdd_version": "2.7.53"},
2119
+ },
2067
2120
  ]
2068
2121
 
2069
2122
 
@@ -34,7 +34,11 @@ Generate `brd.md` for the current feature:
34
34
  - Every non-functional requirement: **NFR-NNN** — must include a measurable target (e.g. "< 200ms p99", "99.9% uptime")
35
35
  - Marker discipline:
36
36
  - `[ASSUMPTION-NNN: {what}]` — safe default applied; needs sign-off
37
- - `[NEEDS CLARIFICATION: {question}]` — no safe default; human decision required before /validate
37
+ - `[NEEDS CLARIFICATION-NNN: {question}]` — no safe default; human decision
38
+ required before /validate. NNN is numbered locally within this document
39
+ (NC-001, NC-002, ... — continue the count on a later re-run/amendment,
40
+ never reuse a resolved ID) so a reviewer's answer (in Jira, Confluence,
41
+ or chat) can cite the exact marker unambiguously, e.g. "NC-002: 90 days".
38
42
  - Never leave a gap silently — always use one of the two markers
39
43
  - Save to: `.specify/features/{manifest.project.feature}/brd.md`
40
44
  - Write `.specify/features/{manifest.project.feature}/brd.summary.md` (max SUMMARY_MAX_LINES lines)
@@ -93,8 +97,11 @@ sdd confluence draft --doc {doc_key}
93
97
 
94
98
  When the user says **"done"**: run `sdd confluence pull --doc {doc_key}`
95
99
  automatically. If the pulled file contains a `## Confluence Comments`
96
- section, resolve each `[NEEDS CLARIFICATION]`/`[ASSUMPTION-NNN]` it
97
- answers, update the document, remove the comments section, and re-save
100
+ section, match each comment against the marker ID it cites (e.g. a comment
101
+ starting "NC-002: ..." answers `[NEEDS CLARIFICATION-002: ...]`; older
102
+ comments with no cited ID fall back to matching by nearest question text),
103
+ resolve the corresponding `[NEEDS CLARIFICATION-NNN]`/`[ASSUMPTION-NNN]`
104
+ marker, update the document, remove the comments section, and re-save
98
105
  the document and its `.summary.md`. Then present it and ask for
99
106
  **'approved'**.
100
107
 
@@ -49,7 +49,8 @@ Generate `{doc}.md`:
49
49
  - Use `.specify/templates/{doc}-template.md`
50
50
  - Derive all content from `brd.summary.md` + `srd.summary.md` + `constitution.md`
51
51
  - Be consistent with every decision already made in BRD and SRD — flag any contradiction rather than silently resolving it
52
- - Marker discipline (same as BRD/SRD — `[ASSUMPTION-NNN]` / `[NEEDS CLARIFICATION]`)
52
+ - Marker discipline (same as BRD/SRD — `[ASSUMPTION-NNN]` / `[NEEDS CLARIFICATION-NNN]`,
53
+ NNN numbered locally within this document)
53
54
 
54
55
  **`data-model` and `security` / `security-design` are living, service-level
55
56
  documents — not per-feature.** They describe the one schema and the one
@@ -230,8 +231,11 @@ sdd confluence draft --doc {doc_key}
230
231
 
231
232
  When the user says **"done"**: run `sdd confluence pull --doc {doc_key}`
232
233
  automatically. If the pulled file contains a `## Confluence Comments`
233
- section, resolve each `[NEEDS CLARIFICATION]`/`[ASSUMPTION-NNN]` it
234
- answers, update the document, remove the comments section, and re-save
234
+ section, match each comment against the marker ID it cites (e.g. a comment
235
+ starting "NC-002: ..." answers `[NEEDS CLARIFICATION-002: ...]`; older
236
+ comments with no cited ID fall back to matching by nearest question text),
237
+ resolve the corresponding `[NEEDS CLARIFICATION-NNN]`/`[ASSUMPTION-NNN]`
238
+ marker, update the document, remove the comments section, and re-save
235
239
  the document and its `.summary.md`. Then present it and ask for
236
240
  **'approved'**.
237
241
 
@@ -63,7 +63,8 @@ categories).
63
63
  that's a Constitution Amendment — flag it and follow the amendment flow
64
64
  in `specify.prompt.md`, don't silently overwrite the row.
65
65
 
66
- - Marker discipline (same as BRD — `[ASSUMPTION-NNN]` / `[NEEDS CLARIFICATION]`)
66
+ - Marker discipline (same as BRD — `[ASSUMPTION-NNN]` / `[NEEDS CLARIFICATION-NNN]`,
67
+ NNN numbered locally within this document)
67
68
  - Save to: `.specify/features/{manifest.project.feature}/srd.md`
68
69
  - Write `.specify/features/{manifest.project.feature}/srd.summary.md` (max SUMMARY_MAX_LINES lines)
69
70
 
@@ -130,8 +131,11 @@ sdd confluence draft --doc {doc_key}
130
131
 
131
132
  When the user says **"done"**: run `sdd confluence pull --doc {doc_key}`
132
133
  automatically. If the pulled file contains a `## Confluence Comments`
133
- section, resolve each `[NEEDS CLARIFICATION]`/`[ASSUMPTION-NNN]` it
134
- answers, update the document, remove the comments section, and re-save
134
+ section, match each comment against the marker ID it cites (e.g. a comment
135
+ starting "NC-002: ..." answers `[NEEDS CLARIFICATION-002: ...]`; older
136
+ comments with no cited ID fall back to matching by nearest question text),
137
+ resolve the corresponding `[NEEDS CLARIFICATION-NNN]`/`[ASSUMPTION-NNN]`
138
+ marker, update the document, remove the comments section, and re-save
135
139
  the document and its `.summary.md`. Then present it and ask for
136
140
  **'approved'**.
137
141
 
@@ -70,7 +70,9 @@ Generate `use-cases.md` for the current feature:
70
70
  UC-NNN, plus a relationship table with trigger/condition for each link; if no
71
71
  relationships exist, state "No relationships — all use cases are independent."
72
72
  - §5 Traceability Matrix — UC-NNN → BR-NNN (from BRD)
73
- - Marker discipline: `[ASSUMPTION-NNN]` for assumptions, `[NEEDS CLARIFICATION: {question}]` for gaps
73
+ - Marker discipline: `[ASSUMPTION-NNN]` for assumptions, `[NEEDS CLARIFICATION-NNN: {question}]`
74
+ for gaps (NNN numbered locally within this document — see specify-brd.prompt.md's
75
+ marker discipline note for the full rule)
74
76
 
75
77
  Save to: `.specify/features/{manifest.project.feature}/use-cases.md`
76
78
  Write `.specify/features/{manifest.project.feature}/use-cases.summary.md` (max SUMMARY_MAX_LINES lines)
@@ -147,8 +149,11 @@ sdd confluence draft --doc {doc_key}
147
149
 
148
150
  When the user says **"done"**: run `sdd confluence pull --doc {doc_key}`
149
151
  automatically. If the pulled file contains a `## Confluence Comments`
150
- section, resolve each `[NEEDS CLARIFICATION]`/`[ASSUMPTION-NNN]` it
151
- answers, update the document, remove the comments section, and re-save
152
+ section, match each comment against the marker ID it cites (e.g. a comment
153
+ starting "NC-002: ..." answers `[NEEDS CLARIFICATION-002: ...]`; older
154
+ comments with no cited ID fall back to matching by nearest question text),
155
+ resolve the corresponding `[NEEDS CLARIFICATION-NNN]`/`[ASSUMPTION-NNN]`
156
+ marker, update the document, remove the comments section, and re-save
152
157
  the document and its `.summary.md`. Then present it and ask for
153
158
  **'approved'**.
154
159