@wazir-dev/cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +111 -0
- package/CHANGELOG.md +14 -0
- package/CONTRIBUTING.md +101 -0
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/assets/composition-engine.mmd +34 -0
- package/assets/demo-script.sh +17 -0
- package/assets/logo-dark.svg +14 -0
- package/assets/logo.svg +14 -0
- package/assets/pipeline.mmd +39 -0
- package/assets/record-demo.sh +51 -0
- package/docs/README.md +51 -0
- package/docs/adapters/context-mode.md +60 -0
- package/docs/concepts/architecture.md +87 -0
- package/docs/concepts/artifact-model.md +60 -0
- package/docs/concepts/composition-engine.md +36 -0
- package/docs/concepts/indexing-and-recall.md +160 -0
- package/docs/concepts/observability.md +41 -0
- package/docs/concepts/roles-and-workflows.md +59 -0
- package/docs/concepts/terminology-policy.md +27 -0
- package/docs/getting-started/01-installation.md +78 -0
- package/docs/getting-started/02-first-run.md +102 -0
- package/docs/getting-started/03-adding-to-project.md +15 -0
- package/docs/getting-started/04-host-setup.md +15 -0
- package/docs/guides/ci-integration.md +15 -0
- package/docs/guides/creating-skills.md +15 -0
- package/docs/guides/expertise-module-authoring.md +15 -0
- package/docs/guides/hook-development.md +15 -0
- package/docs/guides/memory-and-learnings.md +34 -0
- package/docs/guides/multi-host-export.md +15 -0
- package/docs/guides/troubleshooting.md +101 -0
- package/docs/guides/writing-custom-roles.md +15 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
- package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
- package/docs/readmes/INDEX.md +99 -0
- package/docs/readmes/features/expertise/README.md +171 -0
- package/docs/readmes/features/exports/README.md +222 -0
- package/docs/readmes/features/hooks/README.md +103 -0
- package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
- package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
- package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
- package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
- package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
- package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
- package/docs/readmes/features/hooks/session-start.md +119 -0
- package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
- package/docs/readmes/features/roles/README.md +157 -0
- package/docs/readmes/features/roles/clarifier.md +152 -0
- package/docs/readmes/features/roles/content-author.md +190 -0
- package/docs/readmes/features/roles/designer.md +193 -0
- package/docs/readmes/features/roles/executor.md +184 -0
- package/docs/readmes/features/roles/learner.md +210 -0
- package/docs/readmes/features/roles/planner.md +182 -0
- package/docs/readmes/features/roles/researcher.md +164 -0
- package/docs/readmes/features/roles/reviewer.md +184 -0
- package/docs/readmes/features/roles/specifier.md +162 -0
- package/docs/readmes/features/roles/verifier.md +215 -0
- package/docs/readmes/features/schemas/README.md +178 -0
- package/docs/readmes/features/skills/README.md +63 -0
- package/docs/readmes/features/skills/brainstorming.md +96 -0
- package/docs/readmes/features/skills/debugging.md +148 -0
- package/docs/readmes/features/skills/design.md +120 -0
- package/docs/readmes/features/skills/prepare-next.md +109 -0
- package/docs/readmes/features/skills/run-audit.md +159 -0
- package/docs/readmes/features/skills/scan-project.md +109 -0
- package/docs/readmes/features/skills/self-audit.md +176 -0
- package/docs/readmes/features/skills/tdd.md +137 -0
- package/docs/readmes/features/skills/using-skills.md +92 -0
- package/docs/readmes/features/skills/verification.md +120 -0
- package/docs/readmes/features/skills/writing-plans.md +104 -0
- package/docs/readmes/features/tooling/README.md +320 -0
- package/docs/readmes/features/workflows/README.md +186 -0
- package/docs/readmes/features/workflows/author.md +181 -0
- package/docs/readmes/features/workflows/clarify.md +154 -0
- package/docs/readmes/features/workflows/design-review.md +171 -0
- package/docs/readmes/features/workflows/design.md +169 -0
- package/docs/readmes/features/workflows/discover.md +162 -0
- package/docs/readmes/features/workflows/execute.md +173 -0
- package/docs/readmes/features/workflows/learn.md +167 -0
- package/docs/readmes/features/workflows/plan-review.md +165 -0
- package/docs/readmes/features/workflows/plan.md +170 -0
- package/docs/readmes/features/workflows/prepare-next.md +167 -0
- package/docs/readmes/features/workflows/review.md +169 -0
- package/docs/readmes/features/workflows/run-audit.md +191 -0
- package/docs/readmes/features/workflows/spec-challenge.md +159 -0
- package/docs/readmes/features/workflows/specify.md +160 -0
- package/docs/readmes/features/workflows/verify.md +177 -0
- package/docs/readmes/packages/README.md +50 -0
- package/docs/readmes/packages/ajv.md +117 -0
- package/docs/readmes/packages/context-mode.md +118 -0
- package/docs/readmes/packages/gray-matter.md +116 -0
- package/docs/readmes/packages/node-test.md +137 -0
- package/docs/readmes/packages/yaml.md +112 -0
- package/docs/reference/configuration-reference.md +159 -0
- package/docs/reference/expertise-index.md +52 -0
- package/docs/reference/git-flow.md +43 -0
- package/docs/reference/hooks.md +87 -0
- package/docs/reference/host-exports.md +50 -0
- package/docs/reference/launch-checklist.md +172 -0
- package/docs/reference/marketplace-listings.md +76 -0
- package/docs/reference/release-process.md +34 -0
- package/docs/reference/roles-reference.md +77 -0
- package/docs/reference/skills.md +33 -0
- package/docs/reference/templates.md +29 -0
- package/docs/reference/tooling-cli.md +94 -0
- package/docs/truth-claims.yaml +222 -0
- package/expertise/PROGRESS.md +63 -0
- package/expertise/README.md +18 -0
- package/expertise/antipatterns/PROGRESS.md +56 -0
- package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
- package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
- package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
- package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
- package/expertise/antipatterns/backend/index.md +24 -0
- package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
- package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
- package/expertise/antipatterns/code/async-antipatterns.md +622 -0
- package/expertise/antipatterns/code/code-smells.md +1186 -0
- package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
- package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
- package/expertise/antipatterns/code/index.md +27 -0
- package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
- package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
- package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
- package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
- package/expertise/antipatterns/design/dark-patterns.md +1121 -0
- package/expertise/antipatterns/design/index.md +22 -0
- package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
- package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
- package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
- package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
- package/expertise/antipatterns/frontend/index.md +23 -0
- package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
- package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
- package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
- package/expertise/antipatterns/index.md +31 -0
- package/expertise/antipatterns/performance/index.md +20 -0
- package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
- package/expertise/antipatterns/performance/premature-optimization.md +623 -0
- package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
- package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
- package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
- package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
- package/expertise/antipatterns/process/index.md +23 -0
- package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
- package/expertise/antipatterns/security/index.md +20 -0
- package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
- package/expertise/antipatterns/security/security-theater.md +843 -0
- package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
- package/expertise/architecture/PROGRESS.md +70 -0
- package/expertise/architecture/data/caching-architecture.md +671 -0
- package/expertise/architecture/data/data-consistency.md +574 -0
- package/expertise/architecture/data/data-modeling.md +536 -0
- package/expertise/architecture/data/event-streams-and-queues.md +634 -0
- package/expertise/architecture/data/index.md +25 -0
- package/expertise/architecture/data/search-architecture.md +663 -0
- package/expertise/architecture/data/sql-vs-nosql.md +708 -0
- package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
- package/expertise/architecture/decisions/build-vs-buy.md +616 -0
- package/expertise/architecture/decisions/index.md +23 -0
- package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
- package/expertise/architecture/decisions/technology-selection.md +616 -0
- package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
- package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
- package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
- package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
- package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
- package/expertise/architecture/distributed/index.md +25 -0
- package/expertise/architecture/distributed/saga-pattern.md +797 -0
- package/expertise/architecture/foundations/architectural-thinking.md +460 -0
- package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
- package/expertise/architecture/foundations/design-principles-solid.md +649 -0
- package/expertise/architecture/foundations/domain-driven-design.md +719 -0
- package/expertise/architecture/foundations/index.md +25 -0
- package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
- package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
- package/expertise/architecture/index.md +34 -0
- package/expertise/architecture/integration/api-design-graphql.md +638 -0
- package/expertise/architecture/integration/api-design-grpc.md +804 -0
- package/expertise/architecture/integration/api-design-rest.md +892 -0
- package/expertise/architecture/integration/index.md +25 -0
- package/expertise/architecture/integration/third-party-integration.md +795 -0
- package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
- package/expertise/architecture/integration/websockets-realtime.md +791 -0
- package/expertise/architecture/mobile-architecture/index.md +22 -0
- package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
- package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
- package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
- package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
- package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
- package/expertise/architecture/patterns/event-driven.md +797 -0
- package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
- package/expertise/architecture/patterns/index.md +27 -0
- package/expertise/architecture/patterns/layered-architecture.md +736 -0
- package/expertise/architecture/patterns/microservices.md +753 -0
- package/expertise/architecture/patterns/modular-monolith.md +692 -0
- package/expertise/architecture/patterns/monolith.md +626 -0
- package/expertise/architecture/patterns/plugin-architecture.md +735 -0
- package/expertise/architecture/patterns/serverless.md +780 -0
- package/expertise/architecture/scaling/database-scaling.md +615 -0
- package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
- package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
- package/expertise/architecture/scaling/index.md +24 -0
- package/expertise/architecture/scaling/multi-tenancy.md +800 -0
- package/expertise/architecture/scaling/stateless-design.md +787 -0
- package/expertise/backend/embedded-firmware.md +625 -0
- package/expertise/backend/go.md +853 -0
- package/expertise/backend/index.md +24 -0
- package/expertise/backend/java-spring.md +448 -0
- package/expertise/backend/node-typescript.md +625 -0
- package/expertise/backend/python-fastapi.md +724 -0
- package/expertise/backend/rust.md +458 -0
- package/expertise/backend/solidity.md +711 -0
- package/expertise/composition-map.yaml +443 -0
- package/expertise/content/foundations/content-modeling.md +395 -0
- package/expertise/content/foundations/editorial-standards.md +449 -0
- package/expertise/content/foundations/index.md +24 -0
- package/expertise/content/foundations/microcopy.md +455 -0
- package/expertise/content/foundations/terminology-governance.md +509 -0
- package/expertise/content/index.md +34 -0
- package/expertise/content/patterns/accessibility-copy.md +518 -0
- package/expertise/content/patterns/index.md +24 -0
- package/expertise/content/patterns/notification-content.md +433 -0
- package/expertise/content/patterns/sample-content.md +486 -0
- package/expertise/content/patterns/state-copy.md +439 -0
- package/expertise/design/PROGRESS.md +58 -0
- package/expertise/design/disciplines/dark-mode-theming.md +577 -0
- package/expertise/design/disciplines/design-systems.md +595 -0
- package/expertise/design/disciplines/index.md +25 -0
- package/expertise/design/disciplines/information-architecture.md +800 -0
- package/expertise/design/disciplines/interaction-design.md +788 -0
- package/expertise/design/disciplines/responsive-design.md +552 -0
- package/expertise/design/disciplines/usability-testing.md +516 -0
- package/expertise/design/disciplines/user-research.md +792 -0
- package/expertise/design/foundations/accessibility-design.md +796 -0
- package/expertise/design/foundations/color-theory.md +797 -0
- package/expertise/design/foundations/iconography.md +795 -0
- package/expertise/design/foundations/index.md +26 -0
- package/expertise/design/foundations/motion-and-animation.md +653 -0
- package/expertise/design/foundations/rtl-design.md +585 -0
- package/expertise/design/foundations/spacing-and-layout.md +607 -0
- package/expertise/design/foundations/typography.md +800 -0
- package/expertise/design/foundations/visual-hierarchy.md +761 -0
- package/expertise/design/index.md +32 -0
- package/expertise/design/patterns/authentication-flows.md +474 -0
- package/expertise/design/patterns/content-consumption.md +789 -0
- package/expertise/design/patterns/data-display.md +618 -0
- package/expertise/design/patterns/e-commerce.md +1494 -0
- package/expertise/design/patterns/feedback-and-states.md +642 -0
- package/expertise/design/patterns/forms-and-input.md +819 -0
- package/expertise/design/patterns/gamification.md +801 -0
- package/expertise/design/patterns/index.md +31 -0
- package/expertise/design/patterns/microinteractions.md +449 -0
- package/expertise/design/patterns/navigation.md +800 -0
- package/expertise/design/patterns/notifications.md +705 -0
- package/expertise/design/patterns/onboarding.md +700 -0
- package/expertise/design/patterns/search-and-filter.md +601 -0
- package/expertise/design/patterns/settings-and-preferences.md +768 -0
- package/expertise/design/patterns/social-and-community.md +748 -0
- package/expertise/design/platforms/desktop-native.md +612 -0
- package/expertise/design/platforms/index.md +25 -0
- package/expertise/design/platforms/mobile-android.md +825 -0
- package/expertise/design/platforms/mobile-cross-platform.md +983 -0
- package/expertise/design/platforms/mobile-ios.md +699 -0
- package/expertise/design/platforms/tablet.md +794 -0
- package/expertise/design/platforms/web-dashboard.md +790 -0
- package/expertise/design/platforms/web-responsive.md +550 -0
- package/expertise/design/psychology/behavioral-nudges.md +449 -0
- package/expertise/design/psychology/cognitive-load.md +1191 -0
- package/expertise/design/psychology/error-psychology.md +778 -0
- package/expertise/design/psychology/index.md +22 -0
- package/expertise/design/psychology/persuasive-design.md +736 -0
- package/expertise/design/psychology/user-mental-models.md +623 -0
- package/expertise/design/tooling/open-pencil.md +266 -0
- package/expertise/frontend/angular.md +1073 -0
- package/expertise/frontend/desktop-electron.md +546 -0
- package/expertise/frontend/flutter.md +782 -0
- package/expertise/frontend/index.md +27 -0
- package/expertise/frontend/native-android.md +409 -0
- package/expertise/frontend/native-ios.md +490 -0
- package/expertise/frontend/react-native.md +1160 -0
- package/expertise/frontend/react.md +808 -0
- package/expertise/frontend/vue.md +1089 -0
- package/expertise/humanize/domain-rules-code.md +79 -0
- package/expertise/humanize/domain-rules-content.md +67 -0
- package/expertise/humanize/domain-rules-technical-docs.md +56 -0
- package/expertise/humanize/index.md +35 -0
- package/expertise/humanize/self-audit-checklist.md +87 -0
- package/expertise/humanize/sentence-patterns.md +218 -0
- package/expertise/humanize/vocabulary-blacklist.md +105 -0
- package/expertise/i18n/PROGRESS.md +65 -0
- package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
- package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
- package/expertise/i18n/advanced/complex-scripts.md +30 -0
- package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
- package/expertise/i18n/advanced/testing-i18n.md +28 -0
- package/expertise/i18n/content/content-adaptation.md +23 -0
- package/expertise/i18n/content/locale-specific-formatting.md +23 -0
- package/expertise/i18n/content/machine-translation-integration.md +28 -0
- package/expertise/i18n/content/translation-management.md +29 -0
- package/expertise/i18n/foundations/date-time-calendars.md +67 -0
- package/expertise/i18n/foundations/i18n-architecture.md +272 -0
- package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
- package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
- package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
- package/expertise/i18n/foundations/string-externalization.md +236 -0
- package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
- package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
- package/expertise/i18n/index.md +38 -0
- package/expertise/i18n/platform/backend-i18n.md +31 -0
- package/expertise/i18n/platform/flutter-i18n.md +148 -0
- package/expertise/i18n/platform/native-android-i18n.md +36 -0
- package/expertise/i18n/platform/native-ios-i18n.md +36 -0
- package/expertise/i18n/platform/react-i18n.md +103 -0
- package/expertise/i18n/platform/web-css-i18n.md +81 -0
- package/expertise/i18n/rtl/arabic-specific.md +175 -0
- package/expertise/i18n/rtl/hebrew-specific.md +149 -0
- package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
- package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
- package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
- package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
- package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
- package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
- package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
- package/expertise/i18n/rtl/rtl-typography.md +160 -0
- package/expertise/index.md +113 -0
- package/expertise/index.yaml +216 -0
- package/expertise/infrastructure/cloud-aws.md +597 -0
- package/expertise/infrastructure/cloud-gcp.md +599 -0
- package/expertise/infrastructure/cybersecurity.md +816 -0
- package/expertise/infrastructure/database-mongodb.md +447 -0
- package/expertise/infrastructure/database-postgres.md +400 -0
- package/expertise/infrastructure/devops-cicd.md +787 -0
- package/expertise/infrastructure/index.md +27 -0
- package/expertise/performance/PROGRESS.md +50 -0
- package/expertise/performance/backend/api-latency.md +1204 -0
- package/expertise/performance/backend/background-jobs.md +506 -0
- package/expertise/performance/backend/connection-pooling.md +1209 -0
- package/expertise/performance/backend/database-query-optimization.md +515 -0
- package/expertise/performance/backend/index.md +23 -0
- package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
- package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
- package/expertise/performance/foundations/caching-strategies.md +489 -0
- package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
- package/expertise/performance/foundations/index.md +24 -0
- package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
- package/expertise/performance/foundations/memory-management.md +964 -0
- package/expertise/performance/foundations/performance-budgets.md +1314 -0
- package/expertise/performance/index.md +31 -0
- package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
- package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
- package/expertise/performance/infrastructure/index.md +22 -0
- package/expertise/performance/infrastructure/load-balancing.md +1081 -0
- package/expertise/performance/infrastructure/observability.md +1079 -0
- package/expertise/performance/mobile/index.md +23 -0
- package/expertise/performance/mobile/mobile-animations.md +544 -0
- package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
- package/expertise/performance/mobile/mobile-network.md +452 -0
- package/expertise/performance/mobile/mobile-rendering.md +599 -0
- package/expertise/performance/mobile/mobile-startup-time.md +505 -0
- package/expertise/performance/platform-specific/flutter-performance.md +647 -0
- package/expertise/performance/platform-specific/index.md +22 -0
- package/expertise/performance/platform-specific/node-performance.md +1307 -0
- package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
- package/expertise/performance/platform-specific/react-performance.md +1403 -0
- package/expertise/performance/web/bundle-optimization.md +1239 -0
- package/expertise/performance/web/image-and-media.md +636 -0
- package/expertise/performance/web/index.md +24 -0
- package/expertise/performance/web/network-optimization.md +1133 -0
- package/expertise/performance/web/rendering-performance.md +1098 -0
- package/expertise/performance/web/ssr-and-hydration.md +918 -0
- package/expertise/performance/web/web-vitals.md +1374 -0
- package/expertise/quality/accessibility.md +985 -0
- package/expertise/quality/evidence-based-verification.md +499 -0
- package/expertise/quality/index.md +24 -0
- package/expertise/quality/ml-model-audit.md +614 -0
- package/expertise/quality/performance.md +600 -0
- package/expertise/quality/testing-api.md +891 -0
- package/expertise/quality/testing-mobile.md +496 -0
- package/expertise/quality/testing-web.md +849 -0
- package/expertise/security/PROGRESS.md +54 -0
- package/expertise/security/agentic-identity.md +540 -0
- package/expertise/security/compliance-frameworks.md +601 -0
- package/expertise/security/data/data-encryption.md +364 -0
- package/expertise/security/data/data-privacy-gdpr.md +692 -0
- package/expertise/security/data/database-security.md +1171 -0
- package/expertise/security/data/index.md +22 -0
- package/expertise/security/data/pii-handling.md +531 -0
- package/expertise/security/foundations/authentication.md +1041 -0
- package/expertise/security/foundations/authorization.md +603 -0
- package/expertise/security/foundations/cryptography.md +1001 -0
- package/expertise/security/foundations/index.md +25 -0
- package/expertise/security/foundations/owasp-top-10.md +1354 -0
- package/expertise/security/foundations/secrets-management.md +1217 -0
- package/expertise/security/foundations/secure-sdlc.md +700 -0
- package/expertise/security/foundations/supply-chain-security.md +698 -0
- package/expertise/security/index.md +31 -0
- package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
- package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
- package/expertise/security/infrastructure/container-security.md +721 -0
- package/expertise/security/infrastructure/incident-response.md +1295 -0
- package/expertise/security/infrastructure/index.md +24 -0
- package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
- package/expertise/security/infrastructure/network-security.md +1337 -0
- package/expertise/security/mobile/index.md +23 -0
- package/expertise/security/mobile/mobile-android-security.md +1218 -0
- package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
- package/expertise/security/mobile/mobile-data-storage.md +1265 -0
- package/expertise/security/mobile/mobile-ios-security.md +1401 -0
- package/expertise/security/mobile/mobile-network-security.md +1520 -0
- package/expertise/security/smart-contract-security.md +594 -0
- package/expertise/security/testing/index.md +22 -0
- package/expertise/security/testing/penetration-testing.md +1258 -0
- package/expertise/security/testing/security-code-review.md +1765 -0
- package/expertise/security/testing/threat-modeling.md +1074 -0
- package/expertise/security/testing/vulnerability-scanning.md +1062 -0
- package/expertise/security/web/api-security.md +586 -0
- package/expertise/security/web/cors-and-headers.md +433 -0
- package/expertise/security/web/csrf.md +562 -0
- package/expertise/security/web/file-upload.md +1477 -0
- package/expertise/security/web/index.md +25 -0
- package/expertise/security/web/injection.md +1375 -0
- package/expertise/security/web/session-management.md +1101 -0
- package/expertise/security/web/xss.md +1158 -0
- package/exports/README.md +17 -0
- package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
- package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
- package/exports/hosts/claude/.claude/agents/designer.md +55 -0
- package/exports/hosts/claude/.claude/agents/executor.md +55 -0
- package/exports/hosts/claude/.claude/agents/learner.md +51 -0
- package/exports/hosts/claude/.claude/agents/planner.md +53 -0
- package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
- package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
- package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
- package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
- package/exports/hosts/claude/.claude/commands/author.md +42 -0
- package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
- package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
- package/exports/hosts/claude/.claude/commands/design.md +44 -0
- package/exports/hosts/claude/.claude/commands/discover.md +37 -0
- package/exports/hosts/claude/.claude/commands/execute.md +48 -0
- package/exports/hosts/claude/.claude/commands/learn.md +38 -0
- package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
- package/exports/hosts/claude/.claude/commands/plan.md +39 -0
- package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
- package/exports/hosts/claude/.claude/commands/review.md +40 -0
- package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
- package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
- package/exports/hosts/claude/.claude/commands/specify.md +38 -0
- package/exports/hosts/claude/.claude/commands/verify.md +37 -0
- package/exports/hosts/claude/.claude/settings.json +34 -0
- package/exports/hosts/claude/CLAUDE.md +19 -0
- package/exports/hosts/claude/export.manifest.json +38 -0
- package/exports/hosts/claude/host-package.json +67 -0
- package/exports/hosts/codex/AGENTS.md +19 -0
- package/exports/hosts/codex/export.manifest.json +38 -0
- package/exports/hosts/codex/host-package.json +41 -0
- package/exports/hosts/cursor/.cursor/hooks.json +16 -0
- package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
- package/exports/hosts/cursor/export.manifest.json +38 -0
- package/exports/hosts/cursor/host-package.json +42 -0
- package/exports/hosts/gemini/GEMINI.md +19 -0
- package/exports/hosts/gemini/export.manifest.json +38 -0
- package/exports/hosts/gemini/host-package.json +41 -0
- package/hooks/README.md +18 -0
- package/hooks/definitions/loop_cap_guard.yaml +21 -0
- package/hooks/definitions/post_tool_capture.yaml +24 -0
- package/hooks/definitions/pre_compact_summary.yaml +19 -0
- package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
- package/hooks/definitions/protected_path_write_guard.yaml +19 -0
- package/hooks/definitions/session_start.yaml +19 -0
- package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
- package/hooks/loop-cap-guard +17 -0
- package/hooks/post-tool-lint +36 -0
- package/hooks/protected-path-write-guard +17 -0
- package/hooks/session-start +41 -0
- package/llms-full.txt +2355 -0
- package/llms.txt +43 -0
- package/package.json +79 -0
- package/roles/README.md +20 -0
- package/roles/clarifier.md +42 -0
- package/roles/content-author.md +63 -0
- package/roles/designer.md +55 -0
- package/roles/executor.md +55 -0
- package/roles/learner.md +51 -0
- package/roles/planner.md +53 -0
- package/roles/researcher.md +43 -0
- package/roles/reviewer.md +54 -0
- package/roles/specifier.md +47 -0
- package/roles/verifier.md +71 -0
- package/schemas/README.md +24 -0
- package/schemas/accepted-learning.schema.json +20 -0
- package/schemas/author-artifact.schema.json +156 -0
- package/schemas/clarification.schema.json +19 -0
- package/schemas/design-artifact.schema.json +80 -0
- package/schemas/docs-claim.schema.json +18 -0
- package/schemas/export-manifest.schema.json +20 -0
- package/schemas/hook.schema.json +67 -0
- package/schemas/host-export-package.schema.json +18 -0
- package/schemas/implementation-plan.schema.json +19 -0
- package/schemas/proposed-learning.schema.json +19 -0
- package/schemas/research.schema.json +18 -0
- package/schemas/review.schema.json +29 -0
- package/schemas/run-manifest.schema.json +18 -0
- package/schemas/spec-challenge.schema.json +18 -0
- package/schemas/spec.schema.json +20 -0
- package/schemas/usage.schema.json +102 -0
- package/schemas/verification-proof.schema.json +29 -0
- package/schemas/wazir-manifest.schema.json +173 -0
- package/skills/README.md +40 -0
- package/skills/brainstorming/SKILL.md +77 -0
- package/skills/debugging/SKILL.md +50 -0
- package/skills/design/SKILL.md +61 -0
- package/skills/dispatching-parallel-agents/SKILL.md +128 -0
- package/skills/executing-plans/SKILL.md +70 -0
- package/skills/finishing-a-development-branch/SKILL.md +169 -0
- package/skills/humanize/SKILL.md +123 -0
- package/skills/init-pipeline/SKILL.md +124 -0
- package/skills/prepare-next/SKILL.md +20 -0
- package/skills/receiving-code-review/SKILL.md +123 -0
- package/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/requesting-code-review/code-reviewer.md +108 -0
- package/skills/run-audit/SKILL.md +197 -0
- package/skills/scan-project/SKILL.md +41 -0
- package/skills/self-audit/SKILL.md +153 -0
- package/skills/subagent-driven-development/SKILL.md +154 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/subagent-driven-development/implementer-prompt.md +102 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/tdd/SKILL.md +23 -0
- package/skills/using-git-worktrees/SKILL.md +163 -0
- package/skills/using-skills/SKILL.md +95 -0
- package/skills/verification/SKILL.md +22 -0
- package/skills/wazir/SKILL.md +463 -0
- package/skills/writing-plans/SKILL.md +30 -0
- package/skills/writing-skills/SKILL.md +157 -0
- package/skills/writing-skills/anthropic-best-practices.md +122 -0
- package/skills/writing-skills/persuasion-principles.md +50 -0
- package/templates/README.md +20 -0
- package/templates/artifacts/README.md +10 -0
- package/templates/artifacts/accepted-learning.md +19 -0
- package/templates/artifacts/accepted-learning.template.json +12 -0
- package/templates/artifacts/author.md +74 -0
- package/templates/artifacts/author.template.json +19 -0
- package/templates/artifacts/clarification.md +21 -0
- package/templates/artifacts/clarification.template.json +12 -0
- package/templates/artifacts/execute-notes.md +19 -0
- package/templates/artifacts/implementation-plan.md +21 -0
- package/templates/artifacts/implementation-plan.template.json +11 -0
- package/templates/artifacts/learning-proposal.md +19 -0
- package/templates/artifacts/next-run-handoff.md +21 -0
- package/templates/artifacts/plan-review.md +19 -0
- package/templates/artifacts/proposed-learning.template.json +12 -0
- package/templates/artifacts/research.md +21 -0
- package/templates/artifacts/research.template.json +12 -0
- package/templates/artifacts/review-findings.md +19 -0
- package/templates/artifacts/review.template.json +11 -0
- package/templates/artifacts/run-manifest.template.json +8 -0
- package/templates/artifacts/spec-challenge.md +19 -0
- package/templates/artifacts/spec-challenge.template.json +11 -0
- package/templates/artifacts/spec.md +21 -0
- package/templates/artifacts/spec.template.json +12 -0
- package/templates/artifacts/verification-proof.md +19 -0
- package/templates/artifacts/verification-proof.template.json +11 -0
- package/templates/examples/accepted-learning.example.json +14 -0
- package/templates/examples/author.example.json +152 -0
- package/templates/examples/clarification.example.json +15 -0
- package/templates/examples/docs-claim.example.json +8 -0
- package/templates/examples/export-manifest.example.json +7 -0
- package/templates/examples/host-export-package.example.json +11 -0
- package/templates/examples/implementation-plan.example.json +17 -0
- package/templates/examples/proposed-learning.example.json +13 -0
- package/templates/examples/research.example.json +15 -0
- package/templates/examples/research.example.md +6 -0
- package/templates/examples/review.example.json +17 -0
- package/templates/examples/run-manifest.example.json +9 -0
- package/templates/examples/spec-challenge.example.json +14 -0
- package/templates/examples/spec.example.json +21 -0
- package/templates/examples/verification-proof.example.json +21 -0
- package/templates/examples/wazir-manifest.example.yaml +65 -0
- package/templates/task-definition-schema.md +99 -0
- package/tooling/README.md +20 -0
- package/tooling/src/adapters/context-mode.js +50 -0
- package/tooling/src/capture/command.js +376 -0
- package/tooling/src/capture/store.js +99 -0
- package/tooling/src/capture/usage.js +270 -0
- package/tooling/src/checks/branches.js +50 -0
- package/tooling/src/checks/brand-truth.js +110 -0
- package/tooling/src/checks/changelog.js +231 -0
- package/tooling/src/checks/command-registry.js +36 -0
- package/tooling/src/checks/commits.js +102 -0
- package/tooling/src/checks/docs-drift.js +103 -0
- package/tooling/src/checks/docs-truth.js +201 -0
- package/tooling/src/checks/runtime-surface.js +156 -0
- package/tooling/src/cli.js +116 -0
- package/tooling/src/command-options.js +56 -0
- package/tooling/src/commands/validate.js +320 -0
- package/tooling/src/doctor/command.js +91 -0
- package/tooling/src/export/command.js +77 -0
- package/tooling/src/export/compiler.js +498 -0
- package/tooling/src/guards/loop-cap-guard.js +52 -0
- package/tooling/src/guards/protected-path-write-guard.js +67 -0
- package/tooling/src/index/command.js +152 -0
- package/tooling/src/index/storage.js +1061 -0
- package/tooling/src/index/summarizers.js +261 -0
- package/tooling/src/loaders.js +18 -0
- package/tooling/src/project-root.js +22 -0
- package/tooling/src/recall/command.js +225 -0
- package/tooling/src/schema-validator.js +30 -0
- package/tooling/src/state-root.js +40 -0
- package/tooling/src/status/command.js +71 -0
- package/wazir.manifest.yaml +135 -0
- package/workflows/README.md +19 -0
- package/workflows/author.md +42 -0
- package/workflows/clarify.md +38 -0
- package/workflows/design-review.md +46 -0
- package/workflows/design.md +44 -0
- package/workflows/discover.md +37 -0
- package/workflows/execute.md +48 -0
- package/workflows/learn.md +38 -0
- package/workflows/plan-review.md +42 -0
- package/workflows/plan.md +39 -0
- package/workflows/prepare-next.md +37 -0
- package/workflows/review.md +40 -0
- package/workflows/run-audit.md +41 -0
- package/workflows/spec-challenge.md +41 -0
- package/workflows/specify.md +38 -0
- package/workflows/verify.md +37 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Planner
|
|
2
|
+
|
|
3
|
+
  
