@qijenchen/design-system 0.1.0-beta.92 → 0.1.0-beta.95

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 (493) hide show
  1. package/AGENTS.md +6 -208
  2. package/CLAUDE.md +2 -23
  3. package/dist/components/DataTable/data-table-filter-value-picker.js +4 -0
  4. package/dist/components/DataTable/data-table-filter-value-picker.js.map +1 -1
  5. package/dist/components/DataTable/filter-tree.js +6 -0
  6. package/dist/components/DataTable/filter-tree.js.map +1 -1
  7. package/dist/patterns/element-anatomy/item-anatomy.js +1 -1
  8. package/ds-canonical/adapters/claude/agents/README.md +58 -0
  9. package/ds-canonical/adapters/claude/agents/canonical-reviewer.md +14 -0
  10. package/ds-canonical/adapters/claude-root-instructions.md +24 -0
  11. package/ds-canonical/adapters/claude-settings-base.json +172 -0
  12. package/ds-canonical/commands/README.md +8 -13
  13. package/ds-canonical/commands/gov-status.md +5 -75
  14. package/ds-canonical/fork/AGENTS.md +116 -213
  15. package/ds-canonical/fork/CLAUDE.md +54 -0
  16. package/ds-canonical/fork/codex/agents/skills/bug-fix-rhythm/SKILL.md +207 -0
  17. package/ds-canonical/fork/codex/agents/skills/code-quality-audit/SKILL.md +71 -0
  18. package/ds-canonical/fork/codex/agents/skills/delivery-handoff/SKILL.md +244 -0
  19. package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/flow-diagram.md +180 -0
  20. package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/handoff-template.md +177 -0
  21. package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  22. package/ds-canonical/fork/codex/agents/skills/independent-review/SKILL.md +29 -19
  23. package/ds-canonical/fork/codex/agents/skills/independent-review/agents/openai.yaml +4 -0
  24. package/ds-canonical/fork/codex/agents/skills/independent-review/references/evidence-contract.md +24 -0
  25. package/ds-canonical/fork/codex/agents/skills/performance-audit/SKILL.md +114 -0
  26. package/ds-canonical/fork/codex/agents/skills/product-ui-audit/SKILL.md +244 -0
  27. package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/audit-checks.md +250 -0
  28. package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/common-misuses.md +329 -0
  29. package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/report-template.md +163 -0
  30. package/ds-canonical/fork/codex/agents/skills/propose-options/SKILL.md +190 -0
  31. package/ds-canonical/fork/codex/agents/skills/prototype/SKILL.md +246 -0
  32. package/ds-canonical/fork/codex/agents/skills/prototype/references/audit-checks.md +39 -0
  33. package/ds-canonical/fork/codex/agents/skills/prototype/references/benchmark-sources.md +94 -0
  34. package/ds-canonical/fork/codex/agents/skills/prototype/references/checkpoints.md +200 -0
  35. package/ds-canonical/fork/codex/agents/skills/prototype/references/evaluation-matrix.md +142 -0
  36. package/ds-canonical/fork/codex/agents/skills/prototype/references/ooux-template.md +198 -0
  37. package/ds-canonical/fork/codex/agents/skills/prototype/references/proposal-template.md +230 -0
  38. package/ds-canonical/fork/codex/agents/skills/scan-similar-bugs/SKILL.md +212 -0
  39. package/ds-canonical/fork/codex/agents/skills/ux-audit/SKILL.md +135 -0
  40. package/ds-canonical/fork/codex/agents/skills/visual-audit/SKILL.md +259 -0
  41. package/ds-canonical/fork/codex/agents/skills/visual-audit/output/.gitkeep +0 -0
  42. package/ds-canonical/fork/codex/agents/skills/visual-audit/references/audit-architecture.md +101 -0
  43. package/ds-canonical/fork/codex/agents/skills/visual-audit/references/visual-checklist.md +297 -0
  44. package/ds-canonical/fork/codex/agents/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  45. package/ds-canonical/fork/codex/hooks.json +44 -3
  46. package/ds-canonical/fork/common/closed-tool-execution.mjs +1001 -0
  47. package/ds-canonical/fork/common/instruction.md +116 -0
  48. package/ds-canonical/fork/consumer/governance-check.mjs +3059 -0
  49. package/ds-canonical/fork/consumer/lib/closed-tool-execution.mjs +1001 -0
  50. package/ds-canonical/fork/consumer/lock.json +189 -0
  51. package/ds-canonical/fork/consumer/lock.schema.json +338 -0
  52. package/ds-canonical/fork/consumer/managed-files/0235cf6b3fd402a3717881dc205b5bf77aed7632e7d7d6f1811a40e3033bd816.blob +145 -0
  53. package/ds-canonical/fork/consumer/managed-files/145aab4b4fc470fc9ba7679b4a1d87d4f6a6d604940bd40f8d675c8af696498f.blob +47 -0
  54. package/ds-canonical/fork/consumer/managed-files/189e551431181e4a88783c02130d2787b801ef731c86e35bcde89a7313aa020e.blob +149 -0
  55. package/ds-canonical/fork/consumer/managed-files/24ad71c8613ddcf6fd23818cb3bb477a1fb6d83af4550b0bad43099813088686.blob +28 -0
  56. package/ds-canonical/fork/consumer/managed-files/2d1ef5617a5ce3c39ad9aae1c42af7d199f9270c0a0ccb490b63d62dbc6913db.blob +1001 -0
  57. package/ds-canonical/fork/consumer/managed-files/3625e02235cf166a50649a4d704cfb68fead69d0e168c481df013ebae9f6be25.blob +1412 -0
  58. package/ds-canonical/fork/consumer/managed-files/3ddedc67b464bdfe3dde9803a2d917920c96d633678b802eee638a44cd47366a.blob +8 -0
  59. package/ds-canonical/fork/consumer/managed-files/423729840acdd43c812f17c245b871716c6b60f76e4d3e94864d0e34a815bf8d.blob +348 -0
  60. package/ds-canonical/fork/consumer/managed-files/46f10bc55cdfdf834d0749eebff42ea0bb8576f361b36d2b6ba1851354c50150.blob +464 -0
  61. package/ds-canonical/fork/consumer/managed-files/475fba657eaeb8abd88f60635f3eadab27a9d0d3114ba4fffc65f43a2a0fe6e2.blob +124 -0
  62. package/ds-canonical/fork/consumer/managed-files/61c6aca6d7f04bedbf556eaa9d3043681fe48cbe0e93a8ccb1d69a7c5e23fdcf.blob +113 -0
  63. package/ds-canonical/fork/consumer/managed-files/63061e05969667005020166ea2ae7df3c96663f7a928e7dd3eebc1471022df56.blob +2398 -0
  64. package/ds-canonical/fork/consumer/managed-files/65410b66e8799a560e07b71779c186fed2a0ef50575ac44745df7a0938a9c2b4.blob +317 -0
  65. package/ds-canonical/fork/consumer/managed-files/6929a3c8bb4d69c507720b4754aeb339c6cbb8ff655e0a381d76606d64695e38.blob +393 -0
  66. package/ds-canonical/fork/consumer/managed-files/6b746628ac11fcccbe277ef6fea94cc2a7b90ea2822e83536eae80d5ee4b3fa5.blob +167 -0
  67. package/ds-canonical/fork/consumer/managed-files/76d485470d30ff014afacf7ce643763de9f4f956d9fc8128dbc1814774cf2e63.blob +671 -0
  68. package/ds-canonical/fork/consumer/managed-files/77e06f62670dfee01e9b5e8b0f8dad085ce711d75538c1fb0679d9818acaca82.blob +424 -0
  69. package/ds-canonical/fork/consumer/managed-files/7937321877e5c34c27dae36c0d507d21cd42fa3f46a8f11a284b8b4a52b6faa4.blob +84 -0
  70. package/ds-canonical/fork/consumer/managed-files/794bb911ba8ebef58ab0d44a55b9968a19d2c62bcfb310b1ee3a84166f087f21.blob +880 -0
  71. package/ds-canonical/fork/consumer/managed-files/7b17835d0ceb17cdcdcaf930540a3e5d0943a34a747ac43c12ca8cd485c11581.blob +44 -0
  72. package/ds-canonical/fork/consumer/managed-files/7eb6cc60abfdabaf6617c336058fad1454ccde08889295767bfd9b7fd153cc6e.blob +778 -0
  73. package/ds-canonical/fork/consumer/managed-files/81037efa5b3b9f4a875704005fb268acdc9233bb901f44902e4e37e1da92b8e3.blob +46 -0
  74. package/ds-canonical/fork/consumer/managed-files/884721550b56308812b20917adac7a12f36fdb4ecda6b02460a7f5a219c0c966.blob +78 -0
  75. package/ds-canonical/fork/consumer/managed-files/91f414b9462ddc1e4be1d4c6ca4ac7a7340a6eec9e98ee109cbc049d3b354b6a.blob +36 -0
  76. package/ds-canonical/fork/consumer/managed-files/92e4828cdcb96ff0d01daa16f6885f24045a8e72820665650f2a1890dc3a446c.blob +121 -0
  77. package/ds-canonical/fork/consumer/managed-files/93a89f16f6717d1e4e4e27ec20ef916e3355c7aa890ca74cd9b12db30d8a899f.blob +43 -0
  78. package/ds-canonical/fork/consumer/managed-files/974521d6b8fe796ea4c58b3c78b0c2b8a1be262b97100d77aaf4cc9c7724bcab.blob +45 -0
  79. package/ds-canonical/fork/consumer/managed-files/9791c85388d2e2e2bd564e2550fadc3351c4c960a47ce838098afcba7544eb90.blob +959 -0
  80. package/ds-canonical/fork/consumer/managed-files/a448d2222133335c30e6fda5116e26a40db3283a19d62ccc0663c30d272262a7.blob +174 -0
  81. package/ds-canonical/fork/consumer/managed-files/ab072e7f2eca51f0e18a5e18c4b333260ee5d219a12cc6df5bb2d683f0b2734d.blob +2636 -0
  82. package/ds-canonical/fork/consumer/managed-files/bc44cabad181f766611dab6a8f52d81100afadd50ac59799015e8ba7bf46d9eb.blob +596 -0
  83. package/ds-canonical/fork/consumer/managed-files/c4aa767f11714467de0038a2149cf78074baddc17fc6a9e074b6aed7544c6f3c.blob +80 -0
  84. package/ds-canonical/fork/consumer/managed-files/c893e9b734b162f4c631fef871128c16a9ab565f796a0e76d7f320f821f220f5.blob +41 -0
  85. package/ds-canonical/fork/consumer/managed-files/cd9c61f8ff24fb9bcc3663e346e2cfa419cfb84e02aae18d3dc66dd192681696.blob +9 -0
  86. package/ds-canonical/fork/consumer/managed-files/da2ad2737315d25a5300905ddefd62f1695056a8a1af155c5b34170ad9923bce.blob +38 -0
  87. package/ds-canonical/fork/consumer/managed-files/e1b11160d6c4043002d2cbff6d9a4ae551698a96137773c4244dadfac152fcb0.blob +222 -0
  88. package/ds-canonical/fork/consumer/managed-files/e26057408661597aac4a57cdf7e30e2f9d0afb1b9a2dbbb692c3805cd9028ca5.blob +250 -0
  89. package/ds-canonical/fork/consumer/managed-files/e68ae1915965d8e17d4b2441c00c2b97fe062ea308ae8535c9eebb2fc16fa245.blob +20 -0
  90. package/ds-canonical/fork/consumer/managed-files/e71c65f45c6af7ce12b6b3c0d8028f185da5b719e2050c9b2a6b243d41ae4878.blob +182 -0
  91. package/ds-canonical/fork/consumer/managed-files/e813096d69c49812e40e00be9ac8fa14d77f0ec1f97ab4c45cb096b3bedd35de.blob +3 -0
  92. package/ds-canonical/fork/consumer/managed-files/e930ebca6fd8eeb30802aac0930efae7bcc44cc0996f24de07c11ca6a081fedf.blob +277 -0
  93. package/ds-canonical/fork/consumer/managed-files/ea94e914d5c8acb84ad7660e5bda0f01b6ccc8cf96b0f6b1ce048f8938d0f5b5.blob +47 -0
  94. package/ds-canonical/fork/consumer/managed-files/f4db6e616d5229aa7e700c6a3ace022cb9d90baae74e38ca65fce617f18e0d9b.blob +110 -0
  95. package/ds-canonical/fork/consumer/managed-files/faa128c26102415dc5345e68698efbbd28a395c35ee278dceae044cf430692b2.blob +11 -0
  96. package/ds-canonical/fork/governance.lock +1552 -103
  97. package/ds-canonical/fork/hooks/_log-fire.sh +109 -12
  98. package/ds-canonical/fork/hooks/block_prototype_imports.py +148 -29
  99. package/ds-canonical/fork/hooks/check_chrome_header_avatar_canonical.sh +23 -12
  100. package/ds-canonical/fork/hooks/check_consumer_app_invariants.sh +116 -65
  101. package/ds-canonical/fork/hooks/check_consumer_code_quality.sh +140 -0
  102. package/ds-canonical/fork/hooks/check_ds_anchor_preflight.sh +84 -30
  103. package/ds-canonical/fork/hooks/check_dynamic_tailwind_class.sh +16 -6
  104. package/ds-canonical/fork/hooks/check_escape_marker_abuse.sh +65 -21
  105. package/ds-canonical/fork/hooks/check_field_family_invariants.sh +90 -24
  106. package/ds-canonical/fork/hooks/check_fork_product_quality.sh +8 -6
  107. package/ds-canonical/fork/hooks/check_item_list_gap.sh +4 -2
  108. package/ds-canonical/fork/hooks/check_layout_space_magic_numbers.sh +31 -13
  109. package/ds-canonical/fork/hooks/check_opacity_token_usage.sh +220 -95
  110. package/ds-canonical/fork/hooks/check_pattern_invariants.sh +73 -14
  111. package/ds-canonical/fork/hooks/check_sidebar_menu_button_implicit_wrap.sh +23 -12
  112. package/ds-canonical/fork/hooks/check_story_determinism.sh +1 -1
  113. package/ds-canonical/fork/hooks/check_story_invariants.sh +342 -61
  114. package/ds-canonical/fork/hooks/check_tabs_content_chrome_body_double_gap.sh +52 -23
  115. package/ds-canonical/fork/hooks/check_tailwind_wildcard_in_docs.sh +20 -13
  116. package/ds-canonical/fork/hooks/inject_deploy_url_after_push.sh +105 -22
  117. package/ds-canonical/fork/hooks/lib/_hook_integrity.sh +158 -0
  118. package/ds-canonical/fork/hooks/lib/_provider_paths.sh +162 -0
  119. package/ds-canonical/fork/launchers/approval-evidence.mjs +1131 -0
  120. package/ds-canonical/fork/launchers/authority-decision-evidence.mjs +413 -0
  121. package/ds-canonical/fork/launchers/canonical-order.mjs +8 -0
  122. package/ds-canonical/fork/launchers/fork-governance-dispatcher.sh +139 -29
  123. package/ds-canonical/fork/launchers/format-provider-hook-output.mjs +25 -0
  124. package/ds-canonical/fork/launchers/independent-review.mjs +490 -0
  125. package/ds-canonical/fork/launchers/inject_fork_governance_preamble.sh +88 -43
  126. package/ds-canonical/fork/launchers/normalize-provider-event.mjs +355 -0
  127. package/ds-canonical/fork/launchers/product-hook-dispatch-runtime.mjs +1067 -0
  128. package/ds-canonical/fork/launchers/provider-hook-normalization.mjs +1646 -0
  129. package/ds-canonical/fork/launchers/provider-hook-output-transport.mjs +525 -0
  130. package/ds-canonical/fork/launchers/settings-hooks.json +30 -53
  131. package/ds-canonical/fork/manifest.json +1881 -23
  132. package/ds-canonical/fork/providers/claude/hook-config.json +333 -0
  133. package/ds-canonical/fork/providers/claude/instruction.md +54 -0
  134. package/ds-canonical/fork/providers/claude/skills/bug-fix-rhythm/SKILL.md +207 -0
  135. package/ds-canonical/fork/providers/claude/skills/code-quality-audit/SKILL.md +71 -0
  136. package/ds-canonical/fork/providers/claude/skills/delivery-handoff/SKILL.md +244 -0
  137. package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/flow-diagram.md +180 -0
  138. package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/handoff-template.md +177 -0
  139. package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  140. package/ds-canonical/fork/providers/claude/skills/independent-review/SKILL.md +43 -0
  141. package/ds-canonical/fork/providers/claude/skills/independent-review/agents/openai.yaml +4 -0
  142. package/ds-canonical/fork/providers/claude/skills/independent-review/references/evidence-contract.md +24 -0
  143. package/ds-canonical/fork/providers/claude/skills/performance-audit/SKILL.md +114 -0
  144. package/ds-canonical/fork/providers/claude/skills/product-ui-audit/SKILL.md +244 -0
  145. package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/audit-checks.md +250 -0
  146. package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/common-misuses.md +329 -0
  147. package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/report-template.md +163 -0
  148. package/ds-canonical/fork/providers/claude/skills/propose-options/SKILL.md +190 -0
  149. package/ds-canonical/fork/providers/claude/skills/prototype/SKILL.md +246 -0
  150. package/ds-canonical/fork/providers/claude/skills/prototype/references/audit-checks.md +39 -0
  151. package/ds-canonical/fork/providers/claude/skills/prototype/references/benchmark-sources.md +94 -0
  152. package/ds-canonical/fork/providers/claude/skills/prototype/references/checkpoints.md +200 -0
  153. package/ds-canonical/fork/providers/claude/skills/prototype/references/evaluation-matrix.md +142 -0
  154. package/ds-canonical/fork/providers/claude/skills/prototype/references/ooux-template.md +198 -0
  155. package/ds-canonical/fork/providers/claude/skills/prototype/references/proposal-template.md +230 -0
  156. package/ds-canonical/fork/providers/claude/skills/scan-similar-bugs/SKILL.md +212 -0
  157. package/ds-canonical/fork/providers/claude/skills/ux-audit/SKILL.md +135 -0
  158. package/ds-canonical/fork/providers/claude/skills/visual-audit/SKILL.md +259 -0
  159. package/ds-canonical/fork/providers/claude/skills/visual-audit/output/.gitkeep +0 -0
  160. package/ds-canonical/fork/providers/claude/skills/visual-audit/references/audit-architecture.md +101 -0
  161. package/ds-canonical/fork/providers/claude/skills/visual-audit/references/visual-checklist.md +297 -0
  162. package/ds-canonical/fork/providers/claude/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  163. package/ds-canonical/fork/providers/codex/hook-config.json +57 -0
  164. package/ds-canonical/fork/providers/codex/skills/bug-fix-rhythm/SKILL.md +207 -0
  165. package/ds-canonical/fork/providers/codex/skills/code-quality-audit/SKILL.md +71 -0
  166. package/ds-canonical/fork/providers/codex/skills/delivery-handoff/SKILL.md +244 -0
  167. package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/flow-diagram.md +180 -0
  168. package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/handoff-template.md +177 -0
  169. package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  170. package/ds-canonical/fork/providers/codex/skills/independent-review/SKILL.md +43 -0
  171. package/ds-canonical/fork/providers/codex/skills/independent-review/agents/openai.yaml +4 -0
  172. package/ds-canonical/fork/providers/codex/skills/independent-review/references/evidence-contract.md +24 -0
  173. package/ds-canonical/fork/providers/codex/skills/performance-audit/SKILL.md +114 -0
  174. package/ds-canonical/fork/providers/codex/skills/product-ui-audit/SKILL.md +244 -0
  175. package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/audit-checks.md +250 -0
  176. package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/common-misuses.md +329 -0
  177. package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/report-template.md +163 -0
  178. package/ds-canonical/fork/providers/codex/skills/propose-options/SKILL.md +190 -0
  179. package/ds-canonical/fork/providers/codex/skills/prototype/SKILL.md +246 -0
  180. package/ds-canonical/fork/providers/codex/skills/prototype/references/audit-checks.md +39 -0
  181. package/ds-canonical/fork/providers/codex/skills/prototype/references/benchmark-sources.md +94 -0
  182. package/ds-canonical/fork/providers/codex/skills/prototype/references/checkpoints.md +200 -0
  183. package/ds-canonical/fork/providers/codex/skills/prototype/references/evaluation-matrix.md +142 -0
  184. package/ds-canonical/fork/providers/codex/skills/prototype/references/ooux-template.md +198 -0
  185. package/ds-canonical/fork/providers/codex/skills/prototype/references/proposal-template.md +230 -0
  186. package/ds-canonical/fork/providers/codex/skills/scan-similar-bugs/SKILL.md +212 -0
  187. package/ds-canonical/fork/providers/codex/skills/ux-audit/SKILL.md +135 -0
  188. package/ds-canonical/fork/providers/codex/skills/visual-audit/SKILL.md +259 -0
  189. package/ds-canonical/fork/providers/codex/skills/visual-audit/output/.gitkeep +0 -0
  190. package/ds-canonical/fork/providers/codex/skills/visual-audit/references/audit-architecture.md +101 -0
  191. package/ds-canonical/fork/providers/codex/skills/visual-audit/references/visual-checklist.md +297 -0
  192. package/ds-canonical/fork/providers/codex/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  193. package/ds-canonical/fork/references/story-baseline-registry.json +117 -0
  194. package/ds-canonical/fork/references/story-baseline-registry.schema.json +145 -0
  195. package/ds-canonical/fork/references/utility-registry.json +377 -0
  196. package/ds-canonical/fork/references/utility-registry.schema.json +373 -0
  197. package/ds-canonical/fork/review/canonical-order.mjs +8 -0
  198. package/ds-canonical/fork/review/provider-review-binding.mjs +2377 -0
  199. package/ds-canonical/fork/skills/bug-fix-rhythm/SKILL.md +19 -12
  200. package/ds-canonical/fork/skills/code-quality-audit/SKILL.md +19 -15
  201. package/ds-canonical/fork/skills/delivery-handoff/SKILL.md +17 -11
  202. package/ds-canonical/fork/skills/independent-review/SKILL.md +37 -0
  203. package/ds-canonical/fork/skills/independent-review/agents/openai.yaml +4 -0
  204. package/ds-canonical/fork/skills/independent-review/references/evidence-contract.md +24 -0
  205. package/ds-canonical/fork/skills/performance-audit/SKILL.md +11 -8
  206. package/ds-canonical/fork/skills/product-ui-audit/SKILL.md +31 -21
  207. package/ds-canonical/fork/skills/product-ui-audit/references/audit-checks.md +9 -5
  208. package/ds-canonical/fork/skills/product-ui-audit/references/report-template.md +30 -26
  209. package/ds-canonical/fork/skills/propose-options/SKILL.md +6 -4
  210. package/ds-canonical/fork/skills/prototype/SKILL.md +21 -21
  211. package/ds-canonical/fork/skills/prototype/references/audit-checks.md +7 -6
  212. package/ds-canonical/fork/skills/prototype/references/checkpoints.md +26 -17
  213. package/ds-canonical/fork/skills/prototype/references/evaluation-matrix.md +2 -1
  214. package/ds-canonical/fork/skills/prototype/references/ooux-template.md +1 -1
  215. package/ds-canonical/fork/skills/prototype/references/proposal-template.md +6 -5
  216. package/ds-canonical/fork/skills/scan-similar-bugs/SKILL.md +28 -27
  217. package/ds-canonical/fork/skills/ux-audit/SKILL.md +8 -5
  218. package/ds-canonical/fork/skills/visual-audit/SKILL.md +37 -43
  219. package/ds-canonical/fork/skills/visual-audit/references/audit-architecture.md +15 -15
  220. package/ds-canonical/fork/skills/visual-audit/references/visual-checklist.md +6 -6
  221. package/ds-canonical/fork/skills/visual-audit/references/world-class-benchmarks.md +2 -2
  222. package/ds-canonical/hooks/README.md +37 -23
  223. package/ds-canonical/hooks/_log-fire.sh +109 -12
  224. package/ds-canonical/hooks/auto_regen_ds_barrel.sh +52 -20
  225. package/ds-canonical/hooks/block_prototype_imports.py +148 -29
  226. package/ds-canonical/hooks/check_audit_post_report_validator.sh +76 -66
  227. package/ds-canonical/hooks/check_audit_sample_escape.sh +4 -4
  228. package/ds-canonical/hooks/check_benchmark_citation.sh +3 -3
  229. package/ds-canonical/hooks/check_canonical_propagation.sh +81 -22
  230. package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +22 -11
  231. package/ds-canonical/hooks/check_codex_brief_invariants.sh +100 -56
  232. package/ds-canonical/hooks/check_codex_collab_5step.sh +31 -25
  233. package/ds-canonical/hooks/check_consumer_app_invariants.sh +116 -65
  234. package/ds-canonical/hooks/check_consumer_code_quality.sh +140 -0
  235. package/ds-canonical/hooks/check_datatable_invariants.sh +103 -25
  236. package/ds-canonical/hooks/check_dim_count_drift.sh +5 -4
  237. package/ds-canonical/hooks/check_ds_anchor_preflight.sh +83 -29
  238. package/ds-canonical/hooks/check_dynamic_tailwind_class.sh +16 -6
  239. package/ds-canonical/hooks/check_escape_marker_abuse.sh +65 -21
  240. package/ds-canonical/hooks/check_field_controls_contracts.sh +10 -8
  241. package/ds-canonical/hooks/check_field_family_invariants.sh +90 -24
  242. package/ds-canonical/hooks/check_file_size_budget.sh +32 -14
  243. package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +60 -21
  244. package/ds-canonical/hooks/check_item_list_gap.sh +4 -2
  245. package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +31 -13
  246. package/ds-canonical/hooks/check_main_branch_workbench.sh +27 -68
  247. package/ds-canonical/hooks/check_naming_and_abstraction.sh +20 -9
  248. package/ds-canonical/hooks/check_opacity_token_usage.sh +220 -95
  249. package/ds-canonical/hooks/check_orphan_ds_css.sh +48 -18
  250. package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +29 -11
  251. package/ds-canonical/hooks/check_pattern_invariants.sh +73 -14
  252. package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +4 -4
  253. package/ds-canonical/hooks/check_pixel_quantified_audit.sh +3 -2
  254. package/ds-canonical/hooks/check_plugin_fork_health.sh +151 -41
  255. package/ds-canonical/hooks/check_post_main_ssot_propagate.sh +5 -109
  256. package/ds-canonical/hooks/check_propose_discipline.sh +116 -29
  257. package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +6 -4
  258. package/ds-canonical/hooks/check_propose_without_benchmark.sh +10 -6
  259. package/ds-canonical/hooks/check_select_all_canonical.sh +1 -1
  260. package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +22 -11
  261. package/ds-canonical/hooks/check_solo_workflow.sh +117 -186
  262. package/ds-canonical/hooks/check_spec_class_drift.sh +33 -19
  263. package/ds-canonical/hooks/check_ssot_header_declaration.sh +6 -5
  264. package/ds-canonical/hooks/check_story_determinism.sh +1 -1
  265. package/ds-canonical/hooks/check_story_invariants.sh +526 -213
  266. package/ds-canonical/hooks/check_storybook_addon_packaging.sh +65 -15
  267. package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +137 -67
  268. package/ds-canonical/hooks/check_tabs_content_chrome_body_double_gap.sh +52 -23
  269. package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +20 -13
  270. package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +15 -12
  271. package/ds-canonical/hooks/chrome_header_dispatcher.sh +75 -26
  272. package/ds-canonical/hooks/enforce_home_charter.sh +29 -8
  273. package/ds-canonical/hooks/governance_control_plane.sh +15 -0
  274. package/ds-canonical/hooks/inject_deploy_url_after_push.sh +105 -22
  275. package/ds-canonical/hooks/inject_pending_self_audit.sh +27 -24
  276. package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +77 -29
  277. package/ds-canonical/hooks/lib/_approval_re.sh +5 -6
  278. package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +66 -20
  279. package/ds-canonical/hooks/lib/_code_quality.sh +9 -9
  280. package/ds-canonical/hooks/lib/_cva_default_sync.sh +11 -13
  281. package/ds-canonical/hooks/lib/_governance_coverage_check.sh +48 -21
  282. package/ds-canonical/hooks/lib/_hardcoded_strings.sh +13 -10
  283. package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +68 -48
  284. package/ds-canonical/hooks/lib/_hook_integrity.sh +158 -0
  285. package/ds-canonical/hooks/lib/_layout_space_canonical.sh +5 -5
  286. package/ds-canonical/hooks/lib/_overlay_handcraft.sh +21 -23
  287. package/ds-canonical/hooks/lib/_person_data_richness.sh +5 -5
  288. package/ds-canonical/hooks/lib/_provider_paths.sh +162 -0
  289. package/ds-canonical/hooks/lib/_story_compile_drift.sh +5 -5
  290. package/ds-canonical/hooks/lib/_tab_lg_chrome_header_equal.sh +247 -27
  291. package/ds-canonical/hooks/lib/_token_hygiene.sh +39 -22
  292. package/ds-canonical/hooks/lib/approval-evidence.mjs +1131 -0
  293. package/ds-canonical/hooks/lib/audit-report-validator.mjs +118 -0
  294. package/ds-canonical/hooks/lib/provider-marker-regex.mjs +23 -0
  295. package/ds-canonical/hooks/lib/tsx-governance-analysis.mjs +410 -0
  296. package/ds-canonical/hooks/log_governance_fires.sh +45 -13
  297. package/ds-canonical/hooks/log_skill_invokes.sh +8 -7
  298. package/ds-canonical/hooks/post_edit_dispatcher.sh +106 -28
  299. package/ds-canonical/hooks/registrations.json +488 -0
  300. package/ds-canonical/hooks/registrations.schema.json +58 -0
  301. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_plain_chinese.sh +1 -1
  302. package/ds-canonical/hooks/retired/check_governance_compliance.sh +1 -1
  303. package/ds-canonical/hooks/session_start_governance_check.sh +109 -78
  304. package/ds-canonical/hooks/stop_audit_content_quality.sh +20 -0
  305. package/ds-canonical/hooks/stop_extract_canonical_rules.sh +20 -0
  306. package/ds-canonical/hooks/stop_passive_logging.sh +133 -59
  307. package/ds-canonical/hooks/stop_self_audit.sh +349 -210
  308. package/ds-canonical/hooks/tests/fixtures/transcripts/claude-transcript-jsonl-v1.jsonl +3 -0
  309. package/ds-canonical/hooks/tests/fixtures/transcripts/claude-transcript-jsonl-v2.jsonl +3 -0
  310. package/ds-canonical/hooks/tests/registration-output-contracts.mjs +151 -0
  311. package/ds-canonical/hooks/tests/run-all.sh +35 -5
  312. package/ds-canonical/hooks/tests/test_auto_regen_ds_barrel.sh +48 -4
  313. package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +157 -9
  314. package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +265 -127
  315. package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +119 -12
  316. package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +0 -0
  317. package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +0 -0
  318. package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +56 -5
  319. package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +6 -6
  320. package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +193 -100
  321. package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +143 -17
  322. package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +49 -5
  323. package/ds-canonical/hooks/tests/test_check_consumer_app_invariants.sh +128 -0
  324. package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +2 -2
  325. package/ds-canonical/hooks/tests/test_check_consumer_code_quality.sh +64 -0
  326. package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +2 -2
  327. package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +2 -2
  328. package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +2 -2
  329. package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +26 -8
  330. package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +126 -12
  331. package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +13 -8
  332. package/ds-canonical/hooks/tests/test_check_ds_anchor_preflight.sh +53 -7
  333. package/ds-canonical/hooks/tests/test_check_dynamic_tailwind_class.sh +3 -3
  334. package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +17 -7
  335. package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +72 -16
  336. package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +67 -5
  337. package/ds-canonical/hooks/tests/test_check_fork_user_plugin_install.sh +107 -4
  338. package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +25 -15
  339. package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +177 -67
  340. package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +7 -7
  341. package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +2 -2
  342. package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +45 -110
  343. package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +19 -2
  344. package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +114 -8
  345. package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +38 -22
  346. package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +2 -2
  347. package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +68 -6
  348. package/ds-canonical/hooks/tests/test_check_plugin_fork_health.sh +53 -0
  349. package/ds-canonical/hooks/tests/test_check_post_main_ssot_propagate.sh +37 -0
  350. package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +2 -2
  351. package/ds-canonical/hooks/tests/test_check_propose_discipline.sh +59 -0
  352. package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +7 -5
  353. package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +5 -5
  354. package/ds-canonical/hooks/tests/test_check_propose_without_benchmark.sh +45 -0
  355. package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +5 -5
  356. package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +183 -105
  357. package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +35 -7
  358. package/ds-canonical/hooks/tests/{test_check_story_anatomy.sh.broken → test_check_story_anatomy.sh} +73 -4
  359. package/ds-canonical/hooks/tests/{test_check_story_category.sh.broken → test_check_story_category.sh} +82 -2
  360. package/ds-canonical/hooks/tests/test_check_story_determinism.sh +39 -0
  361. package/ds-canonical/hooks/tests/test_check_story_invariants.sh +559 -43
  362. package/ds-canonical/hooks/tests/{test_check_story_name_jargon.sh.broken → test_check_story_name_jargon.sh} +22 -1
  363. package/ds-canonical/hooks/tests/test_check_storybook_addon_packaging.sh +79 -0
  364. package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +2 -2
  365. package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +546 -28
  366. package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +180 -98
  367. package/ds-canonical/hooks/tests/test_check_tabs_content_chrome_body_double_gap.sh +3 -3
  368. package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +2 -2
  369. package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +63 -15
  370. package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +12 -6
  371. package/ds-canonical/hooks/tests/test_chrome_header_dispatcher.sh +125 -0
  372. package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +57 -3
  373. package/ds-canonical/hooks/tests/test_governance_control_plane.sh +66 -0
  374. package/ds-canonical/hooks/tests/test_governance_coverage_check.sh +88 -0
  375. package/ds-canonical/hooks/tests/test_hook_integrity_classification.sh +217 -0
  376. package/ds-canonical/hooks/tests/test_inject_deploy_url_after_push.sh +85 -2
  377. package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +116 -11
  378. package/ds-canonical/hooks/tests/test_log_governance_fires.sh +117 -1
  379. package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +74 -5
  380. package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +234 -77
  381. package/ds-canonical/hooks/tests/test_provider_peer_symmetry.sh +76 -0
  382. package/ds-canonical/hooks/tests/test_registration_output_contracts.sh +20 -0
  383. package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +130 -18
  384. package/ds-canonical/hooks/tests/test_stop_audit_content_quality.sh +75 -0
  385. package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +101 -23
  386. package/ds-canonical/hooks/tests/test_stop_extract_canonical_rules.sh +75 -0
  387. package/ds-canonical/hooks/tests/{test_stop_governance_drift_check.sh.broken → test_stop_governance_drift_check.sh} +22 -12
  388. package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +102 -1
  389. package/ds-canonical/hooks/tests/test_stop_repository_command_context.sh +38 -0
  390. package/ds-canonical/hooks/tests/test_stop_self_audit.sh +363 -9
  391. package/ds-canonical/references/README.md +8 -8
  392. package/ds-canonical/references/audit-coverage-vs-24-checklist.md +4 -4
  393. package/ds-canonical/references/build-ui-canonicals.md +3 -3
  394. package/ds-canonical/references/certified-surfaces.md +46 -15
  395. package/ds-canonical/references/cva-patterns.md +2 -2
  396. package/ds-canonical/references/failure-class-registry.json +3 -2
  397. package/ds-canonical/references/governance-audit-coverage.md +8 -8
  398. package/ds-canonical/references/naming-conventions.md +1 -1
  399. package/ds-canonical/references/preflight-gate-baseline.json +210 -3
  400. package/ds-canonical/references/principle-dim-map.json +15 -9
  401. package/ds-canonical/references/props-naming.md +1 -1
  402. package/ds-canonical/references/scenario-definition.md +33 -30
  403. package/ds-canonical/references/spec-rules.md +1 -1
  404. package/ds-canonical/references/ssot-consultation.md +3 -3
  405. package/ds-canonical/references/ssot-index.md +1 -1
  406. package/ds-canonical/references/story-baseline-registry.json +9 -6
  407. package/ds-canonical/references/story-baseline-registry.schema.json +145 -0
  408. package/ds-canonical/references/structural-token-retention.md +1 -1
  409. package/ds-canonical/references/tailwind-gotchas.md +2 -2
  410. package/ds-canonical/references/ui-dev-rules.md +1 -1
  411. package/ds-canonical/rules/README.md +14 -9
  412. package/ds-canonical/rules/meta-patterns.md +13 -13
  413. package/ds-canonical/rules/self-verify.md +12 -7
  414. package/ds-canonical/rules/spec-rules.md +1 -1
  415. package/ds-canonical/rules/ui-development.md +5 -5
  416. package/ds-canonical/skills/README.md +27 -15
  417. package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +14 -7
  418. package/ds-canonical/skills/canonical-reviewer/SKILL.md +29 -0
  419. package/ds-canonical/skills/code-quality-audit/SKILL.md +11 -7
  420. package/ds-canonical/skills/codex-collab/SKILL.md +19 -238
  421. package/ds-canonical/skills/codex-collab/references/brief-template.md +37 -47
  422. package/ds-canonical/skills/codex-collab/references/transport.md +38 -57
  423. package/ds-canonical/skills/codify-corrections/SKILL.md +32 -31
  424. package/ds-canonical/skills/codify-principle/SKILL.md +33 -32
  425. package/ds-canonical/skills/component-quality-gate/SKILL.md +13 -13
  426. package/ds-canonical/skills/component-quality-gate/references/checklist.md +7 -7
  427. package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +28 -229
  428. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +36 -131
  429. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +33 -187
  430. package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +22 -24
  431. package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +15 -79
  432. package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +24 -23
  433. package/ds-canonical/skills/delivery-handoff/SKILL.md +14 -8
  434. package/ds-canonical/skills/design-system-audit/SKILL.md +63 -62
  435. package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +86 -77
  436. package/ds-canonical/skills/design-system-audit/references/checkpoints.md +59 -50
  437. package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +8 -8
  438. package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +37 -32
  439. package/ds-canonical/skills/design-system-audit/references/rule-placement.md +39 -38
  440. package/ds-canonical/skills/ensure-canonical/SKILL.md +36 -34
  441. package/ds-canonical/skills/governance-health/SKILL.md +26 -22
  442. package/ds-canonical/skills/governance-status/SKILL.md +30 -0
  443. package/ds-canonical/skills/independent-review/SKILL.md +37 -0
  444. package/ds-canonical/skills/independent-review/agents/openai.yaml +4 -0
  445. package/ds-canonical/skills/independent-review/references/evidence-contract.md +24 -0
  446. package/ds-canonical/skills/knowledge-prune/SKILL.md +45 -52
  447. package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +10 -7
  448. package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +6 -6
  449. package/ds-canonical/skills/new-component/SKILL.md +18 -12
  450. package/ds-canonical/skills/new-component/references/new-component-checklist.md +7 -6
  451. package/ds-canonical/skills/performance-audit/SKILL.md +13 -10
  452. package/ds-canonical/skills/product-ui-audit/SKILL.md +27 -17
  453. package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +7 -4
  454. package/ds-canonical/skills/product-ui-audit/references/report-template.md +30 -26
  455. package/ds-canonical/skills/propose-options/SKILL.md +1 -1
  456. package/ds-canonical/skills/prototype/SKILL.md +19 -21
  457. package/ds-canonical/skills/prototype/references/audit-checks.md +6 -5
  458. package/ds-canonical/skills/prototype/references/checkpoints.md +26 -17
  459. package/ds-canonical/skills/prototype/references/ooux-template.md +1 -1
  460. package/ds-canonical/skills/prototype/references/proposal-template.md +4 -4
  461. package/ds-canonical/skills/scan-similar-bugs/SKILL.md +22 -21
  462. package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +21 -20
  463. package/ds-canonical/skills/story-writing/SKILL.md +12 -12
  464. package/ds-canonical/skills/story-writing/references/anatomy-standard.md +1 -1
  465. package/ds-canonical/skills/story-writing/references/category-templates.md +5 -5
  466. package/ds-canonical/skills/ux-audit/SKILL.md +12 -9
  467. package/ds-canonical/skills/visual-audit/SKILL.md +41 -47
  468. package/ds-canonical/skills/visual-audit/references/audit-architecture.md +7 -7
  469. package/ds-canonical/skills/visual-audit/references/visual-checklist.md +12 -12
  470. package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +3 -3
  471. package/ds-canonical/templates/_README.md +6 -7
  472. package/ds-canonical/templates/consumer-governance.md +78 -0
  473. package/ds-canonical/templates/dashboard-app.tsx +3 -1
  474. package/ds-canonical/templates/product-launchers/fork-governance-dispatcher.sh +154 -0
  475. package/ds-canonical/templates/product-launchers/format-provider-hook-output.mjs +25 -0
  476. package/ds-canonical/templates/product-launchers/independent-review.mjs +490 -0
  477. package/ds-canonical/templates/product-launchers/inject_fork_governance_preamble.sh +99 -0
  478. package/ds-canonical/templates/product-launchers/normalize-provider-event.mjs +355 -0
  479. package/ds-canonical/templates/product-launchers/product-hook-dispatch-runtime.mjs +1067 -0
  480. package/ds-canonical/templates/product-provider-wiring.json +80 -0
  481. package/ds-canonical/templates/product-provider-wiring.schema.json +151 -0
  482. package/llms-full.txt +6 -6
  483. package/llms.txt +2 -2
  484. package/package.json +15 -4
  485. package/src/tokens/utility-registry.json +119 -4
  486. package/src/tokens/utility-registry.schema.json +373 -0
  487. package/tools/README.md +9 -0
  488. package/tools/codemods/cli.mjs +93 -0
  489. package/tools/codemods/index.mjs +582 -0
  490. package/tools/shared/safe-filesystem.mjs +371 -0
  491. package/tools/visual-baseline/cli.mjs +97 -0
  492. package/tools/visual-baseline/index.mjs +522 -0
  493. /package/dist/{react-day-picker.css → index.css} +0 -0
