Repository navigation
Components: Missing components #4273
Description
Summary
Track delivery of the named agentic component backlog, with current source admission, implementation, issue state, and consumer prerequisites kept separate. Parent readiness workstream: #4274.
Current state - 2026-10-02 (UTC)
Observed: Audited the clean repository and the full 32-child issue hierarchy against GitHub main at 75c55923873124201d2ffbf3b3e67960047bd481.
| Set | Current result | Meaning |
|---|---|---|
| Admitted Flex release catalog | 49 entries | spec-source-lock.json, lock flex-1.5.0-206c4996; immutable source identity, not the historical 50-entry research snapshot. |
| Implemented admitted entries on main | 19 | Reviewed colocated contracts and root exports exist. |
| Admitted implementation gap | 30 | Named release entries still absent from main. |
| Local-foundation higher-order component | text (1) | Not an additional Flex catalog entry. Total implemented higher-order components: 20. |
| Existing tracked child issues | 32 total: 1 completed, 31 open | #4243 (TabList) is delivered. The open set is the 30 admitted gaps plus candidate Toast #4246. |
| Checked-in candidate snapshot | 52 entries, dated 2026-08-31 | Adds persona, presence-badge, toast; proposed implementation gap 33. This is not a fresh upstream query or source admission. |
The old 50 catalog / 18 generated / 32 missing, staged-spec counts, and fixed waves are superseded by these named sets. Keep the existing 32-task hierarchy rather than confusing historical task count with today's admitted gap.
Observed: #4308 added nine components on a branch, but was closed without merging on 2026-10-01. AvatarGroup, DestructiveButton, InteractionTag, Label, Link, NavItem, Popover, SearchBox, and Tooltip therefore remain open and absent from main. Branch head cbe9a74a44b5467c2b142fecdc2d5d554c083577 is useful prior work, not delivered readiness.
Confirmed Button / ToggleButton ownership
Confirmed (owner, 2026-10-01 PDT / 2026-10-02 UTC): Button can show selected or not-selected presentation, but real toggle behavior belongs to a distinct ToggleButton.
- Button retains externally driven
selectedpresentation and reports an action throughonPress; it never changes that value during activation and does not acquiredefaultSelectedoronSelectedChange. - ToggleButton owns controlled/uncontrolled
selected/defaultSelected/onSelectedChange, using Framework BaseuseToggleState. Controlled activation requests a next value without mutating the supplied value; explicit false must stay controlled. - Pointer, keyboard, and native toggle accessibility actions must reach that same state owner exactly once. Disabled activation is inert.
- Preserve existing Button presentation compatibility. Shape vocabulary and leading/trailing-icon changes are separate contract-review decisions, not implicitly approved breaking changes.
This resolves the ownership gate for #4247. #4215 tracks applying the decision to reviewed contracts/source dispositions; it is no longer an unanswered state-ownership blocker. Posting the decision does not claim ToggleButton or a source migration has shipped.
Delivered shared foundations
| Foundation | Delivered evidence | Remaining consumer responsibility |
|---|---|---|
| Original native contract authoring and provenance | #4296 / #4252; current schema-version-2 sources[] lifecycle |
Draft/review each missing local contract; do not promote old web/staged specs mechanically. |
| Native Callout placement/platform support | #4292 / #4291; packages/native/Callout/SPEC.md; declared production dependency |
Popover open state, appearance, naming, anchor policy, native capability differences, initial/return focus, and a reviewed source-boundary exception. |
| Fabric FocusZone | #4199 / #4217, with Shift+Tab fix #4320 / #4317 | Collection selection, active-item semantics, ref registration, type-ahead, and platform qualification. Directional navigation is not a generic modal trap. |
| Ref-backed focus, keyboard activation, accessibility actions | #4314; Framework Base focus targets and shared action-name resolver | Reuse the existing target/activation path; do not reopen Toolbar's old missing-Button-ref blocker. |
| Native Storybook tests/assertions and pipelines | #4255, #4256 | Author executable wdio cases, inspect native results/skips, and meet each component's acceptance criteria. Existing infrastructure does not prove a new component's readiness. |
| Public unstyled primitive boundary | #4250 / #4288 | Respect explicit root versus primitives exports and package source boundaries. |
Observed current qualification follow-ups: Delivered milestones do not mean complete native/required coverage. #4342 tracks all-skipped WDIO selections reported as passed; #4343 covers complete accessibility; #4346 covers native state projection; #4347 restores focus-regression parity; #4349 qualifies/promotes required CI. #4344 tracks the currently excluded Windows Fabric Accordion/standalone Callout and Win32 Accordion/ListItem stories. Preserve these endpoint gates in consuming tasks instead of counting excluded modules or capability skips as successful validation.
Component-by-component backlog
Statuses describe readiness to author or implement, not completed product behavior. Every unchecked task still requires a reviewed local contract, implementation, exports, and acceptance evidence.
| Done | Issue | Component | Current assessment and prerequisites |
|---|---|---|---|
| [ ] | #4218 | avatar-group |
Ready for contract review; Avatar is implemented; no missing shared infrastructure. |
| [ ] | #4219 | breadcrumb |
Downstream component dependencies; Popover #4236, Menu #4232, and Tooltip #4249 remain missing on main. |
| [ ] | #4220 | combobox |
Overlay and native virtual-focus contract; Popover #4236 and shared Dropdown #4224 behavior; Input and ListboxItem already exist. |
| [ ] | #4221 | destructive-button |
Ready for contract review; Button is implemented; identity versus a Button appearance is a local contract decision, not an ingestion infrastructure blocker. |
| [ ] | #4222 | dialog |
Modal host and focus-containment decision; Callout/FocusZone foundations are delivered, but neither proves a cross-platform modal trap or scrim contract. Coordinate shared modal behavior with Drawer #4223. |
| [ ] | #4223 | drawer |
Inline authoring ready; overlay modal policy unresolved; Inline layout can start independently. Overlay mode needs shared host/scrim and focus policy coordinated with Dialog #4222; Popover #4236 is reusable infrastructure, not proof of a modal trap. |
| [ ] | #4224 | dropdown |
Popover and virtual-focus contract; Popover #4236 remains missing. Input and ListboxItem are implemented; Fabric FocusZone delivery does not settle active-option accessibility. |
| [ ] | #4225 | field |
Label and shared status-icon dependencies; Label #4228 and the status-icon asset contract owned by MessageBar #4233. InfoLabel #4226 is optional help composition, not a prerequisite for a basic Field. |
| [ ] | #4226 | info-label |
Label and Popover dependencies; Label #4228 and Popover #4236; Button and Icon are already implemented. |
| [ ] | #4227 | interaction-tag |
Ready for contract review; Tag, Avatar, Icon, and normal package export wiring are available. |
| [ ] | #4228 | label |
Ready for native contract review; Text and the contract-authoring workflow are available. HTML association must be adapted in this task, not deferred to the completed #4252. |
| [ ] | #4229 | link |
Ready for native contract review; Text, Icon, and native activation/focus foundations are available; web-only behavior is a local adaptation decision. |
| [ ] | #4230 | list |
Ready for collection contract review; ListItem, Checkbox, Radio, Divider, ref-backed focus helpers, and TabList roving-focus prior art are implemented. #4217 is completed. Win32 ListItem catalog coverage is currently excluded for a native crash (#4344), so qualify that child host before claiming endpoint readiness. |
| [ ] | #4231 | menu-button |
Menu dependency; Menu #4232, transitively Popover #4236. Button and MenuItem already exist. |
| [ ] | #4232 | menu |
Popover plus collection behavior; Popover #4236 is missing; MenuItem, Divider, Fabric FocusZone, and shared native focus targets are delivered. |
| [ ] | #4233 | message-bar |
Shared canonical status-icon asset decision; Button, Text, and Icon exist. semanticIconSources has generic glyphs but not a verified canonical four-status Fluent asset set. |
| [ ] | #4234 | nav-item |
Ready for contract review; CompoundItemLayout, Icon, Avatar, Badge, and ref/focus foundations are available. |
| [ ] | #4235 | nav |
NavItem dependency and collection policy; NavItem #4234 is missing. Accordion and delivered native/ref-backed focus foundations are available; there is no blanket overlay-wave prerequisite. |
| [ ] | #4236 | popover |
Ready for higher-order overlay contract review; Native Callout is a declared production dependency and its placement/platform work is merged (#4292 / #4291). Popover itself remains absent on main. Standalone Windows Fabric Callout stories are currently excluded for a native crash (#4344); qualify the actual consumer, commands, and focus behavior. |
| [ ] | #4237 | radio-group |
Label dependency and group behavior; Radio and native/ref-backed focus foundations are delivered. Label #4228 remains missing; no overlay dependency. |
| [ ] | #4238 | scrollbar |
Native-host and scroll-source decision; The missing contract is scroll metrics, thumb control, drag/capture, and hosting. Fabric registration/build prior art is delivered; #4217 is not a remaining blocker. |
| [ ] | #4239 | search-box |
Ready for contract review; Input, Button, Icon, and native editor ref/focus support are implemented. |
| [ ] | #4240 | select |
Native picker versus composed adaptation decision; Browser-native select has no equivalent contract in the agentic package. Fabric host prior art exists; no remaining #4217 or #4252 prerequisite. |
| [ ] | #4241 | simple-nav |
NavItem and Tooltip dependencies; NavItem #4234 and Tooltip #4249 (transitively Popover #4236). Native/ref-backed focus foundations exist. |
| [ ] | #4242 | split-button |
Menu dependency and two-region focus contract; Menu #4232, transitively Popover #4236. Button/ref/focus foundations already exist. |
| [x] | #4243 | tablist |
Completed on main; Delivered in #4296; subsequent ref-backed focus/accessibility work landed in #4314. Keep this generation issue closed. |
| [ ] | #4244 | teaching-popover |
Popover dependency; Popover #4236; content/layout and step-state contract authoring can proceed now. |
| [ ] | #4245 | textarea |
Native no-resize/growth contract decision; Input/TextInput and focus foundations exist. CSS drag-resize parity is not supplied by the current native contract; #4252 is completed. |
| [ ] | #4246 | toast |
Candidate source admission plus host/icons decisions; Toast is not in the 49-entry admitted source lock. It appears in the checked-in 2026-08-31 candidate snapshot; source admission is required for Flex-backed authoring. Status icons #4233 and Link #4229 remain dependencies. |
| [ ] | #4247 | toggle-button |
State-ownership decision confirmed; contract review can start; Button and useToggleState are implemented. The ownership gate in #4215 is resolved; remaining source/spec alignment is follow-through, not an undecided behavior prerequisite. |
| [ ] | #4248 | toolbar |
Collection review ready; ToggleButton for toggle members; Button already forwards its native root ref, Divider exists, and ref-backed/TabList focus foundations are delivered. ToggleButton #4247 is required for actual toggle members, not selected-looking Buttons. |
| [ ] | #4249 | tooltip |
Popover dependency; reusable unmerged implementation; Popover #4236 remains missing on main. Native Callout hosting exists, but Tooltip's trigger relationship, timing, and noninteractive behavior remain consumer work. |
Ordering and remaining decisions
- Start/review the foundation-available contracts and reuse unmerged work only after reconciling it with current main. ToggleButton can now start its contract review under the confirmed ownership boundary.
- Prioritize Popover Components: Generate Popover #4236 as the anchored-popup owner, then Menu Components: Generate Menu #4232, Dropdown Components: Generate Dropdown #4224, and Tooltip Components: Generate Tooltip #4249. Their downstream tasks name their actual dependencies; List, RadioGroup, Nav, and Toolbar are not blanket-blocked on an overlay wave.
- Run collection/navigation authoring in parallel with popup work. TabList is existing ref-backed roving-focus prior art. Any direct production FocusZone dependency must explicitly resolve the current dev-dependency/source-boundary policy; do not silently import it.
- Resolve canonical status icons once in MessageBar Components: Generate MessageBar #4233 for Field and Toast. Resolve modal host/scrim/trap policy in Dialog/Drawer, native virtual-focus policy in Dropdown/Combobox, native-host versus reduced/declined contracts in Scrollbar/Select, and no-resize/growth policy in Textarea.
- Admit or explicitly adapt Toast's source before Flex-backed generation. Persona and PresenceBadge are untracked candidate additions, not admitted release gaps; source admission and separate task creation are follow-ups, not invented completions in this hierarchy.
Scope and closure rules
- Catalog membership is defined by the checked-in admitted source lock. Candidate additions and local foundations are separate named sets.
- First-class catalog components keep their own tasks. A deliberate alias, reduced contract, or decline must be reviewed and recorded in both the task and catalog reconciliation; none is silently dropped.
- Subparts belong to their parent task unless separately cataloged. Public unstyled primitives do not count as missing higher-order Flex entries.
- Target Windows/macOS, with desktop V1 Win32 compatibility evidence. Do not treat mobile companions as the cross-platform canonical contract.
- Components: Component tests for the agentic component library #4216 (coverage) and Components: Component readiness model and initial assessment #4251 (readiness) remain delivery gates, not reasons to defer all contract authoring. Record actual native qualification and capability gaps rather than inferring production readiness from unit tests or bundling.
- Close a generation task only after its reviewed implementation is merged, or after an explicitly approved nonimplementation disposition. Keep this rollup open while the admitted gap and tracked decisions remain.
Evidence
packages/agentic/components/spec-source-lock.json.packages/agentic/components/spec-source-report.json(candidate snapshot dated 2026-08-31).packages/agentic/components/SPEC-SOURCE.md.packages/agentic/components/src/index.tsandpackages/agentic/components/src/components/AGENTS.md.packages/agentic/components/src/components/button/button.types.ts,packages/agentic/components/src/components/button/useButton.ts, andpackages/agentic/components/src/components/button/SPEC.md.packages/agentic/components/src/components/tablist/SPEC.mdandpackages/agentic/components/WIN32-FOCUS-PLAN.md.- Add nine agentic components and shared policies #4308 was closed, not merged; GitHub sub-issue relationships were checked for every child and contain no deeper descendants.
Activity
4 remaining items
[-]Missing components[/-][+]Components: Missing components[/+]