Repository navigation
Description
Goal
Deliver the reviewed agentic component catalog in dependency order, distinguishing
admitted source entries, implemented components, candidate-only source additions,
and evidence-backed readiness.
Status - 2026-11-09
Audited against main 666e32983.
32 generation children: 5 completed and 27 open. TabList #4243 was already
complete. This reconciliation closes Dropdown #4224, MenuButton #4231, Menu #4232,
and Popover #4236 because #4386 merged their reviewed implementations, public
exports, tests, and desktop delivery evidence. Their broad readiness and
qualification work remains in #4274's dedicated issues.
The package has 24 implemented local contracts / public higher-order components:
23 admitted Flex components plus local-foundation Text. The admitted release
has 49 entries, leaving 26 admitted entries unimplemented. The 27 open
generation issues are those 26 plus candidate-only Toast. The checked-in
52-entry candidate list is a dated drift snapshot, not a fresh upstream scan;
Persona and PresenceBadge are also candidate-only, with no automatic admission.
Current backlog
| Status | Issue | Assessment and next action |
|---|---|---|
| Open | #4218 Avatar Group | Ready for contract review. Avatar is implemented; define grouping, overflow, naming, and layout without waiting on the completed contract-ingestion work. |
| Open | #4219 Breadcrumb | Tooltip and local contract. Popover and Menu are delivered by #4386. Tooltip #4249 is still missing; review truncation/overflow, link semantics, and native navigation. |
| Open | #4220 Combobox | Ready for editable-combobox contract review. Popover and Dropdown are delivered by #4386; Input and ListboxItem also exist. Define editable filtering, active versus selected option, editor focus/IME, and actual native announcements rather than inheriting browser virtual-focus assumptions. |
| Open | #4221 Destructive Button | Local identity/API decision. Button exists. Decide a separate component versus an approved destructive presentation without changing the existing Button API by inference. |
| Open | #4222 Dialog | Modal foundation. The delivered nonmodal popup stack is not a focus trap. Review Dialog with shared modal focus, scrim/input containment, and background accessibility isolation in #4379. |
| Open | #4223 Drawer | Inline contract can proceed; modal mode gated. Inline layout can be reviewed independently. Overlay/modal behavior depends on #4379 with Dialog #4222; Popover is now available but does not satisfy modal isolation. |
| Done | #4224 Dropdown | Delivered by #4386. Reviewed contract, implementation, exports, runtime/type tests, and native story evidence are merged. Retain broader readiness/accessibility gates and owner-relative continuation in #4377. |
| Open | #4225 Field | Label and status-icon decisions. Label #4228 and the canonical status-icon contract in MessageBar #4233 remain. InfoLabel #4226 is optional composition, not a blocker for basic Field. |
| Open | #4226 InfoLabel | Label and local help semantics. Popover is delivered. Label #4228 remains; review help-trigger naming, association, dismissal, and native accessibility rather than waiting on an absent overlay. |
| Open | #4227 Interaction Tag | Ready for contract review. Tag, Avatar, Icon, and public export wiring exist. Define the composite action and dismiss behavior under the native contract. |
| Open | #4228 Label | Native association decision. Text and the contract workflow exist. Decide supported native association or an explicitly visual-only label; HTML label/control association is not automatic. |
| Open | #4229 Link | Native navigation/appearance decision. Text, Icon, activation, and focus foundations exist. Review native link semantics and underline/navigation differences; no missing Fabric or ingestion prerequisite. |
| Open | #4230 List | Ready for collection contract review. ListItem, Checkbox, Radio, Divider, and ref-backed/TabList focus prior art exist. Win32 ListItem remains excluded in the app catalog under #4344; qualify it before claiming that endpoint ready. |
| Done | #4231 MenuButton | Delivered by #4386. Reviewed trigger/Menu composition, public export, tests, and four-endpoint story evidence are merged. #4405 subsequently repaired native trigger naming. |
| Done | #4232 Menu | Delivered by #4386. Reviewed command collections, bounded nested submenus, hover/type-ahead, disabled discoverability, exports, and native stories are merged. Context-menu input remains #4383; owner-relative continuation and hardening remain #4377. |
| Open | #4233 MessageBar | Canonical status-icon decision. Button, Text, and Icon exist. Establish the reviewed cross-platform status-icon asset contract and status announcements; do not treat generic glyph examples as approved Fluent status assets. |
| Open | #4234 NavItem | Ready for contract review. CompoundItemLayout, Icon, Avatar, Badge, and focus/ref foundations exist; define navigation semantics and the selected/expanded ownership boundary. |
| Open | #4235 Nav | NavItem and collection policy. NavItem #4234 remains missing. Accordion and native/ref-backed focus foundations exist; there is no blanket overlay-wave prerequisite. |
| Done | #4236 Popover | Delivered by #4386. Reviewed nonmodal trigger/surface contract, exports, tests, and four-endpoint native stories are merged. Modal scope, text anchors, and natural owner-relative continuation remain separate work. |
| Open | #4237 RadioGroup | Group labeling/navigation contract. Radio and ref-backed/native focus foundations exist; Label #4228 remains. Decide group naming, selection ownership, and navigation; no overlay dependency. |
| Open | #4238 Scrollbar | Scroll-source/native-host contract. Define scroll metrics, thumb/track control, drag/capture, and host capability. Original Fabric FocusZone #4217 is complete and is not the blocker. |
| Open | #4239 Search box | Ready for contract review. Input, Button, Icon, and native editor ref/focus support exist. Review search semantics, clear action, and controlled/uncontrolled query behavior. |
| Open | #4240 Select | Native picker versus composed product decision. Dropdown is now available as composition prior art, not proof of browser-native select parity. Choose the supported native picker/composed contract and platform semantics. |
| Open | #4241 Simple Nav | NavItem and Tooltip. NavItem #4234 and Tooltip #4249 remain. Popover is delivered; do not retain it as an unimplemented transitive blocker. |
| Open | #4242 SplitButton | Ready for two-region contract review. Menu and MenuButton are delivered, and Button/ref/focus foundations exist. Define the primary action, menu region, focus model, and shared accessible naming. |
| Done | #4243 TabList | Already complete. Original delivery is complete; #4422 subsequently expanded dynamic recovery and shortcut ownership coverage. |
| Open | #4244 TeachingPopover | Ready for contract review. Popover is delivered. Review instructional content, steps, close/action ownership, and accessibility; do not recreate popup hosting. |
| Open | #4245 Textarea | Native no-resize/growth product decision. Input/TextInput and focus foundations exist. Decide native multiline/no-CSS-resize behavior versus a different target; do not promise a web resize handle. |
| Open | #4246 Toast | Source admission plus host/icons decisions. Toast remains outside the admitted 49-entry lock and appears only in the dated 52-entry candidate snapshot. Review source admission, notification host/lifetime, status icons #4233, and Link #4229. |
| Open | #4247 Toggle Button | Ownership settled; contract review can proceed. Button retains externally supplied selected presentation, now with checked/Toggle semantics (#4403). ToggleButton must own real controlled/uncontrolled transitions. #4215 is source-disposition/contract follow-through, not an unanswered ownership decision. |
| Open | #4248 Toolbar | Collection contract; toggle members depend on ToggleButton. Button refs, Divider, and collection-focus prior art exist. Define toolbar navigation and child eligibility; actual self-toggling members need ToggleButton #4247 rather than selected-looking Buttons. |
| Open | #4249 Tooltip | Ready for nonmodal tooltip contract review. Popover and native Callout are delivered. Define tooltip timing, noninteractive content, trigger accessibility, and dismissal. Inline text anchoring, if required, remains #4378; an ordinary view-anchored contract need not wait for it. |
Ownership and ordering
- Button retains externally supplied selected presentation; ToggleButton owns
actual controlled/uncontrolled transitions. Agentic Button: expose visible labels and toggle state #4403 improves Button semantics
without changing that owner decision. Components: Apply Button / ToggleButton state-ownership decision #4215 still owns source-disposition
follow-through; it is not an unanswered ownership question. - Start contract review for unblocked leaves and compositions. Menu/Popover
absence and missing Fabric FocusZone are obsolete blanket blockers. - Modal Dialog/Drawer depend on Components: Provide modal focus scope and background accessibility isolation #4379. Context menus, inline text anchors,
owner-relative continuation, and host capabilities remain Components: Add context-menu opening and point anchors for Menu #4383/Components: Add renderer-owned text-fragment anchors and layout-generation tracking #4378/Components: Add popup-family transactions and owner-relative focus restoration #4377/Win32: Track popup-host continuation, lifecycle, and accessibility capabilities #4384. - Retain native association, navigation, scroll/picker/textarea, status-icon,
and source-admission decisions in their named issues. - Add nine agentic components and shared policies #4308 was closed unmerged: donor code is not delivered evidence. Reviewed
local contracts remain authoritative; never copy private source bodies.
Closure and readiness
Close a generation issue only for a merged reviewed implementation or an explicit
approved nonimplementation disposition. The four #4386 closures do not assert
VoiceOver/Narrator, the complete visual/geometry matrix, every Office host, or
consumer-visible readiness. Those gates remain #4214/#4216/#4251 and the native/
infrastructure issues in #4274/#4275. The old all-skipped reporting blocker #4342
is fixed; report input-lane exclusions and quarantines accurately instead.
Evidence
- Public exports
- Five public primitives
- Pinned and local catalog
- Package remaining work
- Add Popover, Menu, MenuButton, and Dropdown for macOS, Windows, and Win32 #4386 delivery evidence; subsequent Agentic Button: expose visible labels and toggle state #4403-Agentic Text: extend contract regression coverage #4424 coverage; Desktop testing: declare and select WDIO cases by input lane, platform and scope #4464/Desktop testing: migrate stories and split CI input lanes #4466 input lanes.
Validation limits: Source and committed-test inspection only; package/build/native tests were not run in this reconciliation. Earlier native results remain revision-specific; skips, unsupported outcomes, and input-lane exclusions are not passes.
Historical workstream scope and acceptance (retained; the reconciled status above is current)
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[/+]