@@ -1,108 +1,265 @@
1
1
  #!/bin/bash
2
- # Tests for post_edit_dispatcher.sh (orchestrator)
3
- #
4
- # orchestrator smoke test only — lib hook detailed tests are separate.
5
- # Dispatcher fans out stdin to 9 lib/_*.sh helpers (PostToolUse Write|Edit|MultiEdit),
6
- # aggregates their JSON additionalContext, prints ONE JSON output, exit 0 (non-blocking).
7
- #
8
- # Smoke checks:
9
- # (a) bash -n syntax OK
10
- # (b) JSON input → exit 0(non-blocking,no matter helper outcome)
11
- # (c) Empty / malformed stdin → still exit 0
12
- # (d) Helper aggregation:if any helper emits additionalContext, dispatcher includes it
13
- # in stdout JSON;若全 helper silent → dispatcher 也 silent(no stdout)。
14
-
15
- set -u
2
+ # Enforcement-integrity tests for post_edit_dispatcher.sh.
3
+
4
+ set -uo pipefail
16
5
 
17
6
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
18
- HOOK="$SCRIPT_DIR/../post_edit_dispatcher.sh"
7
+ SOURCE="$SCRIPT_DIR/../post_edit_dispatcher.sh"
8
+ FIXTURE=$(mktemp -d)
9
+ trap 'rm -rf -- "$FIXTURE"' EXIT
10
+ mkdir -p "$FIXTURE/lib"
11
+ cp "$SOURCE" "$FIXTURE/post_edit_dispatcher.sh"
19
12
 