|
|
4
|
+
|
|
5
|
+
**No surprises during execution. The planner turns an approved spec into a task list so complete that the executor never has to guess.**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## What is this?
|
|
10
|
+
|
|
11
|
+
The planner converts the approved spec (and optional design artifacts) into an implementation plan — an ordered, dependency-aware, verification-per-section task list that the executor can follow without ambiguity.
|
|
12
|
+
|
|
13
|
+
A good implementation plan eliminates the most damaging pattern in AI-assisted engineering: the executor who goes off-piste because the plan had gaps. The planner's job is to close every gap in advance. If a step requires an invention that was not in the spec, that is an escalation, not an assumption.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Key Capabilities
|
|
18
|
+
|
|
19
|
+
- Reads the approved spec, research artifacts, and current repo state to ground the plan in reality
|
|
20
|
+
- Produces an ordered task list with explicit dependencies (no hidden coupling)
|
|
21
|
+
- Assigns verification criteria per task section — not just at the end
|
|
22
|
+
- Inspects the live codebase to avoid planning work that has already been done or that conflicts with existing structure
|
|
23
|
+
- Specifies target branch per task (feature/codex from develop, hotfix from main)
|
|
24
|
+
- Includes `commit_message` in task frontmatter using conventional commit format
|
|
25
|
+
- Escalates when dependencies, sequencing, or feasibility require guessing
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## How It Fits in the Pipeline
|
|
30
|
+
|
|
31
|
+
The planner is **Phase 8**. It runs after spec-challenge, author, and design-review approval (author and design phases are optional).
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
[approved spec artifact]
|
|
35
|
+
[research artifacts]
|
|
36
|
+
[design artifacts — optional]
|
|
37
|
+
[current repo state]
|
|
38
|
+
│
|
|
39
|
+
▼
|
|
40
|
+
[planner]
|
|
41
|
+
│
|
|
42
|
+
├──► implementation plan artifact
|
|
43
|
+
├──► ordered task list (with dependencies)
|
|
44
|
+
└──► verification plan per section
|
|
45
|
+
│
|
|
46
|
+
▼
|
|
47
|
+
[plan-review] ──► reviewer validates plan against spec
|
|
48
|
+
│
|
|
49
|
+
▼
|
|
50
|
+
[executor]
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Triggered by:** `plan` workflow.
|
|
54
|
+
|
|
55
|
+
**Feeds into:** `plan-review` workflow (reviewer role), then executor.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Input / Output Contract
|
|
60
|
+
|
|
61
|
+
| | Details |
|
|
62
|
+
|---|---|
|
|
63
|
+
| **Inputs** | Approved spec, research artifacts, current repo state |
|
|
64
|
+
| **Allowed tools** | Local file reads, codebase inspection, source-backed comparison with approved references |
|
|
65
|
+
| **Output: implementation plan artifact** | Full task plan with order, dependencies, branch, and commit message per task |
|
|
66
|
+
| **Output: ordered task list** | Each task numbered, with explicit depends-on references |
|
|
67
|
+
| **Output: verification plan** | Per-section verification commands and pass criteria |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Example
|
|
72
|
+
|
|
73
|
+
Building on the rate limiting spec:
|
|
74
|
+
|
|
75
|
+
**Implementation plan (excerpt):**
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
# Implementation Plan: Per-User API Rate Limiting
|
|
79
|
+
|
|
80
|
+
## Target Branch
|
|
81
|
+
feature/rate-limiting — branch from develop
|
|
82
|
+
|
|
83
|
+
## Tasks
|
|
84
|
+
|
|
85
|
+
### Task 1: Install and configure rate-limiter-flexible
|
|
86
|
+
- depends_on: []
|
|
87
|
+
- commit_message: "chore(deps): add rate-limiter-flexible ^3.0.0"
|
|
88
|
+
- work:
|
|
89
|
+
- npm install rate-limiter-flexible
|
|
90
|
+
- Add Redis client config for rate limiter in src/infrastructure/rateLimiter.ts
|
|
91
|
+
- verification:
|
|
92
|
+
- `npm ls rate-limiter-flexible` shows correct version
|
|
93
|
+
- TypeScript compiles without errors: `npm run build`
|
|
94
|
+
|
|
95
|
+
### Task 2: Implement rate limit middleware
|
|
96
|
+
- depends_on: [Task 1]
|
|
97
|
+
- commit_message: "feat(api): add per-key token bucket rate limiting middleware"
|
|
98
|
+
- work:
|
|
99
|
+
- Create src/middleware/rateLimit.ts
|
|
100
|
+
- Apply to public API router in src/api/routes/index.ts
|
|
101
|
+
- Inject X-RateLimit-* headers on every response
|
|
102
|
+
- Return 429 + Retry-After when limit is exceeded
|
|
103
|
+
- Fail-open when Redis unavailable, emit metric
|
|
104
|
+
- verification:
|
|
105
|
+
- Unit tests pass: `npm test src/middleware/rateLimit.test.ts`
|
|
106
|
+
- Integration test: 101 requests in 60s window — expect 1× 429
|
|
107
|
+
- Redis failure test: mock Redis down — expect pass-through + alert
|
|
108
|
+
|
|
109
|
+
### Task 3: Update CHANGELOG
|
|
110
|
+
- depends_on: [Task 2]
|
|
111
|
+
- commit_message: "docs(changelog): record rate limiting feature under [Unreleased]"
|
|
112
|
+
- work:
|
|
113
|
+
- Add entry to CHANGELOG.md [Unreleased] section
|
|
114
|
+
|
|
115
|
+
## Verification Plan Summary
|
|
116
|
+
- All unit tests green: `npm test`
|
|
117
|
+
- Integration suite: `npm run test:integration`
|
|
118
|
+
- Branch naming: `wazir validate branches`
|
|
119
|
+
- Commit format: `wazir validate commits`
|
|
120
|
+
- Changelog entries: `wazir validate changelog --require-entries`
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Git-Flow Responsibilities
|
|
126
|
+
|
|
127
|
+
The planner does not commit code, but it is responsible for specifying the git-flow structure that the executor will follow:
|
|
128
|
+
|
|
129
|
+
- Specify `target_branch` in every task definition
|
|
130
|
+
- Use `feature/codex` branches for features, `hotfix` for critical fixes from main
|
|
131
|
+
- Include `commit_message` in task frontmatter in conventional commit format
|
|
132
|
+
- The executor may not merge to develop or main — the planner's task list ends at the PR
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Configuration
|
|
137
|
+
|
|
138
|
+
| Setting | Location | Effect |
|
|
139
|
+
|---------|----------|--------|
|
|
140
|
+
| `plan-review` workflow | `workflows/` | Gates execution behind plan review |
|
|
141
|
+
| `verification-proof` validation check | `wazir.manifest.yaml` | Requires verification plan to exist before execution |
|
|
142
|
+
| Branch naming rules | `hooks/` | `loop_cap_guard` enforces iteration caps; `protected_path_write_guard` enforces path rules |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## When to Use / When NOT to Use
|
|
147
|
+
|
|
148
|
+
**Use the planner when:**
|
|
149
|
+
- You have an approved spec and need a concrete, ordered, verifiable task list before execution begins
|
|
150
|
+
- The implementation touches multiple files, layers, or systems with non-obvious dependencies
|
|
151
|
+
- You need to ensure the executor doesn't have to make architectural decisions mid-flight
|
|
152
|
+
- A plan-review gate is required before code is written
|
|
153
|
+
|
|
154
|
+
**Do NOT invoke the planner when:**
|
|
155
|
+
- The spec is not yet approved — plan from an unapproved spec is wasted work
|
|
156
|
+
- You want to plan incrementally during execution — the plan must be complete before execution starts
|
|
157
|
+
- The task is trivial enough that a plan adds more overhead than value (single-file, single-function fixes)
|
|
158
|
+
|
|
159
|
+
> [!NOTE]
|
|
160
|
+
> Hidden coupling is the planner's most dangerous failure mode. If Task 3 secretly depends on a side-effect of Task 1 that is not documented as a dependency, the executor will hit an invisible wall. Every dependency must be explicit in the task list.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Failure Conditions
|
|
165
|
+
|
|
166
|
+
| Condition | Why It Matters |
|
|
167
|
+
|-----------|----------------|
|
|
168
|
+
| Hidden coupling | Executor hits unexpected blockers; may make unapproved scope decisions to unblock |
|
|
169
|
+
| Missing verification | Verifier has no plan to run; proof bundle will be incomplete |
|
|
170
|
+
| Step gaps that require invention during execution | Executor must invent solutions not in the spec — plan drift begins |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Related
|
|
175
|
+
|
|
176
|
+
- [Roles Overview](README.md)
|
|
177
|
+
- [specifier](specifier.md) — upstream role (produces the approved spec)
|
|
178
|
+
- [designer](designer.md) — upstream role when design phase is present
|
|
179
|
+
- [executor](executor.md) — downstream role that implements the plan
|
|
180
|
+
- [reviewer](reviewer.md) — validates plan in `plan-review` workflow
|
|
181
|
+
- [Plan Workflow](../workflows/plan.md) _(coming soon)_
|
|
182
|
+
- [Plan-Review Workflow](../workflows/plan-review.md) _(coming soon)_
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Researcher
|
|
2
|
+
|
|
3
|
+
  
