@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,499 @@
|
|
|
1
|
+
# Evidence-Based Verification — Expertise Module
|
|
2
|
+
|
|
3
|
+
> A verification specialist validates every quality claim with concrete, reproducible evidence before signing off. The scope spans visual proof collection via Playwright screenshots and traces, cross-device viewport testing, skeptical checklist-driven review, and integration with the 40-point QA scoring system — ensuring that no claim passes without proof and no issue escapes undetected.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Core Philosophy
|
|
8
|
+
|
|
9
|
+
**Default to finding 3-5 issues minimum.** Software is written by humans (and agents acting on their behalf). Every implementation has rough edges — missed edge cases, viewport inconsistencies, accessibility gaps, performance regressions, or subtle logic errors. A verification pass that finds zero issues is not thorough; it is negligent.
|
|
10
|
+
|
|
11
|
+
Every quality claim must be backed by concrete evidence. The burden of proof lies with the claimant: if you assert that something works, you must show the output, the screenshot, or the log that proves it. Assertions without evidence are rejected, not downgraded.
|
|
12
|
+
|
|
13
|
+
**Automatic fail triggers on:**
|
|
14
|
+
- "Zero issues found" claims on any first-pass review
|
|
15
|
+
- Perfect first-pass scores (40/40 or 10/10 on any dimension)
|
|
16
|
+
- Claims presented without proof artifacts
|
|
17
|
+
|
|
18
|
+
This philosophy exists because the most dangerous verification failure is not finding a bug — it is certifying quality that does not exist. A false "all clear" signal sends defective work downstream where the cost of discovery and repair compounds exponentially.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Evidence Hierarchy
|
|
23
|
+
|
|
24
|
+
Not all evidence carries equal weight. The following hierarchy ranks evidence types by their ability to conclusively prove a claim.
|
|
25
|
+
|
|
26
|
+
| Tier | Evidence Type | Strength | When Required | Example |
|
|
27
|
+
|------|-------------|----------|---------------|---------|
|
|
28
|
+
| **1** | Playwright screenshot / video recording | Strongest | Visual claims, layout assertions, responsive design | `evidence/dashboard-mobile-375x812.png` |
|
|
29
|
+
| **1** | Playwright trace archive (`.zip`) | Strongest | Interaction flows, network timing, state transitions | `test-results/checkout-flow/trace.zip` |
|
|
30
|
+
| **2** | Command output with timestamps | Strong | Test results, build output, lint results | `vitest run --reporter=verbose` stdout with pass/fail counts |
|
|
31
|
+
| **2** | Log excerpt with timestamps | Strong | Runtime behavior, error handling, async flows | Server log showing 404 handler returning correct status |
|
|
32
|
+
| **2** | Benchmark numbers with methodology | Strong | Performance claims, load test results | k6 output: `p95=142ms, p99=287ms` at 200 VUs for 5 min |
|
|
33
|
+
| **3** | Code reference with `file:line_number` | Moderate | Implementation claims, pattern compliance | `src/services/auth.ts:47` — null check before token decode |
|
|
34
|
+
| **3** | axe-core JSON output | Moderate | Accessibility claims | `{ violations: [], passes: 84 }` from `@axe-core/playwright` |
|
|
35
|
+
| **4** | Assertion without evidence | **Rejected** | Never acceptable | "Works correctly" / "All tests pass" / "Looks good" |
|
|
36
|
+
|
|
37
|
+
**Rule:** A claim backed only by Tier 4 evidence is treated as unverified. The verification report must either upgrade the evidence or mark the claim as UNVERIFIED.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Auto-Fail Triggers
|
|
42
|
+
|
|
43
|
+
The following claims automatically fail verification regardless of context. Each represents a pattern that correlates strongly with rubber-stamping or confirmation bias.
|
|
44
|
+
|
|
45
|
+
### 1. "Zero issues found" on first review
|
|
46
|
+
|
|
47
|
+
No implementation is perfect on the first pass. Finding zero issues means the reviewer did not look hard enough. Minimum expectation: 3 issues of any severity (including nits, suggestions, and observations).
|
|
48
|
+
|
|
49
|
+
### 2. "All tests pass" without showing test output
|
|
50
|
+
|
|
51
|
+
The claim is meaningless without the command that was run and its stdout. Required evidence:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Bad — assertion without proof
|
|
55
|
+
"All 47 tests pass."
|
|
56
|
+
|
|
57
|
+
# Good — command + output
|
|
58
|
+
$ npx vitest run --reporter=verbose
|
|
59
|
+
✓ src/services/auth.test.ts (12 tests) 45ms
|
|
60
|
+
✓ src/services/order.test.ts (8 tests) 23ms
|
|
61
|
+
✓ src/components/Dashboard.test.tsx (15 tests) 892ms
|
|
62
|
+
✓ src/utils/format.test.ts (12 tests) 8ms
|
|
63
|
+
|
|
64
|
+
Test Files 4 passed (4)
|
|
65
|
+
Tests 47 passed (47)
|
|
66
|
+
Start at 14:32:07
|
|
67
|
+
Duration 1.24s
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 3. "Works perfectly" without screenshots or logs
|
|
71
|
+
|
|
72
|
+
"Works" is not a testable claim. What works? Under what conditions? At what viewport? With what data? Replace with specific, evidence-backed assertions.
|
|
73
|
+
|
|
74
|
+
### 4. Perfect scores on first implementation attempt
|
|
75
|
+
|
|
76
|
+
A 10/10 on any scoring dimension for a first implementation signals that the scorer is not looking critically. First implementations always have room for improvement in error handling, edge cases, naming, or documentation.
|
|
77
|
+
|
|
78
|
+
### 5. Performance claims without benchmark numbers
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Bad — subjective claim
|
|
82
|
+
"The page loads fast."
|
|
83
|
+
|
|
84
|
+
# Bad — number without methodology
|
|
85
|
+
"Load time is 1.2 seconds."
|
|
86
|
+
|
|
87
|
+
# Good — number + methodology + environment
|
|
88
|
+
"LCP measured at 1.18s (p75) via Lighthouse CI on staging (us-east-1),
|
|
89
|
+
Chrome 124, simulated 4G throttling, 3 runs averaged.
|
|
90
|
+
Budget: < 2.5s. PASS."
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 6. Accessibility claims without axe-core output
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Bad — unverifiable
|
|
97
|
+
"The page is accessible."
|
|
98
|
+
|
|
99
|
+
# Good — tool output with scope
|
|
100
|
+
$ npx playwright test accessibility.spec.ts
|
|
101
|
+
✓ /dashboard has no WCAG 2.2 AA violations (axe-core 4.10.2)
|
|
102
|
+
Rules checked: 94 | Passes: 87 | Incomplete: 7 | Violations: 0
|
|
103
|
+
Excluded: .third-party-chat-widget (not under our control)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 7. Cross-browser claims without specifying browsers tested
|
|
107
|
+
|
|
108
|
+
"Works in all browsers" is not evidence. Specify: Chromium 124, Firefox 126, WebKit 17.5 — and provide the test run output for each.
|
|
109
|
+
|
|
110
|
+
### 8. Responsive design claims without viewport evidence
|
|
111
|
+
|
|
112
|
+
A single desktop screenshot does not prove responsive behavior. Required: at minimum, screenshots at 1920x1080 (desktop), 768x1024 (tablet portrait), and 375x812 (mobile portrait).
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Visual Verification Protocol
|
|
117
|
+
|
|
118
|
+
### Screenshot Collection Pattern
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
import { test, expect } from '@playwright/test';
|
|
122
|
+
|
|
123
|
+
test.describe('Visual Evidence Collection', () => {
|
|
124
|
+
test('capture full-page evidence at multiple viewports', async ({ page }) => {
|
|
125
|
+
await page.goto('/dashboard');
|
|
126
|
+
await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
|
|
127
|
+
await page.waitForLoadState('networkidle');
|
|
128
|
+
|
|
129
|
+
// Full page screenshot — desktop
|
|
130
|
+
await page.setViewportSize({ width: 1920, height: 1080 });
|
|
131
|
+
await page.screenshot({ path: 'evidence/dashboard-desktop-1920x1080.png', fullPage: true });
|
|
132
|
+
|
|
133
|
+
// Component-specific capture — isolate the element under verification
|
|
134
|
+
const header = page.locator('[data-testid="dashboard-header"]');
|
|
135
|
+
await header.screenshot({ path: 'evidence/dashboard-header.png' });
|
|
136
|
+
|
|
137
|
+
// Tablet portrait
|
|
138
|
+
await page.setViewportSize({ width: 768, height: 1024 });
|
|
139
|
+
await page.screenshot({ path: 'evidence/dashboard-tablet-768x1024.png', fullPage: true });
|
|
140
|
+
|
|
141
|
+
// Mobile portrait
|
|
142
|
+
await page.setViewportSize({ width: 375, height: 812 });
|
|
143
|
+
await page.screenshot({ path: 'evidence/dashboard-mobile-375x812.png', fullPage: true });
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
test('capture error and empty states', async ({ page }) => {
|
|
147
|
+
// Empty state — no data loaded
|
|
148
|
+
await page.route('**/api/dashboard/stats', (route) =>
|
|
149
|
+
route.fulfill({ status: 200, body: JSON.stringify({ items: [] }) })
|
|
150
|
+
);
|
|
151
|
+
await page.goto('/dashboard');
|
|
152
|
+
await expect(page.getByText('No data available')).toBeVisible();
|
|
153
|
+
await page.screenshot({ path: 'evidence/dashboard-empty-state.png' });
|
|
154
|
+
|
|
155
|
+
// Error state — API failure
|
|
156
|
+
await page.route('**/api/dashboard/stats', (route) =>
|
|
157
|
+
route.fulfill({ status: 500, body: JSON.stringify({ error: 'Internal Server Error' }) })
|
|
158
|
+
);
|
|
159
|
+
await page.goto('/dashboard');
|
|
160
|
+
await expect(page.getByRole('alert')).toBeVisible();
|
|
161
|
+
await page.screenshot({ path: 'evidence/dashboard-error-state.png' });
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Video Recording Pattern
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
import { test, expect } from '@playwright/test';
|
|
170
|
+
|
|
171
|
+
// Enable video recording in playwright.config.ts or per-test
|
|
172
|
+
test.use({
|
|
173
|
+
video: {
|
|
174
|
+
mode: 'on', // Record every test run for evidence
|
|
175
|
+
size: { width: 1280, height: 720 },
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
test('record checkout flow for verification', async ({ page }) => {
|
|
180
|
+
await page.goto('/products');
|
|
181
|
+
await page.getByRole('button', { name: 'Add to Cart' }).first().click();
|
|
182
|
+
await page.getByRole('link', { name: 'Cart' }).click();
|
|
183
|
+
await page.getByRole('button', { name: 'Proceed to Checkout' }).click();
|
|
184
|
+
|
|
185
|
+
// Fill shipping details
|
|
186
|
+
await page.getByLabel('Address').fill('123 Test Street');
|
|
187
|
+
await page.getByLabel('City').fill('Testville');
|
|
188
|
+
await page.getByRole('button', { name: 'Place Order' }).click();
|
|
189
|
+
|
|
190
|
+
await expect(page.getByRole('heading', { name: 'Order Confirmed' })).toBeVisible();
|
|
191
|
+
// Video saved automatically to test-results/ with timestamp
|
|
192
|
+
});
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Trace Capture Pattern
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
import { test, expect } from '@playwright/test';
|
|
199
|
+
|
|
200
|
+
// Enable tracing for detailed debugging evidence
|
|
201
|
+
test.use({
|
|
202
|
+
trace: 'on', // Captures DOM snapshots, network, console at each action
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
test('trace-enabled form submission', async ({ page }) => {
|
|
206
|
+
await page.goto('/settings/profile');
|
|
207
|
+
await page.getByLabel('Display Name').fill('Updated Name');
|
|
208
|
+
await page.getByRole('button', { name: 'Save' }).click();
|
|
209
|
+
|
|
210
|
+
await expect(page.getByText('Profile updated')).toBeVisible();
|
|
211
|
+
|
|
212
|
+
// Trace archive at: test-results/trace-enabled-form-submission/trace.zip
|
|
213
|
+
// Open with: npx playwright show-trace trace.zip
|
|
214
|
+
// Contains: DOM snapshot per action, network waterfall, console logs, timing
|
|
215
|
+
});
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Trace viewer provides:**
|
|
219
|
+
- Timeline of every action with millisecond precision
|
|
220
|
+
- DOM snapshot before and after each interaction
|
|
221
|
+
- Network request/response pairs with headers and bodies
|
|
222
|
+
- Console log entries correlated to actions
|
|
223
|
+
- Screenshot film strip across the entire test
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Cross-Device Verification Matrix
|
|
228
|
+
|
|
229
|
+
Every visual or responsive claim must be verified against the following device matrix.
|
|
230
|
+
|
|
231
|
+
| Device | Viewport | Orientation | Priority | Notes |
|
|
232
|
+
|--------|----------|-------------|----------|-------|
|
|
233
|
+
| Desktop (1080p) | 1920x1080 | Landscape | **Required** | Most common desktop resolution globally |
|
|
234
|
+
| Desktop (laptop) | 1440x900 | Landscape | **Required** | Common MacBook / business laptop |
|
|
235
|
+
| Tablet (iPad) | 768x1024 | Portrait | **Required** | iPad Mini / standard iPad |
|
|
236
|
+
| Tablet (iPad) | 1024x768 | Landscape | Recommended | Tablet landscape — catches horizontal overflow |
|
|
237
|
+
| Mobile (iPhone) | 375x812 | Portrait | **Required** | iPhone 12/13/14 standard |
|
|
238
|
+
| Mobile (Android) | 360x800 | Portrait | **Required** | Samsung Galaxy S21-S24, Pixel 6-8 |
|
|
239
|
+
| Mobile (small) | 320x568 | Portrait | Recommended | iPhone SE — minimum viable viewport |
|
|
240
|
+
| Desktop (ultrawide) | 2560x1440 | Landscape | Recommended | QHD monitors — catches max-width issues |
|
|
241
|
+
|
|
242
|
+
### Automated viewport sweep
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
import { test, expect } from '@playwright/test';
|
|
246
|
+
|
|
247
|
+
const viewports = [
|
|
248
|
+
{ name: 'desktop-1080p', width: 1920, height: 1080 },
|
|
249
|
+
{ name: 'desktop-laptop', width: 1440, height: 900 },
|
|
250
|
+
{ name: 'tablet-portrait', width: 768, height: 1024 },
|
|
251
|
+
{ name: 'tablet-landscape', width: 1024, height: 768 },
|
|
252
|
+
{ name: 'mobile-iphone', width: 375, height: 812 },
|
|
253
|
+
{ name: 'mobile-android', width: 360, height: 800 },
|
|
254
|
+
] as const;
|
|
255
|
+
|
|
256
|
+
for (const vp of viewports) {
|
|
257
|
+
test(`visual check at ${vp.name} (${vp.width}x${vp.height})`, async ({ page }) => {
|
|
258
|
+
await page.setViewportSize({ width: vp.width, height: vp.height });
|
|
259
|
+
await page.goto('/dashboard');
|
|
260
|
+
await page.waitForLoadState('networkidle');
|
|
261
|
+
|
|
262
|
+
await page.screenshot({
|
|
263
|
+
path: `evidence/dashboard-${vp.name}.png`,
|
|
264
|
+
fullPage: true,
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
// Verify no horizontal overflow at this viewport
|
|
268
|
+
const bodyWidth = await page.evaluate(() => document.body.scrollWidth);
|
|
269
|
+
expect(bodyWidth, `Horizontal overflow at ${vp.name}`).toBeLessThanOrEqual(vp.width);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Skeptical Verification Checklist
|
|
277
|
+
|
|
278
|
+
Before signing off on any verification, work through this checklist. Mark each item PASS, FAIL, or N/A with evidence reference.
|
|
279
|
+
|
|
280
|
+
### Functional Verification (6 items)
|
|
281
|
+
|
|
282
|
+
1. **Did I reproduce the claimed behavior myself?** — Never trust a description; run the code.
|
|
283
|
+
2. **Did I test with invalid input?** — Empty strings, null, undefined, negative numbers, SQL injection strings, XSS payloads.
|
|
284
|
+
3. **Did I test with boundary values?** — Maximum-length strings, zero, MAX_INT, empty arrays, single-item arrays.
|
|
285
|
+
4. **Did I test error states?** — Network failure, API 500, timeout, malformed response, missing permissions.
|
|
286
|
+
5. **Did I test the undo/cancel/back path?** — Form cancel discards changes, browser back preserves state correctly.
|
|
287
|
+
6. **Did I verify data persistence?** — Refresh the page after save. Does the data survive? Is it correctly stored in the database?
|
|
288
|
+
|
|
289
|
+
### Visual Verification (5 items)
|
|
290
|
+
|
|
291
|
+
7. **Is there screenshot evidence for every visual claim?** — No visual claim accepted without a screenshot at the relevant viewport.
|
|
292
|
+
8. **Did I verify across at least 3 viewport sizes?** — Desktop (1920x1080), tablet portrait (768x1024), mobile portrait (375x812) at minimum.
|
|
293
|
+
9. **Did I check empty states and loading states?** — What does the component look like with zero data? During a slow API call?
|
|
294
|
+
10. **Did I check dark mode (if applicable)?** — Theme switching must not break layout or make text unreadable.
|
|
295
|
+
11. **Did I check with long content?** — Names with 50+ characters, descriptions with 500+ words, deeply nested data.
|
|
296
|
+
|
|
297
|
+
### Performance Verification (3 items)
|
|
298
|
+
|
|
299
|
+
12. **Are performance claims backed by benchmark numbers?** — Tool name, methodology, sample size, environment, and specific metric values.
|
|
300
|
+
13. **Did I check for N+1 queries?** — Inspect network tab or database logs during list page loads.
|
|
301
|
+
14. **Did I verify bundle size impact?** — Run `npx vite-bundle-visualizer` or equivalent before and after the change.
|
|
302
|
+
|
|
303
|
+
### Accessibility Verification (3 items)
|
|
304
|
+
|
|
305
|
+
15. **Did I run axe-core and include the output?** — `@axe-core/playwright` with WCAG 2.2 AA tags.
|
|
306
|
+
16. **Can I navigate the feature using only the keyboard?** — Tab order is logical, focus indicators are visible, no keyboard traps.
|
|
307
|
+
17. **Do all images have meaningful alt text and all form inputs have labels?** — Inspect the DOM, not just the visual output.
|
|
308
|
+
|
|
309
|
+
### Edge Case Verification (3 items)
|
|
310
|
+
|
|
311
|
+
18. **Did I test with JavaScript disabled (if applicable)?** — Server-rendered content should remain accessible.
|
|
312
|
+
19. **Did I test concurrent operations?** — Two tabs submitting the same form, rapid double-clicks, race conditions.
|
|
313
|
+
20. **Did I test the feature after a fresh install / empty database?** — First-run experience often has different code paths.
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Integration with QA Scoring
|
|
318
|
+
|
|
319
|
+
The 40-point QA scoring system spans four dimensions: Completeness, Correctness, Implementation Quality, and UX/Polish (10 points each). Evidence quality directly impacts scoring as follows.
|
|
320
|
+
|
|
321
|
+
### Evidence Impact on Correctness (0-10)
|
|
322
|
+
|
|
323
|
+
| Evidence Level | Maximum Correctness Score | Rationale |
|
|
324
|
+
|---------------|--------------------------|-----------|
|
|
325
|
+
| Tier 1 evidence for all claims | 10/10 | Full proof chain — every claim verified with screenshots, traces, or recordings |
|
|
326
|
+
| Tier 2 evidence for all claims | 8/10 | Strong proof — command output and logs demonstrate behavior |
|
|
327
|
+
| Mix of Tier 2 and Tier 3 | 6/10 | Moderate proof — code references supplement but do not replace runtime evidence |
|
|
328
|
+
| Any claim with only Tier 4 evidence | **Capped at 6/10** | Unverified claims cap the dimension regardless of other evidence |
|
|
329
|
+
| Multiple claims with only Tier 4 | **Capped at 4/10** | Systematic lack of evidence indicates insufficient verification |
|
|
330
|
+
|
|
331
|
+
### Evidence Requirements by Score Target
|
|
332
|
+
|
|
333
|
+
| Target Score | Minimum Evidence Requirements |
|
|
334
|
+
|-------------|------------------------------|
|
|
335
|
+
| 9-10/10 | Tier 1 evidence for visual components + Tier 2 for all behavioral claims + axe-core output for accessibility |
|
|
336
|
+
| 7-8/10 | Tier 2 evidence for all major claims + at least 2 viewport screenshots for visual work |
|
|
337
|
+
| 5-6/10 | Tier 2 or Tier 3 evidence for core functionality claims |
|
|
338
|
+
| Below 5/10 | Insufficient evidence or failed verification checks |
|
|
339
|
+
|
|
340
|
+
### Mandatory Evidence for Score Thresholds
|
|
341
|
+
|
|
342
|
+
- **Scores above 8/10 on any dimension:** Screenshot evidence for every visual component is mandatory. No exceptions.
|
|
343
|
+
- **Scores above 7/10 on Correctness:** Test output showing pass counts and coverage percentage is required.
|
|
344
|
+
- **Scores above 6/10 on Completeness:** Evidence that every acceptance criterion was individually tested (not batch-claimed).
|
|
345
|
+
- **Perfect 10/10 on any dimension:** Requires Tier 1 evidence AND a documented edge case that was found and addressed during verification.
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## Verification Report Template
|
|
350
|
+
|
|
351
|
+
Use this template for every verification report. Every section must contain content or an explicit `N/A — [reason]`.
|
|
352
|
+
|
|
353
|
+
```markdown
|
|
354
|
+
# Verification Report — Task [N]: [Title]
|
|
355
|
+
|
|
356
|
+
## Summary
|
|
357
|
+
- **Verdict:** PASS / FAIL / PARTIAL
|
|
358
|
+
- **Issues found:** [count] ([critical], [major], [minor], [nit])
|
|
359
|
+
- **Evidence artifacts:** [count] screenshots, [count] trace archives, [count] command outputs
|
|
360
|
+
- **Verification date:** YYYY-MM-DD HH:MM UTC
|
|
361
|
+
- **Environment:** [OS, browser versions, Node version, deployment target]
|
|
362
|
+
|
|
363
|
+
## Evidence Collected
|
|
364
|
+
|
|
365
|
+
| # | Claim | Evidence Type (Tier) | Artifact | Verdict |
|
|
366
|
+
|---|-------|---------------------|----------|---------|
|
|
367
|
+
| 1 | Dashboard renders correctly on mobile | Tier 1 — Screenshot | `evidence/dashboard-mobile-375x812.png` | PASS |
|
|
368
|
+
| 2 | Form validates email format | Tier 2 — Test output | `vitest run` stdout, 12/12 pass | PASS |
|
|
369
|
+
| 3 | Page meets WCAG 2.2 AA | Tier 2 — axe-core output | 0 violations, 87 passes | PASS |
|
|
370
|
+
| 4 | API responds under 200ms | Tier 2 — k6 output | p95=142ms at 200 VUs | PASS |
|
|
371
|
+
| 5 | Error state displays correctly | Tier 1 — Screenshot | `evidence/dashboard-error-state.png` | FAIL — see Issue #2 |
|
|
372
|
+
|
|
373
|
+
## Issues Found
|
|
374
|
+
|
|
375
|
+
| # | Severity | Description | Evidence | Recommendation |
|
|
376
|
+
|---|----------|-------------|----------|----------------|
|
|
377
|
+
| 1 | Major | Form submit button is not keyboard-accessible | Tab order skips from email field to footer | Add `tabindex="0"` or use `<button>` instead of `<div>` |
|
|
378
|
+
| 2 | Major | Error state shows raw JSON instead of user-friendly message | `evidence/dashboard-error-state.png` | Catch API errors in `useDashboardData` hook, display localized message |
|
|
379
|
+
| 3 | Minor | Text truncation on mobile at 375px width clips last character of username | `evidence/dashboard-mobile-375x812.png` | Add `text-overflow: ellipsis` to `.username` class |
|
|
380
|
+
| 4 | Nit | Console warning: "Each child in a list should have a unique key prop" | Browser console during test run | Add `key={item.id}` to `StatsCard` map in `Dashboard.tsx:42` |
|
|
381
|
+
| 5 | Nit | Loading skeleton height does not match rendered content height, causing 4px layout shift | Trace timeline shows CLS event | Set skeleton `min-height` to match `StatsCard` rendered height |
|
|
382
|
+
|
|
383
|
+
## Viewport Testing
|
|
384
|
+
|
|
385
|
+
| Viewport | Screenshot | Layout | Overflow | Notes |
|
|
386
|
+
|----------|-----------|--------|----------|-------|
|
|
387
|
+
| 1920x1080 Desktop | `evidence/dashboard-desktop-1920x1080.png` | PASS | None | Grid displays 4 columns as designed |
|
|
388
|
+
| 1440x900 Laptop | `evidence/dashboard-laptop-1440x900.png` | PASS | None | Grid displays 3 columns |
|
|
389
|
+
| 768x1024 Tablet | `evidence/dashboard-tablet-768x1024.png` | PASS | None | Grid displays 2 columns |
|
|
390
|
+
| 375x812 Mobile | `evidence/dashboard-mobile-375x812.png` | PARTIAL | None | Single column — username truncation (Issue #3) |
|
|
391
|
+
| 360x800 Android | `evidence/dashboard-android-360x800.png` | PASS | None | Single column — renders correctly |
|
|
392
|
+
|
|
393
|
+
## Accessibility
|
|
394
|
+
|
|
395
|
+
- **Tool:** @axe-core/playwright 4.10.2 with WCAG 2.2 AA tags
|
|
396
|
+
- **Violations:** 0 automated violations detected
|
|
397
|
+
- **Keyboard navigation:** FAIL — submit button not in tab order (Issue #1)
|
|
398
|
+
- **Screen reader:** Not tested (manual test required)
|
|
399
|
+
- **Color contrast:** PASS — all text meets 4.5:1 minimum ratio
|
|
400
|
+
|
|
401
|
+
## Performance
|
|
402
|
+
|
|
403
|
+
- **Lighthouse score:** 94 (Performance), 91 (Accessibility), 100 (Best Practices), 100 (SEO)
|
|
404
|
+
- **LCP:** 1.18s (budget: < 2.5s) — PASS
|
|
405
|
+
- **INP:** 89ms (budget: < 200ms) — PASS
|
|
406
|
+
- **CLS:** 0.04 (budget: < 0.1) — PASS (but see Issue #5 re: skeleton height)
|
|
407
|
+
- **Bundle size delta:** +2.3 KB gzipped (within 50 KB budget)
|
|
408
|
+
|
|
409
|
+
## Recommendations
|
|
410
|
+
|
|
411
|
+
1. **Must fix before merge:** Issues #1 and #2 (keyboard accessibility, error state display)
|
|
412
|
+
2. **Should fix before release:** Issue #3 (text truncation on mobile)
|
|
413
|
+
3. **Nice to have:** Issues #4 and #5 (console warning, skeleton height)
|
|
414
|
+
|
|
415
|
+
## Checklist Summary
|
|
416
|
+
|
|
417
|
+
| # | Check | Status | Evidence Ref |
|
|
418
|
+
|---|-------|--------|-------------|
|
|
419
|
+
| 1 | Reproduced claimed behavior | PASS | Test output + screenshots |
|
|
420
|
+
| 2 | Tested with invalid input | PASS | Test output — 5 validation tests |
|
|
421
|
+
| 3 | Tested boundary values | PASS | Test output — max length, empty, zero |
|
|
422
|
+
| 4 | Tested error states | FAIL | Issue #2 |
|
|
423
|
+
| 5 | Verified data persistence | PASS | Page refresh after save — data persists |
|
|
424
|
+
| 6 | Screenshots at 3+ viewports | PASS | 5 viewport screenshots collected |
|
|
425
|
+
| 7 | axe-core audit | PASS | 0 violations |
|
|
426
|
+
| 8 | Keyboard navigation | FAIL | Issue #1 |
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## Anti-Patterns
|
|
432
|
+
|
|
433
|
+
### 1. Rubber Stamping
|
|
434
|
+
|
|
435
|
+
**What it looks like:** Approving without actually running the code, executing the tests, or inspecting the output. The verification report is written from reading the PR description, not from hands-on testing.
|
|
436
|
+
|
|
437
|
+
**Why it is dangerous:** Every rubber-stamped approval is a defect that was knowingly allowed through the gate. It erodes the entire verification system — downstream roles trust the "PASS" verdict and skip their own checks.
|
|
438
|
+
|
|
439
|
+
**How to detect:** Verification reports with no evidence artifacts, timestamps that precede the implementation commit, or generic language copied from the task spec.
|
|
440
|
+
|
|
441
|
+
### 2. Confirmation Bias (Happy Path Only)
|
|
442
|
+
|
|
443
|
+
**What it looks like:** Testing only the exact scenario described in the task spec. The form works when you fill in valid data. The API returns 200 when given correct parameters. The dashboard renders with the seed data.
|
|
444
|
+
|
|
445
|
+
**Why it is dangerous:** Production users do not follow the happy path. They submit empty forms, click buttons twice, navigate backward, use screen readers, and have slow connections. Happy-path-only testing misses the failures that matter most.
|
|
446
|
+
|
|
447
|
+
**How to detect:** Evidence that only shows successful states. No screenshots of error states, empty states, or loading states. No tests with invalid input.
|
|
448
|
+
|
|
449
|
+
### 3. Scope-Limited Testing
|
|
450
|
+
|
|
451
|
+
**What it looks like:** Testing only the files that were explicitly changed in the PR. The new API endpoint works, but the existing list page that consumes it was never checked for regressions.
|
|
452
|
+
|
|
453
|
+
**Why it is dangerous:** Changes propagate. A modified database schema affects every query that touches those tables. A changed API response shape breaks every consumer. A CSS change in a shared component affects every page that uses it.
|
|
454
|
+
|
|
455
|
+
**How to detect:** Evidence limited to the exact components listed in the task spec. No regression testing of adjacent features or consuming components.
|
|
456
|
+
|
|
457
|
+
### 4. Screenshot Theater
|
|
458
|
+
|
|
459
|
+
**What it looks like:** Screenshots that do not actually prove the claim they accompany. A screenshot of the login page captioned "authentication works correctly." A mobile screenshot taken at 1024px wide (not actually mobile). Screenshots with data pre-filled by the developer rather than entered through the UI.
|
|
460
|
+
|
|
461
|
+
**Why it is dangerous:** It creates the appearance of evidence without the substance. Reviewers see screenshots and assume verification happened, when the screenshots prove nothing about the claimed behavior.
|
|
462
|
+
|
|
463
|
+
**How to detect:** Screenshots that do not match the viewport sizes in the Cross-Device Matrix. Screenshots that show initial state but not the result of the interaction. Screenshots without filenames that encode viewport dimensions.
|
|
464
|
+
|
|
465
|
+
### 5. "Works on My Machine" (Single Environment Testing)
|
|
466
|
+
|
|
467
|
+
**What it looks like:** All verification performed in a single browser on a single OS at a single viewport. "I tested in Chrome on my MacBook and it works."
|
|
468
|
+
|
|
469
|
+
**Why it is dangerous:** Cross-browser rendering differences, OS-specific font rendering, touch vs. mouse interactions, and screen density differences all produce bugs invisible in a single environment. Safari's WebKit engine handles flexbox, date inputs, and scroll behavior differently from Chromium.
|
|
470
|
+
|
|
471
|
+
**How to detect:** Evidence artifacts from only one browser engine. No mention of Firefox or WebKit in the verification report. All screenshots at the same viewport size.
|
|
472
|
+
|
|
473
|
+
### 6. Timestamp-Free Claims (Unanchored Evidence)
|
|
474
|
+
|
|
475
|
+
**What it looks like:** Evidence presented without dates, version numbers, or commit references. "Tests pass" — but which commit? "Screenshot attached" — but from which deployment? "Performance is good" — but measured when, against what baseline?
|
|
476
|
+
|
|
477
|
+
**Why it is dangerous:** Unanchored evidence cannot be reproduced or audited. It may refer to a prior version, a different branch, or a different environment. Without timestamps and version anchors, evidence decays from "proof" to "anecdote."
|
|
478
|
+
|
|
479
|
+
**How to detect:** Evidence artifacts without date/time metadata. Test output without Git commit SHA. Performance numbers without environment specification. Screenshots without viewport dimensions in the filename.
|
|
480
|
+
|
|
481
|
+
### 7. Deferred Verification
|
|
482
|
+
|
|
483
|
+
**What it looks like:** "I'll verify the accessibility / performance / mobile layout in a follow-up." The verification report marks items as PASS with a note that deeper testing will happen later.
|
|
484
|
+
|
|
485
|
+
**Why it is dangerous:** Follow-up verification rarely happens. Once a task is marked PASS, it moves downstream and attention shifts to the next task. Deferred verification is functionally equivalent to skipped verification.
|
|
486
|
+
|
|
487
|
+
**How to detect:** Verification reports with "TODO" items, "will verify later" notes, or N/A markers on dimensions that clearly apply to the task.
|
|
488
|
+
|
|
489
|
+
### 8. Copy-Paste Verification Reports
|
|
490
|
+
|
|
491
|
+
**What it looks like:** Verification reports that reuse the same language, the same evidence structure, and the same issue count across unrelated tasks. The report reads like a template that was filled in mechanically rather than a genuine investigation.
|
|
492
|
+
|
|
493
|
+
**Why it is dangerous:** Each task has unique risks, unique edge cases, and unique failure modes. A formulaic report indicates the verifier is going through the motions rather than thinking critically about what could go wrong with this specific implementation.
|
|
494
|
+
|
|
495
|
+
**How to detect:** Multiple verification reports with identical phrasing in the Issues Found section. Evidence artifacts with sequential filenames that suggest batch generation rather than targeted investigation.
|
|
496
|
+
|
|
497
|
+
---
|
|
498
|
+
|
|
499
|
+
*Researched: 2026-03-12 | Sources: [Playwright Best Practices](https://playwright.dev/docs/best-practices), [Playwright Trace Viewer](https://playwright.dev/docs/trace-viewer), [Playwright Screenshots](https://playwright.dev/docs/screenshots), [axe-core Rules](https://github.com/dequelabs/axe-core/blob/develop/doc/rule-descriptions.md), [Google Lighthouse Scoring](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring), [WCAG 2.2 Quick Reference](https://www.w3.org/WAI/WCAG22/quickref/), [StatCounter Global Stats — Screen Resolution](https://gs.statcounter.com/screen-resolution-stats), [k6 Documentation](https://grafana.com/docs/k6/latest/), [Testing Trophy — Kent C. Dodds](https://kentcdodds.com/blog/the-testing-trophy-and-testing-classifications)*
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Directory Purpose
|
|
2
|
+
|
|
3
|
+
The `quality` directory details testing strategies, QA methodologies, and validation frameworks to ensure software behaves correctly and is accessible to all users.
|
|
4
|
+
|
|
5
|
+
# Key Concepts
|
|
6
|
+
|
|
7
|
+
- Automated testing layers (Unit, Integration, E2E)
|
|
8
|
+
- Validating system performance and accessibility
|
|
9
|
+
- Test-Driven Development (TDD) approaches
|
|
10
|
+
|
|
11
|
+
# File Map
|
|
12
|
+
|
|
13
|
+
- `index.md` — semantic map of the quality directory
|
|
14
|
+
- `accessibility.md` — automated and manual a11y testing processes
|
|
15
|
+
- `performance.md` — load testing, benchmarking, and profiling strategies
|
|
16
|
+
- `testing-api.md` — contract testing, mocking, and backend E2E
|
|
17
|
+
- `testing-mobile.md` — Appium, UI testing, and device farms
|
|
18
|
+
- `testing-web.md` — Cypress, Playwright, Jest, and browser automation
|
|
19
|
+
|
|
20
|
+
# Reading Guide
|
|
21
|
+
|
|
22
|
+
If writing UI tests for web → read `testing-web.md`
|
|
23
|
+
If ensuring endpoint reliability → read `testing-api.md`
|
|
24
|
+
If testing under load → read `performance.md`
|