specweave 0.1.9 → 0.3.1
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.
- package/CLAUDE.md +600 -0
- package/README.md +263 -81
- package/bin/install-all.sh +1 -1
- package/bin/install-commands.sh +3 -3
- package/bin/specweave.js +39 -9
- package/dist/adapters/adapter-base.d.ts +1 -1
- package/dist/adapters/adapter-base.d.ts.map +1 -1
- package/dist/adapters/adapter-base.js +6 -41
- package/dist/adapters/adapter-base.js.map +1 -1
- package/dist/adapters/adapter-interface.js +1 -2
- package/dist/adapters/adapter-interface.js.map +1 -1
- package/dist/adapters/adapter-loader.d.ts +86 -0
- package/dist/adapters/adapter-loader.d.ts.map +1 -0
- package/dist/adapters/adapter-loader.js +216 -0
- package/dist/adapters/adapter-loader.js.map +1 -0
- package/dist/adapters/agents-md-generator.d.ts +48 -0
- package/dist/adapters/agents-md-generator.d.ts.map +1 -0
- package/dist/adapters/agents-md-generator.js +132 -0
- package/dist/adapters/agents-md-generator.js.map +1 -0
- package/dist/adapters/claude/adapter.d.ts +2 -2
- package/dist/adapters/claude/adapter.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.js +5 -42
- package/dist/adapters/claude/adapter.js.map +1 -1
- package/dist/adapters/claude-md-generator.d.ts +78 -0
- package/dist/adapters/claude-md-generator.d.ts.map +1 -0
- package/dist/adapters/claude-md-generator.js +246 -0
- package/dist/adapters/claude-md-generator.js.map +1 -0
- package/dist/adapters/codex/adapter.d.ts +50 -0
- package/dist/adapters/codex/adapter.d.ts.map +1 -0
- package/dist/adapters/codex/adapter.js +316 -0
- package/dist/adapters/codex/adapter.js.map +1 -0
- package/dist/adapters/copilot/adapter.d.ts +10 -9
- package/dist/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/adapters/copilot/adapter.js +35 -100
- package/dist/adapters/copilot/adapter.js.map +1 -1
- package/dist/adapters/cursor/adapter.d.ts +8 -6
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +47 -130
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/doc-generator.d.ts +69 -0
- package/dist/adapters/doc-generator.d.ts.map +1 -0
- package/dist/adapters/doc-generator.js +247 -0
- package/dist/adapters/doc-generator.js.map +1 -0
- package/dist/adapters/gemini/adapter.d.ts +50 -0
- package/dist/adapters/gemini/adapter.d.ts.map +1 -0
- package/dist/adapters/gemini/adapter.js +281 -0
- package/dist/adapters/gemini/adapter.js.map +1 -0
- package/dist/adapters/generic/adapter.d.ts +7 -4
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +60 -59
- package/dist/adapters/generic/adapter.js.map +1 -1
- package/dist/cli/commands/init.d.ts +3 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +327 -177
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +22 -58
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +27 -64
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/core/credentials-manager.d.ts +90 -0
- package/dist/core/credentials-manager.d.ts.map +1 -0
- package/dist/core/credentials-manager.js +271 -0
- package/dist/core/credentials-manager.js.map +1 -0
- package/dist/core/project-structure-detector.d.ts +92 -0
- package/dist/core/project-structure-detector.d.ts.map +1 -0
- package/dist/core/project-structure-detector.js +289 -0
- package/dist/core/project-structure-detector.js.map +1 -0
- package/dist/core/rfc-generator-v2.d.ts +149 -0
- package/dist/core/rfc-generator-v2.d.ts.map +1 -0
- package/dist/core/rfc-generator-v2.js +399 -0
- package/dist/core/rfc-generator-v2.js.map +1 -0
- package/dist/core/rfc-generator.d.ts +147 -0
- package/dist/core/rfc-generator.d.ts.map +1 -0
- package/dist/core/rfc-generator.js +434 -0
- package/dist/core/rfc-generator.js.map +1 -0
- package/dist/integrations/ado/ado-client.d.ts +123 -0
- package/dist/integrations/ado/ado-client.d.ts.map +1 -0
- package/dist/integrations/ado/ado-client.js +398 -0
- package/dist/integrations/ado/ado-client.js.map +1 -0
- package/dist/integrations/jira/jira-client.d.ts +139 -0
- package/dist/integrations/jira/jira-client.d.ts.map +1 -0
- package/dist/integrations/jira/jira-client.js +386 -0
- package/dist/integrations/jira/jira-client.js.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.d.ts +75 -0
- package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.js +474 -0
- package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -0
- package/dist/integrations/jira/jira-mapper.d.ts +105 -0
- package/dist/integrations/jira/jira-mapper.d.ts.map +1 -0
- package/dist/integrations/jira/jira-mapper.js +494 -0
- package/dist/integrations/jira/jira-mapper.js.map +1 -0
- package/dist/testing/test-generator.d.ts +117 -0
- package/dist/testing/test-generator.d.ts.map +1 -0
- package/dist/testing/test-generator.js +370 -0
- package/dist/testing/test-generator.js.map +1 -0
- package/dist/utils/auto-install.d.ts +3 -0
- package/dist/utils/auto-install.d.ts.map +1 -1
- package/dist/utils/auto-install.js +16 -82
- package/dist/utils/auto-install.js.map +1 -1
- package/dist/utils/esm-helpers.d.ts +50 -0
- package/dist/utils/esm-helpers.d.ts.map +1 -0
- package/dist/utils/esm-helpers.js +57 -0
- package/dist/utils/esm-helpers.js.map +1 -0
- package/package.json +16 -7
- package/src/adapters/README.md +1 -2
- package/src/adapters/adapter-base.ts +6 -3
- package/src/adapters/adapter-loader.ts +261 -0
- package/src/adapters/agents-md-generator.ts +162 -0
- package/src/adapters/claude/README.md +6 -14
- package/src/adapters/claude/adapter.ts +4 -4
- package/src/adapters/claude-md-generator.ts +311 -0
- package/src/adapters/codex/README.md +105 -0
- package/src/adapters/codex/adapter.ts +333 -0
- package/src/adapters/copilot/adapter.ts +36 -65
- package/src/adapters/cursor/README.md +0 -2
- package/src/adapters/cursor/adapter.ts +46 -92
- package/src/adapters/doc-generator.ts +331 -0
- package/src/adapters/gemini/README.md +97 -0
- package/src/adapters/gemini/adapter.ts +298 -0
- package/src/adapters/generic/adapter.ts +61 -57
- package/src/adapters/registry.yaml +86 -25
- package/src/agents/devops/AGENT.md +16 -18
- package/src/agents/docs-writer/AGENT.md +2 -2
- package/src/agents/pm/AGENT.md +1 -50
- package/src/commands/README.md +134 -111
- package/src/commands/{build.md → specweave.do.md} +141 -69
- package/src/commands/{done.md → specweave.done.md} +3 -3
- package/src/commands/{inc.md → specweave.inc.md} +4 -4
- package/src/commands/{increment.md → specweave.increment.md} +143 -76
- package/src/commands/specweave.md +430 -0
- package/src/commands/specweave.next.md +495 -0
- package/src/commands/{progress.md → specweave.progress.md} +12 -12
- package/src/commands/specweave.sync-docs.md +665 -0
- package/src/commands/specweave.sync-github.md +269 -0
- package/src/commands/specweave.sync-jira.md +197 -0
- package/src/commands/{validate.md → specweave.validate.md} +4 -4
- package/src/hooks/README.md +19 -29
- package/src/hooks/post-task-completion.sh +25 -30
- package/src/skills/ado-sync/README.md +1 -36
- package/src/skills/bmad-method-expert/SKILL.md +1 -3
- package/src/skills/brownfield-analyzer/SKILL.md +429 -23
- package/src/skills/brownfield-onboarder/SKILL.md +221 -8
- package/src/skills/context-loader/SKILL.md +239 -617
- package/src/skills/context-optimizer/SKILL.md +0 -30
- package/src/skills/github-sync/SKILL.md +1 -19
- package/src/skills/increment-planner/SKILL.md +64 -18
- package/src/skills/increment-quality-judge/SKILL.md +1 -36
- package/src/skills/jira-sync/README.md +1 -38
- package/src/skills/role-orchestrator/README.md +1 -22
- package/src/skills/role-orchestrator/SKILL.md +1 -59
- package/src/skills/skill-router/SKILL.md +0 -18
- package/src/skills/spec-kit-expert/SKILL.md +1 -3
- package/src/skills/specweave-detector/SKILL.md +225 -275
- package/src/skills/task-builder/README.md +1 -7
- package/src/templates/AGENTS.md.template +334 -0
- package/src/templates/CLAUDE.md.template +131 -298
- package/src/templates/README.md.template +115 -23
- package/src/templates/environments/minimal/README.md +0 -1
- package/INSTALL.md +0 -848
- package/SPECWEAVE.md +0 -743
- package/src/adapters/copilot/.github/copilot/instructions.md +0 -376
- package/src/adapters/cursor/.cursorrules +0 -325
- package/src/adapters/generic/SPECWEAVE-MANUAL.md +0 -676
- package/src/commands/create-project.md +0 -528
- package/src/commands/generate-docs.md +0 -623
- package/src/commands/review-docs.md +0 -331
- package/src/commands/sync-github.md +0 -115
- package/src/skills/ado-sync/test-cases/test-1.yaml +0 -9
- package/src/skills/ado-sync/test-cases/test-2.yaml +0 -8
- package/src/skills/ado-sync/test-cases/test-3.yaml +0 -9
- package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +0 -48
- package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +0 -39
- package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +0 -44
- package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +0 -45
- package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +0 -97
- package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +0 -109
- package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +0 -98
- package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +0 -75
- package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +0 -52
- package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +0 -63
- package/src/skills/cost-optimizer/test-results/README.md +0 -46
- package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +0 -23
- package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +0 -24
- package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +0 -23
- package/src/skills/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -13
- package/src/skills/diagrams-architect/test-cases/test-2-sequence-diagram.yaml +0 -13
- package/src/skills/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -13
- package/src/skills/diagrams-generator/test-cases/test-1.yaml +0 -9
- package/src/skills/diagrams-generator/test-cases/test-2.yaml +0 -9
- package/src/skills/diagrams-generator/test-cases/test-3.yaml +0 -8
- package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/dotnet-backend/test-cases/test-1-rest-api.yaml +0 -14
- package/src/skills/dotnet-backend/test-cases/test-2-authentication.yaml +0 -13
- package/src/skills/dotnet-backend/test-cases/test-3-minimal-api.yaml +0 -13
- package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +0 -54
- package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +0 -64
- package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +0 -74
- package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +0 -98
- package/src/skills/figma-designer/test-cases/test-1-design-system.yaml +0 -13
- package/src/skills/figma-designer/test-cases/test-2-component-library.yaml +0 -13
- package/src/skills/figma-designer/test-cases/test-3-responsive-layout.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-1-design-to-react.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-2-storybook.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-3-design-tokens.yaml +0 -13
- package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +0 -22
- package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +0 -21
- package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +0 -18
- package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +0 -29
- package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +0 -27
- package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +0 -28
- package/src/skills/frontend/test-cases/test-1-react-component.yaml +0 -13
- package/src/skills/frontend/test-cases/test-2-form-validation.yaml +0 -13
- package/src/skills/frontend/test-cases/test-3-state-management.yaml +0 -13
- package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +0 -71
- package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +0 -85
- package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +0 -126
- package/src/skills/hetzner-provisioner/test-results/README.md +0 -259
- package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +0 -27
- package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +0 -30
- package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +0 -24
- package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +0 -95
- package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +0 -108
- package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +0 -87
- package/src/skills/jira-sync/test-cases/test-1.yaml +0 -9
- package/src/skills/jira-sync/test-cases/test-2.yaml +0 -9
- package/src/skills/jira-sync/test-cases/test-3.yaml +0 -10
- package/src/skills/nextjs/test-cases/test-1-app-router.yaml +0 -13
- package/src/skills/nextjs/test-cases/test-2-server-actions.yaml +0 -13
- package/src/skills/nextjs/test-cases/test-3-api-routes.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-1-express-api.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-2-prisma-orm.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-3-authentication.yaml +0 -13
- package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/python-backend/test-cases/test-1-fastapi-crud.yaml +0 -13
- package/src/skills/python-backend/test-cases/test-2-sqlalchemy.yaml +0 -13
- package/src/skills/python-backend/test-cases/test-3-authentication.yaml +0 -13
- package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +0 -98
- package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +0 -73
- package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +0 -121
- package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +0 -145
- package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +0 -149
- package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +0 -33
- package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +0 -42
- package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +0 -50
- package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +0 -148
- package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +0 -190
- package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +0 -233
- package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +0 -212
- package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +0 -461
- package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +0 -366
- package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/specweave-ado-mapper/test-cases/test-1-export-to-ado.yaml +0 -13
- package/src/skills/specweave-ado-mapper/test-cases/test-2-import-from-ado.yaml +0 -13
- package/src/skills/specweave-ado-mapper/test-cases/test-3-bidirectional-sync.yaml +0 -13
- package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +0 -37
- package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +0 -37
- package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +0 -34
- package/src/skills/specweave-jira-mapper/test-cases/test-1-export-to-jira.yaml +0 -13
- package/src/skills/specweave-jira-mapper/test-cases/test-2-import-from-jira.yaml +0 -13
- package/src/skills/specweave-jira-mapper/test-cases/test-3-sync-status.yaml +0 -13
- package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +0 -12
- package/src/templates/config.yaml +0 -351
- /package/src/commands/{list-increments.md → specweave.list-increments.md} +0 -0
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Feedback Loops - PM Agent Auto-Refinement"
|
|
3
|
-
description: "Test automatic quality improvement through iterative refinement with feedback"
|
|
4
|
-
skill: role-orchestrator
|
|
5
|
-
priority: P1
|
|
6
|
-
estimated_time: "5-7 minutes"
|
|
7
|
-
|
|
8
|
-
input:
|
|
9
|
-
user_request: "Create requirements for user authentication feature"
|
|
10
|
-
|
|
11
|
-
config:
|
|
12
|
-
feedback_loops:
|
|
13
|
-
enabled: true
|
|
14
|
-
max_retries: 3
|
|
15
|
-
stop_on_improvement: true
|
|
16
|
-
quality_threshold: 0.80
|
|
17
|
-
|
|
18
|
-
validation:
|
|
19
|
-
use_llm_judge: true
|
|
20
|
-
combine_with_rules: true
|
|
21
|
-
judge_weight: 0.5
|
|
22
|
-
|
|
23
|
-
agent: "pm-agent"
|
|
24
|
-
task: "Define requirements for user authentication"
|
|
25
|
-
|
|
26
|
-
expected_output:
|
|
27
|
-
# Attempt 1: Initial generation (below threshold)
|
|
28
|
-
attempt_1:
|
|
29
|
-
output: "Initial requirements spec"
|
|
30
|
-
validation:
|
|
31
|
-
rule_based_score: 1.00 # All structural rules pass
|
|
32
|
-
llm_judge_score: 0.60-0.70
|
|
33
|
-
combined_score: 0.70-0.85
|
|
34
|
-
threshold: 0.80
|
|
35
|
-
|
|
36
|
-
issues_found:
|
|
37
|
-
- severity: "major"
|
|
38
|
-
description: "Acceptance criteria not testable"
|
|
39
|
-
location: "Success Criteria section"
|
|
40
|
-
|
|
41
|
-
- severity: "major"
|
|
42
|
-
description: "Security requirements too vague"
|
|
43
|
-
location: "Security section"
|
|
44
|
-
|
|
45
|
-
- severity: "minor"
|
|
46
|
-
description: "No rate limiting specified"
|
|
47
|
-
location: "Requirements"
|
|
48
|
-
|
|
49
|
-
below_threshold: true
|
|
50
|
-
triggers_refinement: true
|
|
51
|
-
|
|
52
|
-
# Attempt 2: Refinement with feedback
|
|
53
|
-
attempt_2:
|
|
54
|
-
feedback_provided: |
|
|
55
|
-
Issues from previous attempt:
|
|
56
|
-
• MAJOR: Acceptance criteria not testable
|
|
57
|
-
Location: Success Criteria section
|
|
58
|
-
Suggestion: Use measurable metrics (e.g., "Login completes in <2s")
|
|
59
|
-
|
|
60
|
-
• MAJOR: Security requirements too vague
|
|
61
|
-
Location: Security section
|
|
62
|
-
Suggestion: Specify encryption, hashing, rate limiting
|
|
63
|
-
|
|
64
|
-
• MINOR: No rate limiting specified
|
|
65
|
-
Location: Requirements
|
|
66
|
-
Suggestion: Add brute-force protection (5 attempts, 15min lockout)
|
|
67
|
-
|
|
68
|
-
output: "Improved requirements spec with feedback incorporated"
|
|
69
|
-
validation:
|
|
70
|
-
rule_based_score: 1.00
|
|
71
|
-
llm_judge_score: 0.80-0.90
|
|
72
|
-
combined_score: 0.85-0.95
|
|
73
|
-
threshold: 0.80
|
|
74
|
-
|
|
75
|
-
improvements:
|
|
76
|
-
- "Acceptance criteria now measurable with metrics"
|
|
77
|
-
- "Security requirements detailed (bcrypt, JWT, rate limiting)"
|
|
78
|
-
- "Rate limiting specified (5 attempts, 15min lockout)"
|
|
79
|
-
|
|
80
|
-
above_threshold: true
|
|
81
|
-
stops_refinement: true
|
|
82
|
-
|
|
83
|
-
final_result:
|
|
84
|
-
total_attempts: 2
|
|
85
|
-
final_score: 0.85-0.95
|
|
86
|
-
met_threshold: true
|
|
87
|
-
output_quality: "good"
|
|
88
|
-
|
|
89
|
-
remaining_issues:
|
|
90
|
-
count: 0-1
|
|
91
|
-
severity: "minor"
|
|
92
|
-
examples:
|
|
93
|
-
- "Performance requirements could be more specific (p95/p99 targets)"
|
|
94
|
-
|
|
95
|
-
validation:
|
|
96
|
-
# Attempt 1 validation
|
|
97
|
-
- "Initial attempt produces output"
|
|
98
|
-
- "Rule-based validation passes (1.00)"
|
|
99
|
-
- "LLM judge score < 0.80"
|
|
100
|
-
- "Combined score may or may not be < 0.80 depending on weights"
|
|
101
|
-
- "At least 2 major issues found"
|
|
102
|
-
- "Triggers refinement"
|
|
103
|
-
|
|
104
|
-
# Attempt 2 validation
|
|
105
|
-
- "Feedback generated from issues"
|
|
106
|
-
- "PM agent receives feedback prompt"
|
|
107
|
-
- "Second attempt incorporates feedback"
|
|
108
|
-
- "LLM judge score improves (>= 0.80)"
|
|
109
|
-
- "Combined score >= 0.80"
|
|
110
|
-
- "Stops after reaching threshold"
|
|
111
|
-
|
|
112
|
-
# Overall validation
|
|
113
|
-
- "Total attempts <= 3"
|
|
114
|
-
- "Final score >= 0.80"
|
|
115
|
-
- "Quality improvement measurable"
|
|
116
|
-
- "Progress shown to user"
|
|
117
|
-
|
|
118
|
-
success_criteria:
|
|
119
|
-
- "Feedback loop triggers on low quality"
|
|
120
|
-
- "Agent successfully incorporates feedback"
|
|
121
|
-
- "Quality score improves significantly"
|
|
122
|
-
- "Stops when threshold met (doesn't waste retries)"
|
|
123
|
-
- "User sees progress updates"
|
|
124
|
-
- "Final output meets quality standards"
|
|
125
|
-
|
|
126
|
-
workflow_steps:
|
|
127
|
-
1. "PM agent generates initial requirements"
|
|
128
|
-
2. "Validate with rule-based + LLM-as-judge"
|
|
129
|
-
3. "Detect score below threshold (0.80)"
|
|
130
|
-
4. "Generate feedback from issues"
|
|
131
|
-
5. "Reinvoke PM agent with feedback"
|
|
132
|
-
6. "Validate improved output"
|
|
133
|
-
7. "Detect score above threshold"
|
|
134
|
-
8. "Stop refinement, return final output"
|
|
135
|
-
|
|
136
|
-
edge_cases:
|
|
137
|
-
max_retries_reached:
|
|
138
|
-
description: "If quality doesn't improve after 3 attempts"
|
|
139
|
-
expected: "Return best attempt with warning"
|
|
140
|
-
|
|
141
|
-
stop_on_improvement:
|
|
142
|
-
description: "If score improves but doesn't reach threshold"
|
|
143
|
-
config: "stop_on_improvement: true"
|
|
144
|
-
expected: "Stop early if improvement detected"
|
|
145
|
-
|
|
146
|
-
first_attempt_passes:
|
|
147
|
-
description: "If initial attempt >= threshold"
|
|
148
|
-
expected: "No refinement needed, accept immediately"
|
|
149
|
-
---
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Basic Request Routing"
|
|
3
|
-
description: "Tests if skill-router correctly routes user request to appropriate skill"
|
|
4
|
-
input:
|
|
5
|
-
prompt: "Plan a new feature for user authentication"
|
|
6
|
-
context:
|
|
7
|
-
available_skills:
|
|
8
|
-
- "increment-planner"
|
|
9
|
-
- "spec-author"
|
|
10
|
-
- "developer"
|
|
11
|
-
user_intent: "plan feature"
|
|
12
|
-
expected_output:
|
|
13
|
-
type: "skill_routing"
|
|
14
|
-
routes_to: "increment-planner"
|
|
15
|
-
confidence: "high"
|
|
16
|
-
reason: "User request contains 'plan' and 'feature' keywords"
|
|
17
|
-
alternatives: []
|
|
18
|
-
actions:
|
|
19
|
-
- "Activate increment-planner skill"
|
|
20
|
-
- "Pass user request to increment-planner"
|
|
21
|
-
- "Log routing decision"
|
|
22
|
-
validation:
|
|
23
|
-
- "Routes to correct skill (increment-planner)"
|
|
24
|
-
- "Confidence level is high (>0.9)"
|
|
25
|
-
- "No ambiguity detected"
|
|
26
|
-
- "Logs routing decision"
|
|
27
|
-
- "Activates target skill"
|
|
28
|
-
success_criteria:
|
|
29
|
-
- "Correct skill selected"
|
|
30
|
-
- ">90% routing accuracy"
|
|
31
|
-
- "Fast routing (<100ms)"
|
|
32
|
-
- "Logging works"
|
|
33
|
-
---
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Ambiguous Request Handling"
|
|
3
|
-
description: "Tests how skill-router handles requests that could match multiple skills"
|
|
4
|
-
input:
|
|
5
|
-
prompt: "Create documentation for the API"
|
|
6
|
-
context:
|
|
7
|
-
available_skills:
|
|
8
|
-
- "spec-author" # Could create API specification
|
|
9
|
-
- "architect" # Could document API architecture
|
|
10
|
-
- "docs-updater" # Could update API docs
|
|
11
|
-
user_intent: "create documentation"
|
|
12
|
-
expected_output:
|
|
13
|
-
type: "clarification_required"
|
|
14
|
-
routes_to: null
|
|
15
|
-
confidence: "low"
|
|
16
|
-
reason: "Multiple skills match: spec-author, architect, docs-updater"
|
|
17
|
-
alternatives:
|
|
18
|
-
- skill: "spec-author"
|
|
19
|
-
match_score: 0.65
|
|
20
|
-
reason: "Can create API specifications"
|
|
21
|
-
- skill: "architect"
|
|
22
|
-
match_score: 0.60
|
|
23
|
-
reason: "Can document API architecture"
|
|
24
|
-
- skill: "docs-updater"
|
|
25
|
-
match_score: 0.55
|
|
26
|
-
reason: "Can update API documentation"
|
|
27
|
-
actions:
|
|
28
|
-
- "Ask user for clarification"
|
|
29
|
-
- "Present alternatives with descriptions"
|
|
30
|
-
- "Wait for user selection"
|
|
31
|
-
validation:
|
|
32
|
-
- "Detects ambiguity (confidence <0.7)"
|
|
33
|
-
- "Lists all matching skills"
|
|
34
|
-
- "Provides match scores"
|
|
35
|
-
- "Asks user to clarify"
|
|
36
|
-
- "Does not make incorrect assumption"
|
|
37
|
-
success_criteria:
|
|
38
|
-
- "Ambiguity detected"
|
|
39
|
-
- "User presented with options"
|
|
40
|
-
- "No forced routing when uncertain"
|
|
41
|
-
- "Helpful context for each option"
|
|
42
|
-
---
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Nested Skill Orchestration"
|
|
3
|
-
description: "Tests skill-router's ability to handle one skill calling another skill"
|
|
4
|
-
input:
|
|
5
|
-
prompt: "Implement the user authentication feature"
|
|
6
|
-
context:
|
|
7
|
-
available_skills:
|
|
8
|
-
- "developer"
|
|
9
|
-
- "context-loader"
|
|
10
|
-
- "spec-author"
|
|
11
|
-
current_skill: "developer"
|
|
12
|
-
workflow:
|
|
13
|
-
- step: 1
|
|
14
|
-
skill: "developer"
|
|
15
|
-
action: "Needs to load context from specification"
|
|
16
|
-
calls: "context-loader"
|
|
17
|
-
- step: 2
|
|
18
|
-
skill: "context-loader"
|
|
19
|
-
action: "Load authentication spec"
|
|
20
|
-
returns_to: "developer"
|
|
21
|
-
- step: 3
|
|
22
|
-
skill: "developer"
|
|
23
|
-
action: "Implement based on loaded context"
|
|
24
|
-
expected_output:
|
|
25
|
-
type: "nested_routing"
|
|
26
|
-
primary_skill: "developer"
|
|
27
|
-
sub_skills:
|
|
28
|
-
- "context-loader"
|
|
29
|
-
orchestration:
|
|
30
|
-
- "developer activates"
|
|
31
|
-
- "developer calls context-loader"
|
|
32
|
-
- "context-loader loads spec"
|
|
33
|
-
- "context returns to developer"
|
|
34
|
-
- "developer implements"
|
|
35
|
-
contains:
|
|
36
|
-
- "Orchestrating skills: developer -> context-loader"
|
|
37
|
-
- "Context loaded successfully"
|
|
38
|
-
- "Returning to developer"
|
|
39
|
-
validation:
|
|
40
|
-
- "Primary skill (developer) activated correctly"
|
|
41
|
-
- "Sub-skill (context-loader) called when needed"
|
|
42
|
-
- "Context passed between skills"
|
|
43
|
-
- "Control returns to primary skill"
|
|
44
|
-
- "Workflow completes successfully"
|
|
45
|
-
success_criteria:
|
|
46
|
-
- "Nested skill calls work"
|
|
47
|
-
- "Context preserved across skills"
|
|
48
|
-
- "No infinite loops"
|
|
49
|
-
- "Proper error handling in chain"
|
|
50
|
-
---
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Simple Idea to Validated Design"
|
|
3
|
-
description: "Transform a simple rough idea into a validated design ready for increment creation"
|
|
4
|
-
skill: spec-driven-brainstorming
|
|
5
|
-
priority: P1
|
|
6
|
-
estimated_time: "10-15 minutes"
|
|
7
|
-
|
|
8
|
-
input:
|
|
9
|
-
prompt: "I want to add user authentication to my app"
|
|
10
|
-
context:
|
|
11
|
-
existing_project: true
|
|
12
|
-
tech_stack: "Next.js 14, TypeScript"
|
|
13
|
-
existing_files:
|
|
14
|
-
- "package.json"
|
|
15
|
-
- "src/app/page.tsx"
|
|
16
|
-
- "src/components/"
|
|
17
|
-
database: "PostgreSQL"
|
|
18
|
-
|
|
19
|
-
expected_output:
|
|
20
|
-
phase_1_understanding:
|
|
21
|
-
questions_asked:
|
|
22
|
-
- "What's your primary authentication goal?" # user login, API keys, SSO
|
|
23
|
-
- "Who are the users?" # internal team, public, B2B customers
|
|
24
|
-
- "Any compliance requirements?" # GDPR, HIPAA, SOC2
|
|
25
|
-
|
|
26
|
-
gathered_requirements:
|
|
27
|
-
purpose: "Secure user login for public SaaS application"
|
|
28
|
-
constraints:
|
|
29
|
-
- "Must work with existing PostgreSQL database"
|
|
30
|
-
- "Budget-friendly (prefer open-source)"
|
|
31
|
-
success_criteria:
|
|
32
|
-
- "Users can register and login securely"
|
|
33
|
-
- "Session management across devices"
|
|
34
|
-
- "Password reset functionality"
|
|
35
|
-
|
|
36
|
-
phase_2_tech_stack:
|
|
37
|
-
detected_stack:
|
|
38
|
-
framework: "Next.js 14"
|
|
39
|
-
language: "TypeScript"
|
|
40
|
-
database: "PostgreSQL"
|
|
41
|
-
|
|
42
|
-
skills_activated:
|
|
43
|
-
- nextjs
|
|
44
|
-
- nodejs-backend
|
|
45
|
-
|
|
46
|
-
recommendation: "Use NextAuth.js v5 (Auth.js) - native Next.js integration"
|
|
47
|
-
|
|
48
|
-
phase_3_exploration:
|
|
49
|
-
approaches_proposed: 3
|
|
50
|
-
|
|
51
|
-
approach_1:
|
|
52
|
-
name: "NextAuth.js with Credentials Provider"
|
|
53
|
-
architecture: "Session-based with JWT"
|
|
54
|
-
trade_offs:
|
|
55
|
-
pros:
|
|
56
|
-
- "Simple setup, well-documented"
|
|
57
|
-
- "Built-in session management"
|
|
58
|
-
cons:
|
|
59
|
-
- "Basic features only"
|
|
60
|
-
- "Custom UI needed"
|
|
61
|
-
complexity: "Low"
|
|
62
|
-
|
|
63
|
-
approach_2:
|
|
64
|
-
name: "Clerk Integration"
|
|
65
|
-
architecture: "Third-party auth SaaS"
|
|
66
|
-
trade_offs:
|
|
67
|
-
pros:
|
|
68
|
-
- "Pre-built UI components"
|
|
69
|
-
- "Advanced features (MFA, social login)"
|
|
70
|
-
cons:
|
|
71
|
-
- "Monthly cost ($25+)"
|
|
72
|
-
- "Vendor lock-in"
|
|
73
|
-
complexity: "Very Low"
|
|
74
|
-
|
|
75
|
-
approach_3:
|
|
76
|
-
name: "Custom JWT + Refresh Tokens"
|
|
77
|
-
architecture: "Stateless authentication"
|
|
78
|
-
trade_offs:
|
|
79
|
-
pros:
|
|
80
|
-
- "Full control, no dependencies"
|
|
81
|
-
- "Scalable, stateless"
|
|
82
|
-
cons:
|
|
83
|
-
- "More code to maintain"
|
|
84
|
-
- "Security risks if done wrong"
|
|
85
|
-
complexity: "High"
|
|
86
|
-
|
|
87
|
-
user_selection: "Approach 1" # NextAuth.js
|
|
88
|
-
|
|
89
|
-
phase_4_design_validation:
|
|
90
|
-
sections_presented:
|
|
91
|
-
- title: "Architecture Overview"
|
|
92
|
-
content: "NextAuth.js integration with PostgreSQL adapter, session-based auth"
|
|
93
|
-
validated: true
|
|
94
|
-
|
|
95
|
-
- title: "Components"
|
|
96
|
-
content: "Auth API routes (/api/auth/*), session provider, protected middleware"
|
|
97
|
-
validated: true
|
|
98
|
-
|
|
99
|
-
- title: "Data Flow"
|
|
100
|
-
content: "Login → credentials check → session creation → JWT cookie → protected routes"
|
|
101
|
-
validated: true
|
|
102
|
-
|
|
103
|
-
- title: "Error Handling"
|
|
104
|
-
content: "Invalid credentials, session expiry, token refresh logic"
|
|
105
|
-
validated: true
|
|
106
|
-
|
|
107
|
-
- title: "Testing Strategy"
|
|
108
|
-
content: "Unit tests (auth logic), integration tests (API routes), E2E (Playwright login flow)"
|
|
109
|
-
validated: true
|
|
110
|
-
|
|
111
|
-
design_complete: true
|
|
112
|
-
|
|
113
|
-
phase_5_specweave_handoff:
|
|
114
|
-
handoff_type: "Full Increment Creation"
|
|
115
|
-
skill_invoked: "increment-planner"
|
|
116
|
-
|
|
117
|
-
expected_increment:
|
|
118
|
-
directory: ".specweave/increments/0001-user-authentication/"
|
|
119
|
-
files:
|
|
120
|
-
- "spec.md"
|
|
121
|
-
- "plan.md"
|
|
122
|
-
- "tasks.md"
|
|
123
|
-
- "tests.md"
|
|
124
|
-
- "context-manifest.yaml"
|
|
125
|
-
|
|
126
|
-
agents_invoked:
|
|
127
|
-
- "pm" # Creates strategy docs
|
|
128
|
-
- "architect" # Creates architecture docs
|
|
129
|
-
- "qa-lead" # Creates test strategy
|
|
130
|
-
|
|
131
|
-
validation:
|
|
132
|
-
- "Phase 1: At least 3 understanding questions asked"
|
|
133
|
-
- "Phase 2: Tech stack detected from package.json"
|
|
134
|
-
- "Phase 3: Exactly 3 architectural approaches proposed"
|
|
135
|
-
- "Phase 4: Design presented in <300 word sections"
|
|
136
|
-
- "Phase 5: increment-planner skill invoked"
|
|
137
|
-
- "All phases completed in sequence"
|
|
138
|
-
- "AskUserQuestion tool used for structured choices"
|
|
139
|
-
- "Open-ended questions used for validation"
|
|
140
|
-
|
|
141
|
-
expected_errors: []
|
|
142
|
-
|
|
143
|
-
success_criteria:
|
|
144
|
-
- "Validated design produced"
|
|
145
|
-
- "Ready for increment creation"
|
|
146
|
-
- "User confirmed design alignment"
|
|
147
|
-
- "No skipped phases (unless explicitly revisited)"
|
|
148
|
-
---
|
package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Complex Problem with Ultrathink Mode"
|
|
3
|
-
description: "Handle a complex distributed systems problem using ultrathink for deep reasoning"
|
|
4
|
-
skill: spec-driven-brainstorming
|
|
5
|
-
priority: P2
|
|
6
|
-
estimated_time: "20-30 minutes"
|
|
7
|
-
|
|
8
|
-
input:
|
|
9
|
-
prompt: "I need a distributed task queue with exactly-once delivery guarantees for processing financial transactions"
|
|
10
|
-
context:
|
|
11
|
-
existing_project: false
|
|
12
|
-
complexity: "High"
|
|
13
|
-
domain: "Financial systems"
|
|
14
|
-
requirements:
|
|
15
|
-
- "Exactly-once delivery semantics"
|
|
16
|
-
- "High throughput (10K+ tasks/sec)"
|
|
17
|
-
- "Audit trail for compliance"
|
|
18
|
-
- "Fault tolerance and disaster recovery"
|
|
19
|
-
|
|
20
|
-
expected_output:
|
|
21
|
-
phase_1_understanding:
|
|
22
|
-
questions_asked:
|
|
23
|
-
- "What types of financial transactions?" # payments, transfers, reconciliation
|
|
24
|
-
- "What's your scale and peak load?" # concurrent tasks, daily volume
|
|
25
|
-
- "Compliance requirements?" # SOC2, PCI-DSS, audit logs
|
|
26
|
-
- "Acceptable latency?" # real-time vs batch processing
|
|
27
|
-
- "Budget constraints?" # cloud costs, team size
|
|
28
|
-
|
|
29
|
-
gathered_requirements:
|
|
30
|
-
purpose: "Process payment transactions with guaranteed exactly-once delivery"
|
|
31
|
-
constraints:
|
|
32
|
-
- "Must maintain audit trail for 7 years"
|
|
33
|
-
- "Compliance: PCI-DSS, SOC2"
|
|
34
|
-
- "Peak load: 10K tasks/sec"
|
|
35
|
-
- "Latency: <500ms p99"
|
|
36
|
-
success_criteria:
|
|
37
|
-
- "Zero duplicate transactions"
|
|
38
|
-
- "99.99% uptime SLA"
|
|
39
|
-
- "Complete audit trail"
|
|
40
|
-
|
|
41
|
-
phase_2_tech_stack:
|
|
42
|
-
detected_stack: null # greenfield
|
|
43
|
-
|
|
44
|
-
stack_question_asked: true
|
|
45
|
-
|
|
46
|
-
options_presented:
|
|
47
|
-
- "Go + PostgreSQL" # strong concurrency, SQL for audit
|
|
48
|
-
- "Node.js + Redis + PostgreSQL" # JavaScript ecosystem, Redis for queue
|
|
49
|
-
- "Python + Celery + RabbitMQ + PostgreSQL" # mature queue system
|
|
50
|
-
|
|
51
|
-
user_selection: "Go + PostgreSQL"
|
|
52
|
-
|
|
53
|
-
phase_3_exploration:
|
|
54
|
-
ultrathink_suggested: true
|
|
55
|
-
ultrathink_reason: "Complex distributed systems problem with many trade-offs around consistency, fault tolerance, and exactly-once semantics"
|
|
56
|
-
|
|
57
|
-
thinking_tokens_used: 31999 # full ultrathink budget
|
|
58
|
-
|
|
59
|
-
approaches_proposed: 3
|
|
60
|
-
|
|
61
|
-
approach_1:
|
|
62
|
-
name: "Event Sourcing with Outbox Pattern"
|
|
63
|
-
architecture: "Write events to DB, background processor publishes to queue"
|
|
64
|
-
trade_offs:
|
|
65
|
-
pros:
|
|
66
|
-
- "Exactly-once delivery via DB transactions"
|
|
67
|
-
- "Complete audit trail built-in"
|
|
68
|
-
- "Easy to replay events"
|
|
69
|
-
cons:
|
|
70
|
-
- "Higher latency (dual writes)"
|
|
71
|
-
- "Complex event schema evolution"
|
|
72
|
-
consistency: "Strong (ACID transactions)"
|
|
73
|
-
complexity: "High"
|
|
74
|
-
cost: "Medium (DB I/O intensive)"
|
|
75
|
-
|
|
76
|
-
approach_2:
|
|
77
|
-
name: "Idempotent Task Queue with Distributed Locks"
|
|
78
|
-
architecture: "Redis queue + PostgreSQL state tracking + distributed locks"
|
|
79
|
-
trade_offs:
|
|
80
|
-
pros:
|
|
81
|
-
- "Lower latency (in-memory queue)"
|
|
82
|
-
- "Horizontal scaling easier"
|
|
83
|
-
cons:
|
|
84
|
-
- "Requires careful lock management"
|
|
85
|
-
- "Risk of phantom duplicate if lock expires"
|
|
86
|
-
consistency: "Eventual (with idempotency keys)"
|
|
87
|
-
complexity: "Very High"
|
|
88
|
-
cost: "High (Redis cluster + PostgreSQL)"
|
|
89
|
-
|
|
90
|
-
approach_3:
|
|
91
|
-
name: "Transactional Outbox with Change Data Capture (CDC)"
|
|
92
|
-
architecture: "Write to DB, CDC streams changes to queue"
|
|
93
|
-
trade_offs:
|
|
94
|
-
pros:
|
|
95
|
-
- "Best of both worlds: ACID + async processing"
|
|
96
|
-
- "At-least-once delivery, idempotent consumers for exactly-once effect"
|
|
97
|
-
- "Built-in audit trail"
|
|
98
|
-
cons:
|
|
99
|
-
- "Requires CDC infrastructure (Debezium, Kafka Connect)"
|
|
100
|
-
- "Operational complexity"
|
|
101
|
-
consistency: "Strong write, eventual propagation"
|
|
102
|
-
complexity: "High (infrastructure)"
|
|
103
|
-
cost: "High (Kafka/CDC infrastructure)"
|
|
104
|
-
|
|
105
|
-
user_selection: "Approach 1" # Event Sourcing with Outbox
|
|
106
|
-
|
|
107
|
-
edge_cases_analyzed:
|
|
108
|
-
- "Database connection failure during transaction"
|
|
109
|
-
- "Task processor crashes mid-processing"
|
|
110
|
-
- "Network partition between queue and DB"
|
|
111
|
-
- "Clock skew in distributed environment"
|
|
112
|
-
- "Idempotency key collision"
|
|
113
|
-
|
|
114
|
-
phase_4_design_validation:
|
|
115
|
-
sections_presented:
|
|
116
|
-
- title: "Architecture Overview (Ultrathink Analysis)"
|
|
117
|
-
content: "Event sourcing + outbox pattern ensures exactly-once via DB transactions. Analyzed 5 edge cases for consistency guarantees."
|
|
118
|
-
validated: true
|
|
119
|
-
|
|
120
|
-
- title: "Components (with Fault Tolerance)"
|
|
121
|
-
content: "Event store (PostgreSQL), outbox processor (Go workers), task queue (Redis Streams), dead letter queue for failures"
|
|
122
|
-
validated: true
|
|
123
|
-
|
|
124
|
-
- title: "Data Flow (Transactional Guarantees)"
|
|
125
|
-
content: "Transaction starts → Write event to event_store → Write to outbox → Commit (ACID) → Background worker polls outbox → Publishes to queue → Marks processed"
|
|
126
|
-
validated: true
|
|
127
|
-
|
|
128
|
-
- title: "Exactly-Once Semantics (Implementation)"
|
|
129
|
-
content: "Idempotency keys (UUID v4), transaction boundaries, at-least-once delivery + idempotent consumers = exactly-once effect"
|
|
130
|
-
validated: true
|
|
131
|
-
|
|
132
|
-
- title: "Error Handling & Recovery"
|
|
133
|
-
content: "Retry with exponential backoff, dead letter queue after 3 retries, circuit breaker, health checks"
|
|
134
|
-
validated: true
|
|
135
|
-
|
|
136
|
-
- title: "Audit Trail & Compliance"
|
|
137
|
-
content: "Event sourcing provides complete history, immutable event log, 7-year retention in cold storage (S3 Glacier)"
|
|
138
|
-
validated: true
|
|
139
|
-
|
|
140
|
-
- title: "Testing Strategy (Chaos Engineering)"
|
|
141
|
-
content: "Unit tests (logic), integration tests (DB transactions), E2E tests (full flow), chaos tests (network failures, DB crashes)"
|
|
142
|
-
validated: true
|
|
143
|
-
|
|
144
|
-
- title: "Performance & Scale Analysis"
|
|
145
|
-
content: "Throughput: 10K tasks/sec achievable with 5 workers, latency: p99 <500ms, bottleneck: DB writes (optimize with batching)"
|
|
146
|
-
validated: true
|
|
147
|
-
|
|
148
|
-
design_complete: true
|
|
149
|
-
complexity_justified: true
|
|
150
|
-
|
|
151
|
-
phase_5_specweave_handoff:
|
|
152
|
-
handoff_type: "Full Increment Creation with Architecture Focus"
|
|
153
|
-
skill_invoked: "increment-planner"
|
|
154
|
-
|
|
155
|
-
expected_increment:
|
|
156
|
-
directory: ".specweave/increments/0001-distributed-task-queue/"
|
|
157
|
-
files:
|
|
158
|
-
- "spec.md" # references strategy/distributed-systems/
|
|
159
|
-
- "plan.md" # references architecture/distributed-systems/
|
|
160
|
-
- "tasks.md"
|
|
161
|
-
- "tests.md" # includes chaos engineering tests
|
|
162
|
-
- "context-manifest.yaml"
|
|
163
|
-
|
|
164
|
-
agents_invoked:
|
|
165
|
-
- "pm" # Financial transaction requirements
|
|
166
|
-
- "architect" # Distributed systems design + ADRs
|
|
167
|
-
- "security" # PCI-DSS, audit compliance
|
|
168
|
-
- "qa-lead" # Chaos engineering test strategy
|
|
169
|
-
|
|
170
|
-
validation:
|
|
171
|
-
- "Phase 1: Domain-specific questions asked (financial, compliance)"
|
|
172
|
-
- "Phase 2: Tech stack selection with 3 options"
|
|
173
|
-
- "Phase 3: Ultrathink mode suggested and used"
|
|
174
|
-
- "Phase 3: Edge cases explicitly analyzed"
|
|
175
|
-
- "Phase 3: Consistency models compared (strong vs eventual)"
|
|
176
|
-
- "Phase 4: Design sections include fault tolerance and recovery"
|
|
177
|
-
- "Phase 4: Performance analysis with specific numbers"
|
|
178
|
-
- "Phase 5: Security agent invoked due to compliance needs"
|
|
179
|
-
- "Exactly-once semantics clearly explained"
|
|
180
|
-
|
|
181
|
-
expected_errors: []
|
|
182
|
-
|
|
183
|
-
success_criteria:
|
|
184
|
-
- "Ultrathink mode activated for complex reasoning"
|
|
185
|
-
- "Edge cases thoroughly analyzed"
|
|
186
|
-
- "Consistency guarantees proven"
|
|
187
|
-
- "Compliance requirements addressed"
|
|
188
|
-
- "Performance targets validated"
|
|
189
|
-
- "Ready for production-grade implementation"
|
|
190
|
-
---
|