Repository navigation
Bound form and fieldset structural validity invalidation #713
Description
Active implementation checkpoint — 19 September 2026
Exact upstream heads are WebScene e3c1ba2fb2e41483a8a66166972d2a41e8f69a68 and AppScene acf42662309ea601720ed07c440cf183d7c73fe3; unchanged Code OSS is 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c. Local vscode-demo is b70edc763905f3837e398689c401651f6613d857, clean and intentionally unpushed with Actions disabled.
Focused merge stacks
- Worker/resource stack — merged: WebScene Load dynamically inserted CSS imports asynchronously #702, Complete WorkerOptions and worker load policy #703, Enforce Worker policy across redirect hops #705 and Expose fetch request headers to resource hosts #707; AppScene Expose CSS retained-effect computed values #282; local vscode-demo Add native WebGPU runtime support #10. Dynamic CSS imports, Worker options/credentials/CORS, per-hop redirect validation, and request-header ABI v5 are on main.
- Interactive validation stack — merged: WebScene Present bounded interactive reportValidity feedback #709, Fix validation message text measurement #711, Dismiss stale validation feedback after mutations #712, Bound validation message wrapping and formatting #718, Add bounded validation message formatter ABI #721, Add bounded validation message timeout #723 and Bound form ownership invalidation #724; AppScene Wake native runtime for queued WebSocket events #284; local vscode-demo Broaden WebScene compatibility coverage and release gates #11. This includes focused invalid reporting, text-measurement repair, stale-feedback dismissal, bounded wrapping, localization ABI, optional timeout scheduling, and mutation-local form/fieldset ownership invalidation.
- Form semantics stack — active: the sole implementation agent is working on WebScene Reflect form labels and ARIA validity relationships #714 from exact main
e3c1ba2f. Ordered successors are Implement CustomStateSet and :state() matching #715 CustomStateSet/:state(), Expose live form.elements collections and named access #716 liveform.elementsand named access, Persist bounded form history and autofill state #717 bounded form history/autofill, and Wire validation localization into the Flutter engine bridge #722 Flutter validation localization. These remain open. - Consolidations — open and deliberately unmerged: WebScene Add Code OSS browser and native desktop compatibility #76 is refreshed to
c7712d37019211b6ced379bd9f96629890a61d67; AppScene Stream native application video directly from file and network URLs #65 is at2d2407f5e38c4cdd3d851394a5636cc0a8ce9064; vscode-demo Typescript #1 tracks the local unpushed integration branch.
One-agent mode is enforced. No other implementation agent is active. Reusable runtime behavior continues to land in WebScene or AppScene; unchanged Code OSS remains pinned. The latest retained WebScene current-main runs are CI 35458562334 and NuGet 35458562327 for e3c1ba2f. Focused PR, previous-main, and consolidation runs are cancellation-requested; full package, WPT, performance, visual, physical-platform and VM qualification remains deferred under the fast implementation directive.
After the active form stack: finish the remaining planned CSS and product features, then physical Linux pixels, synchronization/device-loss/resize/soak/performance, visual comparison, VM/computer-use, and unchanged Code OSS Release qualification. Rich clipboard MIME, MULTIPLE/SAVE_TARGETS, recorded desktop-service/cross-platform work, workspace/Explorer, file/save, terminal, Markdown preview, accessibility, lifecycle, package-size, and no-browser promotion gates remain tracked and incomplete.
Parent: #257
CSS epic: #235
Release epic: #227
Gap
Moving controls between forms/fieldsets, toggling disabled fieldsets and legends, or changing form-owner ancestry can change validity and :valid/:invalid matches without changing the control itself. Complete bounded ancestor/owner invalidation without whole-document recascade.
Scope
- Track form/fieldset/legend ownership dependencies and dirty only affected controls plus aggregate ancestors.
- Handle insertion, removal, reparenting, form attribute/id changes, disabled fieldset/first-legend changes, and form-associated custom elements.
- Coalesce one structural mutation batch into bounded style/layout/semantic publications.
- Preserve radio-group and submission aggregation behavior already merged.
No polling, full-tree rescans per mutation, sustained frames, or Code OSS changes. Diff-check-only implementation is allowed under the current fast directive; browser/WPT/performance/package gates remain deferred.
Activity
Bound form ownership invalidation (#713) (#724)