|
|
4
|
+
|
|
5
|
+
**Evidence over assumption. Source-backed findings that make every downstream decision defensible.**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## What is this?
|
|
10
|
+
|
|
11
|
+
The researcher fills the knowledge gaps that the clarifier surfaces. When a task touches an unfamiliar library, an undocumented API surface, a performance constraint, or an architectural decision that needs grounding in evidence — the researcher is the role that goes and finds out.
|
|
12
|
+
|
|
13
|
+
The defining constraint of this role is epistemic discipline: **every finding must be traceable to a source**. No assertions without citations. No "I believe" without a reference. No confidence substituted for evidence. This isn't pedantry — it's what separates a research artifact that the specifier can build on from a context blob that injects unverifiable assumptions into the pipeline.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Key Capabilities
|
|
18
|
+
|
|
19
|
+
- Reads and synthesizes local files, codebase structure, and documentation
|
|
20
|
+
- Conducts source-backed web research for external libraries, standards, and patterns
|
|
21
|
+
- Targets specific areas of the codebase for deep inspection
|
|
22
|
+
- Produces structured finding summaries linked to cited sources
|
|
23
|
+
- Identifies open risks and unknowns explicitly — not just what was found, but what couldn't be confirmed
|
|
24
|
+
- Escalates when a required source is unverifiable or when findings materially change direction
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## How It Fits in the Pipeline
|
|
29
|
+
|
|
30
|
+
The researcher is **Phase 2**. It runs after clarification when the clarification artifact contains open questions that require investigation.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
[clarification artifact]
|
|
34
|
+
[open questions list]
|
|
35
|
+
│
|
|
36
|
+
▼
|
|
37
|
+
[researcher]
|
|
38
|
+
│
|
|
39
|
+
├──► research artifact (findings + citations)
|
|
40
|
+
├──► open risks and unknowns
|
|
41
|
+
└──► finding summaries per research question
|
|
42
|
+
│
|
|
43
|
+
▼
|
|
44
|
+
[specifier]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Triggered by:** `discover` workflow.
|
|
48
|
+
|
|
49
|
+
**Feeds into:** specifier (always), planner (when research findings affect implementation approach).
|
|
50
|
+
|
|
51
|
+
> [!NOTE]
|
|
52
|
+
> Research is not always required. If the clarification artifact resolves all open questions from existing knowledge and codebase inspection, the pipeline can proceed directly to specifier. The researcher is invoked only when knowledge gaps exist.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Input / Output Contract
|
|
57
|
+
|
|
58
|
+
| | Details |
|
|
59
|
+
|---|---|
|
|
60
|
+
| **Inputs** | Clarified scope, explicit research questions, active source documents, verified external sources |
|
|
61
|
+
| **Allowed tools** | Local file reads, source-backed web research, targeted codebase inspection |
|
|
62
|
+
| **Output: research artifact** | All findings, each linked to a source, structured by research question |
|
|
63
|
+
| **Output: finding summaries** | Concise per-question summaries that the specifier can consume directly |
|
|
64
|
+
| **Output: open risks and unknowns** | Explicit list of what could not be confirmed, with risk assessment |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Example
|
|
69
|
+
|
|
70
|
+
Given this open question from the clarification artifact:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Q: Which rate limiting algorithm should we use?
|
|
74
|
+
Redis token bucket vs. fixed window counter vs. sliding window log?
|
|
75
|
+
Impact: Affects storage, accuracy under burst, and implementation complexity.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
The researcher produces:
|
|
79
|
+
|
|
80
|
+
**Research artifact (excerpt):**
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
## Research Question
|
|
84
|
+
Which rate limiting algorithm is most appropriate for our use case?
|
|
85
|
+
|
|
86
|
+
## Findings
|
|
87
|
+
|
|
88
|
+
### Token Bucket (Redis)
|
|
89
|
+
- Allows bursts up to bucket capacity, then enforces steady rate
|
|
90
|
+
- Redis-native implementation via `redis-rate-limiter` (npm, MIT license)
|
|
91
|
+
- Requires Redis cluster; our infrastructure already runs Redis 7.x
|
|
92
|
+
- Source: https://redis.io/glossary/rate-limiting/ (verified 2026-03-13)
|
|
93
|
+
- Source: src/infrastructure/redis.config.ts (Redis client confirmed present)
|
|
94
|
+
|
|
95
|
+
### Fixed Window Counter
|
|
96
|
+
- Simpler implementation, O(1) Redis ops
|
|
97
|
+
- Known boundary issue: can allow 2x rate at window boundary
|
|
98
|
+
- Acceptable for our abuse-prevention use case (not billing-critical)
|
|
99
|
+
- Source: https://www.figma.com/blog/an-alternative-approach-to-rate-limiting/ (Figma eng blog)
|
|
100
|
+
|
|
101
|
+
### Sliding Window Log
|
|
102
|
+
- Most accurate, but O(n) per request at high volume
|
|
103
|
+
- Not recommended given our projected 10k req/min scale
|
|
104
|
+
- Source: RFC 6585 + internal load test results in docs/performance/2025-11.md
|
|
105
|
+
|
|
106
|
+
## Recommendation
|
|
107
|
+
Token bucket via Redis. Matches infrastructure, handles burst gracefully,
|
|
108
|
+
well-understood operational model.
|
|
109
|
+
|
|
110
|
+
## Open Risks
|
|
111
|
+
- Redis availability: rate limiting falls open if Redis is unreachable.
|
|
112
|
+
Risk: MEDIUM. Mitigation: fail-open with logging, add circuit breaker.
|
|
113
|
+
- `redis-rate-limiter` last release 8 months ago — check for maintenance status.
|
|
114
|
+
Risk: LOW. Mitigation: fork or use `rate-limiter-flexible` (actively maintained).
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Configuration
|
|
120
|
+
|
|
121
|
+
The researcher has no dedicated runtime configuration. Relevant settings:
|
|
122
|
+
|
|
123
|
+
| Setting | Location | Effect |
|
|
124
|
+
|---------|----------|--------|
|
|
125
|
+
| `loop_cap_guard` hook | `hooks/` | Prevents unbounded research loops; caps iterations |
|
|
126
|
+
| `pre_tool_capture_route` hook | `hooks/` | Routes tool outputs through capture for traceability |
|
|
127
|
+
| External adapters | `wazir.manifest.yaml` → `adapters` | `context_mode` is an optional research accelerator |
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## When to Use / When NOT to Use
|
|
132
|
+
|
|
133
|
+
**Use the researcher when:**
|
|
134
|
+
- The clarification artifact contains open questions that cannot be resolved from existing knowledge
|
|
135
|
+
- The task touches an external dependency, library, or standard that needs verification
|
|
136
|
+
- Architecture decisions need grounding in current best practice or benchmark data
|
|
137
|
+
- Security or performance properties need evidence, not assertion
|
|
138
|
+
|
|
139
|
+
**Do NOT invoke the researcher when:**
|
|
140
|
+
- All open questions in the clarification artifact are already resolved
|
|
141
|
+
- You are tempted to research indefinitely as a form of scope avoidance — timebox research and surface unknowns explicitly
|
|
142
|
+
- You want to validate implementation choices mid-execution — that is a verifier or reviewer concern
|
|
143
|
+
|
|
144
|
+
> [!NOTE]
|
|
145
|
+
> The most common researcher failure is **substituting confidence for evidence**. If you cannot find a source, the output should be an open risk entry — not a confident assertion. Downstream roles depend on the distinction.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Failure Conditions
|
|
150
|
+
|
|
151
|
+
| Condition | Why It Matters |
|
|
152
|
+
|-----------|----------------|
|
|
153
|
+
| Unsupported claims | Specifier and planner will build on false premises |
|
|
154
|
+
| Stale or missing citations | Findings cannot be independently verified or updated |
|
|
155
|
+
| Substituting confidence for evidence | The worst failure — undetectable false premises enter the artifact chain |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Related
|
|
160
|
+
|
|
161
|
+
- [Roles Overview](README.md)
|
|
162
|
+
- [clarifier](clarifier.md) — upstream role that defines research questions
|
|
163
|
+
- [specifier](specifier.md) — downstream role that consumes research findings
|
|
164
|
+
- [Discover Workflow](../workflows/discover.md) _(coming soon)_
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Reviewer
|
|
2
|
+
|
|
3
|
+
  
