sddflow 2.7.58__tar.gz → 2.7.60__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 (753) hide show
  1. {sddflow-2.7.58 → sddflow-2.7.60}/PKG-INFO +1 -1
  2. {sddflow-2.7.58 → sddflow-2.7.60}/pyproject.toml +1 -1
  3. sddflow-2.7.60/sdd/__init__.py +1 -0
  4. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/dashboard.py +1 -1
  5. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/review.py +271 -68
  6. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/upgrade.py +74 -0
  7. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/clarify.prompt.md +11 -0
  8. {sddflow-2.7.58/sdd/packs/sdd-frontend-spa → sddflow-2.7.60/sdd/packs/sdd-backend-service}/.specify/integrations.yml.example +7 -0
  9. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/manifest.yml +1 -1
  10. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/CLAUDE.md +9 -0
  11. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/HOW-TO-USE.md +14 -0
  12. {sddflow-2.7.58/sdd/packs/sdd-fullstack → sddflow-2.7.60/sdd/packs/sdd-frontend-spa}/.github/prompts/clarify.prompt.md +11 -0
  13. {sddflow-2.7.58/sdd/packs/sdd-fullstack → sddflow-2.7.60/sdd/packs/sdd-frontend-spa}/.specify/integrations.yml.example +7 -0
  14. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/manifest.yml +1 -1
  15. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/CLAUDE.md +9 -0
  16. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/HOW-TO-USE.md +14 -0
  17. {sddflow-2.7.58/sdd/packs/sdd-frontend-spa → sddflow-2.7.60/sdd/packs/sdd-fullstack}/.github/prompts/clarify.prompt.md +11 -0
  18. {sddflow-2.7.58/sdd/packs/sdd-backend-service → sddflow-2.7.60/sdd/packs/sdd-fullstack}/.specify/integrations.yml.example +7 -0
  19. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/manifest.yml +1 -1
  20. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/CLAUDE.md +9 -0
  21. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/HOW-TO-USE.md +14 -0
  22. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/clarify.prompt.md +11 -0
  23. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/integrations.yml.example +7 -0
  24. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/manifest.yml +1 -1
  25. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/CLAUDE.md +9 -0
  26. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/HOW-TO-USE.md +14 -0
  27. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/clarify.prompt.md +11 -0
  28. sddflow-2.7.60/sdd/packs/sdd-universal/.specify/integrations.yml.example +464 -0
  29. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/manifest.yml +1 -1
  30. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/CLAUDE.md +9 -0
  31. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/HOW-TO-USE.md +14 -0
  32. sddflow-2.7.58/sdd/__init__.py +0 -1
  33. sddflow-2.7.58/sdd/packs/sdd-universal/.specify/integrations.yml.example +0 -457
  34. {sddflow-2.7.58 → sddflow-2.7.60}/.gitignore +0 -0
  35. {sddflow-2.7.58 → sddflow-2.7.60}/README.md +0 -0
  36. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/__main__.py +0 -0
  37. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/__init__.py +0 -0
  38. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/config.py +0 -0
  39. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/confluence.py +0 -0
  40. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/cr.py +0 -0
  41. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/init.py +0 -0
  42. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/jira.py +0 -0
  43. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/commands/pr.py +0 -0
  44. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/address-review.md +0 -0
  45. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/analyze.md +0 -0
  46. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/ava.md +0 -0
  47. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/bug-assess.md +0 -0
  48. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/bug-fix.md +0 -0
  49. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/change.md +0 -0
  50. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/check-review.md +0 -0
  51. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/checklist.md +0 -0
  52. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/clarify.md +0 -0
  53. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/create-context.md +0 -0
  54. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/implement.md +0 -0
  55. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/jira-push.md +0 -0
  56. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/kai.md +0 -0
  57. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/leo.md +0 -0
  58. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/maya.md +0 -0
  59. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/morgan.md +0 -0
  60. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/orchestrate.md +0 -0
  61. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-adr.md +0 -0
  62. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-arch.md +0 -0
  63. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-design.md +0 -0
  64. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-hld.md +0 -0
  65. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-lld.md +0 -0
  66. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/pre-review.md +0 -0
  67. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/quinn.md +0 -0
  68. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/release.md +0 -0
  69. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/rex.md +0 -0
  70. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/riley.md +0 -0
  71. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify-brd.md +0 -0
  72. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify-doc.md +0 -0
  73. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify-srd.md +0 -0
  74. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify-uc.md +0 -0
  75. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify.md +0 -0
  76. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/start.md +0 -0
  77. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/submit-review.md +0 -0
  78. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/task.md +0 -0
  79. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/taskstoissues.md +0 -0
  80. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/validate.md +0 -0
  81. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.cursor/rules/sdd-framework.mdc +0 -0
  82. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/copilot-instructions.md +0 -0
  83. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/instructions/api.instructions.md +0 -0
  84. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/instructions/domain.instructions.md +0 -0
  85. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/instructions/java.instructions.md +0 -0
  86. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/instructions/tests.instructions.md +0 -0
  87. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/address-review.prompt.md +0 -0
  88. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/analyze.prompt.md +0 -0
  89. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/ava.prompt.md +0 -0
  90. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/bug-assess.prompt.md +0 -0
  91. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/bug-fix.prompt.md +0 -0
  92. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/change.prompt.md +0 -0
  93. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/check-review.prompt.md +0 -0
  94. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/checklist.prompt.md +0 -0
  95. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/create-context.prompt.md +0 -0
  96. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/implement.prompt.md +0 -0
  97. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/jira-push.prompt.md +0 -0
  98. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/kai.prompt.md +0 -0
  99. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/leo.prompt.md +0 -0
  100. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/maya.prompt.md +0 -0
  101. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/morgan.prompt.md +0 -0
  102. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/orchestrate.prompt.md +0 -0
  103. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-adr.prompt.md +0 -0
  104. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-arch.prompt.md +0 -0
  105. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-design.prompt.md +0 -0
  106. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-hld.prompt.md +0 -0
  107. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-lld.prompt.md +0 -0
  108. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/pre-review.prompt.md +0 -0
  109. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/quinn.prompt.md +0 -0
  110. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/release.prompt.md +0 -0
  111. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/rex.prompt.md +0 -0
  112. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/riley.prompt.md +0 -0
  113. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify-brd.prompt.md +0 -0
  114. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify-doc.prompt.md +0 -0
  115. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify-srd.prompt.md +0 -0
  116. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify-uc.prompt.md +0 -0
  117. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify.prompt.md +0 -0
  118. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/submit-review.prompt.md +0 -0
  119. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/task.prompt.md +0 -0
  120. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/taskstoissues.prompt.md +0 -0
  121. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/validate.prompt.md +0 -0
  122. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/workflows/quality-gate.yml +0 -0
  123. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.gitignore +0 -0
  124. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.gitlab-ci.yml +0 -0
  125. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  126. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/change-rules.md +0 -0
  127. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/constitution.md +0 -0
  128. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/roles.yml +0 -0
  129. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/summary-rules.md +0 -0
  130. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/token-pricing.yml.example +0 -0
  131. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/adr-template.md +0 -0
  132. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/analyze-template.md +0 -0
  133. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/api-spec-template.md +0 -0
  134. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/arch-template.md +0 -0
  135. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/brd-template.md +0 -0
  136. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/changeset-template.md +0 -0
  137. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/checklist-template.md +0 -0
  138. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/clarify-template.md +0 -0
  139. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/constitution-amendment-template.md +0 -0
  140. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/context-template.md +0 -0
  141. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/data-model-template.md +0 -0
  142. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/design-template.md +0 -0
  143. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/docker-config-template.md +0 -0
  144. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/feature-story-template.md +0 -0
  145. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/hld-template.md +0 -0
  146. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/investigation-template.md +0 -0
  147. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/jira-export-template.md +0 -0
  148. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/k8s-manifest-template.md +0 -0
  149. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/lld-template.md +0 -0
  150. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/openapi-template.md +0 -0
  151. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/plan-template.md +0 -0
  152. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/qa-testcases-template.md +0 -0
  153. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/release-template.md +0 -0
  154. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/resilience-template.md +0 -0
  155. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/runbook-template.md +0 -0
  156. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/security-design-template.md +0 -0
  157. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/srd-template.md +0 -0
  158. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/tasks-template.md +0 -0
  159. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/token-usage-template.md +0 -0
  160. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/use-cases-template.md +0 -0
  161. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/validate-template.md +0 -0
  162. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.vscode/extensions.json +0 -0
  163. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.windsurfrules +0 -0
  164. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/CHANGE-GUIDE.md +0 -0
  165. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/CLAUDE.local.md +0 -0
  166. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/FLOW-ROLES-GATES.md +0 -0
  167. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/IMPROVEMENT-BACKLOG.md +0 -0
  168. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/PROMPT-GUIDE.md +0 -0
  169. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/QUICKSTART.md +0 -0
  170. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/README.md +0 -0
  171. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/SDLC-COMPLETE-GUIDE.md +0 -0
  172. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/WHY-SDD.md +0 -0
  173. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/azure-pipelines.yml +0 -0
  174. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/bitbucket-pipelines.yml +0 -0
  175. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/docs/SUMMARY-GUIDE.md +0 -0
  176. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/setup.ps1 +0 -0
  177. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/setup.sh +0 -0
  178. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/address-review.md +0 -0
  179. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/analyze.md +0 -0
  180. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/ava.md +0 -0
  181. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/bug-assess.md +0 -0
  182. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/bug-fix.md +0 -0
  183. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/change.md +0 -0
  184. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/check-review.md +0 -0
  185. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/checklist.md +0 -0
  186. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/clarify.md +0 -0
  187. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/create-context.md +0 -0
  188. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/implement.md +0 -0
  189. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/jira-push.md +0 -0
  190. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/kai.md +0 -0
  191. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/leo.md +0 -0
  192. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/maya.md +0 -0
  193. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/morgan.md +0 -0
  194. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/orchestrate.md +0 -0
  195. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-adr.md +0 -0
  196. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-arch.md +0 -0
  197. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-design.md +0 -0
  198. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-hld.md +0 -0
  199. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-lld.md +0 -0
  200. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/pre-review.md +0 -0
  201. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/quinn.md +0 -0
  202. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/release.md +0 -0
  203. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/rex.md +0 -0
  204. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/riley.md +0 -0
  205. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-brd.md +0 -0
  206. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-doc.md +0 -0
  207. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-srd.md +0 -0
  208. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-uc.md +0 -0
  209. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify.md +0 -0
  210. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/start.md +0 -0
  211. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/submit-review.md +0 -0
  212. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/task.md +0 -0
  213. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/taskstoissues.md +0 -0
  214. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/validate.md +0 -0
  215. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.cursor/rules/sdd-framework.mdc +0 -0
  216. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/copilot-instructions.md +0 -0
  217. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/instructions/components.instructions.md +0 -0
  218. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/instructions/services.instructions.md +0 -0
  219. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/instructions/tests.instructions.md +0 -0
  220. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/address-review.prompt.md +0 -0
  221. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/analyze.prompt.md +0 -0
  222. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/ava.prompt.md +0 -0
  223. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/bug-assess.prompt.md +0 -0
  224. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/bug-fix.prompt.md +0 -0
  225. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/change.prompt.md +0 -0
  226. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/check-review.prompt.md +0 -0
  227. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/checklist.prompt.md +0 -0
  228. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/create-context.prompt.md +0 -0
  229. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/implement.prompt.md +0 -0
  230. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/jira-push.prompt.md +0 -0
  231. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/kai.prompt.md +0 -0
  232. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/leo.prompt.md +0 -0
  233. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/maya.prompt.md +0 -0
  234. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/morgan.prompt.md +0 -0
  235. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/orchestrate.prompt.md +0 -0
  236. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-adr.prompt.md +0 -0
  237. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-arch.prompt.md +0 -0
  238. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-design.prompt.md +0 -0
  239. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-hld.prompt.md +0 -0
  240. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-lld.prompt.md +0 -0
  241. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/pre-review.prompt.md +0 -0
  242. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/quinn.prompt.md +0 -0
  243. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/release.prompt.md +0 -0
  244. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/rex.prompt.md +0 -0
  245. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/riley.prompt.md +0 -0
  246. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-brd.prompt.md +0 -0
  247. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-doc.prompt.md +0 -0
  248. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-srd.prompt.md +0 -0
  249. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-uc.prompt.md +0 -0
  250. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify.prompt.md +0 -0
  251. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/submit-review.prompt.md +0 -0
  252. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/task.prompt.md +0 -0
  253. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/taskstoissues.prompt.md +0 -0
  254. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/validate.prompt.md +0 -0
  255. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/workflows/quality-gate.yml +0 -0
  256. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.gitignore +0 -0
  257. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.gitlab-ci.yml +0 -0
  258. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  259. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/change-rules.md +0 -0
  260. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/constitution.md +0 -0
  261. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/roles.yml +0 -0
  262. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/summary-rules.md +0 -0
  263. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/token-pricing.yml.example +0 -0
  264. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/adr-template.md +0 -0
  265. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/analyze-template.md +0 -0
  266. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/api-spec-template.md +0 -0
  267. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/arch-template.md +0 -0
  268. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/brd-template.md +0 -0
  269. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/changeset-template.md +0 -0
  270. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/checklist-template.md +0 -0
  271. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/clarify-template.md +0 -0
  272. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/component-library-template.md +0 -0
  273. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/component-spec-template.md +0 -0
  274. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/constitution-amendment-template.md +0 -0
  275. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/context-template.md +0 -0
  276. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/data-model-template.md +0 -0
  277. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/design-template.md +0 -0
  278. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/docker-config-template.md +0 -0
  279. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/feature-story-template.md +0 -0
  280. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/hld-template.md +0 -0
  281. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/investigation-template.md +0 -0
  282. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/jira-export-template.md +0 -0
  283. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/lld-template.md +0 -0
  284. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/plan-template.md +0 -0
  285. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/qa-testcases-template.md +0 -0
  286. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/release-template.md +0 -0
  287. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/resilience-template.md +0 -0
  288. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/runbook-template.md +0 -0
  289. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/security-design-template.md +0 -0
  290. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/srd-template.md +0 -0
  291. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/tasks-template.md +0 -0
  292. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/token-usage-template.md +0 -0
  293. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/use-cases-template.md +0 -0
  294. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/ux-flow-template.md +0 -0
  295. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/validate-template.md +0 -0
  296. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.vscode/extensions.json +0 -0
  297. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.windsurfrules +0 -0
  298. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/CHANGE-GUIDE.md +0 -0
  299. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/CLAUDE.local.md +0 -0
  300. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/FLOW-ROLES-GATES.md +0 -0
  301. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/IMPROVEMENT-BACKLOG.md +0 -0
  302. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/PROMPT-GUIDE.md +0 -0
  303. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/QUICKSTART.md +0 -0
  304. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/README.md +0 -0
  305. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/SDLC-COMPLETE-GUIDE.md +0 -0
  306. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/WHY-SDD.md +0 -0
  307. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/azure-pipelines.yml +0 -0
  308. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/bitbucket-pipelines.yml +0 -0
  309. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/docs/SUMMARY-GUIDE.md +0 -0
  310. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/setup.ps1 +0 -0
  311. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/setup.sh +0 -0
  312. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/address-review.md +0 -0
  313. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/analyze.md +0 -0
  314. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/ava.md +0 -0
  315. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/bug-assess.md +0 -0
  316. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/bug-fix.md +0 -0
  317. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/change.md +0 -0
  318. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/check-review.md +0 -0
  319. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/checklist.md +0 -0
  320. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/clarify.md +0 -0
  321. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/create-context.md +0 -0
  322. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/implement.md +0 -0
  323. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/jira-push.md +0 -0
  324. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/kai.md +0 -0
  325. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/leo.md +0 -0
  326. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/maya.md +0 -0
  327. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/morgan.md +0 -0
  328. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/orchestrate.md +0 -0
  329. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-adr.md +0 -0
  330. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-arch.md +0 -0
  331. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-design.md +0 -0
  332. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-hld.md +0 -0
  333. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-lld.md +0 -0
  334. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/pre-review.md +0 -0
  335. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/quinn.md +0 -0
  336. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/release.md +0 -0
  337. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/rex.md +0 -0
  338. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/riley.md +0 -0
  339. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify-brd.md +0 -0
  340. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify-doc.md +0 -0
  341. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify-srd.md +0 -0
  342. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify-uc.md +0 -0
  343. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify.md +0 -0
  344. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/start.md +0 -0
  345. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/submit-review.md +0 -0
  346. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/task.md +0 -0
  347. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/taskstoissues.md +0 -0
  348. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/validate.md +0 -0
  349. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.cursor/rules/sdd-framework.mdc +0 -0
  350. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/copilot-instructions.md +0 -0
  351. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/backend-tests.instructions.md +0 -0
  352. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/components.instructions.md +0 -0
  353. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/domain.instructions.md +0 -0
  354. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/frontend-services.instructions.md +0 -0
  355. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/java.instructions.md +0 -0
  356. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/address-review.prompt.md +0 -0
  357. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/analyze.prompt.md +0 -0
  358. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/ava.prompt.md +0 -0
  359. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/bug-assess.prompt.md +0 -0
  360. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/bug-fix.prompt.md +0 -0
  361. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/change.prompt.md +0 -0
  362. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/check-review.prompt.md +0 -0
  363. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/checklist.prompt.md +0 -0
  364. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/create-context.prompt.md +0 -0
  365. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/implement.prompt.md +0 -0
  366. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/jira-push.prompt.md +0 -0
  367. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/kai.prompt.md +0 -0
  368. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/leo.prompt.md +0 -0
  369. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/maya.prompt.md +0 -0
  370. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/morgan.prompt.md +0 -0
  371. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/orchestrate.prompt.md +0 -0
  372. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-adr.prompt.md +0 -0
  373. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-arch.prompt.md +0 -0
  374. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-design.prompt.md +0 -0
  375. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-hld.prompt.md +0 -0
  376. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-lld.prompt.md +0 -0
  377. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/pre-review.prompt.md +0 -0
  378. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/quinn.prompt.md +0 -0
  379. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/release.prompt.md +0 -0
  380. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/rex.prompt.md +0 -0
  381. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/riley.prompt.md +0 -0
  382. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify-brd.prompt.md +0 -0
  383. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify-doc.prompt.md +0 -0
  384. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify-srd.prompt.md +0 -0
  385. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify-uc.prompt.md +0 -0
  386. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify.prompt.md +0 -0
  387. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/submit-review.prompt.md +0 -0
  388. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/task.prompt.md +0 -0
  389. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/taskstoissues.prompt.md +0 -0
  390. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/validate.prompt.md +0 -0
  391. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/workflows/quality-gate.yml +0 -0
  392. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.gitignore +0 -0
  393. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.gitlab-ci.yml +0 -0
  394. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  395. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/change-rules.md +0 -0
  396. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/constitution.md +0 -0
  397. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/roles.yml +0 -0
  398. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/summary-rules.md +0 -0
  399. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/token-pricing.yml.example +0 -0
  400. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/adr-template.md +0 -0
  401. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/analyze-template.md +0 -0
  402. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/api-spec-template.md +0 -0
  403. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/arch-template.md +0 -0
  404. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/brd-template.md +0 -0
  405. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/changeset-template.md +0 -0
  406. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/checklist-template.md +0 -0
  407. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/clarify-template.md +0 -0
  408. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/component-library-template.md +0 -0
  409. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/component-spec-template.md +0 -0
  410. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/constitution-amendment-template.md +0 -0
  411. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/context-template.md +0 -0
  412. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/data-model-template.md +0 -0
  413. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/design-template.md +0 -0
  414. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/docker-config-template.md +0 -0
  415. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/feature-story-template.md +0 -0
  416. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/hld-template.md +0 -0
  417. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/investigation-template.md +0 -0
  418. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/jira-export-template.md +0 -0
  419. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/lld-template.md +0 -0
  420. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/openapi-template.md +0 -0
  421. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/plan-template.md +0 -0
  422. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/qa-testcases-template.md +0 -0
  423. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/release-template.md +0 -0
  424. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/resilience-template.md +0 -0
  425. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/runbook-template.md +0 -0
  426. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/screen-spec-template.md +0 -0
  427. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/security-design-template.md +0 -0
  428. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/srd-template.md +0 -0
  429. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/tasks-template.md +0 -0
  430. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/token-usage-template.md +0 -0
  431. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/use-cases-template.md +0 -0
  432. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/ux-flow-template.md +0 -0
  433. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/validate-template.md +0 -0
  434. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.vscode/extensions.json +0 -0
  435. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.windsurfrules +0 -0
  436. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/CHANGE-GUIDE.md +0 -0
  437. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/CLAUDE.local.md +0 -0
  438. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/FLOW-ROLES-GATES.md +0 -0
  439. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/PROMPT-GUIDE.md +0 -0
  440. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/QUICKSTART.md +0 -0
  441. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/README.md +0 -0
  442. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/SDLC-COMPLETE-GUIDE.md +0 -0
  443. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/WHY-SDD.md +0 -0
  444. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/azure-pipelines.yml +0 -0
  445. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/bitbucket-pipelines.yml +0 -0
  446. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/docs/SUMMARY-GUIDE.md +0 -0
  447. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/setup.ps1 +0 -0
  448. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/setup.sh +0 -0
  449. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/create-context.md +0 -0
  450. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/implement.md +0 -0
  451. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/specify.md +0 -0
  452. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/start.md +0 -0
  453. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/task.md +0 -0
  454. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.cursor/rules/sdd-framework.mdc +0 -0
  455. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/copilot-instructions.md +0 -0
  456. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/prompts/create-context.prompt.md +0 -0
  457. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/prompts/implement.prompt.md +0 -0
  458. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/prompts/specify.prompt.md +0 -0
  459. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/prompts/task.prompt.md +0 -0
  460. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  461. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/manifest.yml +0 -0
  462. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/memory/constitution.md +0 -0
  463. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/templates/context-template.md +0 -0
  464. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/templates/tasks-template.md +0 -0
  465. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/.windsurfrules +0 -0
  466. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/CLAUDE.md +0 -0
  467. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/QUICKSTART.md +0 -0
  468. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/README.md +0 -0
  469. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/WHY-SDD.md +0 -0
  470. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/setup.ps1 +0 -0
  471. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-micro/setup.sh +0 -0
  472. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/address-review.md +0 -0
  473. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/analyze.md +0 -0
  474. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/ava.md +0 -0
  475. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/bug-assess.md +0 -0
  476. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/bug-fix.md +0 -0
  477. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/change.md +0 -0
  478. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/check-review.md +0 -0
  479. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/checklist.md +0 -0
  480. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/clarify.md +0 -0
  481. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/create-context.md +0 -0
  482. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/implement.md +0 -0
  483. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/jira-push.md +0 -0
  484. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/kai.md +0 -0
  485. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/leo.md +0 -0
  486. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/maya.md +0 -0
  487. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/morgan.md +0 -0
  488. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/orchestrate.md +0 -0
  489. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-adr.md +0 -0
  490. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-arch.md +0 -0
  491. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-design.md +0 -0
  492. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-hld.md +0 -0
  493. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-lld.md +0 -0
  494. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/pre-review.md +0 -0
  495. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/quinn.md +0 -0
  496. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/release.md +0 -0
  497. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/rex.md +0 -0
  498. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/riley.md +0 -0
  499. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify-brd.md +0 -0
  500. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify-doc.md +0 -0
  501. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify-srd.md +0 -0
  502. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify-uc.md +0 -0
  503. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify.md +0 -0
  504. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/start.md +0 -0
  505. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/submit-review.md +0 -0
  506. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/task.md +0 -0
  507. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/taskstoissues.md +0 -0
  508. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/validate.md +0 -0
  509. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.cursor/rules/sdd-framework.mdc +0 -0
  510. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/copilot-instructions.md +0 -0
  511. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/instructions/screens.instructions.md +0 -0
  512. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/instructions/services.instructions.md +0 -0
  513. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/instructions/tests.instructions.md +0 -0
  514. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/address-review.prompt.md +0 -0
  515. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/analyze.prompt.md +0 -0
  516. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/ava.prompt.md +0 -0
  517. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/bug-assess.prompt.md +0 -0
  518. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/bug-fix.prompt.md +0 -0
  519. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/change.prompt.md +0 -0
  520. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/check-review.prompt.md +0 -0
  521. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/checklist.prompt.md +0 -0
  522. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/create-context.prompt.md +0 -0
  523. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/implement.prompt.md +0 -0
  524. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/jira-push.prompt.md +0 -0
  525. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/kai.prompt.md +0 -0
  526. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/leo.prompt.md +0 -0
  527. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/maya.prompt.md +0 -0
  528. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/morgan.prompt.md +0 -0
  529. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/orchestrate.prompt.md +0 -0
  530. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-adr.prompt.md +0 -0
  531. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-arch.prompt.md +0 -0
  532. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-design.prompt.md +0 -0
  533. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-hld.prompt.md +0 -0
  534. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-lld.prompt.md +0 -0
  535. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/pre-review.prompt.md +0 -0
  536. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/quinn.prompt.md +0 -0
  537. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/release.prompt.md +0 -0
  538. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/rex.prompt.md +0 -0
  539. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/riley.prompt.md +0 -0
  540. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify-brd.prompt.md +0 -0
  541. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify-doc.prompt.md +0 -0
  542. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify-srd.prompt.md +0 -0
  543. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify-uc.prompt.md +0 -0
  544. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify.prompt.md +0 -0
  545. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/submit-review.prompt.md +0 -0
  546. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/task.prompt.md +0 -0
  547. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/taskstoissues.prompt.md +0 -0
  548. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/validate.prompt.md +0 -0
  549. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/workflows/quality-gate.yml +0 -0
  550. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.gitignore +0 -0
  551. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.gitlab-ci.yml +0 -0
  552. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  553. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/change-rules.md +0 -0
  554. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/constitution.md +0 -0
  555. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/roles.yml +0 -0
  556. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/summary-rules.md +0 -0
  557. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/token-pricing.yml.example +0 -0
  558. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/adr-template.md +0 -0
  559. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/analyze-template.md +0 -0
  560. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/api-spec-template.md +0 -0
  561. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/arch-template.md +0 -0
  562. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/brd-template.md +0 -0
  563. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/changeset-template.md +0 -0
  564. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/checklist-template.md +0 -0
  565. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/clarify-template.md +0 -0
  566. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/constitution-amendment-template.md +0 -0
  567. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/context-template.md +0 -0
  568. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/data-model-template.md +0 -0
  569. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/design-template.md +0 -0
  570. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/docker-config-template.md +0 -0
  571. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/feature-story-template.md +0 -0
  572. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/hld-template.md +0 -0
  573. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/investigation-template.md +0 -0
  574. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/jira-export-template.md +0 -0
  575. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/lld-template.md +0 -0
  576. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/plan-template.md +0 -0
  577. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/qa-testcases-template.md +0 -0
  578. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/release-template.md +0 -0
  579. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/resilience-template.md +0 -0
  580. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/runbook-template.md +0 -0
  581. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/screen-spec-template.md +0 -0
  582. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/security-design-template.md +0 -0
  583. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/srd-template.md +0 -0
  584. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/tasks-template.md +0 -0
  585. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/token-usage-template.md +0 -0
  586. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/use-cases-template.md +0 -0
  587. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/ux-flow-template.md +0 -0
  588. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/validate-template.md +0 -0
  589. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.vscode/extensions.json +0 -0
  590. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.windsurfrules +0 -0
  591. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/CHANGE-GUIDE.md +0 -0
  592. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/CLAUDE.local.md +0 -0
  593. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/FLOW-ROLES-GATES.md +0 -0
  594. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/IMPROVEMENT-BACKLOG.md +0 -0
  595. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/PROMPT-GUIDE.md +0 -0
  596. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/QUICKSTART.md +0 -0
  597. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/README.md +0 -0
  598. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/SDLC-COMPLETE-GUIDE.md +0 -0
  599. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/WHY-SDD.md +0 -0
  600. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/azure-pipelines.yml +0 -0
  601. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/bitbucket-pipelines.yml +0 -0
  602. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/docs/SUMMARY-GUIDE.md +0 -0
  603. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/setup.ps1 +0 -0
  604. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-mobile/setup.sh +0 -0
  605. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/address-review.md +0 -0
  606. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/analyze.md +0 -0
  607. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/ava.md +0 -0
  608. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/bug-assess.md +0 -0
  609. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/bug-fix.md +0 -0
  610. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/change.md +0 -0
  611. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/check-review.md +0 -0
  612. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/checklist.md +0 -0
  613. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/clarify.md +0 -0
  614. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/create-context.md +0 -0
  615. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/implement.md +0 -0
  616. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/jira-push.md +0 -0
  617. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/kai.md +0 -0
  618. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/leo.md +0 -0
  619. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/maya.md +0 -0
  620. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/morgan.md +0 -0
  621. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/orchestrate.md +0 -0
  622. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-adr.md +0 -0
  623. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-arch.md +0 -0
  624. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-design.md +0 -0
  625. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-hld.md +0 -0
  626. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-lld.md +0 -0
  627. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/pre-review.md +0 -0
  628. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/quinn.md +0 -0
  629. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/release.md +0 -0
  630. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/rex.md +0 -0
  631. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/riley.md +0 -0
  632. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify-brd.md +0 -0
  633. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify-doc.md +0 -0
  634. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify-srd.md +0 -0
  635. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify-uc.md +0 -0
  636. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify.md +0 -0
  637. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/start.md +0 -0
  638. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/submit-review.md +0 -0
  639. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/task.md +0 -0
  640. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/taskstoissues.md +0 -0
  641. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/validate.md +0 -0
  642. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.cursor/rules/sdd-framework.mdc +0 -0
  643. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/copilot-instructions.md +0 -0
  644. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/instructions/domain.instructions.md +0 -0
  645. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/instructions/entrypoints.instructions.md +0 -0
  646. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/instructions/tests.instructions.md +0 -0
  647. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/address-review.prompt.md +0 -0
  648. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/analyze.prompt.md +0 -0
  649. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/ava.prompt.md +0 -0
  650. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/bug-assess.prompt.md +0 -0
  651. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/bug-fix.prompt.md +0 -0
  652. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/change.prompt.md +0 -0
  653. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/check-review.prompt.md +0 -0
  654. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/checklist.prompt.md +0 -0
  655. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/create-context.prompt.md +0 -0
  656. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/implement.prompt.md +0 -0
  657. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/jira-push.prompt.md +0 -0
  658. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/kai.prompt.md +0 -0
  659. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/leo.prompt.md +0 -0
  660. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/maya.prompt.md +0 -0
  661. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/morgan.prompt.md +0 -0
  662. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/orchestrate.prompt.md +0 -0
  663. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-adr.prompt.md +0 -0
  664. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-arch.prompt.md +0 -0
  665. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-design.prompt.md +0 -0
  666. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-hld.prompt.md +0 -0
  667. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-lld.prompt.md +0 -0
  668. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/pre-review.prompt.md +0 -0
  669. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/quinn.prompt.md +0 -0
  670. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/release.prompt.md +0 -0
  671. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/rex.prompt.md +0 -0
  672. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/riley.prompt.md +0 -0
  673. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify-brd.prompt.md +0 -0
  674. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify-doc.prompt.md +0 -0
  675. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify-srd.prompt.md +0 -0
  676. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify-uc.prompt.md +0 -0
  677. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify.prompt.md +0 -0
  678. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/submit-review.prompt.md +0 -0
  679. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/task.prompt.md +0 -0
  680. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/taskstoissues.prompt.md +0 -0
  681. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/validate.prompt.md +0 -0
  682. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/workflows/quality-gate.yml +0 -0
  683. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.gitignore +0 -0
  684. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.gitlab-ci.yml +0 -0
  685. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/contexts/CONTEXT-GUIDE.md +0 -0
  686. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/change-rules.md +0 -0
  687. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/constitution.md +0 -0
  688. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/roles.yml +0 -0
  689. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/summary-rules.md +0 -0
  690. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/token-pricing.yml.example +0 -0
  691. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/adr-template.md +0 -0
  692. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/analyze-template.md +0 -0
  693. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/api-spec-template.md +0 -0
  694. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/arch-template.md +0 -0
  695. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/brd-template.md +0 -0
  696. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/changeset-template.md +0 -0
  697. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/checklist-template.md +0 -0
  698. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/clarify-template.md +0 -0
  699. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/constitution-amendment-template.md +0 -0
  700. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/context-template.md +0 -0
  701. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/data-model-template.md +0 -0
  702. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/design-template.md +0 -0
  703. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/docker-config-template.md +0 -0
  704. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/feature-story-template.md +0 -0
  705. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/hld-template.md +0 -0
  706. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/investigation-template.md +0 -0
  707. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/jira-export-template.md +0 -0
  708. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/k8s-manifest-template.md +0 -0
  709. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/lld-template.md +0 -0
  710. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/openapi-template.md +0 -0
  711. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/plan-template.md +0 -0
  712. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/qa-testcases-template.md +0 -0
  713. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/release-template.md +0 -0
  714. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/resilience-template.md +0 -0
  715. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/runbook-template.md +0 -0
  716. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/security-design-template.md +0 -0
  717. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/srd-template.md +0 -0
  718. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/tasks-template.md +0 -0
  719. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/token-usage-template.md +0 -0
  720. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/use-cases-template.md +0 -0
  721. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/validate-template.md +0 -0
  722. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.vscode/extensions.json +0 -0
  723. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/.windsurfrules +0 -0
  724. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/CHANGE-GUIDE.md +0 -0
  725. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/CLAUDE.local.md +0 -0
  726. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/FLOW-ROLES-GATES.md +0 -0
  727. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/IMPROVEMENT-BACKLOG.md +0 -0
  728. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/PROMPT-GUIDE.md +0 -0
  729. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/QUICKSTART.md +0 -0
  730. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/README.md +0 -0
  731. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/SDLC-COMPLETE-GUIDE.md +0 -0
  732. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/WHY-SDD.md +0 -0
  733. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/azure-pipelines.yml +0 -0
  734. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/bitbucket-pipelines.yml +0 -0
  735. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/docs/SUMMARY-GUIDE.md +0 -0
  736. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/setup.ps1 +0 -0
  737. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/packs/sdd-universal/setup.sh +0 -0
  738. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/__init__.py +0 -0
  739. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/atlassian_auth.py +0 -0
  740. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/cf_to_md.py +0 -0
  741. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/confluence_client.py +0 -0
  742. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/dashboard_comments.py +0 -0
  743. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/detect.py +0 -0
  744. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/git_host.py +0 -0
  745. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/integrations.py +0 -0
  746. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/jira_client.py +0 -0
  747. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/manifest.py +0 -0
  748. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/md_to_cf.py +0 -0
  749. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/mermaid_render.py +0 -0
  750. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/scaffold.py +0 -0
  751. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/sdd_parser.py +0 -0
  752. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/status.py +0 -0
  753. {sddflow-2.7.58 → sddflow-2.7.60}/sdd/utils/validate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sddflow