20
- if [ ! -f "$HOOK" ]; then echo "FATAL: hook not found: $HOOK"; exit 1; fi
13
+ HELPERS=(
14
+ _token_hygiene.sh
15
+ _hardcoded_strings.sh
16
+ _code_quality.sh
17
+ _layout_space_canonical.sh
18
+ _person_data_richness.sh
19
+ _overlay_handcraft.sh
20
+ _cva_default_sync.sh
21
+ _story_compile_drift.sh
22
+ _governance_coverage_check.sh
23
+ )
21
24
 
22
25
  PASS=0
23
26
  FAIL=0
24
- FAILED_TESTS=""
27
+ VALID_PAYLOAD='{"hook_event_name":"PostToolUse","tool_name":"Write","tool_input":{"file_path":"apps/demo/src/App.tsx","content":"const x = 1"}}'
28
+
29
+ write_helper() {
30
+ local helper="$1"
31
+ local mode="${2:-clean}"
32
+ rm -f "$FIXTURE/lib/$helper"
33
+ case "$mode" in
34
+ clean)
35
+ printf '#!/bin/bash\ncat >/dev/null\nexit 0\n' >"$FIXTURE/lib/$helper"
36
+ ;;
37
+ context-one)
38
+ printf '%s\n' \
39
+ '#!/bin/bash' \
40
+ 'cat >/dev/null' \
41
+ 'printf '\''{"governanceContext":{"hookEventName":"PostToolUse","message":"context one"}}\n'\''' \
42
+ 'exit 0' >"$FIXTURE/lib/$helper"
43
+ ;;
44
+ context-two)
45
+ printf '%s\n' \
46
+ '#!/bin/bash' \
47
+ 'cat >/dev/null' \
48
+ 'printf '\''{"governanceContext":{"hookEventName":"PostToolUse","message":"context two"}}\n'\''' \
49
+ 'exit 0' >"$FIXTURE/lib/$helper"
50
+ ;;
51
+ rc1)
52
+ printf '#!/bin/bash\ncat >/dev/null\nexit 1\n' >"$FIXTURE/lib/$helper"
53
+ ;;
54
+ rc2)
55
+ printf '#!/bin/bash\ncat >/dev/null\nexit 2\n' >"$FIXTURE/lib/$helper"
56
+ ;;
57
+ malformed)
58
+ printf '%s\n' \
59
+ '#!/bin/bash' \
60
+ 'cat >/dev/null' \
61
+ 'printf '\''not-json\n'\''' \
62
+ 'exit 0' >"$FIXTURE/lib/$helper"
63
+ ;;
64
+ wrong-event)
65
+ printf '%s\n' \
66
+ '#!/bin/bash' \
67
+ 'cat >/dev/null' \
68
+ 'printf '\''{"governanceContext":{"hookEventName":"PreToolUse","message":"wrong event"}}\n'\''' \
69
+ 'exit 0' >"$FIXTURE/lib/$helper"
70
+ ;;
71
+ raw-stderr)
72
+ printf '%s\n' \
73
+ '#!/bin/bash' \
74
+ 'cat >/dev/null' \
75
+ 'printf '\''raw diagnostic\n'\'' >&2' \
76
+ 'exit 0' >"$FIXTURE/lib/$helper"
77
+ ;;
78
+ *)
79
+ printf 'unknown helper mode: %s\n' "$mode" >&2
80
+ exit 1
81
+ ;;
82
+ esac
83
+ }
84
+
85
+ reset_helpers() {
86
+ local helper
87
+ for helper in "${HELPERS[@]}"; do
88
+ write_helper "$helper" clean
89
+ done
90
+ }
25
91
 
