sddflow 2.7.59__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.
- {sddflow-2.7.59 → sddflow-2.7.60}/PKG-INFO +1 -1
- {sddflow-2.7.59 → sddflow-2.7.60}/pyproject.toml +1 -1
- sddflow-2.7.60/sdd/__init__.py +1 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/review.py +169 -29
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/upgrade.py +38 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/clarify.prompt.md +11 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/manifest.yml +1 -1
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/CLAUDE.md +9 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/HOW-TO-USE.md +10 -0
- {sddflow-2.7.59/sdd/packs/sdd-fullstack → sddflow-2.7.60/sdd/packs/sdd-frontend-spa}/.github/prompts/clarify.prompt.md +11 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/manifest.yml +1 -1
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/CLAUDE.md +9 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/HOW-TO-USE.md +10 -0
- {sddflow-2.7.59/sdd/packs/sdd-frontend-spa → sddflow-2.7.60/sdd/packs/sdd-fullstack}/.github/prompts/clarify.prompt.md +11 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/manifest.yml +1 -1
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/CLAUDE.md +9 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/HOW-TO-USE.md +10 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/clarify.prompt.md +11 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/manifest.yml +1 -1
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/CLAUDE.md +9 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/HOW-TO-USE.md +10 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/clarify.prompt.md +11 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/manifest.yml +1 -1
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/CLAUDE.md +9 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/HOW-TO-USE.md +10 -0
- sddflow-2.7.59/sdd/__init__.py +0 -1
- {sddflow-2.7.59 → sddflow-2.7.60}/.gitignore +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/README.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/__main__.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/__init__.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/config.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/confluence.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/cr.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/dashboard.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/init.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/jira.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/commands/pr.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/address-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/analyze.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/ava.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/bug-assess.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/bug-fix.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/change.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/check-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/checklist.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/clarify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/create-context.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/implement.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/jira-push.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/kai.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/leo.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/maya.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/morgan.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/orchestrate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-adr.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-arch.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-design.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-hld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/plan-lld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/pre-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/quinn.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/release.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/rex.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/riley.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify-brd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify-doc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify-srd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify-uc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/specify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/start.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/submit-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/task.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/taskstoissues.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.claude/commands/validate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/copilot-instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/instructions/api.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/instructions/domain.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/instructions/java.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/instructions/tests.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/ava.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/change.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/implement.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/kai.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/leo.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/maya.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/release.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/rex.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/riley.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/specify.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/task.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/validate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/workflows/quality-gate.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.gitignore +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.gitlab-ci.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/integrations.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/change-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/constitution.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/roles.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/summary-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/adr-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/analyze-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/api-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/arch-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/brd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/changeset-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/checklist-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/clarify-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/context-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/data-model-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/docker-config-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/feature-story-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/hld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/investigation-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/jira-export-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/k8s-manifest-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/lld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/openapi-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/plan-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/release-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/resilience-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/runbook-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/security-design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/srd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/tasks-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/token-usage-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/use-cases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.specify/templates/validate-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.vscode/extensions.json +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.windsurfrules +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/CHANGE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/CLAUDE.local.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/FLOW-ROLES-GATES.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/IMPROVEMENT-BACKLOG.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/PROMPT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/QUICKSTART.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/README.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/WHY-SDD.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/azure-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/bitbucket-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/setup.ps1 +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/setup.sh +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/address-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/analyze.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/ava.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/bug-assess.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/bug-fix.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/change.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/check-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/checklist.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/clarify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/create-context.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/implement.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/jira-push.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/kai.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/leo.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/maya.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/morgan.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/orchestrate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-adr.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-arch.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-design.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-hld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-lld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/pre-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/quinn.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/release.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/rex.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/riley.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-brd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-doc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-srd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-uc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/specify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/start.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/submit-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/task.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/taskstoissues.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.claude/commands/validate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/copilot-instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/instructions/components.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/instructions/services.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/instructions/tests.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/ava.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/change.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/implement.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/kai.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/leo.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/maya.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/release.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/rex.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/riley.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/specify.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/task.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/prompts/validate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.github/workflows/quality-gate.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.gitignore +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.gitlab-ci.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/integrations.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/change-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/constitution.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/roles.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/summary-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/adr-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/analyze-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/api-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/arch-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/brd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/changeset-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/checklist-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/clarify-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/component-library-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/component-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/context-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/data-model-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/docker-config-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/feature-story-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/hld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/investigation-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/jira-export-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/lld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/plan-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/release-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/resilience-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/runbook-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/security-design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/srd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/tasks-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/token-usage-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/use-cases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/ux-flow-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.specify/templates/validate-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.vscode/extensions.json +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/.windsurfrules +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/CHANGE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/CLAUDE.local.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/FLOW-ROLES-GATES.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/IMPROVEMENT-BACKLOG.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/PROMPT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/QUICKSTART.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/README.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/WHY-SDD.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/azure-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/bitbucket-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/setup.ps1 +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-frontend-spa/setup.sh +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/address-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/analyze.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/ava.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/bug-assess.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/bug-fix.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/change.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/check-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/checklist.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/clarify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/create-context.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/implement.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/jira-push.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/kai.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/leo.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/maya.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/morgan.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/orchestrate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-adr.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-arch.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-design.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-hld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/plan-lld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/pre-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/quinn.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/release.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/rex.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/riley.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify-brd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify-doc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify-srd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify-uc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/specify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/start.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/submit-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/task.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/taskstoissues.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.claude/commands/validate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/copilot-instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/backend-tests.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/components.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/domain.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/frontend-services.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/instructions/java.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/ava.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/change.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/implement.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/kai.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/leo.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/maya.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/release.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/rex.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/riley.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/specify.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/task.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/prompts/validate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.github/workflows/quality-gate.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.gitignore +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.gitlab-ci.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/integrations.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/change-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/constitution.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/roles.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/summary-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/adr-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/analyze-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/api-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/arch-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/brd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/changeset-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/checklist-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/clarify-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/component-library-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/component-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/context-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/data-model-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/docker-config-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/feature-story-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/hld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/investigation-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/jira-export-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/lld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/openapi-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/plan-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/release-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/resilience-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/runbook-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/screen-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/security-design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/srd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/tasks-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/token-usage-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/use-cases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/ux-flow-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.specify/templates/validate-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.vscode/extensions.json +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/.windsurfrules +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/CHANGE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/CLAUDE.local.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/FLOW-ROLES-GATES.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/PROMPT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/QUICKSTART.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/README.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/WHY-SDD.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/azure-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/bitbucket-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/setup.ps1 +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-fullstack/setup.sh +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/create-context.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/implement.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/specify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/start.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.claude/commands/task.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/copilot-instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/prompts/implement.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/prompts/specify.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.github/prompts/task.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/manifest.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/memory/constitution.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/templates/context-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.specify/templates/tasks-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/.windsurfrules +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/CLAUDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/QUICKSTART.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/README.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/WHY-SDD.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/setup.ps1 +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-micro/setup.sh +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/address-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/analyze.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/ava.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/bug-assess.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/bug-fix.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/change.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/check-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/checklist.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/clarify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/create-context.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/implement.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/jira-push.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/kai.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/leo.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/maya.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/morgan.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/orchestrate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-adr.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-arch.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-design.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-hld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/plan-lld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/pre-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/quinn.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/release.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/rex.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/riley.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify-brd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify-doc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify-srd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify-uc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/specify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/start.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/submit-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/task.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/taskstoissues.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.claude/commands/validate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/copilot-instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/instructions/screens.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/instructions/services.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/instructions/tests.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/ava.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/change.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/implement.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/kai.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/leo.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/maya.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/release.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/rex.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/riley.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/specify.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/task.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/prompts/validate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.github/workflows/quality-gate.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.gitignore +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.gitlab-ci.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/integrations.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/change-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/constitution.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/roles.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/summary-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/adr-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/analyze-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/api-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/arch-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/brd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/changeset-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/checklist-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/clarify-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/context-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/data-model-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/docker-config-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/feature-story-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/hld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/investigation-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/jira-export-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/lld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/plan-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/release-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/resilience-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/runbook-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/screen-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/security-design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/srd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/tasks-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/token-usage-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/use-cases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/ux-flow-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.specify/templates/validate-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.vscode/extensions.json +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/.windsurfrules +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/CHANGE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/CLAUDE.local.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/FLOW-ROLES-GATES.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/IMPROVEMENT-BACKLOG.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/PROMPT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/QUICKSTART.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/README.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/WHY-SDD.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/azure-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/bitbucket-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/setup.ps1 +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-mobile/setup.sh +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/address-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/analyze.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/ava.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/bug-assess.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/bug-fix.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/change.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/check-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/checklist.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/clarify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/create-context.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/implement.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/jira-push.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/kai.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/leo.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/maya.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/morgan.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/orchestrate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-adr.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-arch.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-design.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-hld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/plan-lld.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/pre-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/quinn.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/release.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/rex.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/riley.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify-brd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify-doc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify-srd.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify-uc.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/specify.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/start.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/submit-review.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/task.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/taskstoissues.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.claude/commands/validate.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/copilot-instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/instructions/domain.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/instructions/entrypoints.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/instructions/tests.instructions.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/ava.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/change.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/implement.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/kai.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/leo.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/maya.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/release.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/rex.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/riley.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/specify.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/task.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/prompts/validate.prompt.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.github/workflows/quality-gate.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.gitignore +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.gitlab-ci.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/integrations.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/change-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/constitution.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/roles.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/summary-rules.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/adr-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/analyze-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/api-spec-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/arch-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/brd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/changeset-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/checklist-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/clarify-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/context-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/data-model-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/docker-config-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/feature-story-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/hld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/investigation-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/jira-export-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/k8s-manifest-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/lld-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/openapi-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/plan-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/release-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/resilience-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/runbook-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/security-design-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/srd-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/tasks-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/token-usage-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/use-cases-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.specify/templates/validate-template.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.vscode/extensions.json +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/.windsurfrules +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/CHANGE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/CLAUDE.local.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/FLOW-ROLES-GATES.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/IMPROVEMENT-BACKLOG.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/PROMPT-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/QUICKSTART.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/README.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/WHY-SDD.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/azure-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/bitbucket-pipelines.yml +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/setup.ps1 +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-universal/setup.sh +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/__init__.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/atlassian_auth.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/cf_to_md.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/confluence_client.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/dashboard_comments.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/detect.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/git_host.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/integrations.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/jira_client.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/manifest.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/md_to_cf.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/mermaid_render.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/scaffold.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/sdd_parser.py +0 -0
- {sddflow-2.7.59 → sddflow-2.7.60}/sdd/utils/status.py +0 -0
- {sddflow-2.7.59 → 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.
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.7.60"
|
|
@@ -473,6 +473,129 @@ def _patch_marker(md_path: Path, nnn: str, answer: str) -> bool:
|
|
|
473
473
|
return True
|
|
474
474
|
|
|
475
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
|
+
|
|
476
599
|
_LEGACY_MARKER_RE = re.compile(r'\[NEEDS CLARIFICATION:\s*')
|
|
477
600
|
|
|
478
601
|
|
|
@@ -810,11 +933,14 @@ def review_push_questions(doc, profile, feature):
|
|
|
810
933
|
console.print(f" [red]✗ {md_path} not found[/red]")
|
|
811
934
|
raise SystemExit(1)
|
|
812
935
|
|
|
813
|
-
|
|
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."
|
|
814
942
|
if not items:
|
|
815
|
-
console.print(
|
|
816
|
-
f" [dim]No open [NEEDS CLARIFICATION-NNN] items found in {md_path.name} — nothing to push.[/dim]"
|
|
817
|
-
)
|
|
943
|
+
console.print(f" [dim]{not_found_msg}[/dim]")
|
|
818
944
|
raise SystemExit(0)
|
|
819
945
|
|
|
820
946
|
try:
|
|
@@ -856,7 +982,7 @@ def review_push_questions(doc, profile, feature):
|
|
|
856
982
|
f"Answer each item as a comment on THIS ticket, one line per item, "
|
|
857
983
|
f"starting with its ID:\n\n{table_lines}\n\n"
|
|
858
984
|
f"Example: \"{items[0]['id']}: <your answer>\"\n\n"
|
|
859
|
-
f"Once every item is answered, re-run /
|
|
985
|
+
f"Once every item is answered, re-run /{doc} — it pulls the answers "
|
|
860
986
|
f"automatically, updates the spec, and re-checks."
|
|
861
987
|
)
|
|
862
988
|
fields: dict = {
|
|
@@ -900,7 +1026,7 @@ def review_push_questions(doc, profile, feature):
|
|
|
900
1026
|
console.print()
|
|
901
1027
|
console.print(f" [bold]{len(items)} open question(s)[/bold] pushed. Reviewer replies as a comment")
|
|
902
1028
|
console.print(f" starting with the item's ID, e.g. \"{items[0]['id']}: <answer>\".")
|
|
903
|
-
console.print(f" Run [cyan]sdd review pull-answers --doc {doc}[/cyan] (or just re-run /
|
|
1029
|
+
console.print(f" Run [cyan]sdd review pull-answers --doc {doc}[/cyan] (or just re-run /{doc}) once answered.")
|
|
904
1030
|
console.print()
|
|
905
1031
|
|
|
906
1032
|
|
|
@@ -938,31 +1064,38 @@ def review_pull_answers(doc, profile, feature):
|
|
|
938
1064
|
if not md_path.exists():
|
|
939
1065
|
raise SystemExit(0)
|
|
940
1066
|
|
|
941
|
-
|
|
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())
|
|
942
1072
|
if not items:
|
|
943
1073
|
raise SystemExit(0)
|
|
944
1074
|
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
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
|
+
)
|
|
966
1099
|
|
|
967
1100
|
links = _load_review_links()
|
|
968
1101
|
issue_key = (links.get(doc) or {}).get("key")
|
|
@@ -986,7 +1119,7 @@ def review_pull_answers(doc, profile, feature):
|
|
|
986
1119
|
console.print(f" [yellow]! Could not fetch comments from {issue_key}: {e}[/yellow]")
|
|
987
1120
|
raise SystemExit(0)
|
|
988
1121
|
|
|
989
|
-
answers = _parse_answers(comments)
|
|
1122
|
+
answers = _parse_clarify_answers(comments) if is_clarify else _parse_answers(comments)
|
|
990
1123
|
if not answers:
|
|
991
1124
|
raise SystemExit(0)
|
|
992
1125
|
|
|
@@ -1001,6 +1134,13 @@ def review_pull_answers(doc, profile, feature):
|
|
|
1001
1134
|
if item["id"] not in answers:
|
|
1002
1135
|
continue
|
|
1003
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
|
|
1004
1144
|
for loc_id in item["locations"]:
|
|
1005
1145
|
doc_key, nnn = loc_id.split(":NC-")
|
|
1006
1146
|
doc_key = _normalize_doc_key(doc_key)
|
|
@@ -2342,6 +2342,44 @@ MIGRATIONS = [
|
|
|
2342
2342
|
],
|
|
2343
2343
|
"migrate": lambda m: {**m, "sdd_version": "2.7.59"},
|
|
2344
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
|
+
},
|
|
2345
2383
|
]
|
|
2346
2384
|
|
|
2347
2385
|
|
{sddflow-2.7.59 → sddflow-2.7.60}/sdd/packs/sdd-backend-service/.github/prompts/clarify.prompt.md
RENAMED
|
@@ -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
|
|
@@ -43,5 +43,5 @@ testing_style: "paired"
|
|
|
43
43
|
# If using sdd-universal instead, set project_type: "backend-service" in its manifest.yml
|
|
44
44
|
# project_type: "backend-service"
|
|
45
45
|
|
|
46
|
-
sdd_version: "2.7.
|
|
46
|
+
sdd_version: "2.7.60" # set by sdd init; used by sdd upgrade
|
|
47
47
|
ai_tool: "" # set by sdd init: claude-code | copilot | cursor | windsurf | other
|
|
@@ -368,6 +368,15 @@ reads reviewer replies (a comment starting with the item's ID, e.g.
|
|
|
368
368
|
source document, bumping that document's version, and re-pushes that
|
|
369
369
|
document's own Confluence page immediately so it never goes stale.
|
|
370
370
|
|
|
371
|
+
**`clarify.md`'s own items (AMB/GAP/CON/ASM/OQ/R) work the same way**, via
|
|
372
|
+
the same two commands and the same doc key (`--doc clarify`) — even though
|
|
373
|
+
they're tracked by a STATUS TABLE row rather than a bracketed marker.
|
|
374
|
+
Reviewer replies as `clarify:AMB-001: <answer>`; pulling answers fills the
|
|
375
|
+
item's `{FILL...}` placeholder and flips its STATUS TABLE row to the
|
|
376
|
+
correct terminal status for its type (RESOLVED / CONFIRMED / DECIDED /
|
|
377
|
+
CORRECTED), then re-pushes clarify.md's own Confluence page. See
|
|
378
|
+
`clarify.prompt.md`'s "Accepted reply forms."
|
|
379
|
+
|
|
371
380
|
**Every review-driven edit bumps the version.** Whichever mode surfaced the
|
|
372
381
|
feedback — a Jira comment, a dashboard comment, or direct chat feedback —
|
|
373
382
|
increment the document's `Version:` header and append a row to its
|
|
@@ -757,6 +757,16 @@ that document's own Confluence page immediately so it never goes stale.
|
|
|
757
757
|
Safe to call `pull-answers` unconditionally (e.g. every time you re-run
|
|
758
758
|
`/validate`) — it's a no-op when there's nothing new.
|
|
759
759
|
|
|
760
|
+
`clarify.md`'s own open items (AMB/GAP/CON/ASM/OQ/R) work the same way, even though they're tracked by a STATUS TABLE row instead of a `[NEEDS CLARIFICATION-NNN]` marker:
|
|
761
|
+
```bash
|
|
762
|
+
sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
|
|
763
|
+
# reviewer replies as a comment, one line per item:
|
|
764
|
+
# clarify:AMB-001: Intentional split — keep both fields
|
|
765
|
+
sdd review pull-answers --doc clarify # fills {FILL...}, flips each STATUS
|
|
766
|
+
# TABLE row (RESOLVED/CONFIRMED/DECIDED/
|
|
767
|
+
# CORRECTED per item type), re-pushes Confluence
|
|
768
|
+
```
|
|
769
|
+
|
|
760
770
|
---
|
|
761
771
|
|
|
762
772
|
## Scope Presets
|
|
@@ -41,6 +41,17 @@ Do NOT proceed to PLAN until all items resolved (by human or best guess).
|
|
|
41
41
|
- User edits `clarify.md` directly, then says "done" in chat
|
|
42
42
|
- **"best guess"** / **"continue with best guess"** / **"continue"** — AI applies its best judgment for every unanswered item
|
|
43
43
|
|
|
44
|
+
**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:**
|
|
45
|
+
```bash
|
|
46
|
+
sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
|
|
47
|
+
# reviewer replies as a comment, one line per item:
|
|
48
|
+
# clarify:AMB-001: Intentional split — clearing_ref is the JSON field, clearingRef is the DB column
|
|
49
|
+
sdd review pull-answers --doc clarify # pull replies, fill {FILL...} placeholders,
|
|
50
|
+
# flip each STATUS TABLE row (Step 2's mapping),
|
|
51
|
+
# then continue at Step 3
|
|
52
|
+
```
|
|
53
|
+
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.
|
|
54
|
+
|
|
44
55
|
## After Human Fills Answers
|
|
45
56
|
|
|
46
57
|
### Step 1 — Read the FULL clarify.md
|
|
@@ -32,5 +32,5 @@ testing_style: "paired"
|
|
|
32
32
|
# If using sdd-universal instead, set project_type: "frontend-spa" in its manifest.yml
|
|
33
33
|
# project_type: "frontend-spa"
|
|
34
34
|
|
|
35
|
-
sdd_version: "2.7.
|
|
35
|
+
sdd_version: "2.7.60" # set by sdd init; used by sdd upgrade
|
|
36
36
|
ai_tool: "" # set by sdd init: claude-code | copilot | cursor | windsurf | other
|
|
@@ -360,6 +360,15 @@ reads reviewer replies (a comment starting with the item's ID, e.g.
|
|
|
360
360
|
source document, bumping that document's version, and re-pushes that
|
|
361
361
|
document's own Confluence page immediately so it never goes stale.
|
|
362
362
|
|
|
363
|
+
**`clarify.md`'s own items (AMB/GAP/CON/ASM/OQ/R) work the same way**, via
|
|
364
|
+
the same two commands and the same doc key (`--doc clarify`) — even though
|
|
365
|
+
they're tracked by a STATUS TABLE row rather than a bracketed marker.
|
|
366
|
+
Reviewer replies as `clarify:AMB-001: <answer>`; pulling answers fills the
|
|
367
|
+
item's `{FILL...}` placeholder and flips its STATUS TABLE row to the
|
|
368
|
+
correct terminal status for its type (RESOLVED / CONFIRMED / DECIDED /
|
|
369
|
+
CORRECTED), then re-pushes clarify.md's own Confluence page. See
|
|
370
|
+
`clarify.prompt.md`'s "Accepted reply forms."
|
|
371
|
+
|
|
363
372
|
**Every review-driven edit bumps the version.** Whichever mode surfaced the
|
|
364
373
|
feedback — a Jira comment, a dashboard comment, or direct chat feedback —
|
|
365
374
|
increment the document's `Version:` header and append a row to its
|
|
@@ -761,6 +761,16 @@ that document's own Confluence page immediately so it never goes stale.
|
|
|
761
761
|
Safe to call `pull-answers` unconditionally (e.g. every time you re-run
|
|
762
762
|
`/validate`) — it's a no-op when there's nothing new.
|
|
763
763
|
|
|
764
|
+
`clarify.md`'s own open items (AMB/GAP/CON/ASM/OQ/R) work the same way, even though they're tracked by a STATUS TABLE row instead of a `[NEEDS CLARIFICATION-NNN]` marker:
|
|
765
|
+
```bash
|
|
766
|
+
sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
|
|
767
|
+
# reviewer replies as a comment, one line per item:
|
|
768
|
+
# clarify:AMB-001: Intentional split — keep both fields
|
|
769
|
+
sdd review pull-answers --doc clarify # fills {FILL...}, flips each STATUS
|
|
770
|
+
# TABLE row (RESOLVED/CONFIRMED/DECIDED/
|
|
771
|
+
# CORRECTED per item type), re-pushes Confluence
|
|
772
|
+
```
|
|
773
|
+
|
|
764
774
|
---
|
|
765
775
|
|
|
766
776
|
## Scope Presets
|
|
@@ -41,6 +41,17 @@ Do NOT proceed to PLAN until all items resolved (by human or best guess).
|
|
|
41
41
|
- User edits `clarify.md` directly, then says "done" in chat
|
|
42
42
|
- **"best guess"** / **"continue with best guess"** / **"continue"** — AI applies its best judgment for every unanswered item
|
|
43
43
|
|
|
44
|
+
**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:**
|
|
45
|
+
```bash
|
|
46
|
+
sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
|
|
47
|
+
# reviewer replies as a comment, one line per item:
|
|
48
|
+
# clarify:AMB-001: Intentional split — clearing_ref is the JSON field, clearingRef is the DB column
|
|
49
|
+
sdd review pull-answers --doc clarify # pull replies, fill {FILL...} placeholders,
|
|
50
|
+
# flip each STATUS TABLE row (Step 2's mapping),
|
|
51
|
+
# then continue at Step 3
|
|
52
|
+
```
|
|
53
|
+
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.
|
|
54
|
+
|
|
44
55
|
## After Human Fills Answers
|
|
45
56
|
|
|
46
57
|
### Step 1 — Read the FULL clarify.md
|
|
@@ -32,5 +32,5 @@ testing_style: "paired"
|
|
|
32
32
|
# If using sdd-universal instead, set project_type: "fullstack" in its manifest.yml
|
|
33
33
|
# project_type: "fullstack"
|
|
34
34
|
|
|
35
|
-
sdd_version: "2.7.
|
|
35
|
+
sdd_version: "2.7.60" # set by sdd init; used by sdd upgrade
|
|
36
36
|
ai_tool: "" # set by sdd init: claude-code | copilot | cursor | windsurf | other
|
|
@@ -386,6 +386,15 @@ reads reviewer replies (a comment starting with the item's ID, e.g.
|
|
|
386
386
|
source document, bumping that document's version, and re-pushes that
|
|
387
387
|
document's own Confluence page immediately so it never goes stale.
|
|
388
388
|
|
|
389
|
+
**`clarify.md`'s own items (AMB/GAP/CON/ASM/OQ/R) work the same way**, via
|
|
390
|
+
the same two commands and the same doc key (`--doc clarify`) — even though
|
|
391
|
+
they're tracked by a STATUS TABLE row rather than a bracketed marker.
|
|
392
|
+
Reviewer replies as `clarify:AMB-001: <answer>`; pulling answers fills the
|
|
393
|
+
item's `{FILL...}` placeholder and flips its STATUS TABLE row to the
|
|
394
|
+
correct terminal status for its type (RESOLVED / CONFIRMED / DECIDED /
|
|
395
|
+
CORRECTED), then re-pushes clarify.md's own Confluence page. See
|
|
396
|
+
`clarify.prompt.md`'s "Accepted reply forms."
|
|
397
|
+
|
|
389
398
|
**Every review-driven edit bumps the version.** Whichever mode surfaced the
|
|
390
399
|
feedback — a Jira comment, a dashboard comment, or direct chat feedback —
|
|
391
400
|
increment the document's `Version:` header and append a row to its
|
|
@@ -763,6 +763,16 @@ that document's own Confluence page immediately so it never goes stale.
|
|
|
763
763
|
Safe to call `pull-answers` unconditionally (e.g. every time you re-run
|
|
764
764
|
`/validate`) — it's a no-op when there's nothing new.
|
|
765
765
|
|
|
766
|
+
`clarify.md`'s own open items (AMB/GAP/CON/ASM/OQ/R) work the same way, even though they're tracked by a STATUS TABLE row instead of a `[NEEDS CLARIFICATION-NNN]` marker:
|
|
767
|
+
```bash
|
|
768
|
+
sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
|
|
769
|
+
# reviewer replies as a comment, one line per item:
|
|
770
|
+
# clarify:AMB-001: Intentional split — keep both fields
|
|
771
|
+
sdd review pull-answers --doc clarify # fills {FILL...}, flips each STATUS
|
|
772
|
+
# TABLE row (RESOLVED/CONFIRMED/DECIDED/
|
|
773
|
+
# CORRECTED per item type), re-pushes Confluence
|
|
774
|
+
```
|
|
775
|
+
|
|
766
776
|
---
|
|
767
777
|
|
|
768
778
|
## Scope Presets
|
|
@@ -41,6 +41,17 @@ Do NOT proceed to PLAN until all items resolved (by human or best guess).
|
|
|
41
41
|
- User edits `clarify.md` directly, then says "done" in chat
|
|
42
42
|
- **"best guess"** / **"continue with best guess"** / **"continue"** — AI applies its best judgment for every unanswered item
|
|
43
43
|
|
|
44
|
+
**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:**
|
|
45
|
+
```bash
|
|
46
|
+
sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
|
|
47
|
+
# reviewer replies as a comment, one line per item:
|
|
48
|
+
# clarify:AMB-001: Intentional split — clearing_ref is the JSON field, clearingRef is the DB column
|
|
49
|
+
sdd review pull-answers --doc clarify # pull replies, fill {FILL...} placeholders,
|
|
50
|
+
# flip each STATUS TABLE row (Step 2's mapping),
|
|
51
|
+
# then continue at Step 3
|
|
52
|
+
```
|
|
53
|
+
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.
|
|
54
|
+
|
|
44
55
|
## After Human Fills Answers
|
|
45
56
|
|
|
46
57
|
### Step 1 — Read the FULL clarify.md
|
|
@@ -32,5 +32,5 @@ testing_style: "paired"
|
|
|
32
32
|
# If using sdd-universal instead, set project_type: "mobile" in its manifest.yml
|
|
33
33
|
# project_type: "mobile"
|
|
34
34
|
|
|
35
|
-
sdd_version: "2.7.
|
|
35
|
+
sdd_version: "2.7.60" # set by sdd init; used by sdd upgrade
|
|
36
36
|
ai_tool: "" # set by sdd init: claude-code | copilot | cursor | windsurf | other
|
|
@@ -359,6 +359,15 @@ reads reviewer replies (a comment starting with the item's ID, e.g.
|
|
|
359
359
|
source document, bumping that document's version, and re-pushes that
|
|
360
360
|
document's own Confluence page immediately so it never goes stale.
|
|
361
361
|
|
|
362
|
+
**`clarify.md`'s own items (AMB/GAP/CON/ASM/OQ/R) work the same way**, via
|
|
363
|
+
the same two commands and the same doc key (`--doc clarify`) — even though
|
|
364
|
+
they're tracked by a STATUS TABLE row rather than a bracketed marker.
|
|
365
|
+
Reviewer replies as `clarify:AMB-001: <answer>`; pulling answers fills the
|
|
366
|
+
item's `{FILL...}` placeholder and flips its STATUS TABLE row to the
|
|
367
|
+
correct terminal status for its type (RESOLVED / CONFIRMED / DECIDED /
|
|
368
|
+
CORRECTED), then re-pushes clarify.md's own Confluence page. See
|
|
369
|
+
`clarify.prompt.md`'s "Accepted reply forms."
|
|
370
|
+
|
|
362
371
|
**Every review-driven edit bumps the version.** Whichever mode surfaced the
|
|
363
372
|
feedback — a Jira comment, a dashboard comment, or direct chat feedback —
|
|
364
373
|
increment the document's `Version:` header and append a row to its
|
|
@@ -761,6 +761,16 @@ that document's own Confluence page immediately so it never goes stale.
|
|
|
761
761
|
Safe to call `pull-answers` unconditionally (e.g. every time you re-run
|
|
762
762
|
`/validate`) — it's a no-op when there's nothing new.
|
|
763
763
|
|
|
764
|
+
`clarify.md`'s own open items (AMB/GAP/CON/ASM/OQ/R) work the same way, even though they're tracked by a STATUS TABLE row instead of a `[NEEDS CLARIFICATION-NNN]` marker:
|
|
765
|
+
```bash
|
|
766
|
+
sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
|
|
767
|
+
# reviewer replies as a comment, one line per item:
|
|
768
|
+
# clarify:AMB-001: Intentional split — keep both fields
|
|
769
|
+
sdd review pull-answers --doc clarify # fills {FILL...}, flips each STATUS
|
|
770
|
+
# TABLE row (RESOLVED/CONFIRMED/DECIDED/
|
|
771
|
+
# CORRECTED per item type), re-pushes Confluence
|
|
772
|
+
```
|
|
773
|
+
|
|
764
774
|
---
|
|
765
775
|
|
|
766
776
|
## Scope Presets
|
|
@@ -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
|
|
@@ -38,5 +38,5 @@ plan_mode: "unified"
|
|
|
38
38
|
# bdd: Given/When/Then specs drive tests, written before implementation
|
|
39
39
|
testing_style: "paired"
|
|
40
40
|
|
|
41
|
-
sdd_version: "2.7.
|
|
41
|
+
sdd_version: "2.7.60" # set by sdd init; used by sdd upgrade
|
|
42
42
|
ai_tool: "" # set by sdd init: claude-code | copilot | cursor | windsurf | other
|
|
@@ -354,6 +354,15 @@ reads reviewer replies (a comment starting with the item's ID, e.g.
|
|
|
354
354
|
source document, bumping that document's version, and re-pushes that
|
|
355
355
|
document's own Confluence page immediately so it never goes stale.
|
|
356
356
|
|
|
357
|
+
**`clarify.md`'s own items (AMB/GAP/CON/ASM/OQ/R) work the same way**, via
|
|
358
|
+
the same two commands and the same doc key (`--doc clarify`) — even though
|
|
359
|
+
they're tracked by a STATUS TABLE row rather than a bracketed marker.
|
|
360
|
+
Reviewer replies as `clarify:AMB-001: <answer>`; pulling answers fills the
|
|
361
|
+
item's `{FILL...}` placeholder and flips its STATUS TABLE row to the
|
|
362
|
+
correct terminal status for its type (RESOLVED / CONFIRMED / DECIDED /
|
|
363
|
+
CORRECTED), then re-pushes clarify.md's own Confluence page. See
|
|
364
|
+
`clarify.prompt.md`'s "Accepted reply forms."
|
|
365
|
+
|
|
357
366
|
**Every review-driven edit bumps the version.** Whichever mode surfaced the
|
|
358
367
|
feedback — a Jira comment, a dashboard comment, or direct chat feedback —
|
|
359
368
|
increment the document's `Version:` header and append a row to its
|
|
@@ -770,6 +770,16 @@ that document's own Confluence page immediately so it never goes stale.
|
|
|
770
770
|
Safe to call `pull-answers` unconditionally (e.g. every time you re-run
|
|
771
771
|
`/validate`) — it's a no-op when there's nothing new.
|
|
772
772
|
|
|
773
|
+
`clarify.md`'s own open items (AMB/GAP/CON/ASM/OQ/R) work the same way, even though they're tracked by a STATUS TABLE row instead of a `[NEEDS CLARIFICATION-NNN]` marker:
|
|
774
|
+
```bash
|
|
775
|
+
sdd review push-questions --doc clarify # push all OPEN items to Jira + Confluence
|
|
776
|
+
# reviewer replies as a comment, one line per item:
|
|
777
|
+
# clarify:AMB-001: Intentional split — keep both fields
|
|
778
|
+
sdd review pull-answers --doc clarify # fills {FILL...}, flips each STATUS
|
|
779
|
+
# TABLE row (RESOLVED/CONFIRMED/DECIDED/
|
|
780
|
+
# CORRECTED per item type), re-pushes Confluence
|
|
781
|
+
```
|
|
782
|
+
|
|
773
783
|
---
|
|
774
784
|
|
|
775
785
|
## Scope Presets
|
sddflow-2.7.59/sdd/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.7.59"
|