3
- Version: 2.7.58
3
+ Version: 2.7.60
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sddflow"
7
- version = "2.7.58"
7
+ version = "2.7.60"
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.60"
@@ -682,7 +682,7 @@ def _fetch_review_links(feature: str) -> dict:
682
682
  try:
683
683
  issue = jira_client.find_by_label(cfg.jira.key_for("review"), f"sdd-doc:{feature}:{doc_key}")
684
684
  if issue:
685
- review_status, comments = _get_review_status(
685
+ review_status, comments, _ = _get_review_status(
686
686
  doc_key, jira_client, cfg.jira.key_for("review"), cfg, feature,
687
687
  )
688
688
  entry["jira"] = {
@@ -115,13 +115,40 @@ def _mark_md_approved(md_path: Path) -> bool:
115
115
  return True
116
116
 
117
117
 
118
- def _push_doc_page(doc: str, md_path: Path, feature_name: str) -> str | None:
119
- """Upsert the document's Confluence page so it reflects the approved .md.
118
+ def _jira_status_banner(issue_key: str, issue_url: str, status: str, role: str) -> str:
119
+ """Confluence storage-format panel summarizing the Jira review ticket's
120
+ link and current status, prepended to the page body on every push so a
121
+ reviewer can see review state without leaving Confluence."""
122
+ macro_type = {"APPROVED": "success", "NEEDS_REVISION": "warning"}.get(status, "info")
123
+ label = {
124
+ "APPROVED": "Approved",
125
+ "NEEDS_REVISION": "Needs Revision",
126
+ "PENDING": "Pending review",
127
+ }.get(status, status)
128
+ return (
129
+ f'<ac:structured-macro ac:name="{macro_type}">'
130
+ f'<ac:rich-text-body><p>'
131
+ f'<strong>Jira review:</strong> '
132
+ f'<a href="{issue_url}">{issue_key}</a> — <strong>{label}</strong>'
133
+ f' (assigned: {role})'
134
+ f'</p></ac:rich-text-body>'
135
+ f'</ac:structured-macro>'
136
+ )
137
+
138
+
139
+ def _push_doc_page(doc: str, md_path: Path, feature_name: str) -> tuple[str, str] | None:
140
+ """Upsert the document's Confluence page so it reflects the current .md.
120
141
 
121
- Returns the page title on success, or None when Confluence is not
122
- configured. Raises on push errors — callers decide how fatal that is.
123
- Page title resolution matches `sdd review submit`: document_reviews entry
124
- first, then the confluence page_map, then a sensible default."""
142
+ Returns (page_title, page_url) on success, or None when Confluence is
143
+ not configured. Raises on push errors — callers decide how fatal that
144
+ is. Page title resolution matches `sdd review submit`: document_reviews
145
+ entry first, then the confluence page_map, then a sensible default.
146
+
147
+ When a Jira review ticket already exists for this doc (jira: configured
148
+ and document_reviews has an entry for it), a status banner linking to
149
+ that ticket is prepended to the page body -- this is what lets a
150
+ reviewer see the Jira link + current status directly on Confluence
151
+ instead of having to check Jira separately."""
125
152
  try:
126
153
  cfg = load_integrations()
127
154
  except FileNotFoundError:
@@ -147,16 +174,33 @@ def _push_doc_page(doc: str, md_path: Path, feature_name: str) -> str | None:
147
174
  prof = load_profile(cfg.profile)
148
175
  session = build_session(prof)
149
176
  cf_client = ConfluenceClient(session, prof.base_url)
177
+
178
+ banner = ""
179
+ if cfg.jira and doc in cfg.document_reviews:
180
+ try:
181
+ jira_client = JiraClient(session, prof.base_url)
182
+ status, _, issue = _get_review_status(
183
+ doc, jira_client, cfg.jira.key_for("review"), cfg, feature_name,
184
+ )
185
+ if issue:
186
+ issue_url = f"{prof.base_url}/browse/{issue['key']}"
187
+ banner = _jira_status_banner(
188
+ issue["key"], issue_url, status, cfg.document_reviews[doc].reviewer_role,
189
+ )
190
+ except Exception:
191
+ pass # banner is a best-effort addition -- never blocks the page push itself
192
+
150
193
  body_html, attachments, diagram_warnings = md_to_storage(md_path.read_text(), cfg.confluence.diagrams)
151
194
  from sdd.commands.confluence import resolve_doc_parent_id, upload_diagram_attachments
152
195
  parent_id = resolve_doc_parent_id(cf_client, cfg.confluence, project_name, feature_name, doc)
153
196
  page, _created = cf_client.upsert_page(
154
- cfg.confluence.space_key, title, body_html, parent_id,
197
+ cfg.confluence.space_key, title, banner + body_html, parent_id,
155
198
  )
156
199
  upload_diagram_attachments(cf_client, page["id"], attachments)
157
200
  for w in diagram_warnings:
158
201
  console.print(f" [yellow]! {w}[/yellow]")
159
- return title
202
+ page_url = f"{prof.base_url}/wiki{page.get('_links', {}).get('webui', '')}"
203
+ return title, page_url
160
204
 
161
205
 
162
206
  # ── Text extraction ────────────────────────────────────────────────────────────
@@ -231,29 +275,32 @@ def _get_review_status(
231
275
  project_key: str,
232
276
  cfg: IntegrationsConfig,
233
277
  feature_name: str,
234
- ) -> tuple[str, list[dict]]:
235
- """Return (status, comments).
278
+ ) -> tuple[str, list[dict], dict | None]:
279
+ """Return (status, comments, issue).
236
280
  status: APPROVED | NEEDS_REVISION | PENDING | NOT_SUBMITTED
281
+ issue is the raw Jira issue dict (or None if never submitted) -- callers
282
+ that also need the issue key/link (e.g. the Confluence status banner)
283
+ reuse this instead of a second find_by_label lookup.
237
284
 
238
285
  Label is feature-qualified — must match the label `review_submit` writes,
239
286
  or a submitted review would never be found again.
240
287
  """
241
288
  issue = client.find_by_label(project_key, f"sdd-doc:{feature_name}:{doc_key}")
242
289
  if not issue:
243
- return "NOT_SUBMITTED", []
290
+ return "NOT_SUBMITTED", [], None
244
291
 
245
292
  jira_status = issue.get("fields", {}).get("status", {}).get("name", "")
246
293
  comments = client.get_comments(issue["key"])
247
294
 
248
295
  if jira_status in cfg.approved_statuses:
249
- return "APPROVED", comments
296
+ return "APPROVED", comments, issue
250
297
 
251
298
  for c in comments:
252
299
  text = _extract_text(c.get("body", "")).lower()
253
300
  if any(kw in text for kw in cfg.approved_keywords):
254
- return "APPROVED", comments
301
+ return "APPROVED", comments, issue
255
302
 
256
- return ("NEEDS_REVISION" if comments else "PENDING"), comments
303
+ return ("NEEDS_REVISION" if comments else "PENDING"), comments, issue
257
304
 
258
305
 
259
306
  def _check_predecessor(
@@ -275,7 +322,7 @@ def _check_predecessor(
275
322
  if not preds:
276
323
  return True, None
277
324
  pred_key = preds[0]
278
- status, _ = _get_review_status(pred_key, client, cfg.jira.key_for("review"), cfg, feature_name)
325
+ status, _, _ = _get_review_status(pred_key, client, cfg.jira.key_for("review"), cfg, feature_name)
279
326
  return (status == "APPROVED"), (None if status == "APPROVED" else pred_key)
280
327
 
281
328
 
@@ -426,6 +473,129 @@ def _patch_marker(md_path: Path, nnn: str, answer: str) -> bool:
426
473
  return True
427
474
 
428
475
 
476
+ # ── clarify.md's own open items (AMB/GAP/CON/ASM/OQ/R) ─────────────────────────
477
+ # Unlike validate.md's [NEEDS CLARIFICATION-NNN] markers -- which cite OTHER
478
+ # documents (brd/srd/use-cases) via a `{doc}:NC-{NNN}` ID -- clarify.md's own
479
+ # ambiguities/gaps/conflicts/assumptions/open-questions/risks live entirely in
480
+ # clarify.md itself, tracked by its STATUS TABLE (see clarify-template.md)
481
+ # rather than an inline bracketed marker. push-questions/pull-answers only
482
+ # ever understood the NC-NNN scheme, so clarify.md could never be pushed to
483
+ # Jira for answers the way validate.md already could -- this second, parallel
484
+ # parse/patch pair gives it the same workflow.
485
+
486
+ _CLARIFY_ITEM_CODE = r'(?:AMB|GAP|CON|ASM|OQ|R)-\d+'
487
+ _CLARIFY_STATUS_ROW_RE = re.compile(
488
+ r'^\|\s*(' + _CLARIFY_ITEM_CODE + r')\s*\|\s*([^|]+?)\s*\|\s*([^|]+?)\s*\|\s*OPEN\s*\|\s*$',
489
+ re.MULTILINE | re.IGNORECASE,
490
+ )
491
+ _CLARIFY_ANSWER_LINE_RE = re.compile(
492
+ r'^\s*clarify:(' + _CLARIFY_ITEM_CODE + r')\s*:\s*(.+?)\s*$',
493
+ re.MULTILINE | re.IGNORECASE,
494
+ )
495
+ _CLARIFY_FILL_RE = re.compile(r'\{FILL[^}]*\}')
496
+
497
+ # Terminal STATUS TABLE value per item-type prefix, matching the mapping
498
+ # clarify.prompt.md's own Step 2 uses ("match the item type"). ASM is not
499
+ # listed here -- it's CONFIRMED or CORRECTED depending on the answer itself
500
+ # (the template's own "Correct? Yes / No" framing), handled in
501
+ # _patch_clarify_item rather than a fixed lookup.
502
+ _CLARIFY_TERMINAL_STATUS = {
503
+ "AMB": "RESOLVED",
504
+ "GAP": "RESOLVED",
505
+ "CON": "CORRECTED",
506
+ "OQ": "DECIDED",
507
+ "R": "RESOLVED",
508
+ }
509
+
510
+
511
+ def _clarify_item_block_text(doc_text: str, code: str) -> str | None:
512
+ """Return the full body of a clarify.md item's own section (from its
513
+ `### {code}: {Topic}` heading up to the next section break -- either a
514
+ `---` divider between type-sections or the next `### ` item heading for
515
+ consecutive same-type items), for posting as the Jira question text.
516
+ Returns the whole block (Found in / Option A / Option B / etc, not just
517
+ one field) since the 5 item types each label their key line
518
+ differently and the reviewer needs full context regardless. None if no
519
+ such heading exists in doc_text."""
520
+ heading = re.search(r'^### ' + re.escape(code) + r':.*$', doc_text, re.MULTILINE)
521
+ if not heading:
522
+ return None
523
+ rest = doc_text[heading.end():]
524
+ end_match = re.search(r'\n---\s*\n|\n### ', rest)
525
+ body = rest[:end_match.start()] if end_match else rest
526
+ return (heading.group(0) + "\n" + body).strip()
527
+
528
+
529
+ def _parse_clarify_open_items(doc_text: str) -> list[dict]:
530
+ """Parse clarify.md's STATUS TABLE for OPEN rows into the same
531
+ {id, locations, question} shape _parse_open_questions returns, so
532
+ push-questions/pull-answers can handle both marker schemes through the
533
+ same downstream Jira/Confluence code. Every clarify item lives in
534
+ clarify.md itself -- "locations" is always just the item's own ID,
535
+ prefixed "clarify:" to match the {doc}:NC-{NNN} convention every
536
+ answer-parsing/console-message call site already expects (e.g. the
537
+ reviewer replies "clarify:AMB-001: <answer>", not "brd:NC-001: ...")."""
538
+ items: list[dict] = []
539
+ for m in _CLARIFY_STATUS_ROW_RE.finditer(doc_text):
540
+ code = m.group(1).strip().upper()
541
+ full_id = f"clarify:{code}"
542
+ question = _clarify_item_block_text(doc_text, code) or f"{m.group(2).strip()}: {m.group(3).strip()}"
543
+ items.append({"id": full_id, "locations": [full_id], "question": question})
544
+ return items
545
+
546
+
547
+ def _parse_clarify_answers(comments: list[dict]) -> dict[str, str]:
548
+ """Parse every Jira comment for lines like 'clarify:AMB-001: <answer>'.
549
+ A later comment's answer for the same ID overrides an earlier one."""
550
+ answers: dict[str, str] = {}
551
+ for c in comments:
552
+ text = _extract_text(c.get("body", ""))
553
+ for m in _CLARIFY_ANSWER_LINE_RE.finditer(text):
554
+ code, answer = m.group(1).upper(), m.group(2)
555
+ answers[f"clarify:{code}"] = answer
556
+ return answers
557
+
558
+
559
+ def _patch_clarify_item(md_path: Path, code: str, answer: str) -> bool:
560
+ """Fill a clarify.md item's `{FILL...}` placeholder with the reviewer's
561
+ answer and flip its STATUS TABLE row from OPEN to the terminal status
562
+ for its type. Returns True if the item was found and patched, False
563
+ otherwise (already resolved, or code doesn't exist in this file)."""
564
+ if not md_path.exists():
565
+ return False
566
+ text = md_path.read_text()
567
+
568
+ heading = re.search(r'^### ' + re.escape(code) + r':.*$', text, re.MULTILINE)
569
+ if not heading:
570
+ return False
571
+ rest = text[heading.end():]
572
+ end_match = re.search(r'\n---\s*\n|\n### ', rest)
573
+ block_end = heading.end() + (end_match.start() if end_match else len(rest))
574
+ fill_match = _CLARIFY_FILL_RE.search(text, heading.end(), block_end)
575
+ if not fill_match:
576
+ return False # already answered
577
+
578
+ prefix = code.split("-")[0]
579
+ if prefix == "ASM":
580
+ status = "CONFIRMED" if answer.strip().lower().startswith("yes") else "CORRECTED"
581
+ else:
582
+ status = _CLARIFY_TERMINAL_STATUS.get(prefix, "RESOLVED")
583
+
584
+ new_text = text[:fill_match.start()] + answer + text[fill_match.end():]
585
+
586
+ status_row_re = re.compile(
587
+ r'(^\|\s*' + re.escape(code) + r'\s*\|[^|]*\|[^|]*\|)\s*OPEN\s*(\|\s*$)',
588
+ re.MULTILINE | re.IGNORECASE,
589
+ )
590
+ new_text, n = status_row_re.subn(r'\1 ' + status + r' \2', new_text, count=1)
591
+ if n == 0:
592
+ return False # STATUS TABLE row missing/already flipped -- don't half-patch
593
+
594
+ new_text = _bump_version_and_log(new_text, f"{code} resolved via Jira/Confluence comment")
595
+ md_path.write_text(new_text)
596
+ return True
597
+
598
+
429
599
  _LEGACY_MARKER_RE = re.compile(r'\[NEEDS CLARIFICATION:\s*')
430
600
 
431
601
 
@@ -688,6 +858,16 @@ def review_submit(doc, profile, feature):
688
858
 
689
859
  _record_review_link(doc, story_key)
690
860
 
861
+ # ── Re-push Confluence with the now-existing Jira link/status banner ──────
862
+ # The first push above (before the ticket existed) couldn't include this --
863
+ # _push_doc_page's own find-by-label lookup will now find the ticket just
864
+ # created/updated and prepend a banner showing its link + live status, so
865
+ # a reviewer sees Jira state without leaving Confluence.
866
+ try:
867
+ _push_doc_page(doc, md_path, feature_name)
868
+ except Exception as e:
869
+ console.print(f" [yellow]! Could not stamp Jira status onto Confluence: {e}[/yellow]")
870
+
691
871
  if epic_key:
692
872
  _link_review_story_to_epic(jira_client, story_key, epic_key, cfg.jira)
693
873
 
@@ -753,11 +933,14 @@ def review_push_questions(doc, profile, feature):
753
933
  console.print(f" [red]✗ {md_path} not found[/red]")
754
934
  raise SystemExit(1)
755
935
 
756
- items = _parse_open_questions(md_path.read_text())
936
+ if doc == "clarify":
937
+ items = _parse_clarify_open_items(md_path.read_text())
938
+ not_found_msg = "No OPEN items found in clarify.md's STATUS TABLE — nothing to push."
939
+ else:
940
+ items = _parse_open_questions(md_path.read_text())
941
+ not_found_msg = f"No open [NEEDS CLARIFICATION-NNN] items found in {md_path.name} — nothing to push."
757
942
  if not items:
758
- console.print(
759
- f" [dim]No open [NEEDS CLARIFICATION-NNN] items found in {md_path.name} — nothing to push.[/dim]"
760
- )
943
+ console.print(f" [dim]{not_found_msg}[/dim]")
761
944
  raise SystemExit(0)
762
945
 
763
946
  try:
@@ -774,7 +957,9 @@ def review_push_questions(doc, profile, feature):
774
957
  page_title = None
775
958
  if cfg.confluence:
776
959
  try:
777
- page_title = _push_doc_page(doc, md_path, feature_name)
960
+ pushed = _push_doc_page(doc, md_path, feature_name)
961
+ if pushed:
962
+ page_title, _page_url = pushed
778
963
  except Exception as e:
779
964
  console.print(f" [yellow]! Confluence push failed: {e}[/yellow]")
780
965
 
@@ -797,7 +982,7 @@ def review_push_questions(doc, profile, feature):
797
982
  f"Answer each item as a comment on THIS ticket, one line per item, "
798
983
  f"starting with its ID:\n\n{table_lines}\n\n"
799
984
  f"Example: \"{items[0]['id']}: <your answer>\"\n\n"
800
- f"Once every item is answered, re-run /validate — it pulls the answers "
985
+ f"Once every item is answered, re-run /{doc} — it pulls the answers "
801
986
  f"automatically, updates the spec, and re-checks."
802
987
  )