26
- run_hook_stdin() {
92
+ run_hook() {
27
93
  local payload="$1"
28
- STDOUT=$(mktemp); STDERR=$(mktemp)
29
94
  set +e
30
- printf '%s' "$payload" | bash "$HOOK" >"$STDOUT" 2>"$STDERR"
95
+ printf '%s' "$payload" \
96
+ | bash "$FIXTURE/post_edit_dispatcher.sh" >"$FIXTURE/stdout" 2>"$FIXTURE/stderr"
31
97
  EXIT=$?
32
98
  set -e
33
- STDOUT_TEXT=$(cat "$STDOUT")
34
- STDERR_TEXT=$(cat "$STDERR")
35
- rm -f "$STDOUT" "$STDERR"
36
99
  }
37
100
 
38
- expect_exit0() {
101
+ run_real_hook() {
102
+ local payload="$1"
103
+ set +e
104
+ printf '%s' "$payload" \
105
+ | GOVERNANCE_TELEMETRY_OPT_IN=0 bash "$SOURCE" >"$FIXTURE/stdout" 2>"$FIXTURE/stderr"
106
+ EXIT=$?
107
+ set -e
108
+ }
109
+
110
+ pass() {
111
+ PASS=$((PASS + 1))
112
+ printf ' PASS %s\n' "$1"
113
+ }
114
+
115
+ fail() {
116
+ FAIL=$((FAIL + 1))
117
+ printf ' FAIL %s\n' "$1"
118
+ sed 's/^/ stdout: /' "$FIXTURE/stdout"
119
+ sed 's/^/ stderr: /' "$FIXTURE/stderr"
120
+ }
121
+
122
+ expect_clean() {
39
123
  local name="$1"
40
- if [ "$EXIT" = "0" ]; then
41
- echo " PASS $name"; PASS=$((PASS+1))
124
+ if [ "$EXIT" -eq 0 ] && [ ! -s "$FIXTURE/stdout" ] && [ ! -s "$FIXTURE/stderr" ]; then
125
+ pass "$name"
42
126
  else
43
- echo " FAIL $name (expected exit 0, got $EXIT)"
44
- echo " --- stdout ---"; echo "$STDOUT_TEXT" | sed 's/^/ /'; echo " --- end ---"
45
- echo " --- stderr ---"; echo "$STDERR_TEXT" | sed 's/^/ /'; echo " --- end ---"
46
- FAIL=$((FAIL+1)); FAILED_TESTS="${FAILED_TESTS}\n - $name"
127
+ fail "$name (expected clean exit 0, got $EXIT)"
47
128
  fi
48
129
  }
49
130
 
50
- echo "=== post_edit_dispatcher tests (orchestrator smoke) ==="
131
+ expect_integrity_failure() {
132
+ local name="$1"
133
+ local needle="$2"
134
+ if [ "$EXIT" -eq 70 ] \
135
+ && [ ! -s "$FIXTURE/stdout" ] \
136
+ && grep -qF 'GOVERNANCE_INTEGRITY:' "$FIXTURE/stderr" \
137
+ && grep -qF "$needle" "$FIXTURE/stderr"; then
138
+ pass "$name"
139
+ else
140
+ fail "$name (expected stderr-only integrity exit 70 containing '$needle', got $EXIT)"
141
+ fi
142
+ }
51
143
 
52
- # 1. bash -n syntax check
53
- set +e
54
- bash -n "$HOOK" 2>/dev/null
55
- SYNTAX=$?
56
144
  set -e
57
- if [ "$SYNTAX" = "0" ]; then
58
- echo " PASS 1. bash -n syntax OK"; PASS=$((PASS+1))
145
+ printf '%s\n' '=== post_edit_dispatcher enforcement-integrity tests ==='
146
+
147
+ reset_helpers
148
+ run_hook "$VALID_PAYLOAD"
149
+ expect_clean 'all required helpers clean'
150
+
151
+ write_helper "_token_hygiene.sh" context-one
152
+ write_helper "_code_quality.sh" context-two
153
+ run_hook "$VALID_PAYLOAD"
154
+ if [ "$EXIT" -eq 0 ] \
155
+ && [ ! -s "$FIXTURE/stderr" ] \
156
+ && jq -e '
157
+ keys == ["governanceContext"]
158
+ and .governanceContext.hookEventName == "PostToolUse"
159
+ and (.governanceContext.message | contains("context one") and contains("context two"))
160
+ ' "$FIXTURE/stdout" >/dev/null 2>&1; then
161
+ pass 'valid helper contexts aggregate into one exact PostToolUse envelope'
59
162
  else
60
- echo " FAIL 1. bash -n syntax check"
61
- FAIL=$((FAIL+1)); FAILED_TESTS="${FAILED_TESTS}\n - 1. syntax"
163
+ fail "valid helper context aggregation (got exit $EXIT)"
62
164
  fi
63
165
 
64
- # 2. Valid JSON input (out-of-scope file) → exit 0
65
- PAYLOAD=$(jq -n '{tool_name: "Write", tool_input: {file_path: "/tmp/out-of-scope.txt", content: "noop"}}')
66
- run_hook_stdin "$PAYLOAD"
67
- expect_exit0 "2. valid JSON input → exit 0"
166
+ reset_helpers
167
+ rm -f "$FIXTURE/lib/_story_compile_drift.sh"
168
+ run_hook "$VALID_PAYLOAD"
169
+ expect_integrity_failure 'missing required helper fails closed' 'required helper'
68
170
 
69
- # 3. Empty stdin → exit 0 (dispatcher reads `cat 2>/dev/null || echo "{}"`)
70
- run_hook_stdin ""
71
- expect_exit0 "3. empty stdin → exit 0"
171
+ reset_helpers
172
+ printf '#!/bin/bash\ncat >/dev/null\nexit 0\n' >"$FIXTURE/clean-target.sh"
173
+ rm -f "$FIXTURE/lib/_story_compile_drift.sh"
174
+ ln -s "$FIXTURE/clean-target.sh" "$FIXTURE/lib/_story_compile_drift.sh"
175
+ run_hook "$VALID_PAYLOAD"
176
+ expect_integrity_failure 'symlink helper replacement fails closed' 'symlink'
72
177
 
73
- # 4. Malformed JSON → still exit 0 (helpers handle their own jq errors silently)
74
- run_hook_stdin "not-valid-json{{{"
75
- expect_exit0 "4. malformed JSON stdin → exit 0"
178
+ reset_helpers
179
+ write_helper "_hardcoded_strings.sh" rc1
180
+ run_hook "$VALID_PAYLOAD"
181
+ expect_integrity_failure 'helper exit 1 fails closed' 'exit code 1'
76
182
 
77
- # 5. tsx file path (in-scope for some helpers) → exit 0, may emit JSON to stdout
78
- PAYLOAD_TSX=$(jq -n '{tool_name: "Edit", tool_input: {file_path: "/tmp/foo.tsx", new_string: "const x = 1;"}}')
79
- run_hook_stdin "$PAYLOAD_TSX"
80
- expect_exit0 "5. tsx Edit payload → exit 0 (non-blocking)"
183
+ reset_helpers
184
+ write_helper "_hardcoded_strings.sh" rc2
185
+ run_hook "$VALID_PAYLOAD"
186
+ expect_integrity_failure 'advisory helper exit 2 is integrity failure' 'exit code 2'
81
187
 
82
- # 6. If stdout non-empty, must be valid JSON with hookSpecificOutput
83
- # (only assert when stdout is non-empty — many tsx inputs may yield no warnings)
84
- if [ -n "$STDOUT_TEXT" ]; then
85
- set +e
86
- echo "$STDOUT_TEXT" | jq -e '.hookSpecificOutput.additionalContext' >/dev/null 2>&1
87
- JSON_OK=$?
88
- set -e
89
- if [ "$JSON_OK" = "0" ]; then
90
- echo " PASS 6. when stdout non-empty, valid JSON with hookSpecificOutput"
91
- PASS=$((PASS+1))
92
- else
93
- echo " FAIL 6. stdout was non-empty but not valid hookSpecificOutput JSON"
94
- echo " --- stdout ---"; echo "$STDOUT_TEXT" | sed 's/^/ /'; echo " --- end ---"
95
- FAIL=$((FAIL+1)); FAILED_TESTS="${FAILED_TESTS}\n - 6. stdout JSON shape"
96
- fi
188
+ reset_helpers
189
+ write_helper "_layout_space_canonical.sh" malformed
190
+ run_hook "$VALID_PAYLOAD"
191
+ expect_integrity_failure 'malformed helper stdout fails closed' 'malformed or wrong-event envelope'
192
+
193
+ reset_helpers
194
+ write_helper "_layout_space_canonical.sh" wrong-event
195
+ run_hook "$VALID_PAYLOAD"
196
+ expect_integrity_failure 'wrong-event helper context fails closed' 'malformed or wrong-event envelope'
197
+
198
+ reset_helpers
199
+ write_helper "_person_data_richness.sh" raw-stderr
200
+ run_hook "$VALID_PAYLOAD"
201
+ expect_integrity_failure 'raw helper stderr fails closed' 'raw stderr'
202
+
203
+ reset_helpers
204
+ run_hook 'not-json'
205
+ expect_integrity_failure 'malformed canonical input fails closed' 'malformed or wrong-event canonical envelope'
206
+
207
+ run_hook '{"hook_event_name":"PreToolUse","tool_name":"Write","tool_input":{"file_path":"apps/demo/src/App.tsx"}}'
208
+ expect_integrity_failure 'misrouted event input fails closed' 'malformed or wrong-event canonical envelope'
209
+
210
+ # Exercise the real dispatcher and all nine real helpers with both a >256 KiB
211
+ # canonical event and a file containing far more matches than every diagnostic
212
+ # cap. This guards against producer -> early-closing grep/head pipelines
213
+ # surfacing EPIPE as a false helper-integrity failure.
214
+ REAL_COMPONENT_DIR="$FIXTURE/workspace/packages/design-system/src/components/SigpipeFixture"
215
+ REAL_COMPONENT="$REAL_COMPONENT_DIR/sigpipe-fixture.tsx"
216
+ mkdir -p "$REAL_COMPONENT_DIR"
217
+ {
218
+ printf '%s\n' \
219
+ 'import { cva } from "class-variance-authority";' \
220
+ 'const variants = cva("", { variants: { size: { md: "" } }, defaultVariants: { size: "md" } });'
221
+ fixture_index=0
222
+ while [ "$fixture_index" -lt 1200 ]; do
223
+ printf 'const unsafeAny%s: any = null;\n' "$fixture_index"
224
+ printf 'const hardcodedLabel%s = "這是使用者介面文字";\n' "$fixture_index"
225
+ printf '<div className="bg-popover shadow-lg bg-neutral-3 overflow-auto w-[--fixture-width]">row</div>;\n'
226
+ printf '<div className="px-[var(--layout-space-loose)] border-b border-divider">overlay</div>;\n'
227
+ printf 'const sparsePerson%s = { name: "Person", avatarUrl: "/avatar.png" };\n' "$fixture_index"
228
+ fixture_index=$((fixture_index + 1))
229
+ done
230
+ } >"$REAL_COMPONENT"
231
+
232
+ REAL_PAYLOAD=$(
233
+ jq -Rs --arg path "$REAL_COMPONENT" '{
234
+ hook_event_name: "PostToolUse",
235
+ tool_name: "Write",
236
+ tool_input: {
237
+ file_path: $path,
238
+ content: .
239
+ }
240
+ }' <"$REAL_COMPONENT"
241
+ )
242
+
243
+ run_real_hook "$REAL_PAYLOAD"
244
+ if [ "$(wc -c <"$REAL_COMPONENT" | tr -d ' ')" -gt 262144 ] \
245
+ && [ "$EXIT" -eq 0 ] \
246
+ && [ ! -s "$FIXTURE/stderr" ] \
247
+ && jq -e '
248
+ keys == ["governanceContext"]
249
+ and .governanceContext.hookEventName == "PostToolUse"
250
+ and (
251
+ .governanceContext.message
252
+ | contains("Token hygiene")
253
+ and contains("i18n hygiene")
254
+ and contains("Code quality lite")
255
+ and contains("Primitive consumption")
256
+ and contains("cva/defaultVariants touched")
257
+ )
258
+ ' "$FIXTURE/stdout" >/dev/null 2>&1; then
259
+ pass 'real dispatcher handles >256 KiB event and high-match helper scans without EPIPE/integrity noise'
97
260
  else
98
- echo " PASS 6. stdout silent (all helpers in-scope returned empty) — JSON shape n/a"
99
- PASS=$((PASS+1))
261
+ fail "real dispatcher large-input/high-match regression (got exit $EXIT)"
100
262
  fi
101
263
 
102
- echo ""
103
- echo "=== Summary ==="
104
- echo "Passed: $PASS / $((PASS + FAIL))"
105
- if [ "$FAIL" -gt 0 ]; then
106
- echo "Failed:$FAILED_TESTS"
107
- exit 1
108
- fi
264
+ printf 'Passed: %s / %s\n' "$PASS" "$((PASS + FAIL))"
265
+ [ "$FAIL" -eq 0 ]
@@ -0,0 +1,76 @@
1
+ #!/bin/bash
2
+ # Provider-neutral behavioral matrix for the legacy-named peer hooks.
3
+ set -uo pipefail
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ BRIEF_HOOK="$SCRIPT_DIR/../check_codex_brief_invariants.sh"
7
+ COLLAB_HOOK="$SCRIPT_DIR/../check_codex_collab_5step.sh"
8
+ STOP_HOOK="$SCRIPT_DIR/../stop_self_audit.sh"
9
+ TMP_ROOT=$(mktemp -d)
10
+ trap 'rm -rf "$TMP_ROOT"' EXIT
11
+ mkdir -p "$TMP_ROOT/project/state"
12
+
13
+ PASS=0
14
+ FAIL=0
15
+
16
+ set_pair() {
17
+ export GOVERNANCE_PROJECT_DIR="$TMP_ROOT/project"
18
+ export GOVERNANCE_STATE_DIR="$TMP_ROOT/project/state"
19
+ export GOVERNANCE_READ_ONLY=1
20
+ export GOVERNANCE_SELF_PROVIDER="$1"
21
+ export GOVERNANCE_SELF_DISPLAY_NAME="$1"
22
+ export GOVERNANCE_PEER_PROVIDER="$2"
23
+ export GOVERNANCE_PEER_DISPLAY_NAME="$2"
24
+ export GOVERNANCE_PEER_CLI="$2"
25
+ export GOVERNANCE_PEER_LOCAL_EXECUTABLE="node_modules/.bin/$2"
26
+ export GOVERNANCE_PEER_BRIEF_MARKERS_JSON='["review"]'
27
+ export GOVERNANCE_PEER_DISCOVERY_MARKERS_JSON="[\"node_modules/.bin/$2\",\"command -v $2\"]"
28
+ export GOVERNANCE_PEER_REPLY_ARTIFACT_PREFIX="$2-reply"
29
+ export GOVERNANCE_INSTRUCTION_ENTRY=AGENTS.md
30
+ export GOVERNANCE_SHARED_INSTRUCTION_ENTRY=AGENTS.md
31
+ }
32
+
33
+ record() {
34
+ if [ "$1" = "1" ]; then
35
+ echo " PASS $2"
36
+ PASS=$((PASS + 1))
37
+ else
38
+ echo " FAIL $2"
39
+ FAIL=$((FAIL + 1))
40
+ fi
41
+ }
42
+
43
+ for pair in "alpha beta" "beta alpha"; do
44
+ set -- $pair
45
+ self="$1"; peer="$2"
46
+ set_pair "$self" "$peer"
47
+
48
+ payload=$(jq -nc --arg cmd "$peer review trivial" '{hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:$cmd}}')
49
+ printf '%s' "$payload" | bash "$BRIEF_HOOK" >/dev/null 2>"$TMP_ROOT/brief.err"
50
+ rc=$?
51
+ record "$([ "$rc" = "2" ] && grep -q 'PEER BRIEF MISSING' "$TMP_ROOT/brief.err" && echo 1 || echo 0)" "${self}→${peer} peer brief is governed"
52
+
53
+ payload=$(jq -nc --arg cmd "$self review trivial" '{hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:$cmd}}')
54
+ printf '%s' "$payload" | bash "$BRIEF_HOOK" >/dev/null 2>"$TMP_ROOT/self.err"
55
+ rc=$?
56
+ record "$([ "$rc" = "0" ] && [ ! -s "$TMP_ROOT/self.err" ] && echo 1 || echo 0)" "${self}→${peer} self CLI is not inverted into peer gate"
57
+
58
+ payload=$(jq -nc --arg cmd "git commit -m '$peer collab'" '{hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:$cmd}}')
59
+ printf '%s' "$payload" | bash "$COLLAB_HOOK" >/dev/null 2>"$TMP_ROOT/collab.err"
60
+ rc=$?
61
+ record "$([ "$rc" = "0" ] && grep -q "self=$self,peer=$peer" "$TMP_ROOT/collab.err" && echo 1 || echo 0)" "${self}→${peer} collaboration marker is dynamic"
62
+
63
+ transcript="$TMP_ROOT/$self-$peer.jsonl"
64
+ printf '%s\n' \
65
+ '{"type":"user","message":{"role":"user","content":"review this"}}' \
66
+ "{\"type\":\"assistant\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"name\":\"Read\",\"input\":{\"file_path\":\"$peer-reply-review.md\"}}]}}" \
67
+ '{"type":"assistant","message":{"role":"assistant","content":[{"type":"text","text":"review received"}]}}' \
68
+ > "$transcript"
69
+ payload=$(jq -nc --arg transcript "$transcript" '{hook_event_name:"Stop",transcript_path:$transcript,session_id:"symmetry"}')
70
+ output=$(printf '%s' "$payload" | bash "$STOP_HOOK" 2>/dev/null)
71
+ rc=$?
72
+ record "$([ "$rc" = "0" ] && printf '%s' "$output" | grep -q '"governanceDecision":"block"' && echo 1 || echo 0)" "${self}→${peer} peer reply audit emits neutral Stop decision"
73
+ done
74
+
75
+ echo "Results: $PASS PASS, $FAIL FAIL"
76
+ [ "$FAIL" = "0" ]
@@ -0,0 +1,20 @@
1
+ #!/bin/bash
2
+ # Registration-derived static output-contract audit.
3
+ #
4
+ # This test deliberately reads registrations.json and its schema instead of maintaining a second
5
+ # descriptor inventory. Targeted runtime branches live in each hook's focused behavior test.
6
+
7
+ set -u
8
+
9
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
+ HOOK_ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
11
+ REGISTRY="$HOOK_ROOT/registrations.json"
12
+ SCHEMA="$HOOK_ROOT/registrations.schema.json"
13
+
14
+ command -v node >/dev/null 2>&1 || {
15
+ echo "FATAL: node is required for registration output-contract tests"
16
+ exit 1
17
+ }
18
+
19
+ node -- "$SCRIPT_DIR/registration-output-contracts.mjs" \
20
+ "$REGISTRY" "$SCHEMA" "$HOOK_ROOT"