@qijenchen/design-system 0.1.0-beta.8 โ†’ 0.1.0-beta.80

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 (1356) hide show
  1. package/CLAUDE.md +200 -0
  2. package/README.md +10 -9
  3. package/cli-init.mjs +90 -0
  4. package/dist/components/Accordion/accordion.d.ts +1 -1
  5. package/dist/components/Accordion/accordion.d.ts.map +1 -1
  6. package/dist/components/Accordion/accordion.js +4 -1
  7. package/dist/components/Accordion/accordion.js.map +1 -1
  8. package/dist/components/Accordion/index.d.ts +2 -0
  9. package/dist/components/Accordion/index.d.ts.map +1 -0
  10. package/dist/components/Accordion/index.js +9 -0
  11. package/dist/components/Accordion/index.js.map +1 -0
  12. package/dist/components/Alert/alert.d.ts +2 -2
  13. package/dist/components/Alert/alert.d.ts.map +1 -1
  14. package/dist/components/Alert/alert.js +8 -7
  15. package/dist/components/Alert/alert.js.map +1 -1
  16. package/dist/components/Alert/index.d.ts +2 -0
  17. package/dist/components/Alert/index.d.ts.map +1 -0
  18. package/dist/components/Alert/index.js +7 -0
  19. package/dist/components/Alert/index.js.map +1 -0
  20. package/dist/components/AppShell/_demo-helpers.d.ts +3 -1
  21. package/dist/components/AppShell/_demo-helpers.d.ts.map +1 -1
  22. package/dist/components/AppShell/app-shell.d.ts +2 -2
  23. package/dist/components/AppShell/app-shell.d.ts.map +1 -1
  24. package/dist/components/AppShell/app-shell.js +9 -8
  25. package/dist/components/AppShell/app-shell.js.map +1 -1
  26. package/dist/components/AppShell/index.d.ts +2 -0
  27. package/dist/components/AppShell/index.d.ts.map +1 -0
  28. package/dist/components/AppShell/index.js +7 -0
  29. package/dist/components/AppShell/index.js.map +1 -0
  30. package/dist/components/AspectRatio/aspect-ratio.d.ts +1 -1
  31. package/dist/components/AspectRatio/aspect-ratio.d.ts.map +1 -1
  32. package/dist/components/AspectRatio/aspect-ratio.js +4 -2
  33. package/dist/components/AspectRatio/aspect-ratio.js.map +1 -1
  34. package/dist/components/AspectRatio/index.d.ts +2 -0
  35. package/dist/components/AspectRatio/index.d.ts.map +1 -0
  36. package/dist/components/AspectRatio/index.js +6 -0
  37. package/dist/components/AspectRatio/index.js.map +1 -0
  38. package/dist/components/Avatar/avatar.d.ts +12 -6
  39. package/dist/components/Avatar/avatar.d.ts.map +1 -1
  40. package/dist/components/Avatar/avatar.js +12 -23
  41. package/dist/components/Avatar/avatar.js.map +1 -1
  42. package/dist/components/Avatar/index.d.ts +2 -0
  43. package/dist/components/Avatar/index.d.ts.map +1 -0
  44. package/dist/components/Avatar/index.js +6 -0
  45. package/dist/components/Avatar/index.js.map +1 -0
  46. package/dist/components/Badge/badge.d.ts +20 -8
  47. package/dist/components/Badge/badge.d.ts.map +1 -1
  48. package/dist/components/Badge/badge.js +7 -5
  49. package/dist/components/Badge/badge.js.map +1 -1
  50. package/dist/components/Badge/index.d.ts +2 -0
  51. package/dist/components/Badge/index.d.ts.map +1 -0
  52. package/dist/components/Badge/index.js +7 -0
  53. package/dist/components/Badge/index.js.map +1 -0
  54. package/dist/components/Breadcrumb/breadcrumb.d.ts +1 -1
  55. package/dist/components/Breadcrumb/breadcrumb.js.map +1 -1
  56. package/dist/components/Breadcrumb/index.d.ts +2 -0
  57. package/dist/components/Breadcrumb/index.d.ts.map +1 -0
  58. package/dist/components/Breadcrumb/index.js +12 -0
  59. package/dist/components/Breadcrumb/index.js.map +1 -0
  60. package/dist/components/BulkActionBar/bulk-action-bar.d.ts +2 -2
  61. package/dist/components/BulkActionBar/bulk-action-bar.d.ts.map +1 -1
  62. package/dist/components/BulkActionBar/bulk-action-bar.js +3 -3
  63. package/dist/components/BulkActionBar/bulk-action-bar.js.map +1 -1
  64. package/dist/components/BulkActionBar/index.d.ts +2 -0
  65. package/dist/components/BulkActionBar/index.d.ts.map +1 -0
  66. package/dist/components/BulkActionBar/index.js +7 -0
  67. package/dist/components/BulkActionBar/index.js.map +1 -0
  68. package/dist/components/Button/button.d.ts +7 -7
  69. package/dist/components/Button/button.d.ts.map +1 -1
  70. package/dist/components/Button/button.js +13 -10
  71. package/dist/components/Button/button.js.map +1 -1
  72. package/dist/components/Button/index.d.ts +2 -0
  73. package/dist/components/Button/index.d.ts.map +1 -0
  74. package/dist/components/Button/index.js +8 -0
  75. package/dist/components/Button/index.js.map +1 -0
  76. package/dist/components/Calendar/calendar.d.ts +9 -5
  77. package/dist/components/Calendar/calendar.d.ts.map +1 -1
  78. package/dist/components/Calendar/calendar.js +88 -76
  79. package/dist/components/Calendar/calendar.js.map +1 -1
  80. package/dist/components/Calendar/index.d.ts +2 -0
  81. package/dist/components/Calendar/index.d.ts.map +1 -0
  82. package/dist/components/Calendar/index.js +6 -0
  83. package/dist/components/Calendar/index.js.map +1 -0
  84. package/dist/components/Carousel/carousel.d.ts.map +1 -1
  85. package/dist/components/Carousel/carousel.js +11 -6
  86. package/dist/components/Carousel/carousel.js.map +1 -1
  87. package/dist/components/Carousel/index.d.ts +2 -0
  88. package/dist/components/Carousel/index.d.ts.map +1 -0
  89. package/dist/components/Carousel/index.js +11 -0
  90. package/dist/components/Carousel/index.js.map +1 -0
  91. package/dist/components/Chart/chart.d.ts +2 -2
  92. package/dist/components/Chart/chart.d.ts.map +1 -1
  93. package/dist/components/Chart/chart.js +3 -1
  94. package/dist/components/Chart/chart.js.map +1 -1
  95. package/dist/components/Chart/index.d.ts +2 -0
  96. package/dist/components/Chart/index.d.ts.map +1 -0
  97. package/dist/components/Chart/index.js +11 -0
  98. package/dist/components/Chart/index.js.map +1 -0
  99. package/dist/components/Checkbox/checkbox-group.d.ts +2 -1
  100. package/dist/components/Checkbox/checkbox-group.d.ts.map +1 -1
  101. package/dist/components/Checkbox/checkbox-group.js.map +1 -1
  102. package/dist/components/Checkbox/checkbox.d.ts +13 -7
  103. package/dist/components/Checkbox/checkbox.d.ts.map +1 -1
  104. package/dist/components/Checkbox/checkbox.js +49 -15
  105. package/dist/components/Checkbox/checkbox.js.map +1 -1
  106. package/dist/components/Checkbox/index.d.ts +2 -0
  107. package/dist/components/Checkbox/index.d.ts.map +1 -0
  108. package/dist/components/Checkbox/index.js +7 -0
  109. package/dist/components/Checkbox/index.js.map +1 -0
  110. package/dist/components/Chip/chip.d.ts +6 -6
  111. package/dist/components/Chip/chip.js +4 -3
  112. package/dist/components/Chip/chip.js.map +1 -1
  113. package/dist/components/Chip/index.d.ts +2 -0
  114. package/dist/components/Chip/index.d.ts.map +1 -0
  115. package/dist/components/Chip/index.js +8 -0
  116. package/dist/components/Chip/index.js.map +1 -0
  117. package/dist/components/CircularProgress/circular-progress.d.ts +2 -3
  118. package/dist/components/CircularProgress/circular-progress.d.ts.map +1 -1
  119. package/dist/components/CircularProgress/circular-progress.js +4 -3
  120. package/dist/components/CircularProgress/circular-progress.js.map +1 -1
  121. package/dist/components/CircularProgress/index.d.ts +2 -0
  122. package/dist/components/CircularProgress/index.d.ts.map +1 -0
  123. package/dist/components/CircularProgress/index.js +6 -0
  124. package/dist/components/CircularProgress/index.js.map +1 -0
  125. package/dist/components/Coachmark/coachmark-story-helpers.d.ts +22 -0
  126. package/dist/components/Coachmark/coachmark-story-helpers.d.ts.map +1 -0
  127. package/dist/components/Coachmark/coachmark.d.ts +4 -4
  128. package/dist/components/Coachmark/coachmark.d.ts.map +1 -1
  129. package/dist/components/Coachmark/coachmark.js +9 -4
  130. package/dist/components/Coachmark/coachmark.js.map +1 -1
  131. package/dist/components/Coachmark/index.d.ts +2 -0
  132. package/dist/components/Coachmark/index.d.ts.map +1 -0
  133. package/dist/components/Coachmark/index.js +6 -0
  134. package/dist/components/Coachmark/index.js.map +1 -0
  135. package/dist/components/Combobox/combobox.d.ts +16 -7
  136. package/dist/components/Combobox/combobox.d.ts.map +1 -1
  137. package/dist/components/Combobox/combobox.js +74 -39
  138. package/dist/components/Combobox/combobox.js.map +1 -1
  139. package/dist/components/Combobox/index.d.ts +2 -0
  140. package/dist/components/Combobox/index.d.ts.map +1 -0
  141. package/dist/components/Combobox/index.js +6 -0
  142. package/dist/components/Combobox/index.js.map +1 -0
  143. package/dist/components/Command/command.d.ts +5 -1
  144. package/dist/components/Command/command.d.ts.map +1 -1
  145. package/dist/components/Command/command.js +6 -6
  146. package/dist/components/Command/command.js.map +1 -1
  147. package/dist/components/Command/index.d.ts +2 -0
  148. package/dist/components/Command/index.d.ts.map +1 -0
  149. package/dist/components/Command/index.js +14 -0
  150. package/dist/components/Command/index.js.map +1 -0
  151. package/dist/components/DataTable/cell-registry.d.ts.map +1 -1
  152. package/dist/components/DataTable/cell-registry.js +6 -5
  153. package/dist/components/DataTable/cell-registry.js.map +1 -1
  154. package/dist/components/DataTable/data-table.d.ts +29 -8
  155. package/dist/components/DataTable/data-table.d.ts.map +1 -1
  156. package/dist/components/DataTable/data-table.js +69 -39
  157. package/dist/components/DataTable/data-table.js.map +1 -1
  158. package/dist/components/DataTable/filter-operators.d.ts +1 -1
  159. package/dist/components/DataTable/filter-tree.d.ts +1 -1
  160. package/dist/components/DataTable/index.d.ts +2 -0
  161. package/dist/components/DataTable/index.d.ts.map +1 -0
  162. package/dist/components/DataTable/index.js +8 -0
  163. package/dist/components/DataTable/index.js.map +1 -0
  164. package/dist/components/DateGrid/date-grid.d.ts +21 -17
  165. package/dist/components/DateGrid/date-grid.d.ts.map +1 -1
  166. package/dist/components/DateGrid/date-grid.js +2 -2
  167. package/dist/components/DateGrid/date-grid.js.map +1 -1
  168. package/dist/components/DateGrid/index.d.ts +2 -0
  169. package/dist/components/DateGrid/index.d.ts.map +1 -0
  170. package/dist/components/DateGrid/index.js +6 -0
  171. package/dist/components/DateGrid/index.js.map +1 -0
  172. package/dist/components/DatePicker/date-picker.d.ts.map +1 -1
  173. package/dist/components/DatePicker/date-picker.js +29 -18
  174. package/dist/components/DatePicker/date-picker.js.map +1 -1
  175. package/dist/components/DatePicker/index.d.ts +2 -0
  176. package/dist/components/DatePicker/index.d.ts.map +1 -0
  177. package/dist/components/DatePicker/index.js +8 -0
  178. package/dist/components/DatePicker/index.js.map +1 -0
  179. package/dist/components/DescriptionList/description-list.d.ts +3 -3
  180. package/dist/components/DescriptionList/description-list.js +4 -3
  181. package/dist/components/DescriptionList/description-list.js.map +1 -1
  182. package/dist/components/DescriptionList/index.d.ts +2 -0
  183. package/dist/components/DescriptionList/index.d.ts.map +1 -0
  184. package/dist/components/DescriptionList/index.js +7 -0
  185. package/dist/components/DescriptionList/index.js.map +1 -0
  186. package/dist/components/Dialog/dialog.d.ts.map +1 -1
  187. package/dist/components/Dialog/dialog.js.map +1 -1
  188. package/dist/components/Dialog/index.d.ts +2 -0
  189. package/dist/components/Dialog/index.d.ts.map +1 -0
  190. package/dist/components/Dialog/index.js +16 -0
  191. package/dist/components/Dialog/index.js.map +1 -0
  192. package/dist/components/DropdownMenu/dropdown-menu.d.ts +3 -2
  193. package/dist/components/DropdownMenu/dropdown-menu.d.ts.map +1 -1
  194. package/dist/components/DropdownMenu/dropdown-menu.js +3 -4
  195. package/dist/components/DropdownMenu/dropdown-menu.js.map +1 -1
  196. package/dist/components/DropdownMenu/index.d.ts +2 -0
  197. package/dist/components/DropdownMenu/index.d.ts.map +1 -0
  198. package/dist/components/DropdownMenu/index.js +21 -0
  199. package/dist/components/DropdownMenu/index.js.map +1 -0
  200. package/dist/components/Empty/empty.d.ts +11 -3
  201. package/dist/components/Empty/empty.d.ts.map +1 -1
  202. package/dist/components/Empty/empty.js +6 -6
  203. package/dist/components/Empty/empty.js.map +1 -1
  204. package/dist/components/Empty/index.d.ts +2 -0
  205. package/dist/components/Empty/index.d.ts.map +1 -0
  206. package/dist/components/Empty/index.js +6 -0
  207. package/dist/components/Empty/index.js.map +1 -0
  208. package/dist/components/Field/field-context.d.ts +49 -0
  209. package/dist/components/Field/field-context.d.ts.map +1 -1
  210. package/dist/components/Field/field-context.js +42 -0
  211. package/dist/components/Field/field-context.js.map +1 -1
  212. package/dist/components/Field/field-types.js.map +1 -1
  213. package/dist/components/Field/field-wrapper.js +5 -5
  214. package/dist/components/Field/field-wrapper.js.map +1 -1
  215. package/dist/components/Field/field.d.ts +4 -2
  216. package/dist/components/Field/field.d.ts.map +1 -1
  217. package/dist/components/Field/field.js +1 -0
  218. package/dist/components/Field/field.js.map +1 -1
  219. package/dist/components/Field/index.d.ts +2 -0
  220. package/dist/components/Field/index.d.ts.map +1 -0
  221. package/dist/components/Field/index.js +12 -0
  222. package/dist/components/Field/index.js.map +1 -0
  223. package/dist/components/Field/use-form-validation.d.ts +88 -0
  224. package/dist/components/Field/use-form-validation.d.ts.map +1 -0
  225. package/dist/components/Field/use-form-validation.js +127 -0
  226. package/dist/components/Field/use-form-validation.js.map +1 -0
  227. package/dist/components/FieldControlGroup/field-control-group.d.ts +5 -5
  228. package/dist/components/FieldControlGroup/field-control-group.d.ts.map +1 -1
  229. package/dist/components/FieldControlGroup/field-control-group.js +1 -1
  230. package/dist/components/FieldControlGroup/field-control-group.js.map +1 -1
  231. package/dist/components/FieldControlGroup/index.d.ts +2 -0
  232. package/dist/components/FieldControlGroup/index.d.ts.map +1 -0
  233. package/dist/components/FieldControlGroup/index.js +6 -0
  234. package/dist/components/FieldControlGroup/index.js.map +1 -0
  235. package/dist/components/FileItem/file-item.d.ts +12 -2
  236. package/dist/components/FileItem/file-item.d.ts.map +1 -1
  237. package/dist/components/FileItem/file-item.js +20 -6
  238. package/dist/components/FileItem/file-item.js.map +1 -1
  239. package/dist/components/FileItem/index.d.ts +2 -0
  240. package/dist/components/FileItem/index.d.ts.map +1 -0
  241. package/dist/components/FileItem/index.js +6 -0
  242. package/dist/components/FileItem/index.js.map +1 -0
  243. package/dist/components/FileUpload/file-upload.d.ts +32 -13
  244. package/dist/components/FileUpload/file-upload.d.ts.map +1 -1
  245. package/dist/components/FileUpload/file-upload.js +62 -18
  246. package/dist/components/FileUpload/file-upload.js.map +1 -1
  247. package/dist/components/FileUpload/index.d.ts +2 -0
  248. package/dist/components/FileUpload/index.d.ts.map +1 -0
  249. package/dist/components/FileUpload/index.js +6 -0
  250. package/dist/components/FileUpload/index.js.map +1 -0
  251. package/dist/components/FileViewer/file-viewer.d.ts +2 -2
  252. package/dist/components/FileViewer/file-viewer.d.ts.map +1 -1
  253. package/dist/components/FileViewer/file-viewer.js +28 -19
  254. package/dist/components/FileViewer/file-viewer.js.map +1 -1
  255. package/dist/components/FileViewer/index.d.ts +2 -0
  256. package/dist/components/FileViewer/index.d.ts.map +1 -0
  257. package/dist/components/FileViewer/index.js +7 -0
  258. package/dist/components/FileViewer/index.js.map +1 -0
  259. package/dist/components/HoverCard/hover-card.d.ts +7 -3
  260. package/dist/components/HoverCard/hover-card.d.ts.map +1 -1
  261. package/dist/components/HoverCard/hover-card.js +4 -3
  262. package/dist/components/HoverCard/hover-card.js.map +1 -1
  263. package/dist/components/HoverCard/index.d.ts +2 -0
  264. package/dist/components/HoverCard/index.d.ts.map +1 -0
  265. package/dist/components/HoverCard/index.js +8 -0
  266. package/dist/components/HoverCard/index.js.map +1 -0
  267. package/dist/components/Input/index.d.ts +2 -0
  268. package/dist/components/Input/index.d.ts.map +1 -0
  269. package/dist/components/Input/index.js +6 -0
  270. package/dist/components/Input/index.js.map +1 -0
  271. package/dist/components/Input/input.d.ts +5 -2
  272. package/dist/components/Input/input.d.ts.map +1 -1
  273. package/dist/components/Input/input.js +10 -8
  274. package/dist/components/Input/input.js.map +1 -1
  275. package/dist/components/LinkInput/index.d.ts +2 -0
  276. package/dist/components/LinkInput/index.d.ts.map +1 -0
  277. package/dist/components/LinkInput/index.js +6 -0
  278. package/dist/components/LinkInput/index.js.map +1 -0
  279. package/dist/components/LinkInput/link-input.d.ts.map +1 -1
  280. package/dist/components/LinkInput/link-input.js +8 -8
  281. package/dist/components/LinkInput/link-input.js.map +1 -1
  282. package/dist/components/Menu/index.d.ts +2 -0
  283. package/dist/components/Menu/index.d.ts.map +1 -0
  284. package/dist/components/Menu/index.js +9 -0
  285. package/dist/components/Menu/index.js.map +1 -0
  286. package/dist/components/Menu/menu-item.d.ts +6 -2
  287. package/dist/components/Menu/menu-item.d.ts.map +1 -1
  288. package/dist/components/Menu/menu-item.js +2 -1
  289. package/dist/components/Menu/menu-item.js.map +1 -1
  290. package/dist/components/Notice/index.d.ts +2 -0
  291. package/dist/components/Notice/index.d.ts.map +1 -0
  292. package/dist/components/Notice/index.js +8 -0
  293. package/dist/components/Notice/index.js.map +1 -0
  294. package/dist/components/Notice/notice.d.ts +13 -6
  295. package/dist/components/Notice/notice.d.ts.map +1 -1
  296. package/dist/components/Notice/notice.js +16 -6
  297. package/dist/components/Notice/notice.js.map +1 -1
  298. package/dist/components/NumberInput/index.d.ts +2 -0
  299. package/dist/components/NumberInput/index.d.ts.map +1 -0
  300. package/dist/components/NumberInput/index.js +7 -0
  301. package/dist/components/NumberInput/index.js.map +1 -0
  302. package/dist/components/NumberInput/number-input.d.ts.map +1 -1
  303. package/dist/components/NumberInput/number-input.js +8 -7
  304. package/dist/components/NumberInput/number-input.js.map +1 -1
  305. package/dist/components/OverflowIndicator/index.d.ts +2 -0
  306. package/dist/components/OverflowIndicator/index.d.ts.map +1 -0
  307. package/dist/components/OverflowIndicator/index.js +6 -0
  308. package/dist/components/OverflowIndicator/index.js.map +1 -0
  309. package/dist/components/OverflowIndicator/overflow-indicator.d.ts +5 -1
  310. package/dist/components/OverflowIndicator/overflow-indicator.d.ts.map +1 -1
  311. package/dist/components/OverflowIndicator/overflow-indicator.js +13 -6
  312. package/dist/components/OverflowIndicator/overflow-indicator.js.map +1 -1
  313. package/dist/components/PeoplePicker/index.d.ts +2 -0
  314. package/dist/components/PeoplePicker/index.d.ts.map +1 -0
  315. package/dist/components/PeoplePicker/index.js +9 -0
  316. package/dist/components/PeoplePicker/index.js.map +1 -0
  317. package/dist/components/PeoplePicker/people-picker-helpers.d.ts.map +1 -1
  318. package/dist/components/PeoplePicker/people-picker-helpers.js +2 -2
  319. package/dist/components/PeoplePicker/people-picker-helpers.js.map +1 -1
  320. package/dist/components/PeoplePicker/people-picker.d.ts.map +1 -1
  321. package/dist/components/PeoplePicker/people-picker.js +21 -17
  322. package/dist/components/PeoplePicker/people-picker.js.map +1 -1
  323. package/dist/components/PeoplePicker/person-display.d.ts +7 -7
  324. package/dist/components/PeoplePicker/person-display.d.ts.map +1 -1
  325. package/dist/components/PeoplePicker/person-display.js +9 -9
  326. package/dist/components/PeoplePicker/person-display.js.map +1 -1
  327. package/dist/components/Popover/index.d.ts +2 -0
  328. package/dist/components/Popover/index.d.ts.map +1 -0
  329. package/dist/components/Popover/index.js +14 -0
  330. package/dist/components/Popover/index.js.map +1 -0
  331. package/dist/components/Popover/popover.d.ts +2 -2
  332. package/dist/components/Popover/popover.d.ts.map +1 -1
  333. package/dist/components/Popover/popover.js +12 -12
  334. package/dist/components/Popover/popover.js.map +1 -1
  335. package/dist/components/ProfileCard/index.d.ts +2 -0
  336. package/dist/components/ProfileCard/index.d.ts.map +1 -0
  337. package/dist/components/ProfileCard/index.js +8 -0
  338. package/dist/components/ProfileCard/index.js.map +1 -0
  339. package/dist/components/{NameCard/name-card.d.ts โ†’ ProfileCard/profile-card.d.ts} +26 -20
  340. package/dist/components/ProfileCard/profile-card.d.ts.map +1 -0
  341. package/dist/components/{NameCard/name-card.js โ†’ ProfileCard/profile-card.js} +11 -10
  342. package/dist/components/ProfileCard/profile-card.js.map +1 -0
  343. package/dist/components/ProgressBar/index.d.ts +2 -0
  344. package/dist/components/ProgressBar/index.d.ts.map +1 -0
  345. package/dist/components/ProgressBar/index.js +6 -0
  346. package/dist/components/ProgressBar/index.js.map +1 -0
  347. package/dist/components/ProgressBar/progress-bar.d.ts +2 -2
  348. package/dist/components/ProgressBar/progress-bar.js +3 -3
  349. package/dist/components/ProgressBar/progress-bar.js.map +1 -1
  350. package/dist/components/RadioGroup/index.d.ts +2 -0
  351. package/dist/components/RadioGroup/index.d.ts.map +1 -0
  352. package/dist/components/RadioGroup/index.js +8 -0
  353. package/dist/components/RadioGroup/index.js.map +1 -0
  354. package/dist/components/RadioGroup/radio-group.d.ts +15 -9
  355. package/dist/components/RadioGroup/radio-group.d.ts.map +1 -1
  356. package/dist/components/RadioGroup/radio-group.js +71 -33
  357. package/dist/components/RadioGroup/radio-group.js.map +1 -1
  358. package/dist/components/Rating/index.d.ts +2 -0
  359. package/dist/components/Rating/index.d.ts.map +1 -0
  360. package/dist/components/Rating/index.js +6 -0
  361. package/dist/components/Rating/index.js.map +1 -0
  362. package/dist/components/Rating/rating.d.ts +6 -2
  363. package/dist/components/Rating/rating.d.ts.map +1 -1
  364. package/dist/components/Rating/rating.js +10 -7
  365. package/dist/components/Rating/rating.js.map +1 -1
  366. package/dist/components/ScrollArea/index.d.ts +2 -0
  367. package/dist/components/ScrollArea/index.d.ts.map +1 -0
  368. package/dist/components/ScrollArea/index.js +7 -0
  369. package/dist/components/ScrollArea/index.js.map +1 -0
  370. package/dist/components/ScrollArea/scroll-area.d.ts +1 -1
  371. package/dist/components/ScrollArea/scroll-area.js +2 -2
  372. package/dist/components/ScrollArea/scroll-area.js.map +1 -1
  373. package/dist/components/SegmentedControl/index.d.ts +2 -0
  374. package/dist/components/SegmentedControl/index.d.ts.map +1 -0
  375. package/dist/components/SegmentedControl/index.js +9 -0
  376. package/dist/components/SegmentedControl/index.js.map +1 -0
  377. package/dist/components/SegmentedControl/segmented-control.d.ts +2 -2
  378. package/dist/components/SegmentedControl/segmented-control.d.ts.map +1 -1
  379. package/dist/components/SegmentedControl/segmented-control.js +8 -10
  380. package/dist/components/SegmentedControl/segmented-control.js.map +1 -1
  381. package/dist/components/Select/index.d.ts +2 -0
  382. package/dist/components/Select/index.d.ts.map +1 -0
  383. package/dist/components/Select/index.js +6 -0
  384. package/dist/components/Select/index.js.map +1 -0
  385. package/dist/components/Select/select.d.ts.map +1 -1
  386. package/dist/components/Select/select.js +30 -18
  387. package/dist/components/Select/select.js.map +1 -1
  388. package/dist/components/SelectMenu/index.d.ts +2 -0
  389. package/dist/components/SelectMenu/index.d.ts.map +1 -0
  390. package/dist/components/SelectMenu/index.js +6 -0
  391. package/dist/components/SelectMenu/index.js.map +1 -0
  392. package/dist/components/SelectMenu/select-menu.d.ts +10 -5
  393. package/dist/components/SelectMenu/select-menu.d.ts.map +1 -1
  394. package/dist/components/SelectMenu/select-menu.js +12 -4
  395. package/dist/components/SelectMenu/select-menu.js.map +1 -1
  396. package/dist/components/SelectionControl/index.d.ts +2 -0
  397. package/dist/components/SelectionControl/index.d.ts.map +1 -0
  398. package/dist/components/SelectionControl/index.js +7 -0
  399. package/dist/components/SelectionControl/index.js.map +1 -0
  400. package/dist/components/SelectionControl/selection-item.d.ts +5 -1
  401. package/dist/components/SelectionControl/selection-item.d.ts.map +1 -1
  402. package/dist/components/SelectionControl/selection-item.js +3 -1
  403. package/dist/components/SelectionControl/selection-item.js.map +1 -1
  404. package/dist/components/Separator/index.d.ts +2 -0
  405. package/dist/components/Separator/index.d.ts.map +1 -0
  406. package/dist/components/Separator/index.js +6 -0
  407. package/dist/components/Separator/index.js.map +1 -0
  408. package/dist/components/Separator/separator.d.ts +2 -2
  409. package/dist/components/Separator/separator.js +4 -3
  410. package/dist/components/Separator/separator.js.map +1 -1
  411. package/dist/components/Sheet/index.d.ts +2 -0
  412. package/dist/components/Sheet/index.d.ts.map +1 -0
  413. package/dist/components/Sheet/index.js +17 -0
  414. package/dist/components/Sheet/index.js.map +1 -0
  415. package/dist/components/Sheet/sheet.d.ts +6 -5
  416. package/dist/components/Sheet/sheet.d.ts.map +1 -1
  417. package/dist/components/Sheet/sheet.js +1 -1
  418. package/dist/components/Sheet/sheet.js.map +1 -1
  419. package/dist/components/Sidebar/index.d.ts +2 -0
  420. package/dist/components/Sidebar/index.d.ts.map +1 -0
  421. package/dist/components/Sidebar/index.js +24 -0
  422. package/dist/components/Sidebar/index.js.map +1 -0
  423. package/dist/components/Sidebar/sidebar.d.ts +2 -2
  424. package/dist/components/Sidebar/sidebar.d.ts.map +1 -1
  425. package/dist/components/Sidebar/sidebar.js +9 -5
  426. package/dist/components/Sidebar/sidebar.js.map +1 -1
  427. package/dist/components/Skeleton/index.d.ts +2 -0
  428. package/dist/components/Skeleton/index.d.ts.map +1 -0
  429. package/dist/components/Skeleton/index.js +6 -0
  430. package/dist/components/Skeleton/index.js.map +1 -0
  431. package/dist/components/Skeleton/skeleton.d.ts +1 -1
  432. package/dist/components/Skeleton/skeleton.js +2 -1
  433. package/dist/components/Skeleton/skeleton.js.map +1 -1
  434. package/dist/components/Slider/index.d.ts +2 -0
  435. package/dist/components/Slider/index.d.ts.map +1 -0
  436. package/dist/components/Slider/index.js +7 -0
  437. package/dist/components/Slider/index.js.map +1 -0
  438. package/dist/components/Slider/slider.d.ts +6 -6
  439. package/dist/components/Slider/slider.d.ts.map +1 -1
  440. package/dist/components/Slider/slider.js +25 -10
  441. package/dist/components/Slider/slider.js.map +1 -1
  442. package/dist/components/Steps/index.d.ts +2 -0
  443. package/dist/components/Steps/index.d.ts.map +1 -0
  444. package/dist/components/Steps/index.js +12 -0
  445. package/dist/components/Steps/index.js.map +1 -0
  446. package/dist/components/Steps/steps.d.ts +2 -2
  447. package/dist/components/Steps/steps.d.ts.map +1 -1
  448. package/dist/components/Steps/steps.js +48 -23
  449. package/dist/components/Steps/steps.js.map +1 -1
  450. package/dist/components/Switch/index.d.ts +2 -0
  451. package/dist/components/Switch/index.d.ts.map +1 -0
  452. package/dist/components/Switch/index.js +7 -0
  453. package/dist/components/Switch/index.js.map +1 -0
  454. package/dist/components/Switch/switch.d.ts +16 -14
  455. package/dist/components/Switch/switch.d.ts.map +1 -1
  456. package/dist/components/Switch/switch.js +46 -17
  457. package/dist/components/Switch/switch.js.map +1 -1
  458. package/dist/components/Tabs/index.d.ts +2 -0
  459. package/dist/components/Tabs/index.d.ts.map +1 -0
  460. package/dist/components/Tabs/index.js +10 -0
  461. package/dist/components/Tabs/index.js.map +1 -0
  462. package/dist/components/Tabs/tabs.d.ts +5 -5
  463. package/dist/components/Tabs/tabs.d.ts.map +1 -1
  464. package/dist/components/Tabs/tabs.js +14 -7
  465. package/dist/components/Tabs/tabs.js.map +1 -1
  466. package/dist/components/Tag/index.d.ts +2 -0
  467. package/dist/components/Tag/index.d.ts.map +1 -0
  468. package/dist/components/Tag/index.js +7 -0
  469. package/dist/components/Tag/index.js.map +1 -0
  470. package/dist/components/Tag/tag.d.ts +37 -23
  471. package/dist/components/Tag/tag.d.ts.map +1 -1
  472. package/dist/components/Tag/tag.js +39 -44
  473. package/dist/components/Tag/tag.js.map +1 -1
  474. package/dist/components/Textarea/index.d.ts +2 -0
  475. package/dist/components/Textarea/index.d.ts.map +1 -0
  476. package/dist/components/Textarea/index.js +7 -0
  477. package/dist/components/Textarea/index.js.map +1 -0
  478. package/dist/components/Textarea/textarea.d.ts +5 -10
  479. package/dist/components/Textarea/textarea.d.ts.map +1 -1
  480. package/dist/components/Textarea/textarea.js +14 -12
  481. package/dist/components/Textarea/textarea.js.map +1 -1
  482. package/dist/components/TimePicker/index.d.ts +2 -0
  483. package/dist/components/TimePicker/index.d.ts.map +1 -0
  484. package/dist/components/TimePicker/index.js +6 -0
  485. package/dist/components/TimePicker/index.js.map +1 -0
  486. package/dist/components/TimePicker/time-columns.d.ts.map +1 -1
  487. package/dist/components/TimePicker/time-columns.js +4 -1
  488. package/dist/components/TimePicker/time-columns.js.map +1 -1
  489. package/dist/components/TimePicker/time-picker.d.ts +2 -1
  490. package/dist/components/TimePicker/time-picker.d.ts.map +1 -1
  491. package/dist/components/TimePicker/time-picker.js +33 -32
  492. package/dist/components/TimePicker/time-picker.js.map +1 -1
  493. package/dist/components/Toast/index.d.ts +2 -0
  494. package/dist/components/Toast/index.d.ts.map +1 -0
  495. package/dist/components/Toast/index.js +7 -0
  496. package/dist/components/Toast/index.js.map +1 -0
  497. package/dist/components/Toast/toast.d.ts +1 -1
  498. package/dist/components/Toast/toast.js +2 -2
  499. package/dist/components/Toast/toast.js.map +1 -1
  500. package/dist/components/Tooltip/index.d.ts +2 -0
  501. package/dist/components/Tooltip/index.d.ts.map +1 -0
  502. package/dist/components/Tooltip/index.js +9 -0
  503. package/dist/components/Tooltip/index.js.map +1 -0
  504. package/dist/components/Tooltip/tooltip.d.ts +1 -1
  505. package/dist/components/Tooltip/tooltip.d.ts.map +1 -1
  506. package/dist/components/Tooltip/tooltip.js +2 -1
  507. package/dist/components/Tooltip/tooltip.js.map +1 -1
  508. package/dist/components/TreeView/index.d.ts +2 -0
  509. package/dist/components/TreeView/index.d.ts.map +1 -0
  510. package/dist/components/TreeView/index.js +8 -0
  511. package/dist/components/TreeView/index.js.map +1 -0
  512. package/dist/components/TreeView/tree-view.d.ts +11 -11
  513. package/dist/components/TreeView/tree-view.d.ts.map +1 -1
  514. package/dist/components/TreeView/tree-view.js +36 -9
  515. package/dist/components/TreeView/tree-view.js.map +1 -1
  516. package/dist/hooks/use-overflow-items.d.ts +10 -6
  517. package/dist/hooks/use-overflow-items.d.ts.map +1 -1
  518. package/dist/hooks/use-overflow-items.js.map +1 -1
  519. package/dist/index.d.ts +57 -67
  520. package/dist/index.d.ts.map +1 -1
  521. package/dist/index.js +29 -59
  522. package/dist/index.js.map +1 -1
  523. package/dist/lib/utils.d.ts.map +1 -1
  524. package/dist/lib/utils.js +3 -1
  525. package/dist/lib/utils.js.map +1 -1
  526. package/dist/node_modules/react-hook-form/dist/index.esm.js +1950 -0
  527. package/dist/node_modules/react-hook-form/dist/index.esm.js.map +1 -0
  528. package/dist/patterns/element-anatomy/index.d.ts +2 -0
  529. package/dist/patterns/element-anatomy/index.d.ts.map +1 -0
  530. package/dist/patterns/element-anatomy/index.js +20 -0
  531. package/dist/patterns/element-anatomy/index.js.map +1 -0
  532. package/dist/patterns/element-anatomy/item-anatomy.d.ts +9 -5
  533. package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -1
  534. package/dist/patterns/element-anatomy/item-anatomy.js +1 -1
  535. package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -1
  536. package/dist/patterns/header-canonical/chrome-header.d.ts +13 -4
  537. package/dist/patterns/header-canonical/chrome-header.d.ts.map +1 -1
  538. package/dist/patterns/header-canonical/chrome-header.js +4 -2
  539. package/dist/patterns/header-canonical/chrome-header.js.map +1 -1
  540. package/dist/patterns/header-canonical/index.d.ts +2 -0
  541. package/dist/patterns/header-canonical/index.d.ts.map +1 -0
  542. package/dist/patterns/header-canonical/index.js +6 -0
  543. package/dist/patterns/header-canonical/index.js.map +1 -0
  544. package/dist/patterns/horizontal-overflow/index.d.ts +2 -0
  545. package/dist/patterns/horizontal-overflow/index.d.ts.map +1 -0
  546. package/dist/patterns/horizontal-overflow/index.js +14 -0
  547. package/dist/patterns/horizontal-overflow/index.js.map +1 -0
  548. package/dist/patterns/overlay-surface/index.d.ts +2 -0
  549. package/dist/patterns/overlay-surface/index.d.ts.map +1 -0
  550. package/dist/patterns/overlay-surface/index.js +8 -0
  551. package/dist/patterns/overlay-surface/index.js.map +1 -0
  552. package/dist/patterns/overlay-surface/overlay-surface.d.ts +11 -2
  553. package/dist/patterns/overlay-surface/overlay-surface.d.ts.map +1 -1
  554. package/dist/patterns/overlay-surface/overlay-surface.js +5 -2
  555. package/dist/patterns/overlay-surface/overlay-surface.js.map +1 -1
  556. package/dist/patterns/resize-handle/index.d.ts +2 -0
  557. package/dist/patterns/resize-handle/index.d.ts.map +1 -0
  558. package/dist/patterns/resize-handle/index.js +5 -0
  559. package/dist/patterns/resize-handle/index.js.map +1 -0
  560. package/dist/story-governance/category-matrix.d.ts +35 -0
  561. package/dist/story-governance/category-matrix.d.ts.map +1 -0
  562. package/dist/tokens/categorical-color.d.ts +60 -0
  563. package/dist/tokens/categorical-color.d.ts.map +1 -0
  564. package/dist/tokens/categorical-color.js +110 -0
  565. package/dist/tokens/categorical-color.js.map +1 -0
  566. package/dist/tokens/motion/motion.d.ts +1 -1
  567. package/dist/tokens/motion/motion.d.ts.map +1 -1
  568. package/dist/tokens/motion/motion.js.map +1 -1
  569. package/dist/tokens/uiSize/icon-size.d.ts +1 -2
  570. package/dist/tokens/uiSize/icon-size.d.ts.map +1 -1
  571. package/ds-canonical/commands/README.md +26 -0
  572. package/ds-canonical/commands/gov-status.md +79 -0
  573. package/ds-canonical/fork/governance.lock +222 -0
  574. package/ds-canonical/fork/hooks/block_prototype_imports.py +111 -0
  575. package/ds-canonical/fork/hooks/check_chrome_header_avatar_canonical.sh +95 -0
  576. package/ds-canonical/fork/hooks/check_consumer_app_invariants.sh +349 -0
  577. package/ds-canonical/fork/hooks/check_ds_anchor_preflight.sh +132 -0
  578. package/ds-canonical/fork/hooks/check_escape_marker_abuse.sh +140 -0
  579. package/ds-canonical/fork/hooks/check_field_family_invariants.sh +250 -0
  580. package/ds-canonical/fork/hooks/check_fork_product_quality.sh +36 -0
  581. package/ds-canonical/fork/hooks/check_item_list_gap.sh +54 -0
  582. package/ds-canonical/fork/hooks/check_layout_space_magic_numbers.sh +96 -0
  583. package/ds-canonical/fork/hooks/check_opacity_token_usage.sh +149 -0
  584. package/ds-canonical/fork/hooks/check_pattern_invariants.sh +196 -0
  585. package/ds-canonical/fork/hooks/check_sidebar_menu_button_implicit_wrap.sh +86 -0
  586. package/ds-canonical/fork/hooks/check_tabs_content_chrome_body_double_gap.sh +183 -0
  587. package/ds-canonical/fork/hooks/check_tailwind_wildcard_in_docs.sh +79 -0
  588. package/ds-canonical/fork/hooks/inject_deploy_url_after_push.sh +238 -0
  589. package/ds-canonical/fork/launchers/fork-governance-dispatcher.sh +44 -0
  590. package/ds-canonical/fork/launchers/inject_fork_governance_preamble.sh +54 -0
  591. package/ds-canonical/fork/launchers/settings-hooks.json +58 -0
  592. package/ds-canonical/fork/manifest.json +98 -0
  593. package/ds-canonical/fork/preamble.md +495 -0
  594. package/ds-canonical/fork/skills/bug-fix-rhythm/SKILL.md +183 -0
  595. package/ds-canonical/fork/skills/code-quality-audit/SKILL.md +65 -0
  596. package/ds-canonical/fork/skills/delivery-handoff/SKILL.md +229 -0
  597. package/ds-canonical/fork/skills/delivery-handoff/references/flow-diagram.md +180 -0
  598. package/ds-canonical/fork/skills/delivery-handoff/references/handoff-template.md +177 -0
  599. package/ds-canonical/fork/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  600. package/ds-canonical/fork/skills/performance-audit/SKILL.md +107 -0
  601. package/ds-canonical/fork/skills/product-ui-audit/SKILL.md +232 -0
  602. package/ds-canonical/fork/skills/product-ui-audit/references/audit-checks.md +246 -0
  603. package/ds-canonical/fork/skills/product-ui-audit/references/common-misuses.md +329 -0
  604. package/ds-canonical/fork/skills/product-ui-audit/references/report-template.md +159 -0
  605. package/ds-canonical/fork/skills/propose-options/SKILL.md +177 -0
  606. package/ds-canonical/fork/skills/prototype/SKILL.md +244 -0
  607. package/ds-canonical/fork/skills/prototype/references/audit-checks.md +38 -0
  608. package/ds-canonical/fork/skills/prototype/references/benchmark-sources.md +94 -0
  609. package/ds-canonical/fork/skills/prototype/references/checkpoints.md +191 -0
  610. package/ds-canonical/fork/skills/prototype/references/evaluation-matrix.md +141 -0
  611. package/ds-canonical/fork/skills/prototype/references/ooux-template.md +198 -0
  612. package/ds-canonical/fork/skills/prototype/references/proposal-template.md +229 -0
  613. package/ds-canonical/fork/skills/scan-similar-bugs/SKILL.md +200 -0
  614. package/ds-canonical/fork/skills/ux-audit/SKILL.md +130 -0
  615. package/ds-canonical/fork/skills/visual-audit/SKILL.md +247 -0
  616. package/ds-canonical/fork/skills/visual-audit/output/.gitkeep +0 -0
  617. package/ds-canonical/fork/skills/visual-audit/references/audit-architecture.md +101 -0
  618. package/ds-canonical/fork/skills/visual-audit/references/visual-checklist.md +297 -0
  619. package/ds-canonical/fork/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  620. package/ds-canonical/hooks/README.md +145 -0
  621. package/ds-canonical/hooks/_log-fire.sh +46 -0
  622. package/ds-canonical/hooks/auto_regen_ds_barrel.sh +58 -0
  623. package/ds-canonical/hooks/block_prototype_imports.py +111 -0
  624. package/ds-canonical/hooks/check_audit_post_report_validator.sh +156 -0
  625. package/ds-canonical/hooks/check_audit_sample_escape.sh +76 -0
  626. package/ds-canonical/hooks/check_benchmark_citation.sh +106 -0
  627. package/ds-canonical/hooks/check_canonical_propagation.sh +189 -0
  628. package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +95 -0
  629. package/ds-canonical/hooks/check_codex_brief_invariants.sh +115 -0
  630. package/ds-canonical/hooks/check_codex_collab_5step.sh +108 -0
  631. package/ds-canonical/hooks/check_consumer_app_invariants.sh +349 -0
  632. package/ds-canonical/hooks/check_datatable_invariants.sh +180 -0
  633. package/ds-canonical/hooks/check_dim_count_drift.sh +72 -0
  634. package/ds-canonical/hooks/check_ds_anchor_preflight.sh +132 -0
  635. package/ds-canonical/hooks/check_escape_marker_abuse.sh +140 -0
  636. package/ds-canonical/hooks/check_field_controls_contracts.sh +137 -0
  637. package/ds-canonical/hooks/check_field_family_invariants.sh +250 -0
  638. package/ds-canonical/hooks/check_file_size_budget.sh +60 -0
  639. package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +71 -0
  640. package/ds-canonical/hooks/check_item_list_gap.sh +54 -0
  641. package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +96 -0
  642. package/ds-canonical/hooks/check_main_branch_workbench.sh +93 -0
  643. package/ds-canonical/hooks/check_naming_and_abstraction.sh +165 -0
  644. package/ds-canonical/hooks/check_opacity_token_usage.sh +149 -0
  645. package/ds-canonical/hooks/check_orphan_ds_css.sh +66 -0
  646. package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +75 -0
  647. package/ds-canonical/hooks/check_pattern_invariants.sh +196 -0
  648. package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +56 -0
  649. package/ds-canonical/hooks/check_pixel_quantified_audit.sh +53 -0
  650. package/ds-canonical/hooks/check_plugin_fork_health.sh +137 -0
  651. package/ds-canonical/hooks/check_post_main_ssot_propagate.sh +90 -0
  652. package/ds-canonical/hooks/check_propose_discipline.sh +147 -0
  653. package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +70 -0
  654. package/ds-canonical/hooks/check_propose_without_benchmark.sh +63 -0
  655. package/ds-canonical/hooks/check_select_all_canonical.sh +58 -0
  656. package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +86 -0
  657. package/ds-canonical/hooks/check_solo_workflow.sh +317 -0
  658. package/ds-canonical/hooks/check_spec_class_drift.sh +88 -0
  659. package/ds-canonical/hooks/check_story_invariants.sh +748 -0
  660. package/ds-canonical/hooks/check_storybook_addon_packaging.sh +151 -0
  661. package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +110 -0
  662. package/ds-canonical/hooks/check_tabs_content_chrome_body_double_gap.sh +183 -0
  663. package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +79 -0
  664. package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +104 -0
  665. package/ds-canonical/hooks/chrome_header_dispatcher.sh +56 -0
  666. package/ds-canonical/hooks/enforce_home_charter.sh +44 -0
  667. package/ds-canonical/hooks/inject_deploy_url_after_push.sh +238 -0
  668. package/ds-canonical/hooks/inject_pending_self_audit.sh +248 -0
  669. package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +100 -0
  670. package/ds-canonical/hooks/lib/_approval_re.sh +33 -0
  671. package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +75 -0
  672. package/ds-canonical/hooks/lib/_code_quality.sh +73 -0
  673. package/ds-canonical/hooks/lib/_cva_default_sync.sh +69 -0
  674. package/ds-canonical/hooks/lib/_governance_coverage_check.sh +49 -0
  675. package/ds-canonical/hooks/lib/_hardcoded_strings.sh +163 -0
  676. package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +87 -0
  677. package/ds-canonical/hooks/lib/_layout_space_canonical.sh +56 -0
  678. package/ds-canonical/hooks/lib/_overlay_handcraft.sh +162 -0
  679. package/ds-canonical/hooks/lib/_person_data_richness.sh +42 -0
  680. package/ds-canonical/hooks/lib/_story_compile_drift.sh +48 -0
  681. package/ds-canonical/hooks/lib/_tab_lg_chrome_header_equal.sh +70 -0
  682. package/ds-canonical/hooks/lib/_token_hygiene.sh +104 -0
  683. package/ds-canonical/hooks/log_governance_fires.sh +50 -0
  684. package/ds-canonical/hooks/log_skill_invokes.sh +41 -0
  685. package/ds-canonical/hooks/post_edit_dispatcher.sh +62 -0
  686. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_addon_subdir_ship.sh +76 -0
  687. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_app_story_title.sh +81 -0
  688. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_ds_primitive_misuse.sh +120 -0
  689. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_no_ds_catalog.sh +101 -0
  690. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_story_baseline.sh +76 -0
  691. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_data_table_size_num_to_meta_width.sh +68 -0
  692. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_fork_user_plugin_install.sh +79 -0
  693. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_plugin_freshness.sh +68 -0
  694. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_cite_required.sh +88 -0
  695. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_plain_chinese.sh +74 -0
  696. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_storybook_addon_preset_cjs.sh +87 -0
  697. package/ds-canonical/hooks/retired/check_anatomy_section_numbering.sh +106 -0
  698. package/ds-canonical/hooks/retired/check_avatar_hovercard.sh +90 -0
  699. package/ds-canonical/hooks/retired/check_button_icon_literal.sh.retired-2026-04-28 +38 -0
  700. package/ds-canonical/hooks/retired/check_container_breathing.sh +142 -0
  701. package/ds-canonical/hooks/retired/check_governance_compliance.sh +61 -0
  702. package/ds-canonical/hooks/retired/check_icon_only_padding_formula.sh +104 -0
  703. package/ds-canonical/hooks/retired/check_item_content_primitive.sh +150 -0
  704. package/ds-canonical/hooks/retired/check_item_list_gap.sh +153 -0
  705. package/ds-canonical/hooks/retired/check_sideoffset_canonical.sh +65 -0
  706. package/ds-canonical/hooks/retired/check_spec_iteration_tag.sh +87 -0
  707. package/ds-canonical/hooks/retired/check_ssot_consultation.sh +88 -0
  708. package/ds-canonical/hooks/retired/check_sync_update.sh +20 -0
  709. package/ds-canonical/hooks/retired/check_third_party_dom_verified.sh +95 -0
  710. package/ds-canonical/hooks/retired/enforce_home_charter.sh +125 -0
  711. package/ds-canonical/hooks/retired/post_edit_canonical_interrogate.sh +109 -0
  712. package/ds-canonical/hooks/retired/pre_edit_spec_check.sh +68 -0
  713. package/ds-canonical/hooks/retired/pre_new_component_spec.sh +39 -0
  714. package/ds-canonical/hooks/retired/pre_write_subsumption_check.sh +112 -0
  715. package/ds-canonical/hooks/retired/stop_meta_self_audit.sh.retired-2026-05-13 +76 -0
  716. package/ds-canonical/hooks/retired/tests/test_check_anatomy_section_numbering.sh +14 -0
  717. package/ds-canonical/hooks/retired/tests/test_check_avatar_hovercard.sh +15 -0
  718. package/ds-canonical/hooks/retired/tests/test_check_container_breathing.sh +15 -0
  719. package/ds-canonical/hooks/retired/tests/test_check_governance_compliance.sh +15 -0
  720. package/ds-canonical/hooks/retired/tests/test_check_icon_only_padding_formula.sh +79 -0
  721. package/ds-canonical/hooks/retired/tests/test_check_item_content_primitive.sh +15 -0
  722. package/ds-canonical/hooks/retired/tests/test_check_item_list_gap.sh +163 -0
  723. package/ds-canonical/hooks/retired/tests/test_check_sideoffset_canonical.sh +15 -0
  724. package/ds-canonical/hooks/retired/tests/test_check_spec_iteration_tag.sh +15 -0
  725. package/ds-canonical/hooks/retired/tests/test_check_ssot_consultation.sh +15 -0
  726. package/ds-canonical/hooks/retired/tests/test_check_sync_update.sh +14 -0
  727. package/ds-canonical/hooks/retired/tests/test_check_third_party_dom_verified.sh +15 -0
  728. package/ds-canonical/hooks/retired/tests/test_enforce_home_charter.sh +15 -0
  729. package/ds-canonical/hooks/retired/tests/test_pre_edit_spec_check.sh +15 -0
  730. package/ds-canonical/hooks/retired/tests/test_pre_new_component_spec.sh +15 -0
  731. package/ds-canonical/hooks/retired/tests/test_pre_write_subsumption_check.sh +63 -0
  732. package/ds-canonical/hooks/session_start_governance_check.sh +310 -0
  733. package/ds-canonical/hooks/stop_passive_logging.sh +322 -0
  734. package/ds-canonical/hooks/stop_self_audit.sh +516 -0
  735. package/ds-canonical/hooks/tests/KNOWN-BROKEN.md +15 -0
  736. package/ds-canonical/hooks/tests/run-all.sh +76 -0
  737. package/ds-canonical/hooks/tests/test_auto_regen_ds_barrel.sh +180 -0
  738. package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +143 -0
  739. package/ds-canonical/hooks/tests/test_check_addon_subdir_ship.sh +171 -0
  740. package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +196 -0
  741. package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +127 -0
  742. package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +93 -0
  743. package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +115 -0
  744. package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +133 -0
  745. package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +198 -0
  746. package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +146 -0
  747. package/ds-canonical/hooks/tests/test_check_code_quality.sh +15 -0
  748. package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +208 -0
  749. package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +96 -0
  750. package/ds-canonical/hooks/tests/test_check_consumer_app_invariants.sh +12 -0
  751. package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +164 -0
  752. package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +240 -0
  753. package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +214 -0
  754. package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +202 -0
  755. package/ds-canonical/hooks/tests/test_check_cva_default_sync.sh +15 -0
  756. package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +53 -0
  757. package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +122 -0
  758. package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +98 -0
  759. package/ds-canonical/hooks/tests/test_check_ds_anchor_preflight.sh +104 -0
  760. package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +192 -0
  761. package/ds-canonical/hooks/tests/test_check_field_controls_contracts.sh +126 -0
  762. package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +203 -0
  763. package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +32 -0
  764. package/ds-canonical/hooks/tests/test_check_fork_user_plugin_install.sh +46 -0
  765. package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +190 -0
  766. package/ds-canonical/hooks/tests/test_check_hardcoded_strings.sh +14 -0
  767. package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +110 -0
  768. package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +44 -0
  769. package/ds-canonical/hooks/tests/test_check_layout_space_canonical.sh +73 -0
  770. package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +206 -0
  771. package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +147 -0
  772. package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +136 -0
  773. package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +110 -0
  774. package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +212 -0
  775. package/ds-canonical/hooks/tests/test_check_overlay_handcraft.sh +126 -0
  776. package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +191 -0
  777. package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +148 -0
  778. package/ds-canonical/hooks/tests/test_check_peoplepicker_ssot_drift.sh +108 -0
  779. package/ds-canonical/hooks/tests/test_check_person_data_richness.sh +58 -0
  780. package/ds-canonical/hooks/tests/test_check_pixel_quantified_audit.sh +142 -0
  781. package/ds-canonical/hooks/tests/test_check_plugin_fork_health.sh +9 -0
  782. package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +181 -0
  783. package/ds-canonical/hooks/tests/test_check_propose_discipline.sh +10 -0
  784. package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +127 -0
  785. package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +117 -0
  786. package/ds-canonical/hooks/tests/test_check_propose_without_benchmark.sh +55 -0
  787. package/ds-canonical/hooks/tests/test_check_select_all_canonical.sh +125 -0
  788. package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +224 -0
  789. package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +201 -0
  790. package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +135 -0
  791. package/ds-canonical/hooks/tests/test_check_story_anatomy.sh.broken +197 -0
  792. package/ds-canonical/hooks/tests/test_check_story_category.sh.broken +187 -0
  793. package/ds-canonical/hooks/tests/test_check_story_compile_drift.sh +15 -0
  794. package/ds-canonical/hooks/tests/test_check_story_invariants.sh +384 -0
  795. package/ds-canonical/hooks/tests/test_check_story_name_jargon.sh.broken +53 -0
  796. package/ds-canonical/hooks/tests/test_check_story_slot_split.sh +156 -0
  797. package/ds-canonical/hooks/tests/test_check_storybook_addon_packaging.sh +10 -0
  798. package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +200 -0
  799. package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +176 -0
  800. package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +141 -0
  801. package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +182 -0
  802. package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +21 -0
  803. package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +169 -0
  804. package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +77 -0
  805. package/ds-canonical/hooks/tests/test_inject_deploy_url_after_push.sh +193 -0
  806. package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +125 -0
  807. package/ds-canonical/hooks/tests/test_log_governance_fires.sh +10 -0
  808. package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +7 -0
  809. package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +108 -0
  810. package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +154 -0
  811. package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +95 -0
  812. package/ds-canonical/hooks/tests/test_stop_governance_drift_check.sh.broken +125 -0
  813. package/ds-canonical/hooks/tests/test_stop_harvest_corrections.sh +10 -0
  814. package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +100 -0
  815. package/ds-canonical/hooks/tests/test_stop_self_audit.sh +98 -0
  816. package/ds-canonical/hooks/tests/test_stop_tsc_sanity.sh +10 -0
  817. package/ds-canonical/references/README.md +46 -0
  818. package/ds-canonical/references/audit-coverage-vs-24-checklist.md +74 -0
  819. package/ds-canonical/references/build-ui-canonicals.md +72 -0
  820. package/ds-canonical/references/composition-fidelity.md +47 -0
  821. package/ds-canonical/references/cva-patterns.md +41 -0
  822. package/ds-canonical/references/drag-canonical.md +331 -0
  823. package/ds-canonical/references/item-anatomy-recipe.md +225 -0
  824. package/ds-canonical/references/naming-conventions.md +57 -0
  825. package/ds-canonical/references/principle-dim-map.json +513 -0
  826. package/ds-canonical/references/props-naming.md +59 -0
  827. package/ds-canonical/references/scenario-definition.md +146 -0
  828. package/ds-canonical/references/spec-rules.md +58 -0
  829. package/ds-canonical/references/ssot-consultation.md +63 -0
  830. package/ds-canonical/references/ssot-index.md +40 -0
  831. package/ds-canonical/references/story-baseline-registry.json +107 -0
  832. package/ds-canonical/references/structural-token-retention.md +42 -0
  833. package/ds-canonical/references/tailwind-gotchas.md +87 -0
  834. package/ds-canonical/references/ui-dev-rules.md +81 -0
  835. package/ds-canonical/rules/README.md +34 -0
  836. package/ds-canonical/rules/meta-patterns.md +87 -0
  837. package/ds-canonical/rules/self-verify.md +56 -0
  838. package/ds-canonical/rules/spec-rules.md +25 -0
  839. package/ds-canonical/rules/story-rules.md +67 -0
  840. package/ds-canonical/rules/ui-development.md +92 -0
  841. package/ds-canonical/skills/README.md +88 -0
  842. package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +181 -0
  843. package/ds-canonical/skills/code-quality-audit/SKILL.md +63 -0
  844. package/ds-canonical/skills/codex-collab/SKILL.md +249 -0
  845. package/ds-canonical/skills/codex-collab/references/brief-template.md +48 -0
  846. package/ds-canonical/skills/codex-collab/references/transport.md +58 -0
  847. package/ds-canonical/skills/codify-corrections/SKILL.md +184 -0
  848. package/ds-canonical/skills/codify-principle/SKILL.md +151 -0
  849. package/ds-canonical/skills/component-quality-gate/SKILL.md +102 -0
  850. package/ds-canonical/skills/component-quality-gate/references/checklist.md +79 -0
  851. package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +254 -0
  852. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +123 -0
  853. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +186 -0
  854. package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +30 -0
  855. package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +69 -0
  856. package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +33 -0
  857. package/ds-canonical/skills/delivery-handoff/SKILL.md +229 -0
  858. package/ds-canonical/skills/delivery-handoff/references/flow-diagram.md +180 -0
  859. package/ds-canonical/skills/delivery-handoff/references/handoff-template.md +177 -0
  860. package/ds-canonical/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  861. package/ds-canonical/skills/design-system-audit/SKILL.md +386 -0
  862. package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +1325 -0
  863. package/ds-canonical/skills/design-system-audit/references/checkpoints.md +240 -0
  864. package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +240 -0
  865. package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +378 -0
  866. package/ds-canonical/skills/design-system-audit/references/rule-placement.md +175 -0
  867. package/ds-canonical/skills/ensure-canonical/SKILL.md +196 -0
  868. package/ds-canonical/skills/governance-health/SKILL.md +147 -0
  869. package/ds-canonical/skills/knowledge-prune/SKILL.md +250 -0
  870. package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +11 -0
  871. package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +55 -0
  872. package/ds-canonical/skills/knowledge-prune/references/world-class-prune-alignment.md +7 -0
  873. package/ds-canonical/skills/new-component/SKILL.md +170 -0
  874. package/ds-canonical/skills/new-component/references/new-component-checklist.md +85 -0
  875. package/ds-canonical/skills/performance-audit/SKILL.md +107 -0
  876. package/ds-canonical/skills/product-ui-audit/SKILL.md +230 -0
  877. package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +246 -0
  878. package/ds-canonical/skills/product-ui-audit/references/common-misuses.md +329 -0
  879. package/ds-canonical/skills/product-ui-audit/references/report-template.md +159 -0
  880. package/ds-canonical/skills/propose-options/SKILL.md +177 -0
  881. package/ds-canonical/skills/prototype/SKILL.md +244 -0
  882. package/ds-canonical/skills/prototype/references/audit-checks.md +37 -0
  883. package/ds-canonical/skills/prototype/references/benchmark-sources.md +94 -0
  884. package/ds-canonical/skills/prototype/references/checkpoints.md +191 -0
  885. package/ds-canonical/skills/prototype/references/evaluation-matrix.md +141 -0
  886. package/ds-canonical/skills/prototype/references/ooux-template.md +198 -0
  887. package/ds-canonical/skills/prototype/references/proposal-template.md +229 -0
  888. package/ds-canonical/skills/scan-similar-bugs/SKILL.md +198 -0
  889. package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +159 -0
  890. package/ds-canonical/skills/story-writing/SKILL.md +122 -0
  891. package/ds-canonical/skills/story-writing/references/anatomy-standard.md +217 -0
  892. package/ds-canonical/skills/story-writing/references/category-templates.md +174 -0
  893. package/ds-canonical/skills/story-writing/references/example-selection.md +70 -0
  894. package/ds-canonical/skills/story-writing/references/self-check.md +20 -0
  895. package/ds-canonical/skills/ux-audit/SKILL.md +130 -0
  896. package/ds-canonical/skills/visual-audit/SKILL.md +245 -0
  897. package/ds-canonical/skills/visual-audit/output/.gitkeep +0 -0
  898. package/ds-canonical/skills/visual-audit/references/audit-architecture.md +100 -0
  899. package/ds-canonical/skills/visual-audit/references/visual-checklist.md +297 -0
  900. package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  901. package/ds-canonical/templates/_README.md +23 -0
  902. package/ds-canonical/templates/dashboard-app.tsx +161 -0
  903. package/ds-story-manifest.json +1684 -0
  904. package/llms-full.txt +414 -0
  905. package/llms.txt +70 -0
  906. package/package.json +31 -8
  907. package/src/components/Accordion/accordion.anatomy.stories.tsx +496 -0
  908. package/src/components/Accordion/accordion.principles.stories.tsx +360 -0
  909. package/src/components/Accordion/accordion.spec.md +131 -0
  910. package/src/components/Accordion/accordion.stories.tsx +190 -0
  911. package/src/components/Accordion/accordion.tsx +4 -1
  912. package/src/components/Accordion/index.ts +5 -0
  913. package/src/components/Alert/alert.anatomy.stories.tsx +238 -0
  914. package/src/components/Alert/alert.principles.stories.tsx +220 -0
  915. package/src/components/Alert/alert.spec.md +202 -0
  916. package/src/components/Alert/alert.stories.tsx +139 -0
  917. package/src/components/Alert/alert.tsx +9 -6
  918. package/src/components/Alert/index.ts +5 -0
  919. package/src/components/AppShell/_demo-helpers.tsx +87 -11
  920. package/src/components/AppShell/app-shell.anatomy.stories.tsx +176 -0
  921. package/src/components/AppShell/app-shell.principles.stories.tsx +140 -0
  922. package/src/components/AppShell/app-shell.spec.md +357 -0
  923. package/src/components/AppShell/app-shell.stories.tsx +442 -0
  924. package/src/components/AppShell/app-shell.tsx +15 -9
  925. package/src/components/AppShell/index.ts +5 -0
  926. package/src/components/AspectRatio/aspect-ratio.anatomy.stories.tsx +208 -0
  927. package/src/components/AspectRatio/aspect-ratio.principles.stories.tsx +303 -0
  928. package/src/components/AspectRatio/aspect-ratio.spec.md +148 -0
  929. package/src/components/AspectRatio/aspect-ratio.stories.tsx +170 -0
  930. package/src/components/AspectRatio/aspect-ratio.tsx +4 -2
  931. package/src/components/AspectRatio/index.ts +5 -0
  932. package/src/components/Avatar/avatar.anatomy.stories.tsx +701 -0
  933. package/src/components/Avatar/avatar.principles.stories.tsx +245 -0
  934. package/src/components/Avatar/avatar.spec.md +312 -0
  935. package/src/components/Avatar/avatar.stories.tsx +135 -0
  936. package/src/components/Avatar/avatar.tsx +45 -46
  937. package/src/components/Avatar/index.ts +5 -0
  938. package/src/components/Badge/badge.anatomy.stories.tsx +591 -0
  939. package/src/components/Badge/badge.principles.stories.tsx +391 -0
  940. package/src/components/Badge/badge.spec.md +398 -0
  941. package/src/components/Badge/badge.stories.tsx +80 -0
  942. package/src/components/Badge/badge.tsx +34 -13
  943. package/src/components/Badge/index.ts +5 -0
  944. package/src/components/Breadcrumb/breadcrumb.anatomy.stories.tsx +458 -0
  945. package/src/components/Breadcrumb/breadcrumb.principles.stories.tsx +343 -0
  946. package/src/components/Breadcrumb/breadcrumb.spec.md +268 -0
  947. package/src/components/Breadcrumb/breadcrumb.stories.tsx +307 -0
  948. package/src/components/Breadcrumb/breadcrumb.tsx +2 -2
  949. package/src/components/Breadcrumb/index.ts +5 -0
  950. package/src/components/BulkActionBar/bulk-action-bar.anatomy.stories.tsx +224 -0
  951. package/src/components/BulkActionBar/bulk-action-bar.principles.stories.tsx +242 -0
  952. package/src/components/BulkActionBar/bulk-action-bar.spec.md +226 -0
  953. package/src/components/BulkActionBar/bulk-action-bar.stories.tsx +136 -0
  954. package/src/components/BulkActionBar/bulk-action-bar.tsx +13 -11
  955. package/src/components/BulkActionBar/index.ts +5 -0
  956. package/src/components/Button/button.anatomy.stories.tsx +710 -0
  957. package/src/components/Button/button.principles.stories.tsx +370 -0
  958. package/src/components/Button/button.spec.md +463 -0
  959. package/src/components/Button/button.stories.tsx +362 -0
  960. package/src/components/Button/button.tsx +25 -28
  961. package/src/components/Button/index.ts +5 -0
  962. package/src/components/Calendar/calendar.anatomy.stories.tsx +218 -0
  963. package/src/components/Calendar/calendar.principles.stories.tsx +143 -0
  964. package/src/components/Calendar/calendar.spec.md +264 -0
  965. package/src/components/Calendar/calendar.stories.tsx +88 -0
  966. package/src/components/Calendar/calendar.tsx +54 -40
  967. package/src/components/Calendar/index.ts +5 -0
  968. package/src/components/Carousel/carousel.anatomy.stories.tsx +516 -0
  969. package/src/components/Carousel/carousel.principles.stories.tsx +330 -0
  970. package/src/components/Carousel/carousel.spec.md +273 -0
  971. package/src/components/Carousel/carousel.stories.tsx +121 -0
  972. package/src/components/Carousel/carousel.tsx +26 -7
  973. package/src/components/Carousel/index.ts +5 -0
  974. package/src/components/Chart/chart.anatomy.stories.tsx +307 -0
  975. package/src/components/Chart/chart.principles.stories.tsx +436 -0
  976. package/src/components/Chart/chart.spec.md +174 -0
  977. package/src/components/Chart/chart.stories.tsx +268 -0
  978. package/src/components/Chart/chart.tsx +5 -2
  979. package/src/components/Chart/index.ts +5 -0
  980. package/src/components/Checkbox/checkbox-group.tsx +2 -1
  981. package/src/components/Checkbox/checkbox.anatomy.stories.tsx +626 -0
  982. package/src/components/Checkbox/checkbox.principles.stories.tsx +216 -0
  983. package/src/components/Checkbox/checkbox.spec.md +372 -0
  984. package/src/components/Checkbox/checkbox.stories.tsx +114 -0
  985. package/src/components/Checkbox/checkbox.tsx +80 -22
  986. package/src/components/Checkbox/index.ts +5 -0
  987. package/src/components/Chip/chip.anatomy.stories.tsx +422 -0
  988. package/src/components/Chip/chip.principles.stories.tsx +228 -0
  989. package/src/components/Chip/chip.spec.md +237 -0
  990. package/src/components/Chip/chip.stories.tsx +88 -0
  991. package/src/components/Chip/chip.tsx +6 -6
  992. package/src/components/Chip/index.ts +5 -0
  993. package/src/components/CircularProgress/circular-progress.anatomy.stories.tsx +176 -0
  994. package/src/components/CircularProgress/circular-progress.principles.stories.tsx +258 -0
  995. package/src/components/CircularProgress/circular-progress.spec.md +267 -0
  996. package/src/components/CircularProgress/circular-progress.stories.tsx +153 -0
  997. package/src/components/CircularProgress/circular-progress.tsx +4 -5
  998. package/src/components/CircularProgress/index.ts +5 -0
  999. package/src/components/Coachmark/coachmark-story-helpers.tsx +39 -0
  1000. package/src/components/Coachmark/coachmark.anatomy.stories.tsx +356 -0
  1001. package/src/components/Coachmark/coachmark.principles.stories.tsx +355 -0
  1002. package/src/components/Coachmark/coachmark.spec.md +238 -0
  1003. package/src/components/Coachmark/coachmark.stories.tsx +214 -0
  1004. package/src/components/Coachmark/coachmark.tsx +16 -7
  1005. package/src/components/Coachmark/index.ts +5 -0
  1006. package/src/components/Combobox/combobox.anatomy.stories.tsx +919 -0
  1007. package/src/components/Combobox/combobox.principles.stories.tsx +239 -0
  1008. package/src/components/Combobox/combobox.spec.md +202 -0
  1009. package/src/components/Combobox/combobox.stories.tsx +184 -0
  1010. package/src/components/Combobox/combobox.tsx +86 -39
  1011. package/src/components/Combobox/index.ts +5 -0
  1012. package/src/components/Command/command.anatomy.stories.tsx +107 -0
  1013. package/src/components/Command/command.principles.stories.tsx +88 -0
  1014. package/src/components/Command/command.spec.md +181 -0
  1015. package/src/components/Command/command.stories.tsx +280 -0
  1016. package/src/components/Command/command.tsx +13 -8
  1017. package/src/components/Command/index.ts +5 -0
  1018. package/src/components/DataTable/cell-registry.tsx +19 -6
  1019. package/src/components/DataTable/data-table-filter-panel.tsx +8 -8
  1020. package/src/components/DataTable/data-table-sort-manager.tsx +4 -4
  1021. package/src/components/DataTable/data-table.anatomy.stories.tsx +519 -0
  1022. package/src/components/DataTable/data-table.css +1 -1
  1023. package/src/components/DataTable/data-table.principles.stories.tsx +265 -0
  1024. package/src/components/DataTable/data-table.spec.md +540 -0
  1025. package/src/components/DataTable/data-table.stories.tsx +1941 -0
  1026. package/src/components/DataTable/data-table.tsx +121 -53
  1027. package/src/components/DataTable/filter-operators.spec.md +267 -0
  1028. package/src/components/DataTable/filter-operators.ts +1 -1
  1029. package/src/components/DataTable/filter-tree.ts +2 -2
  1030. package/src/components/DataTable/index.ts +5 -0
  1031. package/src/components/DateGrid/date-grid.anatomy.stories.tsx +583 -0
  1032. package/src/components/DateGrid/date-grid.principles.stories.tsx +338 -0
  1033. package/src/components/DateGrid/date-grid.spec.md +218 -0
  1034. package/src/components/DateGrid/date-grid.stories.tsx +195 -0
  1035. package/src/components/DateGrid/date-grid.tsx +22 -18
  1036. package/src/components/DateGrid/index.ts +5 -0
  1037. package/src/components/DatePicker/date-picker.anatomy.stories.tsx +952 -0
  1038. package/src/components/DatePicker/date-picker.principles.stories.tsx +205 -0
  1039. package/src/components/DatePicker/date-picker.spec.md +337 -0
  1040. package/src/components/DatePicker/date-picker.stories.tsx +323 -0
  1041. package/src/components/DatePicker/date-picker.tsx +46 -22
  1042. package/src/components/DatePicker/index.ts +5 -0
  1043. package/src/components/DescriptionList/description-list.anatomy.stories.tsx +252 -0
  1044. package/src/components/DescriptionList/description-list.principles.stories.tsx +309 -0
  1045. package/src/components/DescriptionList/description-list.spec.md +220 -0
  1046. package/src/components/DescriptionList/description-list.stories.tsx +112 -0
  1047. package/src/components/DescriptionList/description-list.tsx +3 -3
  1048. package/src/components/DescriptionList/index.ts +5 -0
  1049. package/src/components/Dialog/dialog.anatomy.stories.tsx +484 -0
  1050. package/src/components/Dialog/dialog.principles.stories.tsx +313 -0
  1051. package/src/components/Dialog/dialog.spec.md +216 -0
  1052. package/src/components/Dialog/dialog.stories.tsx +483 -0
  1053. package/src/components/Dialog/dialog.tsx +9 -9
  1054. package/src/components/Dialog/index.ts +5 -0
  1055. package/src/components/DropdownMenu/dropdown-menu.anatomy.stories.tsx +969 -0
  1056. package/src/components/DropdownMenu/dropdown-menu.principles.stories.tsx +339 -0
  1057. package/src/components/DropdownMenu/dropdown-menu.spec.md +260 -0
  1058. package/src/components/DropdownMenu/dropdown-menu.stories.tsx +286 -0
  1059. package/src/components/DropdownMenu/dropdown-menu.tsx +29 -7
  1060. package/src/components/DropdownMenu/index.ts +5 -0
  1061. package/src/components/Empty/empty.anatomy.stories.tsx +275 -0
  1062. package/src/components/Empty/empty.principles.stories.tsx +314 -0
  1063. package/src/components/Empty/empty.spec.md +216 -0
  1064. package/src/components/Empty/empty.stories.tsx +80 -0
  1065. package/src/components/Empty/empty.tsx +16 -7
  1066. package/src/components/Empty/index.ts +5 -0
  1067. package/src/components/Field/field-context.ts +98 -0
  1068. package/src/components/Field/field-controls.spec.md +382 -0
  1069. package/src/components/Field/field-types.ts +1 -1
  1070. package/src/components/Field/field-wrapper.tsx +6 -6
  1071. package/src/components/Field/field.anatomy.stories.tsx +544 -0
  1072. package/src/components/Field/field.principles.stories.tsx +278 -0
  1073. package/src/components/Field/field.spec.md +460 -0
  1074. package/src/components/Field/field.stories.tsx +716 -0
  1075. package/src/components/Field/field.tsx +12 -5
  1076. package/src/components/Field/form-validation.spec.md +172 -0
  1077. package/src/components/Field/index.ts +5 -0
  1078. package/src/components/Field/use-form-validation.ts +242 -0
  1079. package/src/components/FieldControlGroup/field-control-group.anatomy.stories.tsx +118 -0
  1080. package/src/components/FieldControlGroup/field-control-group.principles.stories.tsx +121 -0
  1081. package/src/components/FieldControlGroup/field-control-group.spec.md +195 -0
  1082. package/src/components/FieldControlGroup/field-control-group.stories.tsx +161 -0
  1083. package/src/components/FieldControlGroup/field-control-group.tsx +9 -8
  1084. package/src/components/FieldControlGroup/index.ts +5 -0
  1085. package/src/components/FileItem/file-item.anatomy.stories.tsx +344 -0
  1086. package/src/components/FileItem/file-item.principles.stories.tsx +276 -0
  1087. package/src/components/FileItem/file-item.spec.md +491 -0
  1088. package/src/components/FileItem/file-item.stories.tsx +265 -0
  1089. package/src/components/FileItem/file-item.tsx +37 -13
  1090. package/src/components/FileItem/index.ts +5 -0
  1091. package/src/components/FileUpload/file-upload.anatomy.stories.tsx +446 -0
  1092. package/src/components/FileUpload/file-upload.principles.stories.tsx +312 -0
  1093. package/src/components/FileUpload/file-upload.spec.md +163 -0
  1094. package/src/components/FileUpload/file-upload.stories.tsx +167 -0
  1095. package/src/components/FileUpload/file-upload.tsx +78 -27
  1096. package/src/components/FileUpload/index.ts +5 -0
  1097. package/src/components/FileViewer/file-viewer.anatomy.stories.tsx +1127 -0
  1098. package/src/components/FileViewer/file-viewer.principles.stories.tsx +636 -0
  1099. package/src/components/FileViewer/file-viewer.spec.md +368 -0
  1100. package/src/components/FileViewer/file-viewer.stories.tsx +407 -0
  1101. package/src/components/FileViewer/file-viewer.tsx +58 -28
  1102. package/src/components/FileViewer/index.ts +5 -0
  1103. package/src/components/HoverCard/hover-card.anatomy.stories.tsx +145 -0
  1104. package/src/components/HoverCard/hover-card.principles.stories.tsx +222 -0
  1105. package/src/components/HoverCard/hover-card.spec.md +167 -0
  1106. package/src/components/HoverCard/hover-card.stories.tsx +304 -0
  1107. package/src/components/HoverCard/hover-card.tsx +15 -4
  1108. package/src/components/HoverCard/index.ts +5 -0
  1109. package/src/components/Input/index.ts +5 -0
  1110. package/src/components/Input/input.anatomy.stories.tsx +763 -0
  1111. package/src/components/Input/input.principles.stories.tsx +265 -0
  1112. package/src/components/Input/input.spec.md +207 -0
  1113. package/src/components/Input/input.stories.tsx +133 -0
  1114. package/src/components/Input/input.tsx +17 -14
  1115. package/src/components/LinkInput/index.ts +5 -0
  1116. package/src/components/LinkInput/link-input.anatomy.stories.tsx +746 -0
  1117. package/src/components/LinkInput/link-input.principles.stories.tsx +182 -0
  1118. package/src/components/LinkInput/link-input.spec.md +144 -0
  1119. package/src/components/LinkInput/link-input.stories.tsx +132 -0
  1120. package/src/components/LinkInput/link-input.tsx +9 -8
  1121. package/src/components/Menu/index.ts +5 -0
  1122. package/src/components/Menu/menu-item.anatomy.stories.tsx +780 -0
  1123. package/src/components/Menu/menu-item.principles.stories.tsx +81 -0
  1124. package/src/components/Menu/menu-item.spec.md +304 -0
  1125. package/src/components/Menu/menu-item.stories.tsx +214 -0
  1126. package/src/components/Menu/menu-item.tsx +8 -3
  1127. package/src/components/Notice/index.ts +5 -0
  1128. package/src/components/Notice/notice.anatomy.stories.tsx +610 -0
  1129. package/src/components/Notice/notice.principles.stories.tsx +102 -0
  1130. package/src/components/Notice/notice.spec.md +158 -0
  1131. package/src/components/Notice/notice.stories.tsx +257 -0
  1132. package/src/components/Notice/notice.tsx +26 -10
  1133. package/src/components/NumberInput/index.ts +5 -0
  1134. package/src/components/NumberInput/number-input.anatomy.stories.tsx +787 -0
  1135. package/src/components/NumberInput/number-input.principles.stories.tsx +199 -0
  1136. package/src/components/NumberInput/number-input.spec.md +144 -0
  1137. package/src/components/NumberInput/number-input.stories.tsx +142 -0
  1138. package/src/components/NumberInput/number-input.tsx +9 -10
  1139. package/src/components/OverflowIndicator/index.ts +5 -0
  1140. package/src/components/OverflowIndicator/overflow-indicator.anatomy.stories.tsx +549 -0
  1141. package/src/components/OverflowIndicator/overflow-indicator.principles.stories.tsx +77 -0
  1142. package/src/components/OverflowIndicator/overflow-indicator.spec.md +127 -0
  1143. package/src/components/OverflowIndicator/overflow-indicator.stories.tsx +238 -0
  1144. package/src/components/OverflowIndicator/overflow-indicator.tsx +19 -6
  1145. package/src/components/PeoplePicker/index.ts +5 -0
  1146. package/src/components/PeoplePicker/people-picker-helpers.ts +5 -5
  1147. package/src/components/PeoplePicker/people-picker.anatomy.stories.tsx +427 -0
  1148. package/src/components/PeoplePicker/people-picker.principles.stories.tsx +192 -0
  1149. package/src/components/PeoplePicker/people-picker.spec.md +292 -0
  1150. package/src/components/PeoplePicker/people-picker.stories.tsx +162 -0
  1151. package/src/components/PeoplePicker/people-picker.tsx +31 -22
  1152. package/src/components/PeoplePicker/person-display.tsx +30 -29
  1153. package/src/components/Popover/index.ts +5 -0
  1154. package/src/components/Popover/popover.anatomy.stories.tsx +279 -0
  1155. package/src/components/Popover/popover.principles.stories.tsx +295 -0
  1156. package/src/components/Popover/popover.spec.md +209 -0
  1157. package/src/components/Popover/popover.stories.tsx +116 -0
  1158. package/src/components/Popover/popover.tsx +17 -14
  1159. package/src/components/ProfileCard/index.ts +5 -0
  1160. package/src/components/ProfileCard/profile-card.anatomy.stories.tsx +504 -0
  1161. package/src/components/ProfileCard/profile-card.principles.stories.tsx +225 -0
  1162. package/src/components/ProfileCard/profile-card.spec.md +191 -0
  1163. package/src/components/ProfileCard/profile-card.stories.tsx +53 -0
  1164. package/src/components/{NameCard/name-card.tsx โ†’ ProfileCard/profile-card.tsx} +36 -30
  1165. package/src/components/ProgressBar/index.ts +5 -0
  1166. package/src/components/ProgressBar/progress-bar.anatomy.stories.tsx +438 -0
  1167. package/src/components/ProgressBar/progress-bar.principles.stories.tsx +339 -0
  1168. package/src/components/ProgressBar/progress-bar.spec.md +240 -0
  1169. package/src/components/ProgressBar/progress-bar.stories.tsx +119 -0
  1170. package/src/components/ProgressBar/progress-bar.tsx +4 -4
  1171. package/src/components/RadioGroup/index.ts +5 -0
  1172. package/src/components/RadioGroup/radio-group.anatomy.stories.tsx +681 -0
  1173. package/src/components/RadioGroup/radio-group.principles.stories.tsx +163 -0
  1174. package/src/components/RadioGroup/radio-group.spec.md +149 -0
  1175. package/src/components/RadioGroup/radio-group.stories.tsx +101 -0
  1176. package/src/components/RadioGroup/radio-group.tsx +114 -57
  1177. package/src/components/Rating/index.ts +5 -0
  1178. package/src/components/Rating/rating.anatomy.stories.tsx +495 -0
  1179. package/src/components/Rating/rating.principles.stories.tsx +296 -0
  1180. package/src/components/Rating/rating.spec.md +214 -0
  1181. package/src/components/Rating/rating.stories.tsx +133 -0
  1182. package/src/components/Rating/rating.tsx +29 -14
  1183. package/src/components/ScrollArea/index.ts +5 -0
  1184. package/src/components/ScrollArea/scroll-area.anatomy.stories.tsx +451 -0
  1185. package/src/components/ScrollArea/scroll-area.principles.stories.tsx +331 -0
  1186. package/src/components/ScrollArea/scroll-area.spec.md +143 -0
  1187. package/src/components/ScrollArea/scroll-area.stories.tsx +243 -0
  1188. package/src/components/ScrollArea/scroll-area.tsx +2 -2
  1189. package/src/components/SegmentedControl/index.ts +5 -0
  1190. package/src/components/SegmentedControl/segmented-control.anatomy.stories.tsx +295 -0
  1191. package/src/components/SegmentedControl/segmented-control.principles.stories.tsx +281 -0
  1192. package/src/components/SegmentedControl/segmented-control.spec.md +297 -0
  1193. package/src/components/SegmentedControl/segmented-control.stories.tsx +33 -0
  1194. package/src/components/SegmentedControl/segmented-control.tsx +9 -10
  1195. package/src/components/Select/index.ts +5 -0
  1196. package/src/components/Select/select.anatomy.stories.tsx +828 -0
  1197. package/src/components/Select/select.principles.stories.tsx +311 -0
  1198. package/src/components/Select/select.spec.md +337 -0
  1199. package/src/components/Select/select.stories.tsx +198 -0
  1200. package/src/components/Select/select.tsx +37 -16
  1201. package/src/components/SelectMenu/index.ts +5 -0
  1202. package/src/components/SelectMenu/select-menu.anatomy.stories.tsx +812 -0
  1203. package/src/components/SelectMenu/select-menu.principles.stories.tsx +107 -0
  1204. package/src/components/SelectMenu/select-menu.spec.md +229 -0
  1205. package/src/components/SelectMenu/select-menu.stories.tsx +155 -0
  1206. package/src/components/SelectMenu/select-menu.tsx +34 -9
  1207. package/src/components/SelectionControl/index.ts +5 -0
  1208. package/src/components/SelectionControl/selection-item.anatomy.stories.tsx +571 -0
  1209. package/src/components/SelectionControl/selection-item.principles.stories.tsx +77 -0
  1210. package/src/components/SelectionControl/selection-item.spec.md +141 -0
  1211. package/src/components/SelectionControl/selection-item.stories.tsx +137 -0
  1212. package/src/components/SelectionControl/selection-item.tsx +8 -2
  1213. package/src/components/Separator/index.ts +5 -0
  1214. package/src/components/Separator/separator.anatomy.stories.tsx +125 -0
  1215. package/src/components/Separator/separator.principles.stories.tsx +141 -0
  1216. package/src/components/Separator/separator.spec.md +115 -0
  1217. package/src/components/Separator/separator.stories.tsx +127 -0
  1218. package/src/components/Separator/separator.tsx +2 -2
  1219. package/src/components/Sheet/index.ts +5 -0
  1220. package/src/components/Sheet/sheet.anatomy.stories.tsx +269 -0
  1221. package/src/components/Sheet/sheet.principles.stories.tsx +351 -0
  1222. package/src/components/Sheet/sheet.spec.md +146 -0
  1223. package/src/components/Sheet/sheet.stories.tsx +168 -0
  1224. package/src/components/Sheet/sheet.tsx +7 -6
  1225. package/src/components/Sidebar/index.ts +5 -0
  1226. package/src/components/Sidebar/sidebar.anatomy.stories.tsx +772 -0
  1227. package/src/components/Sidebar/sidebar.principles.stories.tsx +505 -0
  1228. package/src/components/Sidebar/sidebar.spec.md +724 -0
  1229. package/src/components/Sidebar/sidebar.stories.tsx +498 -0
  1230. package/src/components/Sidebar/sidebar.tsx +20 -9
  1231. package/src/components/Skeleton/index.ts +5 -0
  1232. package/src/components/Skeleton/skeleton.anatomy.stories.tsx +145 -0
  1233. package/src/components/Skeleton/skeleton.principles.stories.tsx +234 -0
  1234. package/src/components/Skeleton/skeleton.spec.md +106 -0
  1235. package/src/components/Skeleton/skeleton.stories.tsx +137 -0
  1236. package/src/components/Skeleton/skeleton.tsx +1 -1
  1237. package/src/components/Slider/index.ts +5 -0
  1238. package/src/components/Slider/slider.anatomy.stories.tsx +236 -0
  1239. package/src/components/Slider/slider.principles.stories.tsx +250 -0
  1240. package/src/components/Slider/slider.spec.md +358 -0
  1241. package/src/components/Slider/slider.stories.tsx +99 -0
  1242. package/src/components/Slider/slider.tsx +54 -16
  1243. package/src/components/Steps/index.ts +5 -0
  1244. package/src/components/Steps/steps.anatomy.stories.tsx +448 -0
  1245. package/src/components/Steps/steps.principles.stories.tsx +300 -0
  1246. package/src/components/Steps/steps.spec.md +479 -0
  1247. package/src/components/Steps/steps.stories.tsx +335 -0
  1248. package/src/components/Steps/steps.tsx +56 -26
  1249. package/src/components/Switch/index.ts +5 -0
  1250. package/src/components/Switch/switch.anatomy.stories.tsx +227 -0
  1251. package/src/components/Switch/switch.principles.stories.tsx +174 -0
  1252. package/src/components/Switch/switch.spec.md +238 -0
  1253. package/src/components/Switch/switch.stories.tsx +107 -0
  1254. package/src/components/Switch/switch.tsx +69 -32
  1255. package/src/components/Tabs/index.ts +5 -0
  1256. package/src/components/Tabs/tabs.anatomy.stories.tsx +414 -0
  1257. package/src/components/Tabs/tabs.principles.stories.tsx +257 -0
  1258. package/src/components/Tabs/tabs.spec.md +331 -0
  1259. package/src/components/Tabs/tabs.stories.tsx +155 -0
  1260. package/src/components/Tabs/tabs.tsx +17 -10
  1261. package/src/components/Tag/index.ts +5 -0
  1262. package/src/components/Tag/tag.anatomy.stories.tsx +664 -0
  1263. package/src/components/Tag/tag.principles.stories.tsx +270 -0
  1264. package/src/components/Tag/tag.spec.md +324 -0
  1265. package/src/components/Tag/tag.stories.tsx +69 -0
  1266. package/src/components/Tag/tag.tsx +55 -57
  1267. package/src/components/Textarea/index.ts +5 -0
  1268. package/src/components/Textarea/textarea.anatomy.stories.tsx +304 -0
  1269. package/src/components/Textarea/textarea.principles.stories.tsx +175 -0
  1270. package/src/components/Textarea/textarea.spec.md +162 -0
  1271. package/src/components/Textarea/textarea.stories.tsx +53 -0
  1272. package/src/components/Textarea/textarea.tsx +20 -18
  1273. package/src/components/TimePicker/index.ts +5 -0
  1274. package/src/components/TimePicker/time-columns.tsx +8 -1
  1275. package/src/components/TimePicker/time-picker.anatomy.stories.tsx +281 -0
  1276. package/src/components/TimePicker/time-picker.principles.stories.tsx +140 -0
  1277. package/src/components/TimePicker/time-picker.spec.md +290 -0
  1278. package/src/components/TimePicker/time-picker.stories.tsx +193 -0
  1279. package/src/components/TimePicker/time-picker.tsx +41 -23
  1280. package/src/components/Toast/index.ts +5 -0
  1281. package/src/components/Toast/toast.anatomy.stories.tsx +324 -0
  1282. package/src/components/Toast/toast.principles.stories.tsx +217 -0
  1283. package/src/components/Toast/toast.spec.md +181 -0
  1284. package/src/components/Toast/toast.stories.tsx +125 -0
  1285. package/src/components/Toast/toast.tsx +2 -2
  1286. package/src/components/Tooltip/index.ts +5 -0
  1287. package/src/components/Tooltip/tooltip.anatomy.stories.tsx +413 -0
  1288. package/src/components/Tooltip/tooltip.principles.stories.tsx +204 -0
  1289. package/src/components/Tooltip/tooltip.spec.md +142 -0
  1290. package/src/components/Tooltip/tooltip.stories.tsx +116 -0
  1291. package/src/components/Tooltip/tooltip.tsx +4 -1
  1292. package/src/components/TreeView/index.ts +5 -0
  1293. package/src/components/TreeView/tree-view.anatomy.stories.tsx +426 -0
  1294. package/src/components/TreeView/tree-view.principles.stories.tsx +190 -0
  1295. package/src/components/TreeView/tree-view.spec.md +390 -0
  1296. package/src/components/TreeView/tree-view.stories.tsx +299 -0
  1297. package/src/components/TreeView/tree-view.tsx +63 -26
  1298. package/src/hooks/use-overflow-items.ts +10 -6
  1299. package/src/index.ts +73 -69
  1300. package/src/lib/utils.ts +2 -1
  1301. package/src/patterns/README.md +15 -11
  1302. package/src/patterns/action-bar/action-bar.spec.md +465 -0
  1303. package/src/patterns/action-bar/action-bar.stories.tsx +612 -0
  1304. package/src/patterns/element-anatomy/element-anatomy.spec.md +217 -0
  1305. package/src/patterns/element-anatomy/index.ts +5 -0
  1306. package/src/patterns/element-anatomy/inline-action.spec.md +320 -0
  1307. package/src/patterns/element-anatomy/item-anatomy.spec.md +1051 -0
  1308. package/src/patterns/element-anatomy/item-anatomy.stories.tsx +1622 -0
  1309. package/src/patterns/element-anatomy/item-anatomy.tsx +9 -5
  1310. package/src/patterns/header-canonical/chrome-header.tsx +16 -5
  1311. package/src/patterns/header-canonical/header-canonical.css +2 -2
  1312. package/src/patterns/header-canonical/header-canonical.spec.md +326 -0
  1313. package/src/patterns/header-canonical/header-canonical.stories.tsx +150 -0
  1314. package/src/patterns/header-canonical/index.ts +5 -0
  1315. package/src/patterns/horizontal-overflow/horizontal-overflow.spec.md +211 -0
  1316. package/src/patterns/horizontal-overflow/index.ts +5 -0
  1317. package/src/patterns/overlay-surface/index.ts +5 -0
  1318. package/src/patterns/overlay-surface/overlay-surface.spec.md +442 -0
  1319. package/src/patterns/overlay-surface/overlay-surface.tsx +26 -11
  1320. package/src/patterns/resize-handle/index.ts +5 -0
  1321. package/src/patterns/resize-handle/resize-handle.spec.md +120 -0
  1322. package/src/patterns/resize-handle/resize-handle.stories.tsx +71 -0
  1323. package/src/story-governance/category-matrix.json +132 -0
  1324. package/src/story-governance/category-matrix.ts +55 -0
  1325. package/src/styles/base.css +92 -0
  1326. package/src/styles/tokens.css +11 -0
  1327. package/src/tokens/README.md +7 -2
  1328. package/src/tokens/categorical-color.ts +164 -0
  1329. package/src/tokens/color/color.spec.md +801 -0
  1330. package/src/tokens/color/color.stories.tsx +363 -0
  1331. package/src/tokens/color/primitives.css +7 -0
  1332. package/src/tokens/color/semantic.css +28 -13
  1333. package/src/tokens/density/density.spec.md +128 -0
  1334. package/src/tokens/density/density.stories.tsx +240 -0
  1335. package/src/tokens/elevation/elevation.spec.md +78 -0
  1336. package/src/tokens/elevation/elevation.stories.tsx +98 -0
  1337. package/src/tokens/layoutSpace/layoutSpace.css +1 -1
  1338. package/src/tokens/layoutSpace/layoutSpace.spec.md +324 -0
  1339. package/src/tokens/layoutSpace/layoutSpace.stories.tsx +75 -0
  1340. package/src/tokens/motion/motion.css +2 -2
  1341. package/src/tokens/motion/motion.spec.md +105 -0
  1342. package/src/tokens/motion/motion.ts +1 -1
  1343. package/src/tokens/opacity/opacity.spec.md +73 -0
  1344. package/src/tokens/opacity/opacity.stories.tsx +69 -0
  1345. package/src/tokens/orphan-tokens.spec.md +128 -0
  1346. package/src/tokens/radius/radius.spec.md +126 -0
  1347. package/src/tokens/radius/radius.stories.tsx +86 -0
  1348. package/src/tokens/token-system.spec.md +240 -0
  1349. package/src/tokens/typography/typography.spec.md +204 -0
  1350. package/src/tokens/typography/typography.stories.tsx +133 -0
  1351. package/src/tokens/uiSize/icon-size.ts +1 -2
  1352. package/src/tokens/uiSize/uiSize.css +21 -0
  1353. package/src/tokens/uiSize/uiSize.spec.md +465 -0
  1354. package/src/tokens/utility-registry.json +124 -0
  1355. package/dist/components/NameCard/name-card.d.ts.map +0 -1
  1356. package/dist/components/NameCard/name-card.js.map +0 -1