|
|
4
|
+
|
|
5
|
+
**Adversarial by design. The reviewer finds what the executor missed and the verifier couldn't see.**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## What is this?
|
|
10
|
+
|
|
11
|
+
The reviewer performs adversarial review. It is not a rubber-stamp; it is the final checkpoint before work is accepted. It reads the diffs, compares against the approved spec and plan, inspects the verification evidence, and produces findings with severity and rationale tied to evidence — not opinions.
|
|
12
|
+
|
|
13
|
+
The word "adversarial" is intentional. The reviewer's job is to find failures, not to validate effort. A finding that blocks a feature is a success for the pipeline, not a failure. The failure mode is the opposite: vague findings, uncited criticism, or rubber-stamp approval that lets broken or drifted work through.
|
|
14
|
+
|
|
15
|
+
The reviewer operates in multiple phases: it challenges the spec (`spec-challenge`), validates designs (`design-review`), reviews the plan (`plan-review`), and performs final code review (`review`). Same role contract, different inputs.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Key Capabilities
|
|
20
|
+
|
|
21
|
+
- Inspects diffs against approved spec and plan to detect drift and unapproved scope
|
|
22
|
+
- Reads changed files to assess correctness, wiring, and completeness
|
|
23
|
+
- Evaluates verification evidence — checks it is fresh, complete, and accurate
|
|
24
|
+
- Uses secondary model review when available for higher-confidence assessments
|
|
25
|
+
- Produces findings with severity (blocking, non-blocking, informational)
|
|
26
|
+
- Issues an explicit no-findings verdict when applicable — not silence, a positive statement
|
|
27
|
+
- Flags git-flow violations: missing/low-quality changelog entries, non-conventional commits, user-facing changes without changelog records
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## How It Fits in the Pipeline
|
|
32
|
+
|
|
33
|
+
The reviewer is **Phase 12** in the main flow, but also appears earlier in challenge phases.
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
[changed files]
|
|
37
|
+
[approved spec and plan]
|
|
38
|
+
[verification evidence]
|
|
39
|
+
│
|
|
40
|
+
▼
|
|
41
|
+
[reviewer]
|
|
42
|
+
│
|
|
43
|
+
├──► findings with severity (BLOCKING / NON-BLOCKING / INFO)
|
|
44
|
+
├──► rationale tied to evidence (file, line, artifact reference)
|
|
45
|
+
└──► explicit verdict (APPROVED / APPROVED WITH CONDITIONS / BLOCKED)
|
|
46
|
+
│
|
|
47
|
+
▼
|
|
48
|
+
APPROVED: [learner] / merge / deploy
|
|
49
|
+
BLOCKED: [executor] fixes → [verifier] re-runs → [reviewer] re-reviews
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Also invoked in:**
|
|
53
|
+
- `spec-challenge` — adversarially challenges the spec artifact
|
|
54
|
+
- `design-review` — validates design artifacts against spec and accessibility
|
|
55
|
+
- `plan-review` — validates plan against spec, checks for gaps and hidden coupling
|
|
56
|
+
|
|
57
|
+
**Triggered by:** `review`, `spec-challenge`, `design-review`, or `plan-review` workflows.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Input / Output Contract
|
|
62
|
+
|
|
63
|
+
| | Details |
|
|
64
|
+
|---|---|
|
|
65
|
+
| **Inputs** | Changed files (diffs), approved spec and plan, verification evidence |
|
|
66
|
+
| **Allowed tools** | Diff inspection, targeted file reads, source-backed comparison to spec/plan, secondary model review |
|
|
67
|
+
| **Output: findings** | Each finding has: severity, description, evidence citation, recommendation |
|
|
68
|
+
| **Output: rationale** | Every finding is tied to a specific file, line, artifact section, or command output |
|
|
69
|
+
| **Output: verdict** | Explicit APPROVED, APPROVED WITH CONDITIONS, or BLOCKED — never silence |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Example
|
|
74
|
+
|
|
75
|
+
**Review findings (excerpt):**
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
# Review: Per-User API Rate Limiting
|
|
79
|
+
Date: 2026-03-13
|
|
80
|
+
Spec: spec/rate-limiting-v1.md
|
|
81
|
+
Plan: plan/rate-limiting-v1.md
|
|
82
|
+
Verification: proof/rate-limiting-v1-proof.md
|
|
83
|
+
|
|
84
|
+
## Findings
|
|
85
|
+
|
|
86
|
+
### FINDING-1 [NON-BLOCKING]
|
|
87
|
+
**Description:** X-RateLimit-Reset header returns Unix timestamp; spec does not specify format.
|
|
88
|
+
**Evidence:** src/middleware/rateLimit.ts:67 — `headers['X-RateLimit-Reset'] = resetTime.getTime() / 1000`
|
|
89
|
+
**Spec reference:** Spec §Behavior — "includes X-RateLimit-Reset header" (format unspecified)
|
|
90
|
+
**Recommendation:** Log as assumption in execution notes; follow up in next spec iteration
|
|
91
|
+
with explicit format decision (Unix timestamp vs. ISO 8601 vs. delta-seconds per RFC 7231).
|
|
92
|
+
|
|
93
|
+
### FINDING-2 [BLOCKING]
|
|
94
|
+
**Description:** Fail-open path emits to console.log, not to the alerting system described in spec.
|
|
95
|
+
**Evidence:** src/middleware/rateLimit.ts:89 — `console.log('Redis unavailable, failing open')`
|
|
96
|
+
**Spec reference:** Spec §Behavior — "emit an alert" (not console.log)
|
|
97
|
+
**Recommendation:** Replace console.log with the existing alert service at
|
|
98
|
+
src/services/alerting.ts. This is a one-line fix.
|
|
99
|
+
|
|
100
|
+
## Git-Flow Checks
|
|
101
|
+
- Commit format: PASS — all 3 commits in conventional format
|
|
102
|
+
- Changelog: PASS — [Unreleased] entry present and descriptive
|
|
103
|
+
- Changelog quality: NON-BLOCKING — entry describes the feature but omits the
|
|
104
|
+
fail-open behavior. Consider adding: "Fails open when Redis is unavailable."
|
|
105
|
+
|
|
106
|
+
## Verdict: BLOCKED
|
|
107
|
+
1 blocking finding must be resolved before approval.
|
|
108
|
+
FINDING-1 is non-blocking and can be addressed in a follow-up task.
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Severity Guide
|
|
114
|
+
|
|
115
|
+
| Severity | Meaning | Effect on Verdict |
|
|
116
|
+
|----------|---------|-------------------|
|
|
117
|
+
| BLOCKING | Correctness failure, spec violation, security issue, fake test, plan drift | Blocks approval |
|
|
118
|
+
| NON-BLOCKING | Quality issue, style inconsistency, minor spec ambiguity | Does not block; should be noted |
|
|
119
|
+
| INFO | Observation, question, suggestion for future improvement | No action required |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Git-Flow Responsibilities
|
|
124
|
+
|
|
125
|
+
The reviewer enforces git-flow quality — not just format:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
- Flag missing changelog entries as BLOCKING if the change is user-facing
|
|
129
|
+
- Flag low-quality changelog entries as NON-BLOCKING with a suggested improvement
|
|
130
|
+
- Flag user-facing changes without any changelog entry as BLOCKING
|
|
131
|
+
- Verify commit message content accurately describes the change (not just format compliance)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
A commit message that passes `wazir validate commits` on format but says "fix things" when it adds a new API surface is a NON-BLOCKING finding.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Configuration
|
|
139
|
+
|
|
140
|
+
| Setting | Location | Effect |
|
|
141
|
+
|---------|----------|--------|
|
|
142
|
+
| `review-loop` validation check | `wazir.manifest.yaml` | Tracks review iteration count |
|
|
143
|
+
| `loop_cap_guard` hook | `hooks/` | Caps review loops to prevent stalemate cycles |
|
|
144
|
+
| Secondary model review | host capability | When available, enables two-model review for higher confidence |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## When to Use / When NOT to Use
|
|
149
|
+
|
|
150
|
+
**Use the reviewer when:**
|
|
151
|
+
- Any artifact produced by the pipeline needs validation before the next phase begins
|
|
152
|
+
- Execution and verification are complete and work needs a formal verdict
|
|
153
|
+
- The spec or plan needs adversarial challenge before execution starts
|
|
154
|
+
|
|
155
|
+
**Do NOT invoke the reviewer when:**
|
|
156
|
+
- You want a quick sanity check during execution — that's not adversarial review, it's just reading the code
|
|
157
|
+
- You expect approval as a default — the reviewer will BLOCK if evidence supports it
|
|
158
|
+
- You want to use it to delay a decision — APPROVED WITH CONDITIONS and INFO findings allow progress
|
|
159
|
+
|
|
160
|
+
> [!NOTE]
|
|
161
|
+
> The reviewer's most important output is a **no-findings verdict**, not a list of findings. An explicit "no findings — APPROVED" is a positive signal that the pipeline is working. Silence is not an approval.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Failure Conditions
|
|
166
|
+
|
|
167
|
+
| Condition | Why It Matters |
|
|
168
|
+
|-----------|----------------|
|
|
169
|
+
| Vague findings | Executor cannot fix what is not precisely described |
|
|
170
|
+
| Uncited criticism | Findings without evidence cannot be evaluated or contested |
|
|
171
|
+
| Rubber-stamp approval | Broken work ships; the entire pipeline's integrity depends on this role |
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Related
|
|
176
|
+
|
|
177
|
+
- [Roles Overview](README.md)
|
|
178
|
+
- [verifier](verifier.md) — upstream role (produces the proof bundle)
|
|
179
|
+
- [executor](executor.md) — implements fixes when reviewer blocks
|
|
180
|
+
- [learner](learner.md) — downstream role (processes review findings as learning inputs)
|
|
181
|
+
- [specifier](specifier.md) — reviewer challenges spec in `spec-challenge`
|
|
182
|
+
- [designer](designer.md) — reviewer validates design in `design-review`
|
|
183
|
+
- [planner](planner.md) — reviewer validates plan in `plan-review`
|
|
184
|
+
- [Review Workflow](../workflows/review.md) _(coming soon)_
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Specifier
|
|
2
|
+
|
|
3
|
+
  