803
988
  fields: dict = {
@@ -841,7 +1026,7 @@ def review_push_questions(doc, profile, feature):
841
1026
  console.print()
842
1027
  console.print(f" [bold]{len(items)} open question(s)[/bold] pushed. Reviewer replies as a comment")
843
1028
  console.print(f" starting with the item's ID, e.g. \"{items[0]['id']}: <answer>\".")
844
- console.print(f" Run [cyan]sdd review pull-answers --doc {doc}[/cyan] (or just re-run /validate) once answered.")
1029
+ console.print(f" Run [cyan]sdd review pull-answers --doc {doc}[/cyan] (or just re-run /{doc}) once answered.")
845
1030
  console.print()
846
1031
 
847
1032
 
@@ -879,31 +1064,38 @@ def review_pull_answers(doc, profile, feature):
879
1064
  if not md_path.exists():
880
1065
  raise SystemExit(0)
881
1066
 
882
- items = _parse_open_questions(md_path.read_text())
1067
+ is_clarify = (doc == "clarify")
1068
+ if is_clarify:
1069
+ items = _parse_clarify_open_items(md_path.read_text())
1070
+ else:
1071
+ items = _parse_open_questions(md_path.read_text())
883
1072
  if not items:
884
1073
  raise SystemExit(0)
885
1074
 
886
- # Retrofit: a doc that predates NEEDS CLARIFICATION-NNN numbering
887
- # still has the old unnumbered [NEEDS CLARIFICATION: ...] form, even
888
- # though validate.md's table above already displays synthesized
889
- # brd:NC-001-style IDs for it (order-of-appearance, same rule) --
890
- # number the source file's markers to match before attempting any
891
- # patch, or the exact-ID search below would never find them.
892
- referenced_docs = {
893
- _normalize_doc_key(loc_id.split(":NC-")[0])
894
- for item in items for loc_id in item["locations"]
895
- }
896
- for doc_key in referenced_docs:
897
- try:
898
- loc_path = resolve_doc_path(doc_key, feature_name)
899
- except ValueError:
900
- continue
901
- renumbered = _number_legacy_markers(loc_path)
902
- if renumbered:
903
- console.print(
904
- f" [dim]· Numbered {renumbered} legacy marker(s) in "
905
- f"{loc_path.name} to match validate.md's IDs[/dim]"
906
- )
1075
+ if not is_clarify:
1076
+ # Retrofit: a doc that predates NEEDS CLARIFICATION-NNN numbering
1077
+ # still has the old unnumbered [NEEDS CLARIFICATION: ...] form, even
1078
+ # though validate.md's table above already displays synthesized
1079
+ # brd:NC-001-style IDs for it (order-of-appearance, same rule) --
1080
+ # number the source file's markers to match before attempting any
1081
+ # patch, or the exact-ID search below would never find them.
1082
+ # clarify.md's own items have no such legacy/numbering concern --
1083
+ # they're tracked by a STATUS TABLE row, not a bracketed marker.
1084
+ referenced_docs = {
1085
+ _normalize_doc_key(loc_id.split(":NC-")[0])
1086
+ for item in items for loc_id in item["locations"]
1087
+ }
1088
+ for doc_key in referenced_docs:
1089
+ try:
1090
+ loc_path = resolve_doc_path(doc_key, feature_name)
1091
+ except ValueError:
1092
+ continue
1093
+ renumbered = _number_legacy_markers(loc_path)
1094
+ if renumbered:
1095
+ console.print(
1096
+ f" [dim]· Numbered {renumbered} legacy marker(s) in "
1097
+ f"{loc_path.name} to match validate.md's IDs[/dim]"
1098
+ )
907
1099
 
908
1100
  links = _load_review_links()
909
1101
  issue_key = (links.get(doc) or {}).get("key")
@@ -927,7 +1119,7 @@ def review_pull_answers(doc, profile, feature):
927
1119
  console.print(f" [yellow]! Could not fetch comments from {issue_key}: {e}[/yellow]")
928
1120
  raise SystemExit(0)
929
1121
 
930
- answers = _parse_answers(comments)
1122
+ answers = _parse_clarify_answers(comments) if is_clarify else _parse_answers(comments)
931
1123
  if not answers:
932
1124
  raise SystemExit(0)
933
1125
 
@@ -942,6 +1134,13 @@ def review_pull_answers(doc, profile, feature):
942
1134
  if item["id"] not in answers:
943
1135
  continue
944
1136
  answer_text = answers[item["id"]]
1137
+ if is_clarify:
1138
+ code = item["id"].split("clarify:", 1)[1]
1139
+ if _patch_clarify_item(md_path, code, answer_text):
1140
+ patched_docs["clarify"] = patched_docs.get("clarify", 0) + 1
1141
+ patched_paths["clarify"] = md_path
1142
+ console.print(f" [green]✓[/green] {item['id']} resolved in {md_path.name}")
1143
+ continue
945
1144
  for loc_id in item["locations"]:
946
1145
  doc_key, nnn = loc_id.split(":NC-")
947
1146
  doc_key = _normalize_doc_key(doc_key)
@@ -973,8 +1172,9 @@ def review_pull_answers(doc, profile, feature):
973
1172
  if cfg.confluence:
974
1173
  for doc_key, loc_path in patched_paths.items():
975
1174
  try:
976
- title = _push_doc_page(doc_key, loc_path, feature_name)
977
- if title:
1175
+ pushed = _push_doc_page(doc_key, loc_path, feature_name)
1176
+ if pushed:
1177
+ title, _page_url = pushed
978
1178
  console.print(f" [green]✓[/green] Confluence page refreshed: [cyan]{title}[/cyan]")
979
1179
  except Exception as e:
980
1180
  console.print(f" [yellow]! Could not refresh Confluence page for {doc_key}: {e}[/yellow]")
@@ -1030,10 +1230,22 @@ def review_check(doc, profile, feature):
1030
1230
  raise SystemExit(3)
1031
1231
 
1032
1232
  client = JiraClient(session, prof.base_url)
1033
- status, comments = _get_review_status(doc, client, cfg.jira.key_for("review"), cfg, feature_name)
1233
+ status, comments, _ = _get_review_status(doc, client, cfg.jira.key_for("review"), cfg, feature_name)
1034
1234
  doc_cfg = cfg.document_reviews.get(doc)
1035
1235
  role = doc_cfg.reviewer_role if doc_cfg else "reviewer"
1036
1236
 
1237
+ # ── Refresh the Confluence status banner to match what we just polled ─────
1238
+ # Best-effort: a reviewer who only looks at Confluence (never Jira
1239
+ # directly) should see the same status this command just printed, without
1240
+ # having to wait for the next `sdd review submit`/`apply`/`approve`.
1241
+ if cfg.confluence:
1242
+ try:
1243
+ md_path = resolve_doc_path(doc, feature_name)
1244
+ if md_path.exists():
1245
+ _push_doc_page(doc, md_path, feature_name)
1246
+ except Exception:
1247
+ pass
1248
+
1037
1249
  if status == "APPROVED":
1038
1250
  console.print(f" [green]✓ {doc.upper()} — APPROVED[/green]")
1039
1251
  console.print()
@@ -1164,8 +1376,9 @@ def review_approve(doc, local, by, note, feature, no_confluence):
1164
1376
  try:
1165
1377
  manifest = read_manifest() or {}
1166
1378
  feature_name = feature or (manifest.get("project") or {}).get("feature", "")
1167
- title = _push_doc_page(doc, md_path, feature_name)
1168
- if title:
1379
+ pushed = _push_doc_page(doc, md_path, feature_name)
1380
+ if pushed:
1381
+ title, _page_url = pushed
1169
1382
  console.print(f" [green]✓[/green] Confluence page updated: [cyan]{title}[/cyan]")
1170
1383
  else:
1171
1384
  console.print(" [dim]· Confluence not configured — page not updated[/dim]")
@@ -1234,31 +1447,21 @@ def review_apply(doc, profile, feature):
1234
1447
  console.print(f" [red]✗ '{doc}' not found in document_reviews[/red]")
1235
1448
  raise SystemExit(1)
1236
1449
 
1237
- project_name = proj.get("name", "Project")
1238
-
1239
1450
  jira_client = JiraClient(session, prof.base_url)
1240
- cf_client = ConfluenceClient(session, prof.base_url)
1241
1451
 
1242
- # Re-push updated doc
1452
+ # Re-push updated doc (picks up the Jira link/status banner automatically,
1453
+ # since the review ticket from the original `sdd review submit` already exists)
1243
1454
  try:
1244
1455
  md_path = resolve_doc_path(doc, feature_name)
1245
1456
  except ValueError as e:
1246
1457
  console.print(f" [red]✗ {e}[/red]")
1247
1458
  raise SystemExit(1)
1248
- page_url = ""
1459
+ page_url = ""
1249
1460
  if md_path.exists():
1250
- page_title = doc_cfg.confluence_page.replace("{project}", project_name).replace("{feature}", feature_name)
1251
- body_html, attachments, diagram_warnings = md_to_storage(md_path.read_text(), cfg.confluence.diagrams)
1252
- from sdd.commands.confluence import resolve_doc_parent_id, upload_diagram_attachments
1253
- parent_id = resolve_doc_parent_id(cf_client, cfg.confluence, project_name, feature_name, doc)
1254
- page, _ = cf_client.upsert_page(
1255
- cfg.confluence.space_key, page_title, body_html, parent_id,
1256
- )
1257
- upload_diagram_attachments(cf_client, page["id"], attachments)
1258
- page_url = f"{prof.base_url}/wiki{page.get('_links', {}).get('webui', '')}"
1259
- console.print(f" [green]✓[/green] Confluence updated: [cyan]{page_title}[/cyan]")
1260
- for w in diagram_warnings:
1261
- console.print(f" [yellow]! {w}[/yellow]")
1461
+ pushed = _push_doc_page(doc, md_path, feature_name)
1462
+ if pushed:
1463
+ page_title, page_url = pushed
1464
+ console.print(f" [green]✓[/green] Confluence updated: [cyan]{page_title}[/cyan]")
1262
1465
  else:
1263
1466
  console.print(f" [dim]·[/dim] {md_path} not found — skipping Confluence update")
1264
1467
 
@@ -1338,7 +1541,7 @@ def review_status(profile, feature):
1338
1541
  icon, label, style = "🔒", "Blocked", "dim"
1339
1542
  all_statuses[key] = "BLOCKED"
1340
1543
  else:
1341
- st, _ = _get_review_status(key, client, cfg.jira.key_for("review"), cfg, feature_name)
1544
+ st, _, _ = _get_review_status(key, client, cfg.jira.key_for("review"), cfg, feature_name)
1342
1545
  all_statuses[key] = st
1343
1546
  if st == "APPROVED":
1344
1547
  icon, label, style = "✓ ", "Approved", "green"
@@ -2306,6 +2306,80 @@ MIGRATIONS = [
2306
2306
  ],
2307
2307
  "migrate": lambda m: {**m, "sdd_version": "2.7.58"},
2308
2308
  },