@@ -0,0 +1,516 @@
1
+ #!/bin/bash
2
+ set -uo pipefail
3
+ # Stop hook: AI self-audit โ€” detect 3 anti-patterns + inject corrective context.
4
+ #
5
+ # 1. Claim-verification gap:assistant claimedใ€Œverified / done / ๅ…จ้ƒจ / pass / ๅฎŒๆˆใ€
6
+ # in transcript but no verify cmd(tsc / hook test / compile / audit)ran this turn
7
+ # 2. Auto-prune trigger:CLAUDE.md > 500 OR foundational SSOT spec > cap โ†’ inject
8
+ # /knowledge-prune chain reminder
9
+ # 3. Repeated-topic detector:user ๅ•ๅŒ topic โ‰ฅ 3 turns within session โ†’ inject
10
+ # /ensure-canonical reminder(M19 trigger phrase auto-pipeline)
11
+ #
12
+ # Why: M14 / M19 markdown rules rely on AI memory(unreliable). ๆœฌ hook ๆ˜ฏ mechanical
13
+ # ่ฝๅœฐ โ€” AI ไธ้œ€่ฆ่จ˜ๅพ—่‡ชๆˆ‘ๅฏฉๆŸฅ,hook ๅผทๅˆถ inject ๅๆ€ prompt to next turnใ€‚
14
+ #
15
+ # Triggers: every Stop event(low cost ~50ms per turn)ใ€‚
16
+
17
+ source "$(dirname "$0")/_log-fire.sh" 2>/dev/null && log_hook_fire
18
+
19
+ set -uo pipefail
20
+
21
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
22
+ cd "$PROJECT_DIR" || exit 0
23
+
24
+ INPUT=$(cat 2>/dev/null || echo "{}")
25
+ TRANSCRIPT_PATH=$(echo "$INPUT" | jq -r '.transcript_path // ""' 2>/dev/null)
26
+ SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // ""' 2>/dev/null)
27
+
28
+ WARNINGS=""
29
+
30
+ # โ”€โ”€ Mechanism 1: Claim-verification gap โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
31
+ if [ -n "$TRANSCRIPT_PATH" ] && [ -f "$TRANSCRIPT_PATH" ]; then
32
+ # NOTE(2026-05-01 v3): Claude transcript ๆŠŠ tool_result ไนŸๆจ™ role="user"ใ€‚
33
+ # ไน‹ๅ‰ awk ๆŠ“ๅˆฐ tool_result line ็•ถใ€Œ็œŸ user promptใ€โ†’ scope window ็ฎ—้Œฏ
34
+ # โ†’ fire false positiveใ€‚
35
+ # ไฟฎ:grep filter ็œŸ user prompt(role=user ไธ” content ไธๆ˜ฏ tool_result),
36
+ # ๆ•ด transcript scan(ไธ tail 500 windowed,้ฟๅ… edge case)ใ€‚
37
+ LAST_USER_LINE=$(grep -n '"role":"user"' "$TRANSCRIPT_PATH" 2>/dev/null | \
38
+ grep -v '"type":"tool_result"' | tail -1 | cut -d: -f1)
39
+ LAST_USER_LINE=${LAST_USER_LINE:-0}
40
+ if [ "$LAST_USER_LINE" -gt 0 ]; then
41
+ LAST_ASSISTANT=$(tail -n +$((LAST_USER_LINE+1)) "$TRANSCRIPT_PATH" 2>/dev/null | \
42
+ jq -r 'select(.message.role=="assistant") | .message.content[]?.text // empty' 2>/dev/null)
43
+ else
44
+ LAST_ASSISTANT=""
45
+ fi
46
+
47
+ # Detect claim keywords
48
+ # NOTE(2026-05-01): ็ธฎ็ช„ CLAIM_RE โ€” ็งป้™คใ€ŒๅฎŒๆˆ / ๆฒ’ๅ•้กŒ / ๅ…จ้ƒจ done / ๅ…จ็ถ  / ๆฐธ้ ๅˆ่ฆใ€
49
+ # over-broad conversational ๅญ—็œผ(ๆฏ turn ็ตๅฐพใ€Œcommit ๅฎŒๆˆ pushใ€/ใ€Œๆฒ’ๅ•้กŒใ€่‡ช็„ถๅ‡บ็พ,
50
+ # false positive ็އ้ซ˜)ใ€‚ไฟ็•™ strong verification claim(verified / 0 errors / tsc 0 ็ญ‰)ใ€‚
51
+ # NOTE(2026-05-01): ็งป้™คใ€Œโœ…ใ€โ€” ๆˆ‘็”จ โœ… ๅœจ markdown table ๅˆ— status(ใ€Œโœ… ๅŒๆจฃ / โœ… ๅทฒ doneใ€)
52
+ # ไธๆ˜ฏ claim verified doneใ€‚CLAIM_RE match โœ… ๅœจ table context = false positiveใ€‚
53
+ # ไปไฟ็•™ strong verbal claim:verified / 0 errors / done\.(literal period)/ tsc 0
54
+ CLAIM_RE='(verified|all green|all pass|0 errors|tsc 0|done\.|complete\.)'
55
+ # ๆ’คๅ›ž escape:assistant ๅทฒๆ˜Ž็ขบๆ’คๅ›ž / ่ช้Œฏ / ้ ๅ…ˆ่ฒๆ˜Žๅฆๅฎš / ๅทฒ inline ่ท‘ verify โ†’ ไธ trigger gap
56
+ # ๅŒ…ๅซ claim-denial patterns(ใ€Œไธ claimใ€ใ€Œๆฒ’ claimใ€ใ€Œๆ˜Ž็ขบไธใ€)้ฟๅ… false positiveใ€‚
57
+ # ๅŠ  verify-result patterns(2026-05-01):AI inline ่ท‘ tsc / build ้กฏ็คบ result ๅญ—็œผ,
58
+ # ่ญ‰ๆ˜Žๆœฌ turn ๅทฒ้ฉ—่ญ‰,ไธๆ‡‰ trigger gapใ€‚
59
+ RETRACT_RE='(ๆ’คๅ›ž claim|false claim|ๆฒ’ไฟฎๅฅฝ|ๆœช้ฉ—่ญ‰|ๆœช้ฉ— ็œŸๅฏฆ|ๆ’คๅ›ž|ไธ claim|ๆฒ’ claim|ๆ˜Ž็ขบไธ|ๆ˜Ž็ขบๆœช|not yet verified|tsc exit 0|tsc:[[:space:]]*0|built in [0-9]+|โœ“ built|build-storybook exit 0|exit code 0)'
60
+ if echo "$LAST_ASSISTANT" | grep -qiE "$CLAIM_RE" && ! echo "$LAST_ASSISTANT" | grep -qiE "$RETRACT_RE"; then
61
+ # Check if any verify-class tool_use happened in THIS turn(after last user msg)
62
+ VERIFY_RE='(npx tsc|bash .claude/hooks/tests|compile-stories|npm run build|npm run test|design-system-audit|visual-audit)'
63
+ if [ "$LAST_USER_LINE" -gt 0 ]; then
64
+ THIS_TURN_TOOLS=$(tail -n +$((LAST_USER_LINE+1)) "$TRANSCRIPT_PATH" 2>/dev/null)
65
+ else
66
+ THIS_TURN_TOOLS=""
67
+ fi
68
+ if ! echo "$THIS_TURN_TOOLS" | grep -qE "$VERIFY_RE"; then
69
+ WARNINGS="${WARNINGS}\n โ€ข Claim-verify gap:ไฝ ่ชช verified / done / ๅฎŒๆˆ ็ญ‰,ไฝ†ๆœฌ turn ็„ก tsc / test / audit ็œŸๅŸท่กŒใ€‚ไธ‹่ผชๅฏฆ่ท‘้ฉ—่ญ‰ๆˆ–ๆ’คๅ›ž claimใ€‚"
70
+ # ๆจ™่จ˜ CRITICAL โ€” Mechanism 1 ๅ‡ BLOCKER(2026-04-30 ๅ‡็ดš):AI claim done ไฝ†็„ก้ฉ—่ญ‰
71
+ # = 100+ ๆฌก้‡่ค‡ failure modeใ€‚ไธๅ† silent log,exit `decision: block` ๅผทๅˆถ turn ไธ็ตๆŸใ€‚
72
+ CRITICAL_CLAIM_VERIFY=1
73
+ fi
74
+ fi
75
+ fi
76
+
77
+ # โ”€โ”€ Mechanism 7: Completeness-claim without DS-wide scan gate(2026-06-03 user-authorized)โ”€โ”€
78
+ # Why: ้‡่ค‡ failure mode โ€” AI ๅœจใ€Œๅ‰›ๅšๅฎŒ้‚ฃไปถไบ‹ใ€้‚Š็•Œๅฐฑๅฎฃๅ‘Šใ€Œๅ…จๅšๅฎŒ/ๅ…จ้ƒจๅฎŒๆˆใ€,ๆฒ’ๅ…ˆ่ท‘ M10
79
+ # ใ€Œๆ”นไธ€่™•็œ‹ไธ‰่™•ใ€ๅ…จๅบซ stale-ref ๆŽƒๆ โ†’ user ๅ•ใ€Œ็œŸ็š„ๅšๅฎŒ?ใ€ๆ‰่ฃœๆŽƒๅ‡บ loose end(CF model ๆผ 3 ref
80
+ # / iceberg ็ญ‰)ใ€‚่งธ็™ผๅ™จ่ฉฒๆ˜ฏใ€Œๆˆ‘่ฆๅฎฃๅ‘Šๅ…จๅšๅฎŒใ€่‡ชๅทฑ,ไธๆ˜ฏ user pushbackใ€‚
81
+ # per self-verify.md Pre-final + meta-patterns M10 + mindset #6ใ€Œtell me onceใ€ใ€‚
82
+ if [ "${LAST_USER_LINE:-0}" -gt 0 ] && [ -n "$LAST_ASSISTANT" ]; then
83
+ COMPLETION_CLAIM_RE='(ๅ…จๅšๅฎŒ|ๅ…จ้ƒจๅšๅฎŒ|้ƒฝๅšๅฎŒไบ†|ๅ…จ้ƒจๅฎŒๆˆ|ๆ‰€ๆœ‰ไปปๅ‹™.{0,6}(ๅšๅฎŒ|ๅฎŒๆˆ)|100%.{0,4}ๅฎŒๆ•ด|็œŸ็š„.{0,4}ๅšๅฎŒ|ๅ…จๅšๅˆฐๅฎŒ)'
84
+ # ๅฆๅฎš/ๅ…่ฒฌๆŽ’้™ค(ๅฐ้ฝŠ Mechanism 1 RETRACT_RE ็ฒพ็ฅž,2026-06-03 ไฟฎ M7 ่‡ช่บซ false-positive):
85
+ # ๅฎฃๅ‘Šๅซใ€Œ้‚„ๆฒ’่ชชๅ…จๅšๅฎŒใ€ใ€Œๆฒ’่ณ‡ๆ ผ่ชชๅ…จๅšๅฎŒใ€ใ€Œๆ ธๅฟƒๅšๅฎŒโ€ฆๅพ…่ท‘ใ€ใ€Œ็ญ‰ X ๆ‰ๅ…จๅšๅฎŒ/่ฝๅœฐใ€็ญ‰ disclaimer = ้žๅฎŒๆˆๅฎฃๅ‘Š โ†’ ไธ fireใ€‚
86
+ COMPLETION_NEG_RE='(้‚„ๆฒ’.{0,6}(่ชช|ๅฎฃๅ‘Š|็ฎ—|ๅˆฐ)|ๆฒ’.{0,3}(่ชช|็ฎ—|่ณ‡ๆ ผ).{0,8}(ๅ…จๅšๅฎŒ|ๅฎŒๆ•ด)|ๆœช.{0,3}ๅ…จๅšๅฎŒ|ไธ(ๆ•ข|็ฎ—|ๆ˜ฏ|่ฉฒ).{0,6}ๅ…จๅšๅฎŒ|ๆ ธๅฟƒๅšๅฎŒ|ๅฎŒๆ•ดๆ€ง(ๆŽƒๆ)?ๅพ…|ๅพ….{0,4}(่ท‘|่ฝๅœฐ|้ฉ—)|็ญ‰.{0,18}(ๆ‰|ๅ†).{0,8}(ๅ…จๅšๅฎŒ|ๅฎŒๆ•ด|่ฝๅœฐ|ไธŠๆžถ)|ๅฐšๆœช.{0,4}ๅฎŒๆˆ)'
87
+ if echo "$LAST_ASSISTANT" | grep -qE "$COMPLETION_CLAIM_RE" && ! echo "$LAST_ASSISTANT" | grep -qE "$COMPLETION_NEG_RE"; then
88
+ THIS_TURN_FULL=$(tail -n +$((LAST_USER_LINE+1)) "$TRANSCRIPT_PATH" 2>/dev/null)
89
+ EDIT_COUNT=$(echo "$THIS_TURN_FULL" | grep -oE '"name":"(Edit|Write|MultiEdit)"' | wc -l | tr -d ' ')
90
+ HAS_COMMIT=$(echo "$THIS_TURN_FULL" | grep -cE 'git commit|git merge --ff')
91
+ if [ "${EDIT_COUNT:-0}" -ge 2 ] || [ "${HAS_COMMIT:-0}" -gt 0 ]; then
92
+ # ๅ…จๅบซๆŽƒๆ่ญ‰ๆ“š:grep -r/-rn / rg ่ทจ็›ฎ้Œ„ๆŽƒ stale ref,OR claim-verify ่กจ marker
93
+ SCAN_RE='(grep -[a-zA-Z]*r|rg -|claim-verify|ๅฎŒๆ•ดๆ€งๆŽƒๆ|ๆ”นไธ€่™•็œ‹ไธ‰่™•|stale.?ref|DS-wide|ๅ…จๅบซๆŽƒ)'
94
+ if ! echo "$THIS_TURN_FULL" | grep -qiE "$SCAN_RE"; then
95
+ WARNINGS="${WARNINGS}\n โ€ข ๐Ÿšจ ๅฎŒๆ•ดๆ€งๅฎฃๅ‘Š้–˜:ไฝ ๅฎฃๅ‘Šใ€Œๅ…จๅšๅฎŒ/ๅ…จ้ƒจๅฎŒๆˆใ€+ ๆœฌ turn ๅฏฆ่ณชๆ”นๅ‹•,ไฝ†็„กใ€Œๅ…จๅบซๆŽƒๆใ€่ญ‰ๆ“š(็„ก grep -r/rg ๆŽƒ stale refใ€็„ก claim-verify ่กจ)ใ€‚per self-verify.md Pre-final + M10ใ€Œๆ”นไธ€่™•็œ‹ไธ‰่™•ใ€:ๅฎฃๅ‘Šๅ…จๅšๅฎŒๅ‰ๅฟ…ๅ…ˆ่‡ชๅทฑ่ท‘ DS-wide stale-ref ๆŽƒๆ + claim-verify,ไธ็ญ‰ user ๅ•็ฌฌไบŒๆฌกใ€‚"
96
+ CRITICAL_COMPLETENESS=1
97
+ fi
98
+ fi
99
+ fi
100
+ fi
101
+
102
+ # โ”€โ”€ Mechanism 2: Auto-prune trigger โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
103
+ if [ -f CLAUDE.md ]; then
104
+ L=$(wc -l < CLAUDE.md | tr -d ' ')
105
+ if [ "$L" -gt 500 ]; then
106
+ WARNINGS="${WARNINGS}\n โ€ข CLAUDE.md ${L} ่กŒ(over 500 โ€” auto-prune trigger)ใ€‚ไธ‹่ผช invoke /knowledge-prune scope=full,ไธ deferใ€‚"
107
+ fi
108
+ fi
109
+
110
+ # Foundational SSOT spec over cap
111
+ for f in packages/design-system/src/tokens/color/color.spec.md \
112
+ packages/design-system/src/patterns/element-anatomy/item-anatomy.spec.md \
113
+ packages/design-system/src/components/Sidebar/sidebar.spec.md \
114
+ packages/design-system/src/components/TreeView/tree-view.spec.md \
115
+ packages/design-system/src/components/Field/field.spec.md \
116
+ packages/design-system/src/components/Field/field-controls.spec.md \
117
+ packages/design-system/src/components/Button/button.spec.md \
118
+ packages/design-system/src/patterns/overlay-surface/overlay-surface.spec.md \
119
+ packages/design-system/src/patterns/action-bar/action-bar.spec.md \
120
+ packages/design-system/src/tokens/uiSize/uiSize.spec.md; do
121
+ [ -f "$f" ] || continue
122
+ L=$(wc -l < "$f" | tr -d ' ')
123
+ case "$f" in
124
+ */item-anatomy.spec.md) cap=1200 ;;
125
+ # 2026-05-22 prune codify per CLAUDE.mdใ€Œfoundational SSOT ไพ‹ๅค– โ‰ค 800-1200ใ€range:
126
+ # color.spec.md = token system 218-line semantic ไธๅฏๆ‹† + nested theme + Atlassian-flow rationale,foundational tier 2 cap 1000ใ€‚
127
+ */color/color.spec.md) cap=1000 ;;
128
+ *) cap=800 ;;
129
+ esac
130
+ if [ "$L" -gt "$cap" ]; then
131
+ WARNINGS="${WARNINGS}\n โ€ข $f ${L}/${cap} cap โ€” auto-prune trigger,ไธ‹่ผช /knowledge-prune"
132
+ fi
133
+ done
134
+
135
+ # โ”€โ”€ Mechanism 4: Codex-reply-verify gap(2026-05-09 user-authorized)โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
136
+ # Why: feedback_codex_dual_track_synthesizer.md markdown rule ๆฒ’ enforce โ€” ๆˆ‘ๆฏๆฌก่ฒผ codex
137
+ # reply ๅฐฑ้Ž,ๆฒ’่ตฐ Step 4.5(verify cite)/ 4.6(regression scan)/ 5(own-version ๆฏ”็จฟ)ใ€‚
138
+ # ๆœฌ mechanism ๆฉŸๆขฐๅŒ–ๅตๆธฌ:ๅŒ turn ่ฎ€ codex reply file โ†’ ๅฟ…ๆœ‰ cite verify ๆˆ– retractใ€‚
139
+ #
140
+ # ่งธ็™ผ signal:ๆœฌ turn ๅ…งไปปไฝ• Read tool ๅ‘ฝไธญ `/tmp/codex-reply-*.md` ๆˆ– `.claude/tmp/codex-reply-*.md`
141
+ # ๅฟ…้ ˆ signal(ไปปไธ€):
142
+ # (a) Bash with `grep` against any file path(cite verify)
143
+ # (b) Bash with `npx tsc` / `bash .claude/hooks/tests`(regression-class verify)
144
+ # (c) Read against codex-cited code path(`packages/design-system/src/...`)
145
+ # (d) Explicit retract phrase(ๆ’คๅ›ž / ๆœชๆŽก็ด / ไธๆŽก็”จ / skip codex)
146
+ # ไปปไธ€ missing โ†’ CRITICAL ้€š็Ÿฅ;ๅŒ Mechanism 1 ๅ‡ BLOCKER ้˜ป turn ็ตๆŸใ€‚
147
+ if [ -n "$TRANSCRIPT_PATH" ] && [ -f "$TRANSCRIPT_PATH" ] && [ "$LAST_USER_LINE" -gt 0 ]; then
148
+ THIS_TURN_FULL=$(tail -n +$((LAST_USER_LINE+1)) "$TRANSCRIPT_PATH" 2>/dev/null)
149
+ CODEX_REPLY_READ=$(echo "$THIS_TURN_FULL" | grep -cE 'codex-reply-[a-zA-Z0-9_-]+\.md' 2>/dev/null)
150
+ CODEX_REPLY_READ=${CODEX_REPLY_READ:-0}
151
+ if [ "$CODEX_REPLY_READ" -gt 0 ]; then
152
+ # Signal (a)/(b): grep / tsc / hook tests / src/ Read
153
+ VERIFY_SIG_RE='(Bash.*grep|Bash.*npx tsc|Bash.*bash .claude/hooks/tests|Read.*packages/design-system/src)'
154
+ # Signal (d): retract phrase in last assistant message
155
+ # 2026-05-17 expanded: cover all FP patterns(historical cite / pure git / pure verify / 0 codex)
156
+ RETRACT_CODEX_RE='(ๆ’คๅ›žๆŽก็ด|ๆ’คๅ›ž claim|ๆœชๆŽก็ด codex|ไธๆŽก็”จ codex|skip codex|codex.*ๆœช verify|0 ๆขๆ–ฐ codex|0 codex|ๆฒ’ๅ•Ÿ codex|ๆฒ’่ฆๅ•Ÿ codex|็ด” git|็ด” verify|็ด”ๆ–‡ๅญ—|ๆœฌ turn ็ด”|ๆœฌ turn ็„ก codex|ๅผ•็”จ prior|cite previous|ๆ่ฟฐ prior|ๆญทๅฒ codex|historical reference)'
157
+ HAS_VERIFY=$(echo "$THIS_TURN_FULL" | grep -cE "$VERIFY_SIG_RE" 2>/dev/null)
158
+ HAS_VERIFY=${HAS_VERIFY:-0}
159
+ HAS_RETRACT=$(echo "$LAST_ASSISTANT" | grep -cE "$RETRACT_CODEX_RE" 2>/dev/null)
160
+ HAS_RETRACT=${HAS_RETRACT:-0}
161
+ if [ "$HAS_VERIFY" -eq 0 ] && [ "$HAS_RETRACT" -eq 0 ]; then
162
+ WARNINGS="${WARNINGS}\n โ€ข Codex-reply verify gap:ๆœฌ turn ่ฎ€ codex reply ไฝ†็„ก grep cite verify / tsc / hook tests / Read src/ใ€‚ไธ‹่ผชๅฏฆ Step 4.5/4.6 verify ๆˆ–ๆ’คๅ›žๆŽก็ดใ€‚"
163
+ CRITICAL_CODEX_VERIFY=1
164
+ fi
165
+
166
+ # โ”€โ”€ Sub-check: ๆฏ”็จฟ anti-pass-through(2026-05-09 user-authorized infra auto;ๅ‡็ดš dissent enforcement)โ”€โ”€
167
+ # User ๅๅพฉ็ณพๆญฃๆˆ‘ใ€Œpass-through degenerationใ€(็›ดๆŽฅ quote codex ไธๆจ™ Claude own version)
168
+ # `feedback_codex_dual_track_synthesizer.md` ่ฆๅฎš:ๅฟ… Layer A(Claude own)+ Layer B(codex own)+ Layer C(synthesize)
169
+ # 2026-05-09 v2 user verbatim:ใ€Œinfra ้‚„ๆ‡‰่ฉฒ่ฆๅผท่ฟซไฝ ่ทŸ codex ่‡ชๅ‹•้€ฒ่กŒๅˆ็†ๆœ‰ไพๆ“š(ๅ„่‡ชๅƒ่€ƒไธ–็•Œ็ดš็š„่จญ่จˆๅพŒๆˆ‘ๅ€‘็š„่จญ่จˆ็ณป็ตฑ)็š„่พฏ่ซ–ๅง?ๅฐคๅ…ถๆ˜ฏไฝ ๅ€‘ๆ„่ฆ‹ไธๅŒ็š„ๆ™‚ๅ€™,ๆ‡‰่ฉฒ่พฏๅ‡บไธ€ๅ€‹ๆœ€ๅฎŒ็พŽๅฎŒๆ•ดไธ”ๅ…จๆ–นไฝ็š„ๆ–นๆกˆๅ†ๆไบค็ตฆๆˆ‘ใ€
170
+ # Mechanical ๅตๆธฌ:ๆœฌ turn ่ฎ€ codex reply ๅฟ…ๅซ (own-version OR dissent OR retract) โ€” ไปปไธ€ valid;
171
+ # ่‹ฅ turn ้‚„ๅ‹• spec.md / packages/design-system/src / CLAUDE.md ็ญ‰ substantive home โ†’ ็ผบ่พฏ่ญ‰ โ†’ BLOCKER
172
+ OWN_VERSION_RE='(Claude own|Step 0\.5|ๆˆ‘ own analysis|ๆˆ‘ Step 0|own version|own analysis)'
173
+ DISSENT_RE='(ๆ’ž codex|ไธๅŒๆ„ codex|ๅ้ง codex|ๆ’คๅ›žๆŽก|ไธๆŽก codex|Layer C|ๆฏ”็จฟ|ๆˆ‘่ฆบๅพ— codex ้Œฏ|codex ๆ’žๆˆ‘ๆ’ž้Œฏ|codex ๆŽจ่ซ–้Œฏ|ๆŽก user|user ๆ’žๅฐ)'
174
+ HAS_OWN_VERSION=$(echo "$LAST_ASSISTANT" | grep -ciE "$OWN_VERSION_RE" 2>/dev/null)
175
+ HAS_OWN_VERSION=${HAS_OWN_VERSION:-0}
176
+ HAS_DISSENT=$(echo "$LAST_ASSISTANT" | grep -ciE "$DISSENT_RE" 2>/dev/null)
177
+ HAS_DISSENT=${HAS_DISSENT:-0}
178
+ HAS_DEBATE=$((HAS_OWN_VERSION + HAS_DISSENT + HAS_RETRACT))
179
+ if [ "$HAS_DEBATE" -eq 0 ]; then
180
+ WARNINGS="${WARNINGS}\n โ€ข Codex pass-through risk:ๆœฌ turn ่ฎ€ codex reply ไฝ†็„ก (Claude own / Step 0.5 / ๆ’ž codex / ๆ’คๅ›žๆŽก / Layer C ๆฏ”็จฟ) ไปปไธ€ markerใ€‚ไธ‹่ผชๆ˜Žๆจ™ใ€ŒLayer A Claude own:ใ€+ใ€ŒLayer C ๆ’ž codex N ้ปžใ€section,็œŸๆ’žไธ้Žๆฐด codex ็ต่ซ–ใ€‚"
181
+ # Sub-check: ๅŒ turn ๆœ‰ substantive edit + ็„ก่พฏ่ญ‰ โ†’ BLOCKER
182
+ SUBSTANTIVE_EDIT_RE='(Edit|Write).*(packages/design-system/src|\.spec\.md|CLAUDE\.md|\.claude/rules)'
183
+ HAS_SUBSTANTIVE=$(echo "$THIS_TURN_FULL" | grep -cE "$SUBSTANTIVE_EDIT_RE" 2>/dev/null)
184
+ HAS_SUBSTANTIVE=${HAS_SUBSTANTIVE:-0}
185
+ if [ "$HAS_SUBSTANTIVE" -gt 0 ]; then
186
+ CRITICAL_CODEX_VERIFY=1 # ๅ‡ BLOCKER:็„ก่พฏ่ญ‰ + ๅ‹• substantive home = ้•ๅใ€Œ็œŸ่พฏ่ซ–ใ€็ด€ๅพ‹
187
+ WARNINGS="${WARNINGS}\n ๐Ÿšจ BLOCKER ๅ‡็ดš:ๆœฌ turn ๅ‹• substantive home(spec/src/CLAUDE.md/rules)ไธ”็„ก่พฏ่ญ‰ marker โ†’ ้•ๅใ€Œ่ทŸ codex ็œŸ่พฏ่ซ–ๆ‰ shipใ€็ด€ๅพ‹ใ€‚็ซ‹ๅˆป inline ๆจ™ Layer C dissent OR ๆ’คๅ›ž substantive editใ€‚"
188
+ fi
189
+ fi
190
+
191
+ # โ”€โ”€ Sub-check M31 Phase-A-first(2026-05-29 codify per userใ€Œcodex ๅชๆ˜ฏ second opinionใ€)โ”€โ”€
192
+ # ๅตๆธฌ:ๆœฌ turn ่ฎ€ codex reply ไฝ†็„ก prior Claude-solo audit trace(Agent/Explore dispatch OR โ‰ฅ5 Grep/Read)
193
+ # โ†’ codex ่ขซ็•ถ primary ่€Œ้ž second opinion = ้•ๅ M31 dual-trackใ€ŒClaude ๅฟ…ๅ…ˆ่‡ชๅทฑ Phase Aใ€
194
+ # SSOT: memory/feedback_codex_dual_track_synthesizer.md(Sub-rule 3C/3D)
195
+ M31_PRIOR_AUDIT=$(echo "$THIS_TURN_FULL" | grep -cE '"(Agent|Task)"|subagent_type|Explore' 2>/dev/null)
196
+ M31_PRIOR_AUDIT=${M31_PRIOR_AUDIT:-0}
197
+ M31_GREP_READ=$(echo "$THIS_TURN_FULL" | grep -cE '"name":"(Grep|Read)"' 2>/dev/null)
198
+ M31_GREP_READ=${M31_GREP_READ:-0}
199
+ if [ "$M31_PRIOR_AUDIT" -eq 0 ] && [ "$M31_GREP_READ" -lt 5 ]; then
200
+ WARNINGS="${WARNINGS}\n โ€ข M31 Phase-A-first risk:ๆœฌ turn ๅ•Ÿ codex ไฝ†็„ก Claude-solo audit trace(Explore/Agent dispatch OR โ‰ฅ5 Grep/Read)ใ€‚codex = second opinion,Claude ๅฟ…ๅ…ˆ่‡ชๅทฑ่ท‘ๅฎŒๆ•ด Phase A ๆทฑๅบฆ audit ๆ‰ defer codex(่ท‘ๅนพๅ€‹ script โ‰  Phase A)ใ€‚per memory/feedback_codex_dual_track_synthesizer.md(Sub-rule 3C/3D)ใ€‚Anchor 2026-05-29:run test+tsc ๅฐฑ launch codex ่ทณ้Ž่‡ชๅทฑ audit,ๆผ 3 ๅ€‹ๅชๆœ‰ Claude ๆŠ“ๅˆฐ็š„ P0ใ€‚"
201
+ fi
202
+
203
+ # โ”€โ”€ Sub-check: ่จญ่จˆๆฑบ็ญ– implementation ๆฒ’ user approval(2026-05-09 user-authorized)โ”€โ”€
204
+ # User ็›ดๆŽฅ็ณพใ€Œ่จญ่จˆๆฑบ็ญ–็š„ๆฑ่ฅฟไฝ ๆ‡‰่ฉฒ่ฆๅ…ˆๅ•้Žๆˆ‘่ฎ“ๆˆ‘ๆฑบ็ญ–ๅง?็‚บไป€้บผๅฐฑ็›ดๆŽฅ้–‹่ท‘ใ€(commit 698ff58)
205
+ # CLAUDE.md `# ็จฝๆ ธ canonical` Audit-vs-execute ๅˆ†ๆฌŠ:substantive meaning โ†’ STOP ๆ่ญฐใ€‚
206
+ # ่จญ่จˆๆฑบ็ญ–(token ๆ› / hover behavior / spec L4 ๆ”นๅฏซ / state machine)= substantiveใ€‚
207
+ # 2026-05-15 NO-SAMPLE detection(audit-full-sweep canonical):
208
+ # ๅตๆธฌ sub-agent prompt ๅซ sample subset keyword + `/design-system-audit --deep` context
209
+ SAMPLE_RE='sample top [0-9]+|sampled top|subset|pick top [0-9]+|top hot|too many to scan|sampled components'
210
+ DEEP_AUDIT_RE='/design-system-audit.*--deep|design-system-audit --deep'
211
+ HAS_SAMPLE=$(echo "$THIS_TURN_FULL" | grep -cE "$SAMPLE_RE" 2>/dev/null)
212
+ HAS_DEEP=$(echo "$THIS_TURN_FULL" | grep -cE "$DEEP_AUDIT_RE" 2>/dev/null)
213
+ HAS_SAMPLE=${HAS_SAMPLE:-0}
214
+ HAS_DEEP=${HAS_DEEP:-0}
215
+ if [ "$HAS_SAMPLE" -gt 0 ] && [ "$HAS_DEEP" -gt 0 ]; then
216
+ WARNINGS="${WARNINGS}\n โ€ข NO-SAMPLE violation:ๆœฌ turn `--deep` audit sub-agent prompt ๅซ sample subset keyword(sample top N / subset / pick top X ็ญ‰)้•ๅ audit-full-sweep canonical(memory/feedback_audit_full_sweep_not_sample.md)ใ€‚ไธ‹่ผช sub-agent dispatch ๆ”น DS-wide ALL components,context ไธๅค ๆ‹† stage ไธ sampleใ€‚"
217
+ fi
218
+
219
+ # Mechanical ๅตๆธฌ:codex reply read + Edit/Write production code(packages/design-system/src/)+ ่ฟ‘ user ็„ก approval keyword โ†’ BLOCKER
220
+ # 2026-05-15 fix(per userใ€ŒHook false-positive ๅ†็Šฏใ€):
221
+ # ๅŽŸ regex `(Edit|Write).*packages/design-system/src` ๅœจ raw text ไธŠๆŽƒ โ†’ ่ชคๆŠ“ sub-agent report
222
+ # ๅ…งๅซใ€ŒEdit packages/design-system/src/...ใ€file:line snippet ็š„ๆ่ฟฐๆ–‡ๅญ—ใ€‚
223
+ # ๅ‡็ดš:jq ็›ดๆŽฅๆŽƒ tool_use ็ตๆง‹,ๅช็ฎ—ใ€Œtool_name in {Edit,Write,MultiEdit} AND
224
+ # tool_input.file_path startsWith packages/design-system/src/ AND NOT .stories.tsx/.test.ts/.spec.ts allowlistใ€ใ€‚
225
+ HAS_EDIT_PRODUCTION=$(echo "$THIS_TURN_FULL" | jq -r '
226
+ select(.message.content) | .message.content[]? |
227
+ select(.type == "tool_use") |
228
+ select(.name == "Edit" or .name == "Write" or .name == "MultiEdit") |
229
+ .input.file_path // empty
230
+ ' 2>/dev/null | \
231
+ grep -E '/packages/design-system/src/' | \
232
+ grep -vE '\.stories\.tsx$|\.test\.ts$|\.spec\.ts$|\.anatomy\.stories\.tsx$|\.principles\.stories\.tsx$' | \
233
+ wc -l | tr -d ' ')
234
+ HAS_EDIT_PRODUCTION=${HAS_EDIT_PRODUCTION:-0}
235
+ if [ "$HAS_EDIT_PRODUCTION" -gt 0 ]; then
236
+ # Detect approval keyword in ่ฟ‘ 5 ๆข user message(transcript jq parse limited;็ฐกๅŒ–็”จ USER_MSGS extract)
237
+ # 2026-05-13:expanded keyword list per user verbatimใ€Œ3. stop_self_audit.sh ้‚ฃๅ€‹ keyword regex ่ฆไธ่ฆๆ“ด?ๆ“ดใ€
238
+ # ๅŠ  5 ๅ€‹่ขซๅ‰ turn ๆŠ“ๆผ็š„ user ๆ‹ๆฟ keyword(2026-05-12 sessions):ๅšๅฎŒ / ๅ…จ้ƒจๅšๅฎŒ / ๅšๅˆฐๅฎŒ / ้ฆฌไธๅœ่น„ / ๅปบ่ญฐๅšใ€‚
239
+ # 2026-05-21 M34 fix:ๅŠ ใ€Œๅฆณใ€่ฎŠ้ซ” / ใ€Œๆฑบ็ญ–Nใ€ numbered directive / ใ€Œๅšๅˆฐๅฅฝใ€ใ€Œ้ƒฝๅšใ€ใ€Œๅ…จๅšใ€ โ€” ๅฐ้ฝŠ
240
+ # check_substantive_edit_approval_preflight.sh sister regex(SSOT ๅŒๆญฅ)ใ€‚
241
+ # SSOT-sync with check_substantive_edit_approval_preflight.sh:61(2026-05-21 Phase B codex ๆŠ“ๅ…ฉ hook ไธไธ€่‡ด)
242
+ APPROVAL_RE='(ๅŒๆ„|ๆŽก็”จ|ๆŽก็ด|ๆ‹ๆฟ|ๆ‹\s*[A-Z0-9]|ๅฏไปฅ|ๆ”นๆˆ|ๆ”น็‚บ|ๅŸท่กŒ|ไธŠๅง|push|implement|go ahead|approved|OK|ๅฅฝ|ๆฒ’ๅ•้กŒ|ๅšไธ€ๅš|ๅฐฑๅš|ๅšๅง|ๅšๅฎŒ|ๅ…จ้ƒจๅšๅฎŒ|ๅšๅˆฐๅฎŒ|ๅšๅˆฐๅฅฝ|้ƒฝๅš|ๅ…จๅš|้ฆฌไธๅœ่น„|ๅปบ่ญฐๅš|ship|ๅˆ main|^#[0-9]+|็…งไฝ |็…งๅฆณ|็…งๅปบ่ญฐ|็…งๅ…ฑ่ญ˜|็…งๆˆ‘็š„|ๆŒ‰็…ง|ๆฑบ็ญ–[ไธ€ไบŒไธ‰ๅ››ไบ”ๅ…ญไธƒๅ…ซไนๅ1-9]|[A-Z][0-9]+\s*(ๅš|ๆ”น|ไฟฎ)|ๅ…ˆ\s*[A-Z][0-9]+)'
243
+ RECENT_USER_MSGS=$(tail -100 "$TRANSCRIPT_PATH" 2>/dev/null | \
244
+ jq -r 'select(.message.role=="user") | .message.content // empty | if type=="string" then . else (.[]? | .text // empty) end' 2>/dev/null | tail -5)
245
+ HAS_APPROVAL=$(echo "$RECENT_USER_MSGS" | grep -cE "$APPROVAL_RE" 2>/dev/null)
246
+ HAS_APPROVAL=${HAS_APPROVAL:-0}
247
+ if [ "$HAS_APPROVAL" -eq 0 ] && [ "$HAS_RETRACT" -eq 0 ]; then
248
+ WARNINGS="${WARNINGS}\n โ€ข Codex-design-no-approval:ๆœฌ turn ่ฎ€ codex reply + Edit/Write packages/design-system/src ไฝ†่ฟ‘ 5 ๆข user message ็„ก approval keyword(ๅŒๆ„/ๆŽก็”จ/ๆ‹ๆฟ/ๅฏไปฅ/ๆ”นๆˆ/OK/ๅฅฝ/push)ใ€‚่จญ่จˆๆฑบ็ญ– = substantive,้œ€ user ๆ‹ๆฟๆ‰ ship โ€” ๅฐ้ฝŠ CLAUDE.md ็จฝๆ ธ canonical Audit-vs-execute ๅˆ†ๆฌŠใ€‚ไธ‹่ผช (a) ๆ’คๅ›ž ship + revert,OR (b) ็ขบ่ช user ๅทฒๆ‹ๆฟๅˆ—ๅ…ท้ซ” quoteใ€‚"
249
+ CRITICAL_CODEX_DESIGN_NO_APPROVAL=1
250
+ fi
251
+ fi
252
+ fi
253
+ fi
254
+
255
+ # โ”€โ”€ Mechanism 6: PushNotification gap(2026-05-18 user-authorized)โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
256
+ # Why: memory/feedback_push_always_call.md ๆ˜Žๆ–‡ใ€Œๆฏ substantive turn ็ตๅฐพๅฟ… call PushNotificationใ€,
257
+ # ไฝ†็ด” markdown rule AI ๆœƒ silently forget(ๆœฌ session ไธญๆฎตๆผ 5+ turns,user ๆŠ“ใ€Œ็‚บไฝ•ๅฎŒๆˆๅ›ž่ฆ†ๆฒ’้€้€š็Ÿฅใ€)ใ€‚
258
+ # ๆฉŸๆขฐๅŒ–:ๆœฌ turn assistant ๆœ‰ substantive output(text > 200 chars OR commit/ship/push/done ็ญ‰)+
259
+ # ็„ก PushNotification tool call trace โ†’ P1 warn,ๆœชไพ†ๅ‡ BLOCKER ่‹ฅไปๆผใ€‚
260
+ # Allow escape:turn ็ด” ack(< 200 chars ็ขบ่ช้กž reply)/ ็ด”็ฟป่ญฏ / ็ด” grep-only ็„ก actionใ€‚
261
+ if [ -n "$TRANSCRIPT_PATH" ] && [ -f "$TRANSCRIPT_PATH" ] && [ "${LAST_USER_LINE:-0}" -gt 0 ]; then
262
+ ASSISTANT_LEN=$(echo "$LAST_ASSISTANT" | wc -c | tr -d ' ')
263
+ ASSISTANT_LEN=${ASSISTANT_LEN:-0}
264
+ # Substantive trigger:้•ท reply OR ๅซ commit/ship/done/push keyword
265
+ SUBSTANTIVE_RE='(commit|ship|push|done|ๅฎŒๆˆ|ๅทฒ land|landed|merged|ๆธฌ่ฉฆ PASS|verify gate PASS)'
266
+ IS_SUBSTANTIVE=0
267
+ if [ "$ASSISTANT_LEN" -gt 200 ]; then IS_SUBSTANTIVE=1; fi
268
+ if echo "$LAST_ASSISTANT" | grep -qiE "$SUBSTANTIVE_RE"; then IS_SUBSTANTIVE=1; fi
269
+ if [ "$IS_SUBSTANTIVE" = "1" ]; then
270
+ # Check PushNotification tool call trace in this turn
271
+ HAS_PUSH=$(echo "$THIS_TURN_TOOLS" | grep -ciE 'PushNotification|"name":"PushNotification"' 2>/dev/null)
272
+ HAS_PUSH=${HAS_PUSH:-0}
273
+ if [ "$HAS_PUSH" -eq 0 ]; then
274
+ WARNINGS="${WARNINGS}\n โ€ข PushNotification gap:ๆœฌ turn substantive output ไฝ†็„ก PushNotification tool call traceใ€‚per memory/feedback_push_always_call.mdใ€Œๆฏ substantive turn ็ตๅฐพๅฟ… call,ไธ่‡ชๆˆ‘ suppress(harness ่‡ชๆฑบ)ใ€ใ€‚ไธ‹่ผช reply ็ตๅฐพๅฟ… call PushNotification(่‹ฅ terminal focused harness ่‡ชๆฑบ suppress = OK)ใ€‚"
275
+ fi
276
+ fi
277
+ fi
278
+
279
+ # โ”€โ”€ Mechanism 5: Codex transport discovery gap(2026-05-17 user-authorized)โ”€โ”€
280
+ # Why: SKILL.md L42-58 Step 0.4 ๅผทๅˆถ 3-test discovery(node_modules/.bin/codex / which / auth.json)
281
+ # ๅœจๅ•Ÿ codex ๅ‰ใ€‚Markdown rule ๆฒ’ enforce โ€” 2026-05-17 ๆˆ‘่ท‘ `which codex` ๅคฑๆ•—ๅฐฑๆ–ท่จ€ unreachable
282
+ # + ่ฉฆ sudo install / ็นž M28 ้–‹ PR / Explore agent ๆ›ฟ่บซ,user ๆŠ“ใ€Œ็‚บไฝ•่ƒฝๅคฑๆ†ถใ€ใ€‚ๆœฌ mechanism
283
+ # ๆฉŸๆขฐๅŒ–ๅตๆธฌ:ๆœฌ turn ๅซ codex collab ๆ„ๅœ– keyword AND ็„ก discovery cmd trace AND ็„กๆ’คๅ›ž โ†’ BLOCKERใ€‚
284
+ if [ -n "$TRANSCRIPT_PATH" ] && [ -f "$TRANSCRIPT_PATH" ] && [ "${LAST_USER_LINE:-0}" -gt 0 ]; then
285
+ THIS_TURN_RAW=$(tail -n +$((LAST_USER_LINE+1)) "$TRANSCRIPT_PATH" 2>/dev/null)
286
+ # 2026-05-17 fix:CODEX_INTENT scope ๆ”น LAST_ASSISTANT ่€Œ้ž THIS_TURN_RAW โ€”
287
+ # ๆŽ’้™ค bash commit message / tool input / status report cite ่งธ็™ผ FPใ€‚
288
+ # Active intent ๅฟ…ๅ‡บ็พๅœจ assistant prose(ใ€Œๆˆ‘ๆดพ codex / ๆ‰พ codex ๆฏ”็จฟใ€)ใ€‚
289
+ # 2026-05-27 tighten POSITIVE detection per userใ€Œๅ“่ณชไธ้™ SSOT ไธๅใ€directive:
290
+ # ๅŽŸ regex ๅŒ…ๅซ broad `dual-track` ่ทŸ `่ทŸ codex`(็„ก action verb)โ†’ retrospective mentions
291
+ # ่งธ็™ผ false-positive(ๆœฌ session โ‰ฅ 4x BLOCKER on doc-only text)ใ€‚Tighten:require action verb
292
+ # adjacent to codex/dual-track keywordใ€‚ไฟ็•™ narrow action patterns(@codex DISCUSS / ๆดพ / ๅ•Ÿ /
293
+ # dispatch / invoke / ้€ brief)โ€” ็œŸๅฏฆ invocation ๆฐธ้ ๅธถ action verbใ€‚
294
+ # Quality preserved:real codex invocation ๅฟ…ๅซ verb,tighten ไธ miss real case;
295
+ # retrospective documenting canonical ๆฒ’ verb,ๆญฃ็ขบ skipใ€‚
296
+ # 2026-05-27 v2 enrichment per Phase A+B ๅ…ฑ่ญ˜(Claude inline probe + codex independent probe ๅ„ๆŠ“ ~3-4 false-negative):
297
+ # ๅŠ  patterns:auxiliary verbใ€Œๆœƒ/willใ€+ codex verb / ใ€Œ่ซ‹ codex reviewใ€/ใ€Œ็™ผ็ตฆ codexใ€/ใ€Œ็”จ codex ๅšใ€/
298
+ # action verbใ€Œpropose|review|executeใ€adjacent / hyphenated `codex-collab` variantใ€‚
299
+ # Quality preserved:smoke test 23/23 PASS(ๅŒ…ๅซๆ–ฐๅขž EN + CN action-verb edge cases ไธๆผ)ใ€‚
300
+ CODEX_INTENT_RE='(่ทŸ|ๆ‰พ|่ซ‹|ๅ•|็”จ).{0,5}codex.{0,30}(่จŽ่ซ–|ๆฏ”็จฟ|่พฏ่ซ–|็ขบ่ช|propose|้€ brief|exec|review|ๅš|็œ‹)|(ๅ•Ÿ|่ท‘|ๅŸท่กŒ|่งธ็™ผ|ๅŸท่กŒ|invoke|run|start|trigger|execute|propose|action|will|may|going to).{0,15}(codex[-_ ]?(collab|exec|review)|dual-track)|@codex (DISCUSS|IMPLEMENT)|(ๆดพ|dispatch|invoke|send to|้€ brief|็™ผ็ตฆ|propose) codex|node_modules/\.bin/codex[[:space:]]+(exec|review)|codex.{0,10}(ๅš|่ท‘|review)|action[:๏ผš].{0,10}propose.{0,10}codex'
301
+ CODEX_INTENT=$(echo "$LAST_ASSISTANT" | grep -ciE "$CODEX_INTENT_RE" 2>/dev/null)
302
+ CODEX_INTENT=${CODEX_INTENT:-0}
303
+ if [ "$CODEX_INTENT" -gt 0 ]; then
304
+ DISCOVERY_RE='node_modules/\.bin/codex|which codex|\.codex/auth\.json'
305
+ HAS_DISCOVERY=$(echo "$THIS_TURN_RAW" | grep -cE "$DISCOVERY_RE" 2>/dev/null)
306
+ HAS_DISCOVERY=${HAS_DISCOVERY:-0}
307
+ # 2026-05-27 expanded NEGATIVE indicators(retrospective / documentation / canonical-describe contexts):
308
+ # ๅขžๅŠ  markers that signalใ€Œๆ่ฟฐ canonical / retrospective ็ด€ๅฟต anchorใ€notใ€Œๅ•Ÿ codex collabใ€ใ€‚
309
+ # Per AI-self-audit-unreliable canonical:ๆ“ด negative-list ไธ loosen positive,ๅ“่ณชไฟ็•™ใ€‚
310
+ RETRACT_TRANSPORT_RE='(ๆ’คๅ›ž codex|ๆ”น็”จ cloud|Explore ๆ›ฟ่บซ|ๆœช่ตฐ Step 0\.4|ๆœช่ท‘ discovery|codex ้€š้“ๆ–ท|0 codex collab|ๆฒ’่ฆๅ•Ÿ codex|ๆฒ’ๅ•Ÿ codex|ๆœฌ turn ็ด”|็ด” git|็ด” verify|็ด”ๆ–‡ๅญ—|ๆญทๅฒ codex|cite previous|cite prior|ๅผ•็”จ prior|ๆ่ฟฐ prior|็„ก codex (invocation|ๆ„ๅœ–|collab)|ๆœฌ turn ็„ก codex|retrospective (anchor|reference|mention)|้Œจไพ‹|้Œจ้ปž|็‚บไพ‹|ๆ˜ฏ supplementary|ๆ˜ฏ retrospective|documenting (canonical|skill)|skill ๆ่ฟฐ|skill ๆ–‡ๆช”|ๆœฌ่ผช reply ๆๅŠ.*ๆ˜ฏ retrospective|describing canonical|describe.*M31|M31.*็œŸๆ„|ๆ˜ฏ documentation|ๆ˜ฏ skill workflow ๆ่ฟฐ)'
311
+ HAS_RETRACT_TRANSPORT=$(echo "$LAST_ASSISTANT" | grep -cE "$RETRACT_TRANSPORT_RE" 2>/dev/null)
312
+ HAS_RETRACT_TRANSPORT=${HAS_RETRACT_TRANSPORT:-0}
313
+ if [ "$HAS_DISCOVERY" -eq 0 ] && [ "$HAS_RETRACT_TRANSPORT" -eq 0 ]; then
314
+ WARNINGS="${WARNINGS}\n โ€ข Codex transport discovery ๆœช่ท‘(SKILL.md Step 0.4):ๆœฌ turn ๅซ codex collab ๆ„ๅœ–ไฝ†็„ก \`node_modules/.bin/codex\` discovery cmdใ€‚ไธ‹่ผชๅ…ˆ่ท‘ 3-test ็ขบ่ช transport,็ฆๆ†‘ๅฐ่ฑก้ธ cloud / Explore ๆ›ฟ่บซใ€‚่ฉณ memory/feedback_codex_local_transport_node_modules.mdใ€‚"
315
+ CRITICAL_CODEX_TRANSPORT=1
316
+ fi
317
+ fi
318
+ fi
319
+
320
+ # โ”€โ”€ Mechanism 3: Repeated-topic detector(session-scope, M13/M19 trigger)โ”€โ”€
321
+ #
322
+ # Threshold rationale(ๅฐ้ฝŠ โ‰ฅ 3 ๅฎถไธ–็•Œ็ดš governance system,M8 binding)โ”€โ”€โ”€โ”€โ”€
323
+ #
324
+ # | ๅทฅๅ…ท | Threshold ๅ“ฒๅญธ | ๅฐๆ‡‰ๆœฌ hook |
325
+ # |------|---------------|-------------|
326
+ # | Bugsnag | occurrence count = 5 before alerting | trigger โ‰ฅ 5 |
327
+ # | PagerDuty | time-window dedup = 5 min | dedup window 30m(below) |
328
+ # | Datadog Watchdog | mean + 2ฯƒ outlier detection | TODO: dynamic threshold(baseline) |
329
+ # | ESLint | max-warnings = 10 | topic > 10 |
330
+ # | Sentry | alert frequency = 10 events/hour | topic > 10 |
331
+ # | SonarQube | cognitive complexity = 15(่ผƒๅฏฌ)| topic upper bound reference |
332
+ #
333
+ # Current threshold(fixed,ๅฐ้ฝŠ Bugsnag/ESLint/Sentry minimum ๅ…ฑ่ญ˜):
334
+ # - Trigger phrase: โ‰ฅ 5(ๅฐ้ฝŠ Bugsnag occurrence count 5)
335
+ # - Topic repeat: > 10(ๅฐ้ฝŠ ESLint max-warnings 10 + Sentry alert freq 10)
336
+ # - Dedup count: โ‰ฅ 5(ๅฐ้ฝŠ Bugsnag occurrence count 5;ๅŒ warning fired
337
+ # โ‰ฅ 5 ๆฌก still ๆฒ’่งฃ = ่ฉฒ user ไธปๅ‹•่™•็†,inject ็ฌฌ 6 ๆฌกไป็„กๆ•ˆ)
338
+ #
339
+ # TODO: When `.claude/logs/self-audit-baseline-counts.jsonl` ็ดฏ็ฉ โ‰ฅ 100 samples,
340
+ # ๆ”น dynamic threshold = baseline mean + 2ฯƒ(ๅฐ้ฝŠ Datadog Watchdog ๅ“ฒๅญธ)ใ€‚
341
+ # Baseline capture mechanism ๅœจๆœฌๆช”็ตๅฐพ(ๆฏ turn ๅฏซ trigger/topic count
342
+ # ไธ่ซ– fire ่ˆ‡ๅฆ,่ฎ“ future analysis ๆœ‰ ground truth distribution)ใ€‚
343
+ if [ -n "$TRANSCRIPT_PATH" ] && [ -f "$TRANSCRIPT_PATH" ]; then
344
+ # Extract user message texts from transcript(็ธฎ 500โ†’200,ๅช็œ‹ๆœ€่ฟ‘ turns)
345
+ USER_MSGS=$(tail -200 "$TRANSCRIPT_PATH" 2>/dev/null | \
346
+ jq -r 'select(.message.role=="user") | .message.content // empty | if type=="string" then . else (.[]? | .text // empty) end' 2>/dev/null)
347
+
348
+ # Detect M13/M19-style trigger phrases repeated across turns
349
+ TRIGGER_RE='(็ขบไฟ|ๆฐธ้ |ไธ็•™ๅพ…่พฆ|ไธ่ƒฝๆผ‚็งป|ๆฒ’ไพ‹ๅค–|ensure|always|never|world-class|ไธ–็•Œ็ดš)'
350
+ TRIGGER_COUNT=$(echo "$USER_MSGS" | grep -ciE "$TRIGGER_RE" 2>/dev/null)
351
+ TRIGGER_COUNT=${TRIGGER_COUNT:-0}
352
+
353
+ if [ "$TRIGGER_COUNT" -ge 5 ]; then
354
+ WARNINGS="${WARNINGS}\n โ€ข User trigger-phrase ็ดฏ่จˆ ${TRIGGER_COUNT} ๆฌก(M19 strong signal)ใ€‚็ขบ่ช /ensure-canonical 5-layer ๅ…จๅšๅฎŒ;่‹ฅๆœ‰ไปปไธ€ layer skip = ้•ๅ M19ใ€‚"
355
+ fi
356
+
357
+ # Same-topic repetition(quick keyword overlap heuristic)
358
+ TOPIC_KEYWORDS=$(echo "$USER_MSGS" | tr -s '[:space:]' '\n' | \
359
+ grep -iE '^(audit|prune|principles|trait|canonical|hook|skill|world-class|infra)$' | \
360
+ sort | uniq -c | sort -rn | head -3)
361
+ TOP_COUNT=$(echo "$TOPIC_KEYWORDS" | head -1 | awk '{print $1}')
362
+
363
+ if [ -n "$TOP_COUNT" ] && [ "$TOP_COUNT" -gt 10 ]; then
364
+ TOP_TOPIC=$(echo "$TOPIC_KEYWORDS" | head -1 | awk '{print $2}')
365
+ WARNINGS="${WARNINGS}\n โ€ข Topicใ€Œ${TOP_TOPIC}ใ€repeated ${TOP_COUNT}x โ€” likely user ็ฌฌ N ๆฌกๆ็คบๅŒไธป้กŒ,ๅฏ่ƒฝ prior turns ่ฝๅœฐไธๅพนๅบ•ใ€‚"
366
+ fi
367
+
368
+ # โ”€โ”€ Mechanism 4: M33 stop-hook overfire reflex detection(2026-05-13 ship)โ”€โ”€
369
+ #
370
+ # M33 canonical(meta-patterns.md):AI ๅฐ้€ฃ็บŒ stop hook BLOCKER ่‡ชๅ‹• conservative-defer
371
+ # ใ€Œไธ‹ๅ€‹ sessionใ€ใ€Œcontext budgetใ€ใ€Œ็œๅทฅใ€ๅ patternใ€‚Detect ้›™ๆขไปถ:
372
+ # (a) Last assistant reply ๅซ defer keyword
373
+ # (b) Recent user msgs ๅซ push-back keyword(user ๅ่ฆ†ๅ‚ฌๅšๅฎŒ)
374
+ # ๅ…ฉๆขไปถๆˆ็ซ‹ โ†’ WARNใ€Œrevert next-session framing,continue work or be specific about prereq deliverableใ€
375
+ # 2026-05-13 codex Q12 fix:dedup ้‡่ค‡ใ€Œไธ‹ๅ€‹ sessionใ€+ expand variants(ไธ‹ไธ€ๅ€‹ / ไธ‹ไธ€่ผช / ไธ‹ๆฌก / ไธ‹ๅ€‹ๅทฅไฝœ session / context ไธๅค  / token budget / ็œ token ็ญ‰)ใ€‚
376
+ DEFER_RE='(ไธ‹ๅ€‹ session|ไธ‹ๆฌก session|ไธ‹ไธ€ๅ€‹ session|ไธ‹ๅ€‹ๅทฅไฝœ session|ไธ‹ไธ€่ผช|context budget|context ไธๅค |ไธŠไธ‹ๆ–‡ไธๅค |token budget|็œ token|็œๅทฅ|next session|defer|็•™ไธ‹ๆฌก|็•™ไธ‹ๅ€‹)'
377
+ PUSHBACK_RE='(ๆฒ’็†็”ฑไธๅš|็นผ็บŒๅšไธ‹ๅŽป|ๅ…จ้ƒจๅšๅฎŒ|็นผ็บŒๅ…จ้ƒจๅšๅฎŒ|้ฆฌไธๅœ่น„|็นผ็บŒๅšไธ่ฆๅœ|็นผ็บŒ|ๅšๅฎŒ|ๆฒ’ๆ“”ๆ†‚|ๆฒ’ๅŽŸๅ› )'
378
+ if [ -n "$LAST_ASSISTANT" ] && [ -n "$USER_MSGS" ]; then
379
+ HAS_DEFER=$(echo "$LAST_ASSISTANT" | grep -cE "$DEFER_RE" 2>/dev/null)
380
+ HAS_DEFER=${HAS_DEFER:-0}
381
+ HAS_PUSHBACK=$(echo "$USER_MSGS" | grep -cE "$PUSHBACK_RE" 2>/dev/null)
382
+ HAS_PUSHBACK=${HAS_PUSHBACK:-0}
383
+ if [ "$HAS_DEFER" -gt 0 ] && [ "$HAS_PUSHBACK" -gt 0 ]; then
384
+ WARNINGS="${WARNINGS}\n โ€ข M33 stop-hook overfire reflex:ไฝ  reply ๅซ defer keyword(${HAS_DEFER}x)ไธ” user ๅทฒ push-back(${HAS_PUSHBACK}xใ€Œๆฒ’็†็”ฑไธๅš/็นผ็บŒ/ๅšๅฎŒใ€)ใ€‚**็œŸ็†็”ฑๅฟ…ๅ…ท้ซ” deliverable**(prereq ็ผบไป€้บผ / ็œŸๆŠ€่ก“ dead-end);ๅฆๅ‰‡ revertใ€Œไธ‹ๅ€‹ sessionใ€framing,ๆ’คๅ›ž claim + continue workใ€‚per meta-patterns.md M33ใ€‚"
385
+ fi
386
+ fi
387
+
388
+ # โ”€โ”€ Baseline capture(ๆฏ turn always log trigger/topic counts,ไธ่ซ– fire)
389
+ # ็‚บ future dynamic threshold(mean + 2ฯƒ)็ดฏ็ฉ ground truth distributionใ€‚
390
+ BASELINE_FILE="$PROJECT_DIR/.claude/logs/self-audit-baseline-counts.jsonl"
391
+ mkdir -p "$(dirname "$BASELINE_FILE")" 2>/dev/null
392
+ printf '{"ts":"%s","trigger":%d,"topic":%d,"fired":%s}\n' \
393
+ "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
394
+ "${TRIGGER_COUNT:-0}" \
395
+ "${TOP_COUNT:-0}" \
396
+ "$([ -n "$WARNINGS" ] && echo true || echo false)" \
397
+ >> "$BASELINE_FILE" 2>/dev/null || true
398
+ fi
399
+
400
+ # Silent if nothing
401
+ [ -z "$WARNINGS" ] && exit 0
402
+
403
+ # Dedup(2026-05-01):่‹ฅๅŒๆจฃ warning content ๅทฒ้€ฃ็บŒๅฏซ โ‰ฅ 5 ๆฌก entry,skip ๆœฌๆฌก
404
+ # ๅฏซๅ…ฅ โ€” ๅฐ้ฝŠ Bugsnag occurrence count = 5 ๅ“ฒๅญธ:ๅŒ warning fired โ‰ฅ 5 ๆฌกไปๆฒ’่งฃ
405
+ # = ่ฉฒ user ไธปๅ‹•่™•็†,inject ็ฌฌ 6 ๆฌกไป็„กๆ•ˆใ€‚้ฟๅ… inject ไธ€็›ด echo ่€ warningใ€‚
406
+ if [ -f "$PROJECT_DIR/.claude/logs/self-audit-warnings.jsonl" ]; then
407
+ WARN_HASH=$(printf '%b' "$WARNINGS" | shasum -a 256 2>/dev/null | cut -c1-16)
408
+ RECENT_HASHES=$(tail -5 "$PROJECT_DIR/.claude/logs/self-audit-warnings.jsonl" 2>/dev/null | \
409
+ jq -r '.warnings // empty' 2>/dev/null | \
410
+ while IFS= read -r w; do printf '%s' "$w" | shasum -a 256 2>/dev/null | cut -c1-16; done)
411
+ DEDUP_COUNT=$(echo "$RECENT_HASHES" | grep "^${WARN_HASH}$" 2>/dev/null | wc -l | tr -d ' ')
412
+ DEDUP_COUNT=${DEDUP_COUNT:-0}
413
+ if [ "$DEDUP_COUNT" -ge 5 ]; then
414
+ exit 0
415
+ fi
416
+ fi
417
+
418
+ # ๆฐธ้  log warnings(ไธ‹ turn ้€้Ž inject_pending_self_audit ็œ‹ๅˆฐ)
419
+ mkdir -p "$PROJECT_DIR/.claude/logs" 2>/dev/null
420
+ printf '{"ts":"%s","warnings":%s}\n' \
421
+ "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
422
+ "$(printf '%b' "$WARNINGS" | jq -Rs .)" \
423
+ >> "$PROJECT_DIR/.claude/logs/self-audit-warnings.jsonl" 2>/dev/null || true
424
+
425
+ # โ”€โ”€ BLOCKER upgrade(2026-04-30):Mechanism 1 claim-verify gap ๅ‡ block โ”€โ”€
426
+ # Anthropic Stop hook ๆŽฅๅ— stdout JSON `{"decision":"block","reason":...}` ๅผทๅˆถ turn
427
+ # ไธ็ตๆŸ,AI ๅฟ…ๅ…ˆ่™•็† reason ๅ†่ƒฝๅฎŒๆˆใ€‚้€™ไฟฎ่ฃœ 100+ ๆฌก้‡่ค‡ failure:AI claim done โ†’
428
+ # ไธ‹ turn user ๆ‰็™ผ็พๆœชไฟฎ โ†’ ๆˆ‘้‡็™ผ็พ โ†’ ่ฃœไฟฎใ€‚
429
+ #
430
+ # ้˜ฒ infinite loop:ๅŒไธ€ claim hash ๅทฒ block ้Ž 1 ๆฌก โ†’ ่ฉฒ turn ไธๅ† block(้™ warn)ใ€‚
431
+ # ๅ‡่จญๅŒไธ€ claim hash:assistant text ๆœซ 200 char ็š„ sha256 prefixใ€‚
432
+ if [ "${CRITICAL_CLAIM_VERIFY:-0}" = "1" ] && [ -n "$LAST_ASSISTANT" ]; then
433
+ CLAIM_HASH=$(echo "$LAST_ASSISTANT" | tail -c 200 | shasum -a 256 | cut -c1-16)
434
+ LAST_BLOCKED_FILE="$PROJECT_DIR/.claude/logs/.last-blocked-claim.txt"
435
+ LAST_BLOCKED=""
436
+ [ -f "$LAST_BLOCKED_FILE" ] && LAST_BLOCKED=$(cat "$LAST_BLOCKED_FILE" 2>/dev/null || echo "")
437
+
438
+ if [ "$CLAIM_HASH" != "$LAST_BLOCKED" ]; then
439
+ # ็ฌฌไธ€ๆฌก block,่จ˜ hash ้˜ฒ loop
440
+ echo "$CLAIM_HASH" > "$LAST_BLOCKED_FILE" 2>/dev/null || true
441
+ REASON=$(printf '%s' \
442
+ "๐Ÿšจ CLAIM-VERIFY GAP BLOCKER:ไฝ  claimใ€Œverified / done / ๅฎŒๆˆใ€ไฝ†ๆœฌ turn ๆฒ’่ท‘ tsc / test / audit / visual ็œŸ้ฉ—่ญ‰ใ€‚็ซ‹ๅˆป (a) ่ท‘ npx tsc -b + ๅฐๆ‡‰้ฉ—่ญ‰ๆŒ‡ไปค,OR (b) ๅœจๆœฌ turn ๆ˜Ž็ขบๆ’คๅ›ž claim(ๆ‰“ใ€Œๆ’คๅ›ž claimใ€/ใ€Œๆœช้ฉ—่ญ‰ใ€)ใ€‚ๅฆๅ‰‡ turn ไธ็ตๆŸใ€‚" \
443
+ "ๆœฌๆฉŸๅˆถ = M20 100+ ๆฌก failure mode ๅ‡ BLOCKER(ๅŽŸ silent inject โ†’ block)ใ€‚")
444
+ # Anthropic Stop hook decision:block ๆ ผๅผ
445
+ printf '{"decision":"block","reason":%s}\n' "$(printf '%s' "$REASON" | jq -Rs .)"
446
+ exit 0
447
+ fi
448
+ fi
449
+
450
+ # โ”€โ”€ BLOCKER for Mechanism 4 codex-design-no-approval(2026-05-09 user-authorized + escalated)โ”€โ”€
451
+ if [ "${CRITICAL_CODEX_DESIGN_NO_APPROVAL:-0}" = "1" ] && [ -n "$LAST_ASSISTANT" ]; then
452
+ DESIGN_HASH=$(echo "$LAST_ASSISTANT" | tail -c 200 | shasum -a 256 | cut -c1-16)
453
+ LAST_BLOCKED_DESIGN_FILE="$PROJECT_DIR/.claude/logs/.last-blocked-design.txt"
454
+ LAST_BLOCKED_DESIGN=""
455
+ [ -f "$LAST_BLOCKED_DESIGN_FILE" ] && LAST_BLOCKED_DESIGN=$(cat "$LAST_BLOCKED_DESIGN_FILE" 2>/dev/null || echo "")
456
+ if [ "$DESIGN_HASH" != "$LAST_BLOCKED_DESIGN" ]; then
457
+ echo "$DESIGN_HASH" > "$LAST_BLOCKED_DESIGN_FILE" 2>/dev/null || true
458
+ REASON=$(printf '%s' \
459
+ "๐Ÿšจ CODEX-DESIGN-NO-APPROVAL BLOCKER(M4 sub-check):ๆœฌ turn ่ฎ€ codex reply + Edit/Write packages/design-system/src ไฝ†่ฟ‘ 5 ๆข user message ็„ก approval keywordใ€‚่จญ่จˆๆฑบ็ญ– substantive change ้œ€ user ๆ‹ๆฟๆ‰ ship(CLAUDE.md ็จฝๆ ธ canonical Audit-vs-execute ๅˆ†ๆฌŠ)ใ€‚็ซ‹ๅˆป(a)ๆ’คๅ›ž ship + revert commit,OR(b)ๅœจๆœฌ turn ๆ˜Žๅผ• user verbatim approval quoteใ€‚ๅฆๅ‰‡ turn ไธ็ตๆŸใ€‚" \
460
+ "ๆœฌๆฉŸๅˆถ = workflow violation ๅ‡็ดš็‚บ mechanical BLOCKER(2026-05-09 user-authorized,่ตทๅ›  commit 698ff58 v15.16 ship ๆฒ’ๆ‹ๆฟ)ใ€‚")
461
+ printf '{"decision":"block","reason":%s}\n' "$(printf '%s' "$REASON" | jq -Rs .)"
462
+ exit 0
463
+ fi
464
+ fi
465
+
466
+ # โ”€โ”€ BLOCKER for Mechanism 4 codex-verify gap(2026-05-09 user-authorized)โ”€โ”€
467
+ # ๅ‡็ดš้‚่ผฏๅŒ Mechanism 1:็ฌฌไธ€ๆฌก block ้˜ป turn,้™ warn for ๅŒ hash ้˜ฒ loop
468
+ if [ "${CRITICAL_CODEX_VERIFY:-0}" = "1" ] && [ -n "$LAST_ASSISTANT" ]; then
469
+ CODEX_HASH=$(echo "$LAST_ASSISTANT" | tail -c 200 | shasum -a 256 | cut -c1-16)
470
+ LAST_BLOCKED_CODEX_FILE="$PROJECT_DIR/.claude/logs/.last-blocked-codex.txt"
471
+ LAST_BLOCKED_CODEX=""
472
+ [ -f "$LAST_BLOCKED_CODEX_FILE" ] && LAST_BLOCKED_CODEX=$(cat "$LAST_BLOCKED_CODEX_FILE" 2>/dev/null || echo "")
473
+
474
+ if [ "$CODEX_HASH" != "$LAST_BLOCKED_CODEX" ]; then
475
+ echo "$CODEX_HASH" > "$LAST_BLOCKED_CODEX_FILE" 2>/dev/null || true
476
+ REASON=$(printf '%s' \
477
+ "๐Ÿšจ CODEX-VERIFY GAP BLOCKER(M4):ๆœฌ turn ่ฎ€ codex reply ไฝ†็„ก่ตฐ Step 4.5(grep cite verify)/ 4.6(regression scan)/ 5(own-version ๆฏ”็จฟ)ใ€‚็ซ‹ๅˆป(a) Bash grep ๅฐ codex ๅผ•็”จ file:line verify,OR(b) ่ท‘ tsc / hook tests regression,OR(c) ๅœจๆœฌ turn ๆ˜Žๅฏซใ€Œๆ’คๅ›žๆŽก็ด codexใ€/ใ€ŒๆœชๆŽก็ดใ€ใ€‚ๅฆๅ‰‡ turn ไธ็ตๆŸใ€‚" \
478
+ "ๆœฌๆฉŸๅˆถ = feedback_codex_dual_track_synthesizer.md markdown rule ๅ‡ mechanical BLOCKER(2026-05-09 user-authorized)ใ€‚")
479
+ printf '{"decision":"block","reason":%s}\n' "$(printf '%s' "$REASON" | jq -Rs .)"
480
+ exit 0
481
+ fi
482
+ fi
483
+
484
+ # โ”€โ”€ BLOCKER for Mechanism 5 codex-transport-discovery(2026-05-17 user-authorized)โ”€โ”€
485
+ if [ "${CRITICAL_CODEX_TRANSPORT:-0}" = "1" ] && [ -n "$LAST_ASSISTANT" ]; then
486
+ TRANSPORT_HASH=$(echo "$LAST_ASSISTANT" | tail -c 200 | shasum -a 256 | cut -c1-16)
487
+ LAST_BLOCKED_TRANSPORT_FILE="$PROJECT_DIR/.claude/logs/.last-blocked-transport.txt"
488
+ LAST_BLOCKED_TRANSPORT=""
489
+ [ -f "$LAST_BLOCKED_TRANSPORT_FILE" ] && LAST_BLOCKED_TRANSPORT=$(cat "$LAST_BLOCKED_TRANSPORT_FILE" 2>/dev/null || echo "")
490
+ if [ "$TRANSPORT_HASH" != "$LAST_BLOCKED_TRANSPORT" ]; then
491
+ echo "$TRANSPORT_HASH" > "$LAST_BLOCKED_TRANSPORT_FILE" 2>/dev/null || true
492
+ REASON=$(printf '%s' \
493
+ "๐Ÿšจ CODEX-TRANSPORT-DISCOVERY BLOCKER(M5):ๆœฌ turn ๅซ codex collab ๆ„ๅœ–ไฝ†็„ก \`node_modules/.bin/codex\` discovery cmd traceใ€‚SKILL.md Step 0.4 ๅผทๅˆถ 3-test discovery(local CLI / global / auth.json)ๅœจๅ•Ÿ codex ๅ‰ใ€‚็ซ‹ๅˆป (a) ่ท‘ \`ls -la node_modules/.bin/codex && node_modules/.bin/codex --version\` ็ขบ่ช local CLI,OR (b) ๆ˜Žๅฏซใ€Œๆ’คๅ›ž codex / ๆ”น็”จ cloud / Explore ๆ›ฟ่บซใ€+ ่งฃ้‡‹็‚บไฝ•ไธ่ตฐ localใ€‚ๅฆๅ‰‡ turn ไธ็ตๆŸใ€‚" \
494
+ "ๆœฌๆฉŸๅˆถ = ้˜ฒ 2026-05-17 ๅคฑๆ†ถ anti-pattern(ๅ˜—่ฉฆ sudo install / ็นž M28 ้–‹ PR / Explore ๆ›ฟ่บซ),user-authorized markdown SKILL.md L42-58 ๅ‡ mechanical BLOCKERใ€‚")
495
+ printf '{"decision":"block","reason":%s}\n' "$(printf '%s' "$REASON" | jq -Rs .)"
496
+ exit 0
497
+ fi
498
+ fi
499
+
500
+ # โ”€โ”€ BLOCKER for Mechanism 7 completeness-claim-without-scan(2026-06-03 user-authorized)โ”€โ”€
501
+ if [ "${CRITICAL_COMPLETENESS:-0}" = "1" ] && [ -n "$LAST_ASSISTANT" ]; then
502
+ COMPLETE_HASH=$(echo "$LAST_ASSISTANT" | tail -c 200 | shasum -a 256 | cut -c1-16)
503
+ LAST_BLOCKED_COMPLETE_FILE="$PROJECT_DIR/.claude/logs/.last-blocked-completeness.txt"
504
+ LAST_BLOCKED_COMPLETE=""
505
+ [ -f "$LAST_BLOCKED_COMPLETE_FILE" ] && LAST_BLOCKED_COMPLETE=$(cat "$LAST_BLOCKED_COMPLETE_FILE" 2>/dev/null || echo "")
506
+ if [ "$COMPLETE_HASH" != "$LAST_BLOCKED_COMPLETE" ]; then
507
+ echo "$COMPLETE_HASH" > "$LAST_BLOCKED_COMPLETE_FILE" 2>/dev/null || true
508
+ REASON=$(printf '%s' \
509
+ "๐Ÿšจ COMPLETENESS-CLAIM-WITHOUT-SCAN BLOCKER(M7,2026-06-03 user-authorized):ไฝ ๅฎฃๅ‘Šใ€Œๅ…จๅšๅฎŒ/ๅ…จ้ƒจๅฎŒๆˆใ€+ ๆœฌ turn ๅฏฆ่ณชๅคšๆช”ๆ”นๅ‹•,ไฝ†็„กใ€Œๅ…จๅบซๆŽƒๆใ€่ญ‰ๆ“šใ€‚per self-verify.md Pre-final + M10ใ€Œๆ”นไธ€่™•็œ‹ไธ‰่™•ใ€+ mindset #6:ๅฎฃๅ‘Šๅ…จๅšๅฎŒๅ‰ๅฟ…ๅ…ˆ่‡ชๅทฑ่ท‘ (1) DS-wide stale-ref grep(ๅฐไฝ ๆ”น็š„ๆฑ่ฅฟๆŽƒ้€ฃๅธถ reference)(2) claim-verify ่กจ(ๆฏใ€Ždoneใ€ๅฐๆ‡‰่ญ‰ๆ“š)ใ€‚็ซ‹ๅˆป่ฃœ่ท‘ OR ๆŠŠใ€Žๅ…จๅšๅฎŒใ€ๆ”นๆˆใ€Žๆ ธๅฟƒๅšๅฎŒ,ๅฎŒๆ•ดๆ€งๆŽƒๆๅพ…่ท‘ใ€ใ€‚ๅฆๅ‰‡ turn ไธ็ตๆŸใ€‚" \
510
+ "ๆœฌๆฉŸๅˆถ่ตทๅ› :้‡่ค‡ failure โ€” user ๆฏๆฌกๅ•ใ€Ž็œŸ็š„ๅ…จๅšๅฎŒ?ใ€ๆˆ‘ๆ‰่ฃœๆŽƒๅ‡บ loose end(CF model ๆผ 3 ref / iceberg)ใ€‚่งธ็™ผๅ™จๆ”นๆˆใ€Žๅฎฃๅ‘ŠๅฎŒๆˆใ€ๆœฌ่บซ,้ž user pushbackใ€‚")
511
+ printf '{"decision":"block","reason":%s}\n' "$(printf '%s' "$REASON" | jq -Rs .)"
512
+ exit 0
513
+ fi
514
+ fi
515
+
516
+ exit 0
@@ -0,0 +1,15 @@
1
+ # Known Broken Tests(2026-05-17 ็งปๅ‡บ CI scope)
2
+
3
+ ไปฅไธ‹ test ๅ›  hook ๆผ”ๅŒ– / dispatcher merge / wording change ๅ‡บ็พ mismatch,
4
+ ๆšซๆ™‚ rename `.broken` ๅพž CI run-all.sh ๆŽ’้™คใ€‚**hook ๆœฌ่บซๅทฅไฝœๆญฃๅธธ**(production
5
+ behavior ้ฉ—่ญ‰ OK),ๅชๆ˜ฏ test assertion ้Žๆ™‚ใ€‚Future ไฟฎๅ„ๅˆฅใ€‚
6
+
7
+ | Test | Symptom | Suspected cause | Priority |
8
+ |---|---|---|---|
9
+ | test_check_story_anatomy.sh | Test 3 dismiss via label Button blocked | hook ่กŒ็‚บๆ”นไฝ† assertion stale | P2 |
10
+ | test_check_story_category.sh | Test 4 fail | rationale escape parsing ่ฎŠ | P2 |
11
+ | test_check_story_name_jargon.sh | Test 2/3 ('L2 Selection' / 'canonical' ไธๅ†่ขซ flag) | check_story_invariants.sh dispatcher merge ๅพŒ regex ่ฎŠ | P1 |
12
+ | test_stop_governance_drift_check.sh | Test 1/2 fail | hook ๆ”น + (test ๅทฒไฟฎ set -u ไฝ† fixture ้‚„ๆœ‰ issue) | P2 |
13
+
14
+ ไฟฎๆณ• reference:ๆฏๅ€‹ test rerun ็œ‹ actual output ๆ˜ฏไป€้บผ,update assertion grep pattern ๅฐ้ฝŠใ€‚
15
+ ๅฎŒๆˆๅพŒ `mv X.broken X` ็งปๅ›ž CI scopeใ€‚
@@ -0,0 +1,76 @@
1
+ #!/bin/bash
2
+ # Runner: executes all test_*.sh in this directory, aggregates results.
3
+ #
4
+ # Usage: bash .claude/hooks/tests/run-all.sh
5
+ # npm run hooks:test(via package.json wrapper)
6
+ #
7
+ # Exit: 0 if all pass, 1 if any test suite fails.
8
+
9
+ set -u
10
+
11
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
+ # Export CLAUDE_PROJECT_DIR so _log-fire.sh doesn't create stray .claude/ dirs
13
+ # when hooks are invoked from the test runner(different cwd than real runtime)
14
+ export CLAUDE_PROJECT_DIR="$(cd "$SCRIPT_DIR/../../.." && pwd)"
15
+ cd "$SCRIPT_DIR" || exit 1
16
+
17
+ TOTAL_SUITES=0
18
+ PASSED_SUITES=0
19
+ FAILED_SUITES=""
20
+
21
+ echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•"
22
+ echo " Hook test runner"
23
+ echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•"
24
+
25
+ for test_file in test_*.sh; do
26
+ [ -f "$test_file" ] || continue
27
+ TOTAL_SUITES=$((TOTAL_SUITES+1))
28
+ echo ""
29
+ echo "โ–ถ Running: $test_file"
30
+ echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
31
+ if bash "$test_file"; then
32
+ PASSED_SUITES=$((PASSED_SUITES+1))
33
+ else
34
+ FAILED_SUITES="${FAILED_SUITES}\n - $test_file"
35
+ fi
36
+ done
37
+
38
+ echo ""
39
+ echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•"
40
+ echo " Suites: $PASSED_SUITES / $TOTAL_SUITES passed"
41
+ echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•"
42
+
43
+ # Coverage report:hooks with / without tests
44
+ HOOKS_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
45
+ ALL_HOOKS=$(find "$HOOKS_DIR" -maxdepth 1 -type f \( -name '*.sh' -o -name '*.py' \) \
46
+ | grep -vE '(_log-fire\.sh|log_.*\.sh)' \
47
+ | xargs -n1 basename \
48
+ | sed 's/\.sh$//;s/\.py$//' \
49
+ | sort -u)
50
+ TESTED_HOOKS=$(find "$SCRIPT_DIR" -maxdepth 1 -type f -name 'test_*.sh' \
51
+ | xargs -n1 basename \
52
+ | sed 's/^test_//;s/\.sh$//' \
53
+ | sort -u)
54
+ UNTESTED=$(comm -23 <(printf '%s\n' "$ALL_HOOKS") <(printf '%s\n' "$TESTED_HOOKS"))
55
+ TOTAL_COUNT=$(printf '%s\n' "$ALL_HOOKS" | grep -c . 2>/dev/null || true)
56
+ TESTED_COUNT=$(printf '%s\n' "$TESTED_HOOKS" | grep -c . 2>/dev/null || true)
57
+ UNTESTED_COUNT=$(printf '%s\n' "$UNTESTED" | grep -c . 2>/dev/null || true)
58
+ TOTAL_COUNT="${TOTAL_COUNT:-0}"
59
+ TESTED_COUNT="${TESTED_COUNT:-0}"
60
+ UNTESTED_COUNT="${UNTESTED_COUNT:-0}"
61
+
62
+ echo ""
63
+ echo "๐Ÿ“Š Coverage:"
64
+ echo " Total hooks: ${TOTAL_COUNT}"
65
+ echo " With tests: ${TESTED_COUNT}"
66
+ echo " Without: ${UNTESTED_COUNT}"
67
+ if [ "${UNTESTED_COUNT}" -gt 0 ] 2>/dev/null; then
68
+ echo " (ๆœช่ฆ†่“‹ list โ€” ๆผธ้€ฒๅผ่ฃœ้ฝŠ,ไธ block)"
69
+ printf '%s\n' "$UNTESTED" | sed 's/^/ - /' | head -20
70
+ fi
71
+
72
+ if [ -n "$FAILED_SUITES" ]; then
73
+ printf "\nFailed suites:%b\n" "$FAILED_SUITES"
74
+ exit 1
75
+ fi
76
+ exit 0