|
|
4
|
+
|
|
5
|
+
**If it can't be tested, it's not a spec. The specifier turns research into a contract the whole pipeline can build on.**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## What is this?
|
|
10
|
+
|
|
11
|
+
The specifier transforms clarified scope and research findings into a spec artifact: a precise, reviewable, measurable definition of what the system should do. Not how it should do it — that's the planner's job — but what it must do, how correctness will be verified, and what is explicitly out of scope.
|
|
12
|
+
|
|
13
|
+
A good spec artifact is the single most valuable document in any engineering pipeline. It is what separates a shared understanding from a series of individual interpretations. The specifier's job is to make that shared understanding concrete, testable, and resistant to scope creep.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Key Capabilities
|
|
18
|
+
|
|
19
|
+
- Synthesizes clarification and research artifacts into a single coherent spec
|
|
20
|
+
- Produces measurable, testable acceptance criteria — not prose descriptions of success
|
|
21
|
+
- Makes assumptions and non-goals explicit, not implicit
|
|
22
|
+
- Reads schemas and templates to produce spec artifacts in the correct format
|
|
23
|
+
- Escalates when acceptance criteria cannot be made testable or when scope is still unstable
|
|
24
|
+
- Refuses to overbuild — the spec covers only what has been approved
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## How It Fits in the Pipeline
|
|
29
|
+
|
|
30
|
+
The specifier is **Phase 3**. It runs after clarification and (optionally) research. Its output — the approved spec artifact — is the foundation for every downstream role.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
[clarification artifact]
|
|
34
|
+
[research artifacts]
|
|
35
|
+
[operator constraints and approvals]
|
|
36
|
+
│
|
|
37
|
+
▼
|
|
38
|
+
[specifier]
|
|
39
|
+
│
|
|
40
|
+
├──► spec artifact
|
|
41
|
+
├──► measurable acceptance criteria
|
|
42
|
+
└──► explicit non-goals and assumptions
|
|
43
|
+
│
|
|
44
|
+
▼
|
|
45
|
+
[spec-challenge review] ──► reviewer adversarially challenges the spec
|
|
46
|
+
│
|
|
47
|
+
▼
|
|
48
|
+
[designer] (if visual design is required)
|
|
49
|
+
[planner] (if no design phase)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Triggered by:** `specify` workflow.
|
|
53
|
+
|
|
54
|
+
**Feeds into:** `spec-challenge` workflow (reviewer role), then designer or planner.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Input / Output Contract
|
|
59
|
+
|
|
60
|
+
| | Details |
|
|
61
|
+
|---|---|
|
|
62
|
+
| **Inputs** | Clarification artifact, research artifacts, operator constraints and approvals |
|
|
63
|
+
| **Allowed tools** | Local file reads, schema/template inspection, targeted repo reads |
|
|
64
|
+
| **Output: spec artifact** | Full feature specification — scope, behavior, acceptance criteria, non-goals, assumptions |
|
|
65
|
+
| **Output: acceptance criteria** | Each criterion is measurable and maps to a verifiable test or check |
|
|
66
|
+
| **Output: non-goals and assumptions** | Explicit list of what is out of scope and what is assumed true without investigation |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Example
|
|
71
|
+
|
|
72
|
+
Building on the rate limiting clarification and research:
|
|
73
|
+
|
|
74
|
+
**Spec artifact (excerpt):**
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
# Spec: Per-User API Rate Limiting
|
|
78
|
+
|
|
79
|
+
## Scope
|
|
80
|
+
Implement per-API-key token bucket rate limiting on all public API endpoints.
|
|
81
|
+
Rate limit: 100 requests per 60-second window per API key.
|
|
82
|
+
|
|
83
|
+
## Behavior
|
|
84
|
+
- Every request includes rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
|
|
85
|
+
- When a key exceeds the limit, the API returns HTTP 429 with a Retry-After header
|
|
86
|
+
- Rate limit state is stored in Redis using the token bucket algorithm
|
|
87
|
+
- If Redis is unreachable, the request is allowed (fail-open) and an alert is emitted
|
|
88
|
+
|
|
89
|
+
## Acceptance Criteria
|
|
90
|
+
1. [ ] A key making 100 requests within 60s receives HTTP 200 for all 100
|
|
91
|
+
2. [ ] The 101st request within 60s receives HTTP 429 with Retry-After header
|
|
92
|
+
3. [ ] After the window resets, the key can make 100 requests again
|
|
93
|
+
4. [ ] All 200 responses include X-RateLimit-* headers with correct values
|
|
94
|
+
5. [ ] Redis failure test: mock Redis unavailable → requests pass through, alert fires
|
|
95
|
+
6. [ ] Existing authenticated client integration tests continue to pass unchanged
|
|
96
|
+
|
|
97
|
+
## Non-Goals
|
|
98
|
+
- Per-IP rate limiting (not in scope for this iteration)
|
|
99
|
+
- Rate limit tiers per subscription plan (future iteration)
|
|
100
|
+
- Admin UI for rate limit configuration (future iteration)
|
|
101
|
+
|
|
102
|
+
## Assumptions
|
|
103
|
+
- Redis 7.x is available in all deployment environments
|
|
104
|
+
- API keys are already present in request context via existing auth middleware
|
|
105
|
+
- `rate-limiter-flexible` npm package is acceptable (MIT license, actively maintained)
|
|
106
|
+
|
|
107
|
+
## Cited Sources
|
|
108
|
+
- input/brief.md
|
|
109
|
+
- research/2026-03-13-rate-limiting.md
|
|
110
|
+
- src/middleware/auth.ts (API key context confirmed)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Configuration
|
|
116
|
+
|
|
117
|
+
| Setting | Location | Effect |
|
|
118
|
+
|---------|----------|--------|
|
|
119
|
+
| `artifact-schema` validation check | `wazir.manifest.yaml` | Validates spec artifact schema before handoff |
|
|
120
|
+
| `docs-required` validation check | `wazir.manifest.yaml` | Enforces that spec artifact is present before plan phase |
|
|
121
|
+
| Spec templates | `templates/` | Canonical structure for spec artifacts |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## When to Use / When NOT to Use
|
|
126
|
+
|
|
127
|
+
**Use the specifier when:**
|
|
128
|
+
- Clarification and research are complete and you need a reviewable definition of done
|
|
129
|
+
- You need to establish explicit non-goals to prevent scope creep during execution
|
|
130
|
+
- Multiple stakeholders need to agree on what will be built before work begins
|
|
131
|
+
- The task is complex enough that "I'll figure it out as I go" will cause problems in review
|
|
132
|
+
|
|
133
|
+
**Do NOT invoke the specifier when:**
|
|
134
|
+
- Scope is still unstable — go back to clarifier or escalate
|
|
135
|
+
- You want to use it to spec out ideas that have not received operator approval
|
|
136
|
+
- The spec becomes a place to embed implementation decisions — those belong in the plan
|
|
137
|
+
|
|
138
|
+
> [!WARNING]
|
|
139
|
+
> Overbuilding is a specifier failure condition. The spec covers exactly what has been approved. Sneaking in "nice to have" features, undiscussed API changes, or unscoped improvements is a contract violation — the reviewer will flag it and the executor must not implement it.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Failure Conditions
|
|
144
|
+
|
|
145
|
+
| Condition | Why It Matters |
|
|
146
|
+
|-----------|----------------|
|
|
147
|
+
| Unverifiable acceptance criteria | Verifier cannot produce proof; reviewer cannot make a verdict |
|
|
148
|
+
| Hidden assumptions | Planner and executor build on false premises without knowing it |
|
|
149
|
+
| Overbuilding beyond approved scope | Downstream roles implement unapproved work; review will reject it |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Related
|
|
154
|
+
|
|
155
|
+
- [Roles Overview](README.md)
|
|
156
|
+
- [clarifier](clarifier.md) — upstream role
|
|
157
|
+
- [researcher](researcher.md) — upstream role
|
|
158
|
+
- [designer](designer.md) — next role when visual design is required
|
|
159
|
+
- [planner](planner.md) — next role when no design phase
|
|
160
|
+
- [reviewer](reviewer.md) — challenges the spec in `spec-challenge` workflow
|
|
161
|
+
- [Specify Workflow](../workflows/specify.md) _(coming soon)_
|
|
162
|
+
- [Spec-Challenge Workflow](../workflows/spec-challenge.md) _(coming soon)_
|