2309
+ {
2310
+ "from": "2.7.58",
2311
+ "to": "2.7.59",
2312
+ "description": "Feature: Confluence pages for documents under Jira review now show a live Jira link + status banner, and page_map covers every generated doc type (qa-testcases, tasks, checklist, and the living/service docs) -- no manifest schema changes",
2313
+ "notes": [
2314
+ "User asked why a doc pushed to Jira for review didn't also "
2315
+ "get its Confluence page stamped with the ticket link/status "
2316
+ "so a reviewer could see it without leaving Confluence -- the "
2317
+ "page only ever mirrored the .md content, never the Jira "
2318
+ "state, since the two pushes happened in unrelated code paths",
2319
+ "sdd review submit/check/apply now prepend a small info/"
2320
+ "success/warning panel (via the new _push_doc_page banner) "
2321
+ "showing the ticket key, link, and live status (Pending/"
2322
+ "Needs Revision/Approved) -- refreshed every time the CLI "
2323
+ "touches that document's review state, so it never goes "
2324
+ "stale between submit and the reviewer's eventual decision",
2325
+ "Only applies to doc keys with a document_reviews entry (i.e. "
2326
+ "actually under Jira review) -- docs pushed via the page_map "
2327
+ "fallback alone (no Jira gate configured) get a plain page, "
2328
+ "same as before",
2329
+ "User also asked for a Confluence page for 'QA test case etc "
2330
+ "-- whatever there in local md file' -- page_map in "
2331
+ "integrations.yml.example now also covers qa-testcases, "
2332
+ "tasks, checklist, and the 4 living/service-level docs "
2333
+ "(data-model, security-design, api-spec, component-library), "
2334
+ "so `sdd confluence push --doc <key>` works for all of them, "
2335
+ "not just the phase-gated documents",
2336
+ "6 new tests: banner HTML per status, submit stamps a Pending "
2337
+ "banner once the ticket exists, check refreshes an existing "
2338
+ "page to Approved, and the page_map fallback path (no Jira "
2339
+ "gate) omits the banner entirely",
2340
+ "This migration only bumps sdd_version -- no manifest.yml "
2341
+ "field changes for any pack",
2342
+ ],
2343
+ "migrate": lambda m: {**m, "sdd_version": "2.7.59"},
2344
+ },
2345
+ {
2346
+ "from": "2.7.59",
2347
+ "to": "2.7.60",
2348
+ "description": "Feature: clarify.md's own open items (AMB/GAP/CON/ASM/OQ/R) can now be pushed to Jira/Confluence for answers via sdd review push-questions/pull-answers, the same way validate.md's [NEEDS CLARIFICATION-NNN] markers already could -- no manifest schema changes",
2349
+ "notes": [
2350
+ "User pointed out that /validate's open questions could already "
2351
+ "be answered via Jira (push-questions/pull-answers), but /clarify's "
2352
+ "8-item report had no such path -- push-questions silently found "
2353
+ "nothing to push because it only ever recognized the "
2354
+ "'{doc}:NC-{NNN}' bracketed-marker scheme, not clarify.md's own "
2355
+ "STATUS TABLE (AMB/GAP/CON/ASM/OQ/R rows)",
2356
+ "Added a parallel parse/patch path scoped to --doc clarify: "
2357
+ "_parse_clarify_open_items reads OPEN STATUS TABLE rows (posting "
2358
+ "each item's full section as the Jira question text), "
2359
+ "_parse_clarify_answers reads 'clarify:AMB-001: <answer>'-style "
2360
+ "replies, and _patch_clarify_item fills the item's {FILL...} "
2361
+ "placeholder and flips its STATUS TABLE row to the terminal "
2362
+ "status for its type (RESOLVED for AMB/GAP/R, CORRECTED for CON, "
2363
+ "DECIDED for OQ, CONFIRMED/CORRECTED for ASM depending on "
2364
+ "whether the answer starts with 'yes')",
2365
+ "review_push_questions/review_pull_answers now branch on "
2366
+ "doc == 'clarify' for parsing/patching only -- the surrounding "
2367
+ "Jira ticket creation, idempotency-label reuse, and Confluence "
2368
+ "re-push logic is unchanged and fully shared with the existing "
2369
+ "NC-NNN path",
2370
+ "clarify.prompt.md (all 5 packs) documents this under 'Accepted "
2371
+ "reply forms'; review-gates.md's shared block gained a matching "
2372
+ "paragraph, synced into every pack's CLAUDE.md",
2373
+ "16 new tests: STATUS TABLE parsing (including skipping already-"
2374
+ "resolved rows), answer-line parsing, placeholder fill + "
2375
+ "per-type status flip (all 5 terminal statuses, including both "
2376
+ "ASM branches), and end-to-end push-questions/pull-answers CLI "
2377
+ "coverage including the Confluence re-push",
2378
+ "This migration only bumps sdd_version -- no manifest.yml "
2379
+ "field changes for any pack",
2380
+ ],
2381
+ "migrate": lambda m: {**m, "sdd_version": "2.7.60"},
2382
+ },
2309
2383
  ]
