You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Review date: 2026-09-10. This run is a partial audit: 32 of 80 components (78 inventoried directories plus the publicly-exported SideNav/VisuallyHidden, which are missing from the inventory file) are now fully reviewed against all 21 style-guide principles — 20 carried forward unchanged from the prior run, plus 12 newly reviewed this run (Details, Dialog, FeatureFlags, Flash, FormControl via component-api-auditor; Header, Heading, Hidden, InlineMessage, KeybindingHint via a second component-api-auditor batch; SideNav and VisuallyHidden via direct inspection).
Proposed API changes
Dialog.onClose uses a bare positional string instead of an extensible object (finding)
Dialog has no rest-parameter pass-through to its root element (finding)
Dialog's inline style merge places consumer style before the component-owned --dialog-width CSS variable, inverting the documented merge order (finding)
Dialog's footer-button auto-focus runs in an effect/state-ratchet instead of an event handler (finding)
useDetails returns a ref for the caller to apply instead of only accepting one (finding)
useDetails's onClickOutside callback sits directly in an effect dependency array instead of a stabilized ref (finding)
FormControl has no rest-parameter pass-through to its root element (finding)
FormControlLabel.visuallyHidden is a part-visibility toggle that doesn't follow hide/show naming (finding)
Header/Header.Item/Header.Link spread rest props before the hard-coded data-component, letting a consumer-supplied data-component silently win (finding)
Heading.variant communicates typographic scale (appearance), not semantic purpose (finding)
Hidden has no rest-parameter pass-through to its root element (finding)
InlineMessage spreads rest props before its own data-size/data-variant/data-component, letting a consumer override them silently (finding)
KeybindingHint has no rest-parameter pass-through to its root element (finding)
KeybindingHint.size uses 'normal' instead of the guide's standard 'medium' scale name (finding)
SideNav.variant (lightweight/normal) communicates padding/border density (appearance), not purpose (finding)
Breadcrumbs root has no rest/passthrough props (finding)
Breadcrumbs.Itemselected uses an inert bare string class instead of data-selected (finding)
Breadcrumbsvariant="spacious" communicates padding/density, not purpose (finding)
carried forward unchanged from prior run (full 21-principle coverage, not rechecked against current source this run)
Evidence sources this run: (1) component-api-auditor sub-agent, batch 1 (Details, Dialog, FeatureFlags, Flash, FormControl) — returned a full 21-principle matrix per component with file:line evidence; spot-checked directly against Dialog.tsx, useDetails.tsx, and FormControlLabel.tsx source and confirmed; (2) component-api-auditor sub-agent, batch 2 (Header, Heading, Hidden, InlineMessage, KeybindingHint) — returned a full matrix per component; spot-checked directly against Header.tsx, Heading.tsx, and InlineMessage.tsx source and confirmed; (3) direct inspection for SideNav and VisuallyHidden, publicly exported from packages/react/src/index.ts but absent from /tmp/gh-aw/data/components.json.
Note: PageLayout's DragHandle finding is retained from the prior run; batch 2 above should re-verify the rest of PageLayout, Pagehead, and Pagination (currently only Pagination.onPageChange and the DragHandle finding have been checked) against the full 21-principle checklist.
Past findings not rechecked
The following components were carried forward unchanged from the prior run without re-inspection this run: Breadcrumbs, Button (+ButtonBase), ButtonGroup, Card, Checkbox, CheckboxGroup, CircleBadge, ConfirmationDialog, CounterLabel, DataTable, ActionBar, ActionList, ActionMenu, AnchoredOverlay, Autocomplete, Avatar, AvatarStack, Banner, Blankslate, BranchName. Their findings remain listed in "Proposed API changes" above and their evidence is preserved in each component's managed comment.
No new deviations beyond those listed above were found in the 12 components newly reviewed this run. The remaining 48 directories have not been reviewed against the full checklist this run and should not be assumed to pass.
Summary
Review date: 2026-09-10. This run is a partial audit: 32 of 80 components (78 inventoried directories plus the publicly-exported
SideNav/VisuallyHidden, which are missing from the inventory file) are now fully reviewed against all 21 style-guide principles — 20 carried forward unchanged from the prior run, plus 12 newly reviewed this run (Details,Dialog,FeatureFlags,Flash,FormControlviacomponent-api-auditor;Header,Heading,Hidden,InlineMessage,KeybindingHintvia a secondcomponent-api-auditorbatch;SideNavandVisuallyHiddenvia direct inspection).Proposed API changes
Dialog.onCloseuses a bare positional string instead of an extensible object (finding)Dialoghas no rest-parameter pass-through to its root element (finding)Dialog's inlinestylemerge places consumerstylebefore the component-owned--dialog-widthCSS variable, inverting the documented merge order (finding)Dialog's footer-button auto-focus runs in an effect/state-ratchet instead of an event handler (finding)useDetailsreturns areffor the caller to apply instead of only accepting one (finding)useDetails'sonClickOutsidecallback sits directly in an effect dependency array instead of a stabilized ref (finding)FormControlhas no rest-parameter pass-through to its root element (finding)FormControlLabel.visuallyHiddenis a part-visibility toggle that doesn't followhide/shownaming (finding)Header/Header.Item/Header.Linkspread rest props before the hard-codeddata-component, letting a consumer-supplieddata-componentsilently win (finding)Heading.variantcommunicates typographic scale (appearance), not semantic purpose (finding)Hiddenhas no rest-parameter pass-through to its root element (finding)InlineMessagespreads rest props before its owndata-size/data-variant/data-component, letting a consumer override them silently (finding)KeybindingHinthas no rest-parameter pass-through to its root element (finding)KeybindingHint.sizeuses'normal'instead of the guide's standard'medium'scale name (finding)SideNav.variant(lightweight/normal) communicates padding/border density (appearance), not purpose (finding)Breadcrumbsroot has no rest/passthrough props (finding)Breadcrumbs.Itemselecteduses an inert bare string class instead ofdata-selected(finding)Breadcrumbsvariant="spacious"communicates padding/density, not purpose (finding)Button/ButtonBasevariantmixes appearance names (invisible,link) with semantic ones (primary,danger) (finding)ButtonBasedrops the consumer'sonClickentirely whileloadingis true, instead of merging (finding)ButtonGroupsilently discards a consumer-forwardeddata-componentvia rest-spread ordering (finding)Cardcomputesaria-labelledbyvia direct mutation ofrestinstead of intentional merge precedence (finding)Checkboxforwardschecked/defaultCheckedto the native<input>withoutuseControllableState(finding)Checkbox.onChangestill fires when a group-levelonChangecallspreventDefault()(finding)CheckboxGroup.onChangeuses two positional args instead of one extensible object (finding)CheckboxGroupskips its internal selection-state update entirely when noonChangeis provided (finding)CircleBadge.variantduplicatessize's scale/appearance role (finding)CircleBadgesilently overwrites consumer-suppliedstyleinstead of merging it (finding)ConfirmationDialogaccepts no rest params to forward to its underlyingDialogroot (finding)ConfirmationDialog.onCloseuses a bare positional string instead of an extensible object (finding)CounterLabel's deprecatedschemeprop still duplicatesvariantas two mode props for one concept (finding)DataTable.onToggleSortuses two positional args instead of one extensible object (finding)DataTable.Title/DataTable.Subtitletype as accepting fullHTMLAttributesbut silently drop unrecognized attributes at runtime (finding)Pagination.onPageChangeuses bare positional args instead of an extensible object (finding)PageLayoutDragHandle.onDraguses bare positional args instead of an extensible object (finding)ActionBarroot has no rest/passthrough props (finding)AvatarStackroot has no rest/passthrough props (finding)Blankslateapplies rest params to the wrong element (finding)ActionMenu.onOpenChangeuses a bare positional boolean (finding)AnchoredOverlayonOpen/onCloseuse multiple/bare positional arguments (finding)ActionMenuopen/onOpenChangeuseuseProvidedStateOrCreateinstead ofuseControllableState(finding)Autocompletesyncs controlledvaluevia an effect instead ofuseControllableState(finding)ActionListList.variantcommunicates layout/appearance, not purpose (finding)ActionList.Itemsizescale omitssmall(finding)AvatarStack.variant(cascade/stack) communicates appearance, not purpose (finding)ActionList.disableFocusZoneis a negated, verb-prefixed boolean (finding)AnchoredOverlay.displayCloseButtonshould follow durable-default/hide-show naming (finding)AvatarStack.disableExpandmirrors the guide's explicit anti-pattern (finding)Autocompleterestores selection range in an effect rather than the triggering handler (finding)Run details and coverage
Component counts for this run's newly-reviewed set (12 directories; all 21 principles inspected):
Evidence sources this run: (1)
component-api-auditorsub-agent, batch 1 (Details,Dialog,FeatureFlags,Flash,FormControl) — returned a full 21-principle matrix per component with file:line evidence; spot-checked directly againstDialog.tsx,useDetails.tsx, andFormControlLabel.tsxsource and confirmed; (2)component-api-auditorsub-agent, batch 2 (Header,Heading,Hidden,InlineMessage,KeybindingHint) — returned a full matrix per component; spot-checked directly againstHeader.tsx,Heading.tsx, andInlineMessage.tsxsource and confirmed; (3) direct inspection forSideNavandVisuallyHidden, publicly exported frompackages/react/src/index.tsbut absent from/tmp/gh-aw/data/components.json.Workflow run: §34501498984
Remaining coverage
Prioritized next bounded batches (5 components each), carried forward from the prior run's list (adjusted to remove now-reviewed components):
Label,LabelGroup,Link,NavList,OcticonOverlay,PageHeader,PageLayout,Pagehead,PaginationPopover,Portal,ProgressBar,Radio,RadioGroupRelativeTime,SegmentedControl,Select,SelectPanel,SkeletonSkeletonAvatar,SkeletonText,Spinner,SplitPageLayout,StackStateLabel,SubNav,TabNav,Text,TextInputTextInputWithTokens,Textarea,Timeline,ToggleSwitch,TokenTooltip,TooltipV2,TopicTag,TreeView,TruncateUnderlineNav,deprecated/DialogV1,deprecated/FilteredSearch,deprecated/UnderlineNav,experimental/IssueLabelexperimental/SelectPanel2,experimental/UnderlinePanels,live-regionNote:
PageLayout'sDragHandlefinding is retained from the prior run; batch 2 above should re-verify the rest ofPageLayout,Pagehead, andPagination(currently onlyPagination.onPageChangeand theDragHandlefinding have been checked) against the full 21-principle checklist.Past findings not rechecked
The following components were carried forward unchanged from the prior run without re-inspection this run:
Breadcrumbs,Button(+ButtonBase),ButtonGroup,Card,Checkbox,CheckboxGroup,CircleBadge,ConfirmationDialog,CounterLabel,DataTable,ActionBar,ActionList,ActionMenu,AnchoredOverlay,Autocomplete,Avatar,AvatarStack,Banner,Blankslate,BranchName. Their findings remain listed in "Proposed API changes" above and their evidence is preserved in each component's managed comment.No new deviations beyond those listed above were found in the 12 components newly reviewed this run. The remaining 48 directories have not been reviewed against the full checklist this run and should not be assumed to pass.