@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.
Files changed (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,601 @@
1
+ # Compliance Frameworks — Expertise Module
2
+
3
+ > Comprehensive guidance for implementing regulatory compliance across GDPR, CCPA/CPRA, HIPAA, PCI-DSS 4.0, SOX, and FERPA. Covers data classification, subject rights automation, breach response protocols, consent management, cross-jurisdictional requirements, and audit trail implementation. Use when building systems that handle regulated data or operate across multiple legal jurisdictions.
4
+
5
+ ---
6
+
7
+ ## 1. Authority Opening — Enforcement Reality
8
+
9
+ Regulatory enforcement is not theoretical. Fines are measured in hundreds of millions,
10
+ and the trend is acceleration, not leniency.
11
+
12
+ | Year | Entity | Fine | Authority | Reason |
13
+ |------|--------|------|-----------|--------|
14
+ | 2023 | Meta Platforms | EUR 1.2B | Irish DPC | EU-US data transfers without adequate safeguards (GDPR Art. 46) |
15
+ | 2021 | Amazon Europe | EUR 746M | CNPD Luxembourg | Behavioral advertising without valid consent (GDPR Art. 6) |
16
+ | 2020 | British Airways | GBP 20M | UK ICO | Failure to protect personal data in 2018 breach (GDPR Art. 32) |
17
+ | 2019 | Equifax | USD 575M | US FTC | Settlement for 2017 breach exposing 147M consumers' PII |
18
+
19
+ **IBM 2023 Cost of a Data Breach Report:**
20
+ - Global average breach cost: **$4.45M** (13% increase over 3 years).
21
+ - Healthcare sector average: **$10.93M** (highest of any industry, 13 consecutive years).
22
+ - Organizations with IR team + tested plan saved **$2.66M** per breach.
23
+ - AI and automation in security reduced breach costs by **$1.76M** on average.
24
+
25
+ **HIPAA breach notification (45 CFR Section 164.408):** Covered entities must notify
26
+ affected individuals no later than **60 calendar days** from discovery. Breaches
27
+ affecting 500+ individuals require concurrent notification to HHS and prominent
28
+ media outlets in the affected state or jurisdiction.
29
+
30
+ ---
31
+
32
+ ## 2. Framework Comparison
33
+
34
+ | Framework | Scope | Key Requirements | Breach Window | Penalties | Territorial Reach |
35
+ |-----------|-------|------------------|---------------|-----------|-------------------|
36
+ | **GDPR** | Personal data of EU/EEA residents | Lawful basis, minimization, subject rights (Art. 12-22), DPO, DPIA | 72 hours to authority (Art. 33) | EUR 20M or 4% global turnover | Any entity processing EU residents' data |
37
+ | **CCPA/CPRA** | PI of California residents | Right to know, delete, opt-out of sale/sharing, correct | "Without unreasonable delay" | USD 2,500-7,500/violation | USD 25M+ revenue, 100K+ consumers, or 50%+ data revenue |
38
+ | **HIPAA** | Protected health information | Privacy Rule, Security Rule, minimum necessary, BAAs | 60 days to individuals (45 CFR 164.408) | USD 100-50,000/violation; max USD 1.5M/year | US healthcare providers, plans, clearinghouses, BAs |
39
+ | **PCI-DSS 4.0** | Cardholder data + sensitive auth data | Segmentation, encryption, access control, MFA, logging | Immediate to acquirer; brands within 72h | USD 5,000-100,000/month; loss of processing | Any entity handling cardholder data globally |
40
+ | **SOX** | Financial reporting of US public companies | Internal controls (Sec. 404), CEO/CFO cert (Sec. 302) | Material weakness in annual report | USD 5M + 20 years imprisonment | US-listed companies + foreign subsidiaries |
41
+ | **FERPA** | Student education records | Prior consent for disclosure, directory opt-out | "Reasonable" notification expected | Loss of federal funding | US institutions receiving federal funding |
42
+
43
+ ---
44
+
45
+ ## 3. Data Classification Patterns
46
+
47
+ Define classification once in config; enforce everywhere through middleware and database policies.
48
+
49
+ ```yaml
50
+ data_categories:
51
+ email:
52
+ classification: PII
53
+ retention_days: 730
54
+ legal_basis: consent
55
+ encryption: at_rest_and_transit
56
+ cross_border: requires_adequacy_decision
57
+
58
+ health_record:
59
+ classification: sensitive_PII
60
+ retention_days: 2555 # 7 years (HIPAA minimum)
61
+ legal_basis: legal_obligation
62
+ encryption: at_rest_and_transit
63
+ additional_controls: [access_logging, anonymization_at_rest, role_based_access]
64
+
65
+ credit_card_number:
66
+ classification: financial
67
+ retention_days: 0 # Never store full PAN (PCI-DSS)
68
+ legal_basis: contract
69
+ encryption: tokenization
70
+ additional_controls: [pci_scope_isolation, network_segmentation]
71
+
72
+ social_security_number:
73
+ classification: sensitive_PII
74
+ retention_days: 2555 # Tax/legal retention
75
+ legal_basis: legal_obligation
76
+ encryption: at_rest_and_transit
77
+ additional_controls: [access_logging, masking_in_display, need_to_know_access]
78
+
79
+ child_data:
80
+ classification: sensitive_PII
81
+ retention_days: 365 # Minimize retention
82
+ legal_basis: parental_consent
83
+ minimum_age: 13 # COPPA; GDPR varies 13-16 by member state
84
+ additional_controls: [age_verification, parental_consent_verification, no_behavioral_profiling]
85
+
86
+ student_record:
87
+ classification: education_PII
88
+ retention_days: 1825 # 5 years post-enrollment
89
+ legal_basis: legal_obligation
90
+ additional_controls: [ferpa_directory_opt_out, parental_consent_tracking]
91
+
92
+ ip_address:
93
+ classification: PII
94
+ retention_days: 90
95
+ legal_basis: legitimate_interest
96
+ anonymization_strategy: truncate_last_octet
97
+ ```
98
+
99
+ ### Classification Enforcement
100
+
101
+ ```typescript
102
+ function enforceClassification(field: string, config: DataClassification) {
103
+ return async (req: Request, res: Response, next: NextFunction): Promise<void> => {
104
+ if (req.body[field] === undefined) return next();
105
+ if (config.encryption === 'tokenization') {
106
+ req.body[field] = await tokenizationService.tokenize(req.body[field]);
107
+ }
108
+ if (config.additionalControls.includes('access_logging')) {
109
+ await auditLogger.log({
110
+ actor: req.user?.id ?? 'anonymous', action: 'access',
111
+ resource: field, dataSubjectId: req.params.userId,
112
+ });
113
+ }
114
+ next();
115
+ };
116
+ }
117
+ ```
118
+
119
+ ---
120
+
121
+ ## 4. Subject Rights Implementation (GDPR Articles 15-22)
122
+
123
+ | Right | Article | Implementation | SLA |
124
+ |-------|---------|----------------|-----|
125
+ | Access | Art. 15 | Data export endpoint | 30 days |
126
+ | Rectification | Art. 16 | Update with audit trail | 30 days |
127
+ | Erasure | Art. 17 | Cascading delete + processor notification | 30 days |
128
+ | Restriction | Art. 18 | Flag-based processing halt | 30 days |
129
+ | Portability | Art. 20 | JSON/CSV structured export | 30 days |
130
+ | Object | Art. 21 | Opt-out with audit trail | 30 days |
131
+ | Automated decisions | Art. 22 | Human review mechanism | 30 days |
132
+
133
+ ### Erasure Endpoint with Cascading Deletes
134
+
135
+ ```typescript
136
+ interface ErasureResult {
137
+ service: string;
138
+ status: 'deleted' | 'anonymized' | 'retained' | 'failed';
139
+ recordCount: number;
140
+ legalBasis?: string;
141
+ }
142
+
143
+ class ErasureService {
144
+ private readonly processors: DataProcessor[] = [
145
+ { name: 'analytics-provider', endpoint: '/api/gdpr/erasure' },
146
+ { name: 'email-service', endpoint: '/api/gdpr/erasure' },
147
+ { name: 'payment-provider', endpoint: '/api/gdpr/erasure' },
148
+ ];
149
+
150
+ async executeErasure(userId: string, requestId: string): Promise<ErasureReport> {
151
+ const results: ErasureResult[] = [];
152
+
153
+ // Phase 1: Internal data — delete or anonymize per legal basis
154
+ results.push(await this.deleteUserProfile(userId));
155
+ results.push(await this.deleteUserContent(userId));
156
+ results.push(await this.handleFinancialRecords(userId));
157
+
158
+ // Phase 2: Notify processors (GDPR Art. 17(2))
159
+ const notified: string[] = [];
160
+ for (const proc of this.processors) {
161
+ try {
162
+ await this.notifyProcessor(proc, userId, requestId);
163
+ notified.push(proc.name);
164
+ } catch (err) {
165
+ const reason = (err as NodeJS.ErrnoException).code
166
+ ?? (err instanceof Error ? err.message : String(err));
167
+ await this.alertDPO(requestId, proc.name, reason);
168
+ results.push({ service: proc.name, status: 'failed', recordCount: 0 });
169
+ }
170
+ }
171
+
172
+ // Phase 3: Audit trail (pseudonymize subject ID in record)
173
+ const report = {
174
+ requestId, userId: this.pseudonymize(userId),
175
+ completedAt: new Date().toISOString(), results, processorsNotified: notified,
176
+ };
177
+ await this.auditLog.recordErasure(report);
178
+ await this.scheduleBackupPurge(userId);
179
+ return report;
180
+ }
181
+
182
+ private async handleFinancialRecords(userId: string): Promise<ErasureResult> {
183
+ // Tax law: 7-year retention — pseudonymize, do not delete
184
+ const count = await db.query(
185
+ `UPDATE financial_records SET user_id = $1, email = NULL, name = NULL
186
+ WHERE user_id = $2`,
187
+ [this.pseudonymize(userId), userId]
188
+ );
189
+ return {
190
+ service: 'financial-records', status: 'anonymized',
191
+ recordCount: count.rowCount,
192
+ legalBasis: 'Tax retention obligation (7 years) — Art. 17(3)(b)',
193
+ };
194
+ }
195
+
196
+ private async notifyProcessor(
197
+ processor: DataProcessor, userId: string, requestId: string
198
+ ): Promise<void> {
199
+ const response = await fetch(processor.endpoint, {
200
+ method: 'POST',
201
+ headers: { 'Content-Type': 'application/json', 'X-Request-Id': requestId },
202
+ body: JSON.stringify({ userId, action: 'erasure', requestId }),
203
+ });
204
+ if (!response.ok) {
205
+ throw new Error(`Processor ${processor.name} returned ${response.status}`);
206
+ }
207
+ }
208
+ }
209
+ ```
210
+
211
+ ---
212
+
213
+ ## 5. Breach Response Protocol
214
+
215
+ ### Four-Phase Timeline
216
+
217
+ ```
218
+ Phase 1: DETECTION (Hour 0)
219
+ |-- Automated monitoring triggers (SIEM, anomaly detection, IDS/IPS)
220
+ |-- Security team acknowledges; begins containment
221
+ |-- Preserve forensic evidence (do NOT reboot or wipe affected systems)
222
+ |
223
+ Phase 2: ASSESSMENT (Hours 0-24)
224
+ |-- Determine: What data? How many subjects? What categories?
225
+ |-- Severity classification (see matrix below)
226
+ |-- Legal review: which frameworks apply?
227
+ |
228
+ Phase 3: NOTIFICATION (Hours 24-72)
229
+ |-- GDPR: 72 hours to supervisory authority (Art. 33)
230
+ |-- HIPAA: 60 days to individuals; HHS for 500+ (45 CFR 164.408)
231
+ |-- CCPA: "Without unreasonable delay" to affected consumers
232
+ |-- PCI-DSS: Immediate to acquirer/payment brand
233
+ |-- Notify data subjects if high risk (GDPR Art. 34)
234
+ |
235
+ Phase 4: DOCUMENTATION (Post-incident)
236
+ |-- Root cause analysis + remediation plan
237
+ |-- Evidence preservation chain of custody
238
+ |-- Update incident register (GDPR Art. 33(5))
239
+ ```
240
+
241
+ ### Severity Matrix
242
+
243
+ | Factor | Low (1) | Medium (2) | High (3) | Critical (4) |
244
+ |--------|---------|------------|----------|---------------|
245
+ | Data type | Public | Internal/PII | Sensitive PII/PHI | Financial/credentials |
246
+ | Volume | < 100 records | 100-10K | 10K-1M | > 1M records |
247
+ | Encryption | Encrypted | Partially encrypted | Unencrypted | Unencrypted + exfiltrated |
248
+ | Impact | Minimal | Limited | Significant harm likely | Widespread harm certain |
249
+
250
+ **Score = sum. Thresholds:** 4-6 internal only; 7-10 authority notification;
251
+ 11-14 authority + individual; 15-16 full crisis response.
252
+
253
+ ### Notification Template (GDPR Art. 33)
254
+
255
+ ```yaml
256
+ breach_notification:
257
+ controller:
258
+ name: "{{company_name}}"
259
+ dpo_contact: "{{dpo_email}}"
260
+ breach_details:
261
+ date_detected: "{{timestamp}}"
262
+ nature: "{{unauthorized access / exfiltration / ransomware}}"
263
+ categories_affected: ["Names and emails", "{{additional}}"]
264
+ approximate_subjects: "{{count}}"
265
+ consequences:
266
+ likely_impact: "{{identity theft / financial loss / reputational harm}}"
267
+ measures_taken:
268
+ containment: "{{actions taken}}"
269
+ remediation: "{{actions to prevent recurrence}}"
270
+ subject_notification: "{{planned / completed / not required}}"
271
+ ```
272
+
273
+ ---
274
+
275
+ ## 6. Privacy by Design — Cavoukian's 7 Foundational Principles
276
+
277
+ | # | Principle | Implementation |
278
+ |---|-----------|---------------|
279
+ | 1 | Proactive not reactive | Threat modeling during design; DPIA before high-risk processing |
280
+ | 2 | Privacy as the default | Opt-in for collection; strictest settings out of the box |
281
+ | 3 | Privacy embedded into design | Data classification in schema; encryption by default |
282
+ | 4 | Full functionality | Privacy and features coexist; no false trade-offs |
283
+ | 5 | End-to-end security | Encryption at rest + in transit; secure deletion |
284
+ | 6 | Visibility and transparency | Audit trails; clear privacy notices |
285
+ | 7 | Respect for user privacy | User-centric controls; easy rights exercise; no dark patterns |
286
+
287
+ ### Data Minimization
288
+
289
+ ```typescript
290
+ // WRONG: Collecting everything "just in case"
291
+ interface UserRegistration {
292
+ email: string; password: string; fullName: string;
293
+ dateOfBirth: string; gender: string; ssn: string; // Never needed for registration
294
+ }
295
+
296
+ // CORRECT: Only what the purpose requires
297
+ interface UserRegistration {
298
+ email: string; password: string; displayName: string;
299
+ }
300
+ ```
301
+
302
+ ### Purpose Limitation — Scoped Database Views
303
+
304
+ ```sql
305
+ CREATE TABLE users (
306
+ id UUID PRIMARY KEY, email TEXT NOT NULL,
307
+ display_name TEXT NOT NULL, date_of_birth DATE,
308
+ shipping_address JSONB, created_at TIMESTAMPTZ DEFAULT NOW()
309
+ );
310
+
311
+ -- Each service sees only what it needs
312
+ CREATE VIEW users_authentication AS SELECT id, email FROM users;
313
+ CREATE VIEW users_shipping AS SELECT id, display_name, shipping_address FROM users;
314
+ CREATE VIEW users_analytics AS
315
+ SELECT id, date_trunc('year', date_of_birth) AS birth_year,
316
+ date_trunc('month', created_at) AS signup_month FROM users;
317
+ -- GRANT SELECT ON users_authentication TO auth_service;
318
+ ```
319
+
320
+ ### Storage Limitation — Retention Cron Job
321
+
322
+ ```typescript
323
+ const policies: RetentionPolicy[] = [
324
+ { tableName: 'sessions', retentionDays: 90, action: 'delete',
325
+ legalBasis: 'No longer necessary (Art. 5(1)(e))' },
326
+ { tableName: 'events', retentionDays: 365, action: 'anonymize',
327
+ legalBasis: 'Legitimate interest expires after 1 year' },
328
+ { tableName: 'users', retentionDays: 730, action: 'delete',
329
+ legalBasis: 'Storage limitation — 2 years inactive' },
330
+ { tableName: 'transactions', retentionDays: 2555, action: 'archive',
331
+ legalBasis: 'Tax law — 7 years (Art. 17(3)(b))' },
332
+ ];
333
+
334
+ // Runs daily via cron
335
+ async function enforceRetention(policies: RetentionPolicy[]): Promise<void> {
336
+ for (const p of policies) {
337
+ const cutoff = new Date();
338
+ cutoff.setDate(cutoff.getDate() - p.retentionDays);
339
+ switch (p.action) {
340
+ case 'delete':
341
+ await db.query(`DELETE FROM ${p.tableName} WHERE updated_at < $1`, [cutoff]);
342
+ break;
343
+ case 'anonymize':
344
+ await db.query(
345
+ `UPDATE ${p.tableName} SET user_id = encode(digest(user_id::text,'sha256'),'hex'),
346
+ ip_address = NULL, email = NULL WHERE created_at < $1 AND is_anonymized = false`, [cutoff]);
347
+ break;
348
+ case 'archive':
349
+ await db.query(`INSERT INTO ${p.tableName}_archive SELECT * FROM ${p.tableName} WHERE created_at < $1`, [cutoff]);
350
+ await db.query(`DELETE FROM ${p.tableName} WHERE created_at < $1`, [cutoff]);
351
+ break;
352
+ }
353
+ await auditLog.record({ action: 'retention_enforcement', tableName: p.tableName });
354
+ }
355
+ }
356
+ ```
357
+
358
+ ---
359
+
360
+ ## 7. Consent Management
361
+
362
+ ### Granular Consent Model
363
+
364
+ ```typescript
365
+ interface ConsentRecord {
366
+ userId: string;
367
+ purpose: 'marketing' | 'analytics' | 'personalization' | 'essential';
368
+ granted: boolean;
369
+ timestamp: string;
370
+ source: 'banner' | 'settings' | 'signup';
371
+ version: string; // Policy version consented to
372
+ expiresAt: string;
373
+ withdrawnAt?: string;
374
+ }
375
+
376
+ class ConsentService {
377
+ async grantConsent(
378
+ userId: string, purpose: string, source: string, policyVersion: string
379
+ ): Promise<ConsentRecord> {
380
+ const record: ConsentRecord = {
381
+ userId, purpose: purpose as ConsentRecord['purpose'], granted: true,
382
+ timestamp: new Date().toISOString(), source: source as ConsentRecord['source'],
383
+ version: policyVersion, expiresAt: this.calculateExpiry(purpose),
384
+ };
385
+ await this.store.save(record);
386
+ await this.auditLog.record({
387
+ actor: userId, action: 'consent_change', resource: `consent:${purpose}`,
388
+ dataSubjectId: userId, justification: `Granted via ${source} for v${policyVersion}`,
389
+ });
390
+ return record;
391
+ }
392
+
393
+ async withdrawConsent(userId: string, purpose: string): Promise<void> {
394
+ // Art. 7(3): Withdrawal must be as easy as granting
395
+ const existing = await this.store.findActive(userId, purpose);
396
+ if (!existing) return;
397
+ existing.granted = false;
398
+ existing.withdrawnAt = new Date().toISOString();
399
+ await this.store.save(existing);
400
+ await this.processingEngine.stopForPurpose(userId, purpose);
401
+ }
402
+
403
+ async isConsentValid(userId: string, purpose: string): Promise<boolean> {
404
+ const c = await this.store.findActive(userId, purpose);
405
+ if (!c || !c.granted) return false;
406
+ return new Date(c.expiresAt) >= new Date()
407
+ && c.version === await this.getCurrentPolicyVersion();
408
+ }
409
+ }
410
+ ```
411
+
412
+ ### Consent Banner UX (No Dark Patterns)
413
+
414
+ Google fined EUR 150M by CNIL, Meta EUR 60M, for manipulative consent interfaces.
415
+
416
+ **Mandatory rules:**
417
+ - Accept and Reject buttons: **equal visual prominence** (same size, color, weight).
418
+ - Same click count for opt-in and opt-out (no "manage preferences" detour for rejection).
419
+ - No pre-checked boxes (GDPR Recital 32: silence does not constitute consent).
420
+ - Granular per-purpose choices (necessary, analytics, marketing, personalization).
421
+ - No cookie walls blocking access without consent (EDPB Guidelines 05/2020).
422
+ - Withdrawal accessible from every page (persistent footer link).
423
+
424
+ ```html
425
+ <!-- WRONG: Dark pattern -->
426
+ <button class="btn-primary btn-large">Accept All</button>
427
+ <a href="/settings" class="text-small text-muted">Manage</a>
428
+
429
+ <!-- CORRECT: Equal prominence -->
430
+ <div class="consent-actions" role="dialog" aria-label="Cookie consent">
431
+ <button class="btn-secondary" onclick="rejectAll()">Reject All</button>
432
+ <button class="btn-secondary" onclick="showPreferences()">Preferences</button>
433
+ <button class="btn-secondary" onclick="acceptAll()">Accept All</button>
434
+ </div>
435
+ ```
436
+
437
+ ---
438
+
439
+ ## 8. Cross-Jurisdictional Compliance Matrix
440
+
441
+ | Requirement | EU (GDPR) | US Federal | US (CA/CPRA) | UK (UK GDPR) | Canada (PIPEDA) | Brazil (LGPD) | Singapore (PDPA) |
442
+ |-------------|-----------|------------|--------------|--------------|-----------------|---------------|-------------------|
443
+ | DPO required | Yes (Art. 37) | No | No | Yes | No (recommended) | Yes (all) | Yes |
444
+ | Transfer mechanisms | SCCs, BCRs, adequacy, DPF | No restriction | No restriction | UK IDTA, UK SCCs | Consent/contractual | SCCs, BCRs, consent | Consent, comparable standard |
445
+ | Children's age | 16 (states may lower to 13) | 13 (COPPA) | 16 | 13 | Meaningful capacity | 12 (parental consent) | Not specified |
446
+ | Breach window | 72h (authority) | Varies (HIPAA: 60d) | "Without unreasonable delay" | 72h (ICO) | "As soon as feasible" | "Reasonable time" | "As soon as practicable" |
447
+ | Private right of action | Yes (Art. 82) | Sector-specific | Yes (breaches) | Yes | Yes | Yes | No |
448
+ | Consent standard | Opt-in | Varies (opt-out common) | Opt-out sale; opt-in sensitive | Opt-in | Implied or express | Express for sensitive | Deemed consent possible |
449
+ | Maximum penalty | EUR 20M / 4% revenue | Varies (no FTC cap) | USD 7,500/violation | GBP 17.5M / 4% revenue | CAD 100K / CAD 25M proposed | 2% revenue, max BRL 50M | SGD 1M / 10% revenue |
450
+
451
+ ---
452
+
453
+ ## 9. Audit Trail Implementation
454
+
455
+ ### Immutable Audit Log
456
+
457
+ Hash chaining provides tamper-evident integrity without requiring a blockchain.
458
+
459
+ ```typescript
460
+ interface AuditEntry {
461
+ id: string;
462
+ timestamp: string;
463
+ actor: string;
464
+ action: 'access' | 'modify' | 'delete' | 'export' | 'consent_change';
465
+ resource: string;
466
+ dataSubjectId: string;
467
+ justification: string;
468
+ previousHash: string; // SHA-256 of previous entry — chain integrity
469
+ }
470
+
471
+ class ImmutableAuditLog {
472
+ private lastHash = 'GENESIS';
473
+
474
+ async append(entry: Omit<AuditEntry, 'id' | 'previousHash'>): Promise<AuditEntry> {
475
+ const full: AuditEntry = { ...entry, id: crypto.randomUUID(), previousHash: this.lastHash };
476
+ const hash = await this.computeHash(full);
477
+ this.lastHash = hash;
478
+ await this.store.insert({ ...full, entryHash: hash });
479
+ return full;
480
+ }
481
+
482
+ async verifyChainIntegrity(): Promise<{ valid: boolean; brokenAt?: string }> {
483
+ const entries = await this.store.getAllOrdered();
484
+ let expected = 'GENESIS';
485
+ for (const entry of entries) {
486
+ if (entry.previousHash !== expected) return { valid: false, brokenAt: entry.id };
487
+ expected = await this.computeHash(entry);
488
+ }
489
+ return { valid: true };
490
+ }
491
+
492
+ private async computeHash(entry: AuditEntry): Promise<string> {
493
+ const payload = JSON.stringify({
494
+ id: entry.id, timestamp: entry.timestamp, actor: entry.actor,
495
+ action: entry.action, resource: entry.resource,
496
+ dataSubjectId: entry.dataSubjectId, previousHash: entry.previousHash,
497
+ });
498
+ const buf = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(payload));
499
+ return Array.from(new Uint8Array(buf)).map(b => b.toString(16).padStart(2, '0')).join('');
500
+ }
501
+ }
502
+ ```
503
+
504
+ ### Database Schema
505
+
506
+ ```sql
507
+ CREATE TABLE audit_log (
508
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
509
+ timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW(),
510
+ actor TEXT NOT NULL,
511
+ action TEXT NOT NULL CHECK (action IN ('access','modify','delete','export','consent_change')),
512
+ resource TEXT NOT NULL,
513
+ data_subject_id TEXT NOT NULL,
514
+ justification TEXT NOT NULL,
515
+ previous_hash TEXT NOT NULL,
516
+ entry_hash TEXT NOT NULL,
517
+ metadata JSONB DEFAULT '{}'
518
+ );
519
+
520
+ -- Append-only: REVOKE UPDATE, DELETE ON audit_log FROM app_user;
521
+ CREATE INDEX idx_audit_data_subject ON audit_log (data_subject_id, timestamp);
522
+ CREATE INDEX idx_audit_actor ON audit_log (actor, timestamp);
523
+ ```
524
+
525
+ ---
526
+
527
+ ## 10. Anti-Patterns
528
+
529
+ ### AP-COMP-01: Blanket Consent
530
+
531
+ **Problem:** Single checkbox: "I agree to the privacy policy and terms." Bundles all
532
+ purposes, violating GDPR Art. 7 specific consent requirement.
533
+ **Fix:** Separate consent per purpose. Essential processing uses "contract" basis, not consent.
534
+
535
+ ### AP-COMP-02: Retention Without Policy
536
+
537
+ **Problem:** Data stored indefinitely. Violates GDPR Art. 5(1)(e) storage limitation.
538
+ **Fix:** Retention period per category with automated enforcement (see Section 6).
539
+
540
+ ### AP-COMP-03: Dark Patterns in Consent Flows
541
+
542
+ **Problem:** Large "Accept All" with tiny "Manage preferences" link. Pre-checked boxes.
543
+ CNIL fined Google EUR 150M for this.
544
+ **Fix:** Equal prominence. No pre-checked boxes. Same clicks for accept and reject.
545
+
546
+ ### AP-COMP-04: Security Theater
547
+
548
+ **Problem:** Compliance checkboxes without underlying controls. Privacy policy claims
549
+ encryption while database stores plaintext. PCI-DSS questionnaire passes while logging
550
+ full card numbers.
551
+ **Fix:** Automated testing validates stated controls. Internal audits compare docs to infra.
552
+
553
+ ### AP-COMP-05: Soft-Delete Without Notification
554
+
555
+ **Problem:** Erasure request sets `is_deleted = true` without removing data. Subject
556
+ believes data is gone; it persists in DB, backups, and processors.
557
+ **Fix:** Hard delete from primary stores. Pseudonymize where legal retention applies.
558
+ Notify processors (Art. 17(2)). Schedule backup purge. Report retention with legal basis.
559
+
560
+ ### AP-COMP-06: Cross-Border Transfer Without Adequacy
561
+
562
+ **Problem:** EU data in US-region cloud without Transfer Impact Assessment. Uber fined
563
+ EUR 290M.
564
+ **Fix:** Map all cross-border flows. Identify mechanism (DPF, SCCs, BCRs, adequacy).
565
+ Conduct TIA. Re-evaluate when legal landscape changes.
566
+
567
+ ### AP-COMP-07: Cookie Walls
568
+
569
+ **Problem:** Blocking site access without consent. EDPB Guidelines 05/2020: cookie walls
570
+ do not meet "freely given" (GDPR Art. 7).
571
+ **Fix:** Core functionality accessible regardless of consent. Disable non-essential
572
+ features only.
573
+
574
+ ### AP-COMP-08: Privacy Policy Copy-Paste
575
+
576
+ **Problem:** Generic template not reflecting actual practices. Lists uncollected categories,
577
+ omits real ones, references unused processors.
578
+ **Fix:** Policy mirrors ROPA. Updated with every processing change. Automated diff detects drift.
579
+
580
+ ### AP-COMP-09: Consent Version Drift
581
+
582
+ **Problem:** Policy updated but existing consent references old version. Processing
583
+ continues under outdated consent.
584
+ **Fix:** Version-stamp consent records. Re-consent when policy version changes.
585
+
586
+ ### AP-COMP-10: Orphaned Processor Agreements
587
+
588
+ **Problem:** DPAs with decommissioned processors; new processors operating without DPA.
589
+ Art. 28 requires DPA with every processor.
590
+ **Fix:** Processor register linked to ROPA. Quarterly review. DPA before any data sharing.
591
+
592
+ ---
593
+
594
+ ## References
595
+
596
+ - GDPR: https://gdpr-info.eu/ | EDPB Guidelines: https://www.edpb.europa.eu/our-work-tools/general-guidance
597
+ - CCPA/CPRA: https://oag.ca.gov/privacy/ccpa | HIPAA: https://www.hhs.gov/hipaa/
598
+ - PCI-DSS 4.0: https://www.pcisecuritystandards.org/document_library/
599
+ - Enforcement Tracker: https://www.enforcementtracker.com/ | IBM Breach Report: https://www.ibm.com/reports/data-breach
600
+ - Cavoukian, A. "Privacy by Design: The 7 Foundational Principles"
601
+ - LGPD: https://www.gov.br/cidadania/pt-br/acesso-a-informacao/lgpd | PIPEDA: https://www.priv.gc.ca/ | PDPA: https://www.pdpc.gov.sg/