2310
2384
 
2311
2385
 
@@ -43,6 +43,17 @@ Rules:
43
43
  - User edits `clarify.md` directly, then says "done" in chat
44
44
  - **"best guess"** / **"continue with best guess"** / **"continue"** — AI applies its best judgment for every unanswered item
45
45
 
46
+ **Items can also be answered via Jira/Confluence instead of chat (if `document_reviews.clarify` is configured in `.specify/integrations.yml`), the same way validate.md's `[NEEDS CLARIFICATION-NNN]` markers already can:**
47
+ ```bash
48
+ sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
49
+ # reviewer replies as a comment, one line per item:
50
+ # clarify:AMB-001: Intentional split — clearing_ref is the JSON field, clearingRef is the DB column
51
+ sdd review pull-answers --doc clarify # pull replies, fill {FILL...} placeholders,
52
+ # flip each STATUS TABLE row (Step 2's mapping),
53
+ # then continue at Step 3
54
+ ```
55
+ Same idempotent-ticket behavior as validate.md: `push-questions` creates one Jira ticket reusing the label `sdd review submit` will later find, so it evolves in place at Step 6 instead of duplicating.
56
+
46
57
  ## After Human Fills Answers
47
58
 
48
59
  ### Step 1 — Read the FULL clarify.md
@@ -198,6 +198,13 @@ confluence:
198
198
  validate: "{feature} — Validation Report"
199
199
  analyze: "{feature} — Analysis Report"
200
200
  clarify: "{feature} — Clarifications"
201
+ tasks: "{feature} — Tasks"
202
+ checklist: "{feature} — QA Checklist"
203
+ qa-testcases: "{feature} — QA Test Cases"
204
+ data-model: "Data Model" # living — no {feature}, nests under {project}
205
+ security-design: "Security Design" # living — no {feature}, nests under {project}
206
+ api-spec: "API Specification" # living — no {feature}, nests under {project}
207
+ component-library: "Component Library" # living — no {feature}, nests under {project}
201
208
  # release: "{feature} — Release Notes"
202
209
 
203
210
  # Diagram rendering: Confluence has NO native Mermaid or PlantUML