@chromvoid/headless-ui 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +99 -0
- package/dist/a11y-contracts/index.d.ts +23 -0
- package/dist/a11y-contracts/index.js +1 -0
- package/dist/accordion/index.d.ts +78 -0
- package/dist/accordion/index.js +264 -0
- package/dist/adapters/index.d.ts +9 -0
- package/dist/adapters/index.js +1 -0
- package/dist/alert/index.d.ts +33 -0
- package/dist/alert/index.js +54 -0
- package/dist/alert-dialog/index.d.ts +69 -0
- package/dist/alert-dialog/index.js +94 -0
- package/dist/badge/index.d.ts +48 -0
- package/dist/badge/index.js +89 -0
- package/dist/breadcrumb/index.d.ts +55 -0
- package/dist/breadcrumb/index.js +77 -0
- package/dist/button/index.d.ts +46 -0
- package/dist/button/index.js +86 -0
- package/dist/callout/index.d.ts +41 -0
- package/dist/callout/index.js +63 -0
- package/dist/card/index.d.ts +54 -0
- package/dist/card/index.js +103 -0
- package/dist/carousel/index.d.ts +98 -0
- package/dist/carousel/index.js +243 -0
- package/dist/checkbox/index.d.ts +50 -0
- package/dist/checkbox/index.js +87 -0
- package/dist/combobox/index.d.ts +114 -0
- package/dist/combobox/index.js +431 -0
- package/dist/command-palette/index.d.ts +73 -0
- package/dist/command-palette/index.js +147 -0
- package/dist/context-menu/index.d.ts +111 -0
- package/dist/context-menu/index.js +372 -0
- package/dist/copy-button/index.d.ts +62 -0
- package/dist/copy-button/index.js +183 -0
- package/dist/core/index.d.ts +20 -0
- package/dist/core/index.js +2 -0
- package/dist/core/selection.d.ts +5 -0
- package/dist/core/selection.js +39 -0
- package/dist/core/value-range.d.ts +49 -0
- package/dist/core/value-range.js +134 -0
- package/dist/date-picker/index.d.ts +210 -0
- package/dist/date-picker/index.js +895 -0
- package/dist/dialog/index.d.ts +95 -0
- package/dist/dialog/index.js +153 -0
- package/dist/disclosure/index.d.ts +52 -0
- package/dist/disclosure/index.js +159 -0
- package/dist/drawer/index.d.ts +30 -0
- package/dist/drawer/index.js +39 -0
- package/dist/feed/index.d.ts +77 -0
- package/dist/feed/index.js +260 -0
- package/dist/grid/index.d.ts +103 -0
- package/dist/grid/index.js +415 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.js +51 -0
- package/dist/input/index.d.ts +86 -0
- package/dist/input/index.js +156 -0
- package/dist/interactions/composite-navigation.d.ts +69 -0
- package/dist/interactions/composite-navigation.js +169 -0
- package/dist/interactions/index.d.ts +15 -0
- package/dist/interactions/index.js +4 -0
- package/dist/interactions/keyboard-intents.d.ts +16 -0
- package/dist/interactions/keyboard-intents.js +33 -0
- package/dist/interactions/overlay-focus.d.ts +40 -0
- package/dist/interactions/overlay-focus.js +93 -0
- package/dist/interactions/typeahead.d.ts +20 -0
- package/dist/interactions/typeahead.js +41 -0
- package/dist/landmarks/index.d.ts +39 -0
- package/dist/landmarks/index.js +58 -0
- package/dist/link/index.d.ts +34 -0
- package/dist/link/index.js +39 -0
- package/dist/listbox/index.d.ts +92 -0
- package/dist/listbox/index.js +337 -0
- package/dist/menu/index.d.ts +132 -0
- package/dist/menu/index.js +541 -0
- package/dist/menu-button/index.d.ts +71 -0
- package/dist/menu-button/index.js +121 -0
- package/dist/meter/index.d.ts +45 -0
- package/dist/meter/index.js +106 -0
- package/dist/number/index.d.ts +113 -0
- package/dist/number/index.js +252 -0
- package/dist/popover/index.d.ts +70 -0
- package/dist/popover/index.js +126 -0
- package/dist/progress/index.d.ts +49 -0
- package/dist/progress/index.js +79 -0
- package/dist/radio-group/index.d.ts +61 -0
- package/dist/radio-group/index.js +150 -0
- package/dist/select/index.d.ts +92 -0
- package/dist/select/index.js +239 -0
- package/dist/sidebar/index.d.ts +74 -0
- package/dist/sidebar/index.js +186 -0
- package/dist/slider/index.d.ts +61 -0
- package/dist/slider/index.js +150 -0
- package/dist/slider-multi-thumb/index.d.ts +70 -0
- package/dist/slider-multi-thumb/index.js +222 -0
- package/dist/spinbutton/index.d.ts +75 -0
- package/dist/spinbutton/index.js +214 -0
- package/dist/spinner/index.d.ts +1 -0
- package/dist/spinner/index.js +1 -0
- package/dist/spinner/spinner.d.ts +23 -0
- package/dist/spinner/spinner.js +25 -0
- package/dist/switch/index.d.ts +40 -0
- package/dist/switch/index.js +61 -0
- package/dist/table/index.d.ts +117 -0
- package/dist/table/index.js +377 -0
- package/dist/tabs/index.d.ts +63 -0
- package/dist/tabs/index.js +174 -0
- package/dist/textarea/index.d.ts +68 -0
- package/dist/textarea/index.js +137 -0
- package/dist/toast/index.d.ts +67 -0
- package/dist/toast/index.js +145 -0
- package/dist/toolbar/index.d.ts +59 -0
- package/dist/toolbar/index.js +139 -0
- package/dist/tooltip/index.d.ts +52 -0
- package/dist/tooltip/index.js +169 -0
- package/dist/treegrid/index.d.ts +101 -0
- package/dist/treegrid/index.js +463 -0
- package/dist/treeview/index.d.ts +68 -0
- package/dist/treeview/index.js +370 -0
- package/dist/window-splitter/index.d.ts +65 -0
- package/dist/window-splitter/index.js +204 -0
- package/package.json +92 -0
- package/specs/ADR-001-headless-architecture.md +461 -0
- package/specs/ADR-002-repo-release-model.md +108 -0
- package/specs/ADR-003-public-api-versioning.md +136 -0
- package/specs/ADR-004-focus-selection-policy.md +117 -0
- package/specs/IMPLEMENTATION-ROADMAP.md +237 -0
- package/specs/ISSUE-BACKLOG.md +681 -0
- package/specs/RELEASE-CANDIDATE.md +30 -0
- package/specs/components/accordion.md +130 -0
- package/specs/components/alert-dialog.md +72 -0
- package/specs/components/alert.md +65 -0
- package/specs/components/badge.md +220 -0
- package/specs/components/breadcrumb.md +74 -0
- package/specs/components/button.md +115 -0
- package/specs/components/callout.md +195 -0
- package/specs/components/card.md +280 -0
- package/specs/components/carousel.md +140 -0
- package/specs/components/checkbox.md +172 -0
- package/specs/components/combobox.md +423 -0
- package/specs/components/command-palette.md +92 -0
- package/specs/components/context-menu.md +556 -0
- package/specs/components/copy-button.md +293 -0
- package/specs/components/date-picker.md +400 -0
- package/specs/components/dialog.md +298 -0
- package/specs/components/disclosure.md +257 -0
- package/specs/components/drawer.md +353 -0
- package/specs/components/feed.md +265 -0
- package/specs/components/grid.md +186 -0
- package/specs/components/input.md +254 -0
- package/specs/components/landmarks.md +136 -0
- package/specs/components/link.md +134 -0
- package/specs/components/listbox.md +351 -0
- package/specs/components/menu-button.md +76 -0
- package/specs/components/menu.md +623 -0
- package/specs/components/meter.md +149 -0
- package/specs/components/number.md +393 -0
- package/specs/components/popover.md +252 -0
- package/specs/components/progress.md +188 -0
- package/specs/components/radio-group.md +151 -0
- package/specs/components/select.md +144 -0
- package/specs/components/sidebar.md +321 -0
- package/specs/components/slider-multi-thumb.md +78 -0
- package/specs/components/slider.md +84 -0
- package/specs/components/spinbutton.md +140 -0
- package/specs/components/spinner.md +132 -0
- package/specs/components/switch.md +175 -0
- package/specs/components/table.md +403 -0
- package/specs/components/tabs.md +265 -0
- package/specs/components/textarea.md +185 -0
- package/specs/components/toast.md +198 -0
- package/specs/components/toolbar.md +278 -0
- package/specs/components/tooltip.md +252 -0
- package/specs/components/treegrid.md +281 -0
- package/specs/components/treeview.md +91 -0
- package/specs/components/window-splitter.md +297 -0
- package/specs/ops/git-shard-sync.md +107 -0
- package/specs/ops/release-checklist.md +76 -0
- package/specs/release/GAP-TO-GREEN-ISSUES.md +88 -0
- package/specs/release/api-freeze-candidate.md +54 -0
- package/specs/release/changelog-automation.md +76 -0
- package/specs/release/changelog.generated.md +53 -0
- package/specs/release/changelog.patch.generated.md +46 -0
- package/specs/release/consumer-integration.md +53 -0
- package/specs/release/migration-notes-pre-v1.md +40 -0
- package/specs/release/mvp-changelog.md +57 -0
- package/specs/release/release-notes-template.md +61 -0
- package/specs/release/release-rehearsal.md +113 -0
- package/specs/release/semver-deprecation-dry-run.md +89 -0
- package/specs/release/shard-release-drill-report.md +50 -0
- package/specs/release/shard-release-follow-ups.md +31 -0
- package/specs/signals.md +208 -0
|
@@ -0,0 +1,681 @@
|
|
|
1
|
+
# Headless Issue-Ready Backlog (Next Cycle)
|
|
2
|
+
|
|
3
|
+
## How to Use
|
|
4
|
+
|
|
5
|
+
Each item below is designed to be copied into a tracker as a standalone issue.
|
|
6
|
+
|
|
7
|
+
Common labels:
|
|
8
|
+
|
|
9
|
+
- `headless`
|
|
10
|
+
- `a11y`
|
|
11
|
+
- `apg`
|
|
12
|
+
- `state`
|
|
13
|
+
- `tests`
|
|
14
|
+
- `docs`
|
|
15
|
+
- `release`
|
|
16
|
+
|
|
17
|
+
## Common Definition of Done
|
|
18
|
+
|
|
19
|
+
Applies to all issues unless overridden:
|
|
20
|
+
|
|
21
|
+
1. Code/docs changed in `packages/headless` only.
|
|
22
|
+
2. No forbidden imports (boundary check remains green).
|
|
23
|
+
3. `npm run lint` passes.
|
|
24
|
+
4. `npm run test` passes.
|
|
25
|
+
5. Public exports are wired in `packages/headless/src/index.ts`.
|
|
26
|
+
6. Component behavior stays aligned with corresponding `specs/components/<component>.md`.
|
|
27
|
+
|
|
28
|
+
## Backlog Baseline
|
|
29
|
+
|
|
30
|
+
- Previous backlog cycle (`HLS-001` to `HLS-072`) is complete.
|
|
31
|
+
- Implemented components: `listbox`, `combobox`, `menu`, `tabs`, `treeview`.
|
|
32
|
+
- This cycle targets APG full-coverage implementation for remaining patterns with reusable primitives and final hardening gates.
|
|
33
|
+
|
|
34
|
+
## Execution Status Snapshot
|
|
35
|
+
|
|
36
|
+
- Done: `HLS-080`..`HLS-162`
|
|
37
|
+
- In Progress: none
|
|
38
|
+
- Next Recommended: none
|
|
39
|
+
|
|
40
|
+
## Milestone M8 - Shared Foundations
|
|
41
|
+
|
|
42
|
+
### HLS-080 - Build shared value-range primitive package
|
|
43
|
+
|
|
44
|
+
- **Status**: Done
|
|
45
|
+
- **Milestone**: M8
|
|
46
|
+
- **Labels**: `headless`, `architecture`, `state`, `tests`
|
|
47
|
+
- **Depends on**: none
|
|
48
|
+
- **Scope**: create reusable value-range primitives for slider-like and meter/spinbutton/splitter components
|
|
49
|
+
- **Deliverables**:
|
|
50
|
+
- `src/core/value-range.ts` (or equivalent)
|
|
51
|
+
- tests for clamp, step, min/max, large-step behavior
|
|
52
|
+
- **Acceptance Criteria**:
|
|
53
|
+
- reusable by slider, slider-multi-thumb, spinbutton, meter, window-splitter
|
|
54
|
+
- no APG behavior regressions in existing components
|
|
55
|
+
|
|
56
|
+
### HLS-081 - Build shared composite focus-navigation primitive package
|
|
57
|
+
|
|
58
|
+
- **Status**: Not Started
|
|
59
|
+
- **Milestone**: M8
|
|
60
|
+
- **Labels**: `headless`, `architecture`, `a11y`, `tests`
|
|
61
|
+
- **Depends on**: none
|
|
62
|
+
- **Scope**: create reusable roving/active-descendant navigation primitives for composite widgets
|
|
63
|
+
- **Deliverables**:
|
|
64
|
+
- `src/interactions/composite-navigation.ts` (or equivalent)
|
|
65
|
+
- tests for next/prev/first/last, orientation, disabled-skip, wrap policy
|
|
66
|
+
- **Acceptance Criteria**:
|
|
67
|
+
- reusable by radio-group, toolbar, grid, treegrid
|
|
68
|
+
- keyboard intent handling is deterministic and documented
|
|
69
|
+
|
|
70
|
+
### HLS-082 - Build shared overlay focus/dismiss primitive package
|
|
71
|
+
|
|
72
|
+
- **Status**: Not Started
|
|
73
|
+
- **Milestone**: M8
|
|
74
|
+
- **Labels**: `headless`, `architecture`, `a11y`, `tests`
|
|
75
|
+
- **Depends on**: none
|
|
76
|
+
- **Scope**: create shared primitives for focus trap, restore, outside dismiss, and escape handling
|
|
77
|
+
- **Deliverables**:
|
|
78
|
+
- `src/interactions/overlay-focus.ts` (or equivalent)
|
|
79
|
+
- tests for trap, restore, escape, and outside-intent handling
|
|
80
|
+
- **Acceptance Criteria**:
|
|
81
|
+
- reusable by dialog, alert-dialog, tooltip, menu-button
|
|
82
|
+
- no visual-layer coupling
|
|
83
|
+
|
|
84
|
+
## Milestone M9 - Semantic and Structural Patterns
|
|
85
|
+
|
|
86
|
+
### HLS-100 - Implement Alert
|
|
87
|
+
|
|
88
|
+
- **Status**: Not Started
|
|
89
|
+
- **Milestone**: M9
|
|
90
|
+
- **Labels**: `headless`, `alert`, `apg`, `state`, `tests`, `docs`
|
|
91
|
+
- **Depends on**: none
|
|
92
|
+
- **Scope**: implement APG alert live-region behavior without focus stealing
|
|
93
|
+
- **Deliverables**:
|
|
94
|
+
- `src/alert/index.ts`
|
|
95
|
+
- `src/alert/alert.test.ts`
|
|
96
|
+
- **Acceptance Criteria**:
|
|
97
|
+
- aligns with `specs/components/alert.md`
|
|
98
|
+
- updates announce via role contract while preserving current focus
|
|
99
|
+
|
|
100
|
+
### HLS-101 - Implement Breadcrumb
|
|
101
|
+
|
|
102
|
+
- **Status**: Not Started
|
|
103
|
+
- **Milestone**: M9
|
|
104
|
+
- **Labels**: `headless`, `breadcrumb`, `apg`, `tests`, `docs`
|
|
105
|
+
- **Depends on**: none
|
|
106
|
+
- **Scope**: implement breadcrumb semantic contracts and current-page semantics
|
|
107
|
+
- **Deliverables**:
|
|
108
|
+
- `src/breadcrumb/index.ts`
|
|
109
|
+
- `src/breadcrumb/breadcrumb.test.ts`
|
|
110
|
+
- **Acceptance Criteria**:
|
|
111
|
+
- aligns with `specs/components/breadcrumb.md`
|
|
112
|
+
- landmark labelling and `aria-current` behavior verified
|
|
113
|
+
|
|
114
|
+
### HLS-102 - Implement Landmarks helpers
|
|
115
|
+
|
|
116
|
+
- **Status**: Not Started
|
|
117
|
+
- **Milestone**: M9
|
|
118
|
+
- **Labels**: `headless`, `landmarks`, `apg`, `tests`, `docs`
|
|
119
|
+
- **Depends on**: none
|
|
120
|
+
- **Scope**: implement helpers for landmark role/label assignment and uniqueness contracts
|
|
121
|
+
- **Deliverables**:
|
|
122
|
+
- `src/landmarks/index.ts`
|
|
123
|
+
- `src/landmarks/landmarks.test.ts`
|
|
124
|
+
- **Acceptance Criteria**:
|
|
125
|
+
- aligns with `specs/components/landmarks.md`
|
|
126
|
+
- duplicate landmark label/role edge cases covered
|
|
127
|
+
|
|
128
|
+
### HLS-103 - Implement Link
|
|
129
|
+
|
|
130
|
+
- **Status**: Not Started
|
|
131
|
+
- **Milestone**: M9
|
|
132
|
+
- **Labels**: `headless`, `link`, `apg`, `tests`, `docs`
|
|
133
|
+
- **Depends on**: none
|
|
134
|
+
- **Scope**: implement APG link contract for semantic and non-semantic host usage
|
|
135
|
+
- **Deliverables**:
|
|
136
|
+
- `src/link/index.ts`
|
|
137
|
+
- `src/link/link.test.ts`
|
|
138
|
+
- **Acceptance Criteria**:
|
|
139
|
+
- aligns with `specs/components/link.md`
|
|
140
|
+
- enter-activation semantics and disabled-edge behavior verified
|
|
141
|
+
|
|
142
|
+
### HLS-104 - Implement Meter
|
|
143
|
+
|
|
144
|
+
- **Status**: Not Started
|
|
145
|
+
- **Milestone**: M9
|
|
146
|
+
- **Labels**: `headless`, `meter`, `apg`, `state`, `tests`, `docs`
|
|
147
|
+
- **Depends on**: HLS-080
|
|
148
|
+
- **Scope**: implement read-only meter value contract using shared range primitive
|
|
149
|
+
- **Deliverables**:
|
|
150
|
+
- `src/meter/index.ts`
|
|
151
|
+
- `src/meter/meter.test.ts`
|
|
152
|
+
- **Acceptance Criteria**:
|
|
153
|
+
- aligns with `specs/components/meter.md`
|
|
154
|
+
- `aria-valuenow/min/max` and optional value-text behavior verified
|
|
155
|
+
|
|
156
|
+
### HLS-105 - Implement Table semantic contract
|
|
157
|
+
|
|
158
|
+
- **Status**: Not Started
|
|
159
|
+
- **Milestone**: M9
|
|
160
|
+
- **Labels**: `headless`, `table`, `apg`, `tests`, `docs`
|
|
161
|
+
- **Depends on**: none
|
|
162
|
+
- **Scope**: implement static ARIA table contract helpers (non-grid behavior)
|
|
163
|
+
- **Deliverables**:
|
|
164
|
+
- `src/table/index.ts`
|
|
165
|
+
- `src/table/table.test.ts`
|
|
166
|
+
- **Acceptance Criteria**:
|
|
167
|
+
- aligns with `specs/components/table.md`
|
|
168
|
+
- table remains non-composite and non-roving by contract
|
|
169
|
+
|
|
170
|
+
## Milestone M10 - Form and Value Controls
|
|
171
|
+
|
|
172
|
+
### HLS-110 - Implement Button
|
|
173
|
+
|
|
174
|
+
- **Status**: Not Started
|
|
175
|
+
- **Milestone**: M10
|
|
176
|
+
- **Labels**: `headless`, `button`, `apg`, `state`, `tests`, `docs`
|
|
177
|
+
- **Depends on**: none
|
|
178
|
+
- **Scope**: implement button and toggle-button state/aria contracts
|
|
179
|
+
- **Deliverables**:
|
|
180
|
+
- `src/button/index.ts`
|
|
181
|
+
- `src/button/button.test.ts`
|
|
182
|
+
- **Acceptance Criteria**:
|
|
183
|
+
- aligns with `specs/components/button.md`
|
|
184
|
+
- enter/space activation and `aria-pressed` behavior verified
|
|
185
|
+
|
|
186
|
+
### HLS-111 - Implement Checkbox
|
|
187
|
+
|
|
188
|
+
- **Status**: Not Started
|
|
189
|
+
- **Milestone**: M10
|
|
190
|
+
- **Labels**: `headless`, `checkbox`, `apg`, `state`, `tests`, `docs`
|
|
191
|
+
- **Depends on**: none
|
|
192
|
+
- **Scope**: implement dual-state and tri-state checkbox contracts
|
|
193
|
+
- **Deliverables**:
|
|
194
|
+
- `src/checkbox/index.ts`
|
|
195
|
+
- `src/checkbox/checkbox.test.ts`
|
|
196
|
+
- **Acceptance Criteria**:
|
|
197
|
+
- aligns with `specs/components/checkbox.md`
|
|
198
|
+
- `aria-checked` true/false/mixed transitions covered
|
|
199
|
+
|
|
200
|
+
### HLS-112 - Implement Radio Group
|
|
201
|
+
|
|
202
|
+
- **Status**: Not Started
|
|
203
|
+
- **Milestone**: M10
|
|
204
|
+
- **Labels**: `headless`, `radio-group`, `apg`, `state`, `tests`, `docs`
|
|
205
|
+
- **Depends on**: HLS-081
|
|
206
|
+
- **Scope**: implement radiogroup single-selection and arrow-key contract
|
|
207
|
+
- **Deliverables**:
|
|
208
|
+
- `src/radio-group/index.ts`
|
|
209
|
+
- `src/radio-group/radio-group.test.ts`
|
|
210
|
+
- **Acceptance Criteria**:
|
|
211
|
+
- aligns with `specs/components/radio-group.md`
|
|
212
|
+
- roving focus + single-check invariants covered
|
|
213
|
+
|
|
214
|
+
### HLS-113 - Implement Switch
|
|
215
|
+
|
|
216
|
+
- **Status**: Not Started
|
|
217
|
+
- **Milestone**: M10
|
|
218
|
+
- **Labels**: `headless`, `switch`, `apg`, `state`, `tests`, `docs`
|
|
219
|
+
- **Depends on**: none
|
|
220
|
+
- **Scope**: implement binary on/off switch contracts
|
|
221
|
+
- **Deliverables**:
|
|
222
|
+
- `src/switch/index.ts`
|
|
223
|
+
- `src/switch/switch.test.ts`
|
|
224
|
+
- **Acceptance Criteria**:
|
|
225
|
+
- aligns with `specs/components/switch.md`
|
|
226
|
+
- stable label semantics + checked-state behavior verified
|
|
227
|
+
|
|
228
|
+
### HLS-114 - Implement Slider
|
|
229
|
+
|
|
230
|
+
- **Status**: Not Started
|
|
231
|
+
- **Milestone**: M10
|
|
232
|
+
- **Labels**: `headless`, `slider`, `apg`, `state`, `tests`, `docs`
|
|
233
|
+
- **Depends on**: HLS-080
|
|
234
|
+
- **Scope**: implement single-thumb slider value/range/keyboard contract
|
|
235
|
+
- **Deliverables**:
|
|
236
|
+
- `src/slider/index.ts`
|
|
237
|
+
- `src/slider/slider.test.ts`
|
|
238
|
+
- **Acceptance Criteria**:
|
|
239
|
+
- aligns with `specs/components/slider.md`
|
|
240
|
+
- arrows/home/end/page-step and aria value contracts covered
|
|
241
|
+
|
|
242
|
+
### HLS-115 - Implement Slider Multi-Thumb
|
|
243
|
+
|
|
244
|
+
- **Status**: Not Started
|
|
245
|
+
- **Milestone**: M10
|
|
246
|
+
- **Labels**: `headless`, `slider-multi-thumb`, `apg`, `state`, `tests`, `docs`
|
|
247
|
+
- **Depends on**: HLS-080, HLS-114
|
|
248
|
+
- **Scope**: implement multi-thumb constraints, ordering, and per-thumb aria contract
|
|
249
|
+
- **Deliverables**:
|
|
250
|
+
- `src/slider-multi-thumb/index.ts`
|
|
251
|
+
- `src/slider-multi-thumb/slider-multi-thumb.test.ts`
|
|
252
|
+
- **Acceptance Criteria**:
|
|
253
|
+
- aligns with `specs/components/slider-multi-thumb.md`
|
|
254
|
+
- non-crossing and per-thumb focus/value invariants covered
|
|
255
|
+
|
|
256
|
+
### HLS-116 - Implement Spinbutton
|
|
257
|
+
|
|
258
|
+
- **Status**: Not Started
|
|
259
|
+
- **Milestone**: M10
|
|
260
|
+
- **Labels**: `headless`, `spinbutton`, `apg`, `state`, `tests`, `docs`
|
|
261
|
+
- **Depends on**: HLS-080
|
|
262
|
+
- **Scope**: implement numeric spinbutton contract with keyboard steppers
|
|
263
|
+
- **Deliverables**:
|
|
264
|
+
- `src/spinbutton/index.ts`
|
|
265
|
+
- `src/spinbutton/spinbutton.test.ts`
|
|
266
|
+
- **Acceptance Criteria**:
|
|
267
|
+
- aligns with `specs/components/spinbutton.md`
|
|
268
|
+
- min/max/clamp, text-editing, and aria-value invariants covered
|
|
269
|
+
|
|
270
|
+
## Milestone M11 - Disclosure, Overlay, and Command Surfaces
|
|
271
|
+
|
|
272
|
+
### HLS-120 - Implement Disclosure
|
|
273
|
+
|
|
274
|
+
- **Status**: Not Started
|
|
275
|
+
- **Milestone**: M11
|
|
276
|
+
- **Labels**: `headless`, `disclosure`, `apg`, `state`, `tests`, `docs`
|
|
277
|
+
- **Depends on**: none
|
|
278
|
+
- **Scope**: implement show/hide disclosure button contract
|
|
279
|
+
- **Deliverables**:
|
|
280
|
+
- `src/disclosure/index.ts`
|
|
281
|
+
- `src/disclosure/disclosure.test.ts`
|
|
282
|
+
- **Acceptance Criteria**:
|
|
283
|
+
- aligns with `specs/components/disclosure.md`
|
|
284
|
+
- expanded state and controls linkage are deterministic
|
|
285
|
+
|
|
286
|
+
### HLS-121 - Implement Accordion
|
|
287
|
+
|
|
288
|
+
- **Status**: Not Started
|
|
289
|
+
- **Milestone**: M11
|
|
290
|
+
- **Labels**: `headless`, `accordion`, `apg`, `state`, `tests`, `docs`
|
|
291
|
+
- **Depends on**: HLS-120
|
|
292
|
+
- **Scope**: implement multi-section disclosure variant with APG keyboard rules
|
|
293
|
+
- **Deliverables**:
|
|
294
|
+
- `src/accordion/index.ts`
|
|
295
|
+
- `src/accordion/accordion.test.ts`
|
|
296
|
+
- **Acceptance Criteria**:
|
|
297
|
+
- aligns with `specs/components/accordion.md`
|
|
298
|
+
- single/multi expand modes and header navigation covered
|
|
299
|
+
|
|
300
|
+
### HLS-122 - Implement Dialog (Modal)
|
|
301
|
+
|
|
302
|
+
- **Status**: Not Started
|
|
303
|
+
- **Milestone**: M11
|
|
304
|
+
- **Labels**: `headless`, `dialog`, `apg`, `state`, `tests`, `docs`
|
|
305
|
+
- **Depends on**: HLS-082
|
|
306
|
+
- **Scope**: implement modal dialog contract with trap and restore semantics
|
|
307
|
+
- **Deliverables**:
|
|
308
|
+
- `src/dialog/index.ts`
|
|
309
|
+
- `src/dialog/dialog.test.ts`
|
|
310
|
+
- **Acceptance Criteria**:
|
|
311
|
+
- aligns with `specs/components/dialog.md`
|
|
312
|
+
- tab trap, escape close, and focus restore verified
|
|
313
|
+
|
|
314
|
+
### HLS-123 - Implement Alert Dialog
|
|
315
|
+
|
|
316
|
+
- **Status**: Not Started
|
|
317
|
+
- **Milestone**: M11
|
|
318
|
+
- **Labels**: `headless`, `alert-dialog`, `apg`, `state`, `tests`, `docs`
|
|
319
|
+
- **Depends on**: HLS-082, HLS-122
|
|
320
|
+
- **Scope**: implement alertdialog semantics with least-destructive initial focus policy
|
|
321
|
+
- **Deliverables**:
|
|
322
|
+
- `src/alert-dialog/index.ts`
|
|
323
|
+
- `src/alert-dialog/alert-dialog.test.ts`
|
|
324
|
+
- **Acceptance Criteria**:
|
|
325
|
+
- aligns with `specs/components/alert-dialog.md`
|
|
326
|
+
- label + description wiring and focus policy verified
|
|
327
|
+
|
|
328
|
+
### HLS-124 - Implement Tooltip
|
|
329
|
+
|
|
330
|
+
- **Status**: Not Started
|
|
331
|
+
- **Milestone**: M11
|
|
332
|
+
- **Labels**: `headless`, `tooltip`, `apg`, `state`, `tests`, `docs`
|
|
333
|
+
- **Depends on**: HLS-082
|
|
334
|
+
- **Scope**: implement tooltip open/close semantics tied to focus/hover triggers
|
|
335
|
+
- **Deliverables**:
|
|
336
|
+
- `src/tooltip/index.ts`
|
|
337
|
+
- `src/tooltip/tooltip.test.ts`
|
|
338
|
+
- **Acceptance Criteria**:
|
|
339
|
+
- aligns with `specs/components/tooltip.md`
|
|
340
|
+
- trigger `aria-describedby` and escape-dismiss behavior verified
|
|
341
|
+
|
|
342
|
+
### HLS-125 - Implement Menu Button
|
|
343
|
+
|
|
344
|
+
- **Status**: Not Started
|
|
345
|
+
- **Milestone**: M11
|
|
346
|
+
- **Labels**: `headless`, `menu-button`, `apg`, `state`, `tests`, `docs`
|
|
347
|
+
- **Depends on**: HLS-082
|
|
348
|
+
- **Scope**: implement APG menu-button trigger contract integrated with menu semantics
|
|
349
|
+
- **Deliverables**:
|
|
350
|
+
- `src/menu-button/index.ts`
|
|
351
|
+
- `src/menu-button/menu-button.test.ts`
|
|
352
|
+
- **Acceptance Criteria**:
|
|
353
|
+
- aligns with `specs/components/menu-button.md`
|
|
354
|
+
- open-key variants and focus handoff to first/last item verified
|
|
355
|
+
|
|
356
|
+
### HLS-126 - Implement Toolbar
|
|
357
|
+
|
|
358
|
+
- **Status**: Not Started
|
|
359
|
+
- **Milestone**: M11
|
|
360
|
+
- **Labels**: `headless`, `toolbar`, `apg`, `state`, `tests`, `docs`
|
|
361
|
+
- **Depends on**: HLS-081
|
|
362
|
+
- **Scope**: implement toolbar roving focus and orientation-aware keyboard behavior
|
|
363
|
+
- **Deliverables**:
|
|
364
|
+
- `src/toolbar/index.ts`
|
|
365
|
+
- `src/toolbar/toolbar.test.ts`
|
|
366
|
+
- **Acceptance Criteria**:
|
|
367
|
+
- aligns with `specs/components/toolbar.md`
|
|
368
|
+
- single-tab-stop and arrow navigation behavior verified
|
|
369
|
+
|
|
370
|
+
## Milestone M12 - Data Navigation and Layout Patterns
|
|
371
|
+
|
|
372
|
+
### HLS-130 - Implement Grid
|
|
373
|
+
|
|
374
|
+
- **Status**: Not Started
|
|
375
|
+
- **Milestone**: M12
|
|
376
|
+
- **Labels**: `headless`, `grid`, `apg`, `state`, `tests`, `docs`
|
|
377
|
+
- **Depends on**: HLS-081
|
|
378
|
+
- **Scope**: implement interactive grid navigation contract
|
|
379
|
+
- **Deliverables**:
|
|
380
|
+
- `src/grid/index.ts`
|
|
381
|
+
- `src/grid/grid.test.ts`
|
|
382
|
+
- **Acceptance Criteria**:
|
|
383
|
+
- aligns with `specs/components/grid.md`
|
|
384
|
+
- cell navigation matrix and aria metadata contracts verified
|
|
385
|
+
|
|
386
|
+
### HLS-131 - Implement Treegrid
|
|
387
|
+
|
|
388
|
+
- **Status**: Not Started
|
|
389
|
+
- **Milestone**: M12
|
|
390
|
+
- **Labels**: `headless`, `treegrid`, `apg`, `state`, `tests`, `docs`
|
|
391
|
+
- **Depends on**: HLS-081, HLS-130
|
|
392
|
+
- **Scope**: implement hierarchical grid with expand/collapse and row/cell navigation
|
|
393
|
+
- **Deliverables**:
|
|
394
|
+
- `src/treegrid/index.ts`
|
|
395
|
+
- `src/treegrid/treegrid.test.ts`
|
|
396
|
+
- **Acceptance Criteria**:
|
|
397
|
+
- aligns with `specs/components/treegrid.md`
|
|
398
|
+
- hierarchical metadata and keyboard transitions verified
|
|
399
|
+
|
|
400
|
+
### HLS-132 - Implement Feed
|
|
401
|
+
|
|
402
|
+
- **Status**: Not Started
|
|
403
|
+
- **Milestone**: M12
|
|
404
|
+
- **Labels**: `headless`, `feed`, `apg`, `state`, `tests`, `docs`
|
|
405
|
+
- **Depends on**: none
|
|
406
|
+
- **Scope**: implement feed/article navigation and loading-state aria semantics
|
|
407
|
+
- **Deliverables**:
|
|
408
|
+
- `src/feed/index.ts`
|
|
409
|
+
- `src/feed/feed.test.ts`
|
|
410
|
+
- **Acceptance Criteria**:
|
|
411
|
+
- aligns with `specs/components/feed.md`
|
|
412
|
+
- page-up/down contract and busy-state updates verified
|
|
413
|
+
|
|
414
|
+
### HLS-133 - Implement Carousel
|
|
415
|
+
|
|
416
|
+
- **Status**: Not Started
|
|
417
|
+
- **Milestone**: M12
|
|
418
|
+
- **Labels**: `headless`, `carousel`, `apg`, `state`, `tests`, `docs`
|
|
419
|
+
- **Depends on**: none
|
|
420
|
+
- **Scope**: implement carousel slide and rotation controls with APG pause rules
|
|
421
|
+
- **Deliverables**:
|
|
422
|
+
- `src/carousel/index.ts`
|
|
423
|
+
- `src/carousel/carousel.test.ts`
|
|
424
|
+
- **Acceptance Criteria**:
|
|
425
|
+
- aligns with `specs/components/carousel.md`
|
|
426
|
+
- auto-rotation stop-on-focus and control ordering behavior verified
|
|
427
|
+
|
|
428
|
+
### HLS-134 - Implement Window Splitter
|
|
429
|
+
|
|
430
|
+
- **Status**: Not Started
|
|
431
|
+
- **Milestone**: M12
|
|
432
|
+
- **Labels**: `headless`, `window-splitter`, `apg`, `state`, `tests`, `docs`
|
|
433
|
+
- **Depends on**: HLS-080
|
|
434
|
+
- **Scope**: implement focusable separator with keyboard resizing and aria value contract
|
|
435
|
+
- **Deliverables**:
|
|
436
|
+
- `src/window-splitter/index.ts`
|
|
437
|
+
- `src/window-splitter/window-splitter.test.ts`
|
|
438
|
+
- **Acceptance Criteria**:
|
|
439
|
+
- aligns with `specs/components/window-splitter.md`
|
|
440
|
+
- arrow/home/end movement and value clamping verified
|
|
441
|
+
|
|
442
|
+
## Milestone M13 - Program Hardening and Closure
|
|
443
|
+
|
|
444
|
+
### HLS-140 - Expand APG contract test harness across all new components
|
|
445
|
+
|
|
446
|
+
- **Status**: Done
|
|
447
|
+
- **Milestone**: M13
|
|
448
|
+
- **Labels**: `headless`, `tests`, `a11y`, `apg`
|
|
449
|
+
- **Depends on**: HLS-100..HLS-134
|
|
450
|
+
- **Scope**: add cross-component contract verification suites and regression coverage
|
|
451
|
+
- **Deliverables**:
|
|
452
|
+
- shared test helpers for role/aria/linkage assertions
|
|
453
|
+
- regression suites for keyboard contracts
|
|
454
|
+
- **Acceptance Criteria**:
|
|
455
|
+
- every newly added component has role/aria and keyboard contract coverage
|
|
456
|
+
|
|
457
|
+
### HLS-141 - Final export, docs, and catalog sweep
|
|
458
|
+
|
|
459
|
+
- **Status**: Done
|
|
460
|
+
- **Milestone**: M13
|
|
461
|
+
- **Labels**: `headless`, `docs`, `release`
|
|
462
|
+
- **Depends on**: HLS-100..HLS-134
|
|
463
|
+
- **Scope**: finalize package exports, README coverage, and implementation status docs
|
|
464
|
+
- **Deliverables**:
|
|
465
|
+
- `src/index.ts` exports for all new components
|
|
466
|
+
- `README.md` implemented component list update
|
|
467
|
+
- specs cross-links and roadmap/status alignment updates if needed
|
|
468
|
+
- **Acceptance Criteria**:
|
|
469
|
+
- no missing public exports
|
|
470
|
+
- docs match actual package surface
|
|
471
|
+
|
|
472
|
+
### HLS-142 - Full-gate validation and release-candidate preparation
|
|
473
|
+
|
|
474
|
+
- **Status**: Done
|
|
475
|
+
- **Milestone**: M13
|
|
476
|
+
- **Labels**: `headless`, `release`, `ops`, `governance`
|
|
477
|
+
- **Depends on**: HLS-140, HLS-141
|
|
478
|
+
- **Scope**: run full package quality gates and produce release-candidate evidence
|
|
479
|
+
- **Deliverables**:
|
|
480
|
+
- lint/test/boundary gate results
|
|
481
|
+
- APG coverage summary
|
|
482
|
+
- release-ready checklist completion
|
|
483
|
+
- **Acceptance Criteria**:
|
|
484
|
+
- all gates are green from package context
|
|
485
|
+
- no unresolved blocker issues in this backlog
|
|
486
|
+
|
|
487
|
+
## Milestone M14 - MVP-next Extension Components (Post-APG Scope)
|
|
488
|
+
|
|
489
|
+
### HLS-150 - Productize Select from scaffold to release-ready contract
|
|
490
|
+
|
|
491
|
+
- **Status**: Done
|
|
492
|
+
- **Milestone**: M14
|
|
493
|
+
- **Labels**: `headless`, `select`, `a11y`, `state`, `tests`, `docs`
|
|
494
|
+
- **Depends on**: HLS-112
|
|
495
|
+
- **Scope**: finalize single-select trigger/listbox composition contract and keyboard behavior for production usage
|
|
496
|
+
- **Deliverables**:
|
|
497
|
+
- `src/select/index.ts`
|
|
498
|
+
- `src/select/select.test.ts`
|
|
499
|
+
- `specs/components/select.md`
|
|
500
|
+
- **Acceptance Criteria**:
|
|
501
|
+
- trigger/listbox/option contracts are deterministic and stable
|
|
502
|
+
- value-text and selection-change callback semantics are verified
|
|
503
|
+
- **DoD Gates**:
|
|
504
|
+
- open-from-trigger keyboard matrix (`ArrowDown`, `ArrowUp`, `Home`, `End`, `Enter`, `Space`) is covered
|
|
505
|
+
- selected state (`selectedId`, `selectedLabel`, `getValueText`) stays synchronized
|
|
506
|
+
- close and focus-restore behavior is deterministic
|
|
507
|
+
|
|
508
|
+
### HLS-151 - Productize Popover non-modal overlay contract
|
|
509
|
+
|
|
510
|
+
- **Status**: Done
|
|
511
|
+
- **Milestone**: M14
|
|
512
|
+
- **Labels**: `headless`, `popover`, `a11y`, `state`, `tests`, `docs`
|
|
513
|
+
- **Depends on**: HLS-082
|
|
514
|
+
- **Scope**: finalize popover trigger/content contract based on overlay focus intents without modal trap semantics
|
|
515
|
+
- **Deliverables**:
|
|
516
|
+
- `src/popover/index.ts`
|
|
517
|
+
- `src/popover/popover.test.ts`
|
|
518
|
+
- `specs/components/popover.md`
|
|
519
|
+
- **Acceptance Criteria**:
|
|
520
|
+
- open source and dismiss intent states are tracked and test-covered
|
|
521
|
+
- outside-pointer and outside-focus close policies are independently configurable
|
|
522
|
+
- **DoD Gates**:
|
|
523
|
+
- trigger/content aria linkage and expanded state always match model state
|
|
524
|
+
- escape/outside dismiss paths set `lastDismissIntent` and `restoreTargetId` correctly
|
|
525
|
+
- non-modal contract (`aria-modal=false`, no focus trap) is preserved
|
|
526
|
+
|
|
527
|
+
### HLS-152 - Productize Context Menu pointer and keyboard invocation flows
|
|
528
|
+
|
|
529
|
+
- **Status**: Done
|
|
530
|
+
- **Milestone**: M14
|
|
531
|
+
- **Labels**: `headless`, `context-menu`, `a11y`, `state`, `tests`, `docs`
|
|
532
|
+
- **Depends on**: HLS-125, HLS-151
|
|
533
|
+
- **Scope**: finalize context menu model for right-click and keyboard invocation with anchor semantics
|
|
534
|
+
- **Deliverables**:
|
|
535
|
+
- `src/context-menu/index.ts`
|
|
536
|
+
- `src/context-menu/context-menu.test.ts`
|
|
537
|
+
- `specs/components/context-menu.md`
|
|
538
|
+
- **Acceptance Criteria**:
|
|
539
|
+
- pointer and keyboard open paths both supported (`ContextMenu`, `Shift+F10`)
|
|
540
|
+
- anchor coordinates and open source are preserved in state
|
|
541
|
+
- **DoD Gates**:
|
|
542
|
+
- `onContextMenu` invocation path prevents default when available
|
|
543
|
+
- menu close semantics (`Escape`, `Tab`, outside pointer policy) are deterministic
|
|
544
|
+
- restore-target behavior is consistent after close and select-close paths
|
|
545
|
+
|
|
546
|
+
### HLS-153 - Productize Command Palette execute and shortcut contract
|
|
547
|
+
|
|
548
|
+
- **Status**: Done
|
|
549
|
+
- **Milestone**: M14
|
|
550
|
+
- **Labels**: `headless`, `command-palette`, `a11y`, `state`, `tests`, `docs`
|
|
551
|
+
- **Depends on**: HLS-150, HLS-151
|
|
552
|
+
- **Scope**: finalize command palette model with execute flow, shortcut handling, and keep-open policy controls
|
|
553
|
+
- **Deliverables**:
|
|
554
|
+
- `src/command-palette/index.ts`
|
|
555
|
+
- `src/command-palette/command-palette.test.ts`
|
|
556
|
+
- `specs/components/command-palette.md`
|
|
557
|
+
- **Acceptance Criteria**:
|
|
558
|
+
- global shortcut toggles palette deterministically
|
|
559
|
+
- execute paths update `lastExecutedId` and call `onExecute`
|
|
560
|
+
- **DoD Gates**:
|
|
561
|
+
- `Enter`/`Space` execution works for active command with visible-command fallback
|
|
562
|
+
- `closeOnExecute` policy is validated in both close and keep-open modes
|
|
563
|
+
- outside pointer close policy is implemented and covered
|
|
564
|
+
|
|
565
|
+
### HLS-154 - Productize Toast queue and timer lifecycle contract
|
|
566
|
+
|
|
567
|
+
- **Status**: Done
|
|
568
|
+
- **Milestone**: M14
|
|
569
|
+
- **Labels**: `headless`, `toast`, `a11y`, `state`, `tests`, `docs`
|
|
570
|
+
- **Depends on**: none
|
|
571
|
+
- **Scope**: finalize notification queue model with durable timer pause/resume semantics
|
|
572
|
+
- **Deliverables**:
|
|
573
|
+
- `src/toast/index.ts`
|
|
574
|
+
- `src/toast/toast.test.ts`
|
|
575
|
+
- `specs/components/toast.md`
|
|
576
|
+
- **Acceptance Criteria**:
|
|
577
|
+
- queue visibility and level-to-role mapping are stable
|
|
578
|
+
- pause/resume preserves remaining auto-dismiss duration
|
|
579
|
+
- **DoD Gates**:
|
|
580
|
+
- push/dismiss/clear operations keep queue and timer tracking consistent
|
|
581
|
+
- `maxVisible` slicing and live-region contracts are verified
|
|
582
|
+
- auto-dismiss timing is deterministic in unit tests
|
|
583
|
+
|
|
584
|
+
### HLS-155 - Productize Progress determinate/indeterminate value contract
|
|
585
|
+
|
|
586
|
+
- **Status**: Done
|
|
587
|
+
- **Milestone**: M14
|
|
588
|
+
- **Labels**: `headless`, `progress`, `a11y`, `state`, `tests`, `docs`
|
|
589
|
+
- **Depends on**: HLS-080
|
|
590
|
+
- **Scope**: finalize progressbar contract with value stepping, completion state, and aria mode switching
|
|
591
|
+
- **Deliverables**:
|
|
592
|
+
- `src/progress/index.ts`
|
|
593
|
+
- `src/progress/progress.test.ts`
|
|
594
|
+
- `specs/components/progress.md`
|
|
595
|
+
- **Acceptance Criteria**:
|
|
596
|
+
- determinate mode exposes full aria value triple and value text
|
|
597
|
+
- indeterminate mode omits aria value triple consistently
|
|
598
|
+
- **DoD Gates**:
|
|
599
|
+
- increment/decrement/set flows clamp through shared value-range behavior
|
|
600
|
+
- `isComplete` transitions are deterministic across state changes
|
|
601
|
+
- `onValueChange` callback fires only on effective value updates
|
|
602
|
+
|
|
603
|
+
## Milestone M15 - Consumer Adoption and Release Operations
|
|
604
|
+
|
|
605
|
+
### HLS-160 - Build external-consumer integration harness for MVP-next components
|
|
606
|
+
|
|
607
|
+
- **Status**: Done
|
|
608
|
+
- **Milestone**: M15
|
|
609
|
+
- **Labels**: `headless`, `integration`, `adapters`, `tests`, `docs`
|
|
610
|
+
- **Depends on**: HLS-150, HLS-151, HLS-152, HLS-153, HLS-154, HLS-155
|
|
611
|
+
- **Scope**: validate real consumer ergonomics by wiring MVP-next components in adapter-level integration scenarios
|
|
612
|
+
- **Deliverables**:
|
|
613
|
+
- adapter integration test expansion for MVP-next usage paths
|
|
614
|
+
- consumer integration notes in `specs/release/consumer-integration.md`
|
|
615
|
+
- **Acceptance Criteria**:
|
|
616
|
+
- import and usage flows from package public surface are verified for consumer-style composition
|
|
617
|
+
- no private/internal API usage is required for baseline integration flows
|
|
618
|
+
- **DoD Gates**:
|
|
619
|
+
- integration tests cover at least select/popover/command-palette composition path
|
|
620
|
+
- package-root import path remains sufficient for documented integration scenarios
|
|
621
|
+
- lint/test/boundary checks stay green
|
|
622
|
+
|
|
623
|
+
### HLS-161 - Rehearse release workflow and packaging gates
|
|
624
|
+
|
|
625
|
+
- **Status**: Done
|
|
626
|
+
- **Milestone**: M15
|
|
627
|
+
- **Labels**: `headless`, `release`, `ops`, `governance`, `docs`
|
|
628
|
+
- **Depends on**: HLS-160
|
|
629
|
+
- **Scope**: run a full dry-run of package release operations with explicit evidence and rollback checklist
|
|
630
|
+
- **Deliverables**:
|
|
631
|
+
- release rehearsal runbook in `specs/release/release-rehearsal.md`
|
|
632
|
+
- verification artifacts for lint/test/boundary + tarball packaging checks
|
|
633
|
+
- **Acceptance Criteria**:
|
|
634
|
+
- a deterministic command sequence exists for release preparation and verification
|
|
635
|
+
- package tarball contents are validated against expected public surface
|
|
636
|
+
- **DoD Gates**:
|
|
637
|
+
- dry-run command set documented (`lint`, `test`, `npm pack`, governance checks)
|
|
638
|
+
- rehearsal output confirms no missing docs/exports in package artifact
|
|
639
|
+
- failure/rollback checklist is documented and reviewable
|
|
640
|
+
|
|
641
|
+
### HLS-162 - Automate changelog and release-note assembly
|
|
642
|
+
|
|
643
|
+
- **Status**: Done
|
|
644
|
+
- **Milestone**: M15
|
|
645
|
+
- **Labels**: `headless`, `release`, `docs`, `automation`
|
|
646
|
+
- **Depends on**: HLS-161
|
|
647
|
+
- **Scope**: define and automate repeatable changelog generation for upcoming releases from backlog/status evidence
|
|
648
|
+
- **Deliverables**:
|
|
649
|
+
- changelog automation script(s) under `scripts/`
|
|
650
|
+
- release note template and usage doc in `specs/release/`
|
|
651
|
+
- **Acceptance Criteria**:
|
|
652
|
+
- changelog generation can be run from package context and produces deterministic output
|
|
653
|
+
- release-note template captures component changes, contract hardening, and gate evidence sections
|
|
654
|
+
- **DoD Gates**:
|
|
655
|
+
- generated changelog output includes MVP-next component tranche entries
|
|
656
|
+
- workflow supports both full release and patch-level update modes
|
|
657
|
+
- docs clearly define manual override/edit workflow for final release notes
|
|
658
|
+
|
|
659
|
+
## Critical Path (recommended)
|
|
660
|
+
|
|
661
|
+
HLS-080 -> HLS-114 -> HLS-115 -> HLS-116 -> HLS-134 -> HLS-140 -> HLS-141 -> HLS-142 -> HLS-150 -> HLS-151 -> HLS-152 -> HLS-153 -> HLS-160 -> HLS-161 -> HLS-162
|
|
662
|
+
|
|
663
|
+
Parallel lanes:
|
|
664
|
+
|
|
665
|
+
- HLS-081 -> HLS-112 -> HLS-126 -> HLS-130 -> HLS-131
|
|
666
|
+
- HLS-082 -> HLS-122 -> HLS-123 and HLS-124 and HLS-125
|
|
667
|
+
- HLS-100/HLS-101/HLS-102/HLS-103/HLS-104/HLS-105 can run independently after foundations where required
|
|
668
|
+
- HLS-154 and HLS-155 can run in parallel with HLS-150..HLS-153
|
|
669
|
+
- HLS-160 can start once HLS-150..HLS-155 are done
|
|
670
|
+
|
|
671
|
+
## Suggested Sprint Packaging
|
|
672
|
+
|
|
673
|
+
- **Sprint A**: HLS-080, HLS-081, HLS-082, HLS-100, HLS-101
|
|
674
|
+
- **Sprint B**: HLS-102, HLS-103, HLS-104, HLS-105, HLS-110
|
|
675
|
+
- **Sprint C**: HLS-111, HLS-112, HLS-113, HLS-114
|
|
676
|
+
- **Sprint D**: HLS-115, HLS-116, HLS-120, HLS-121
|
|
677
|
+
- **Sprint E**: HLS-122, HLS-123, HLS-124, HLS-125, HLS-126
|
|
678
|
+
- **Sprint F**: HLS-130, HLS-131, HLS-132, HLS-133, HLS-134
|
|
679
|
+
- **Sprint G**: HLS-140, HLS-141, HLS-142
|
|
680
|
+
- **Sprint H**: HLS-150, HLS-151, HLS-152, HLS-153, HLS-154, HLS-155
|
|
681
|
+
- **Sprint I**: HLS-160, HLS-161, HLS-162
|