Active implementation checkpoint — 19 September 2026
Exact upstream heads are WebScene 81811bbf733ea5e2b19488e01b6c8839fb1d40ba and AppScene fe14e7b775d347693d6526b7c4d49c0dca082e52; unchanged Code OSS is 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c. Local vscode-demo is d27d1316f8fbe66d36350eecdc79ba0f23d9e692 and remains intentionally unpushed with Actions disabled.
Merged Linux exact-device work remains complete through WebScene #654 and AppScene #270. Linux CLIPBOARD/PRIMARY and inbound/outbound Xdnd are merged through WebScene #658 and AppScene #280. CSS animation direction #659/#660 and fill modes #661/#662 are merged. The current-main native compiler failure exposed by #662 is tracked and fixed by #663/#664; generated selectors now preserve compiled namespace-aware compound and attribute data. #666/#667 binds the remaining native test consumer to the namespace-aware compiler API, and #668/#669 restores complete structured selector parity comparisons. #665/#670 implements demand-free animation pause/resume, and #671/#673 enforces parser package size with both ratio and absolute byte budgets, and #672/#678 implements bounded eight-track animation-list coordination; #674/#681 implements zero-time/count semantics, #679/#680/#682 updates the native stale-track contract for inactive authored list slots, and #675/#683 adds bounded translate/scale keyframe sampling and retained paint composition. #684/#685 refreshes the generated Code OSS ledger and exact property identity count exposed by the post-merge main jobs. #676/#686 adds bounded retained ::before/::after animation lifecycle, scoped paint, owner events, cleanup, and demand-free settled state. Full-V8 package portability epic #687 is implemented by #688/#691 for GCC, #689/#692 for MSVC enum/ABI boundaries, #690/#693 for bounded embedded source literals, #694/#695 for const cascade roots, and #696/#697 for native test syntax. #677/#698 adds bounded retained WAAPI with document/element caps, lifecycle settlement, and demand-free inactive states. #699/#700 restores the 384-byte native document footprint by moving WAAPI-only maps and event state behind one lazy auxiliary allocation. #476/#702 adds bounded asynchronous document fetch and stale-generation suppression for dynamically inserted CSS imports, complementing #480/#484 authored-import reflection. #701/#703 adds browser-shaped Worker options, inherited credential policy, final response/CORS enforcement, generation-safe failure, and bounded slot retirement. #704/#705 adds an optional bounded redirect ledger and per-hop Worker status/scheme/loop/downgrade/origin/CORS/credential checks. #706/#707 extracts bounded request-header ABI v5 onto current main; AppScene #281/#282 and vscode-demo #10 populate the ledger in their host providers. #708/#709 adds interactive reportValidity feedback; #710/#711 repairs its native text-measurement compile break, and #710/#712 dismisses stale feedback after programmatic and eligibility mutations.
One-agent mode is enforced. One-agent mode remains enforced. The sole implementation lane is idle after #712; no other implementation agent is active. Static fill does not sustain frame demand, and new animation work must preserve that bound without per-frame cascade, selector, or visual-tree churn.
Consolidations remain open and unmerged: WebScene #76 at 8e435212df2ec20c339a37d1cb24a11ad4c4e055, AppScene #65 at 0c018306458050a66a19d2c84abd3cf65a20832c, and vscode-demo #1. WebScene #662 and #681 portable V8 contracts passed. Focused #682 native document and Linux SDK runs 35448768204 and 35448768281 passed; #683 portable V8 contracts passed. The failed #683 current-main generated-ledger/property-count gates are repaired by #684/#685, and Linux CI job 105914816775 passed. Full-V8 Linux/Windows RID portability repairs are merged through #691-#697; current-main CI/NuGet runs 35456365243 and 35456365245 are retained; superseded PR, previous-main, and consolidation runs were cancellation-requested. AppScene #282 current-main companion run 35454940645 passed.
Ordered next work: current-main CI/package triage, then the remaining bounded validation wrapping/localization policy and focused CSS and acceptance backlog, then physical Linux pixels, synchronization/device-loss/resize/soak/performance, VM/computer-use, and unchanged Code OSS Release qualification. Rich clipboard MIME, MULTIPLE/SAVE_TARGETS, and the recorded desktop-service/cross-platform backlog remain open.
Parent: #257
CSS epic: #235
Release epic: #227
Remaining implementation gap
Constraint validity, form aggregation, submission blocking, and checkValidity() / reportValidity() APIs are merged through #603-#615. The reportValidity() path still lacks the browser-facing interactive failure behavior: focus the first unhandled invalid control and show a bounded validation message anchored to that control.
Scope
- Dispatch cancelable
invalid in tree/form order and stop interactive presentation when the event is canceled.
- Select and focus the first invalid, focusable, connected control that was not canceled.
- Render one engine-owned, non-author DOM validation bubble with the control's current validation message and appropriate native semantic announcement.
- Reposition on layout/scroll/zoom and dismiss on correction, input/change, successful validation, focus transfer, detach, navigation, or teardown.
- Keep message text, retained nodes, publications, and pending tasks bounded; no sustained idle frames, repeated selector/cascade work, or visual-tree churn.
- Preserve existing noninteractive
checkValidity(), novalidate, formnovalidate, barred controls, custom-element anchors, and submission behavior.
Constraints
No Code OSS source changes or browser/CEF/Electron/WebView dependency. Keep this generic to WebScene and avoid structural invalidation ownership outside #257.
Deferred validation
Under the implementation-first directive, implementation may merge after diff checks. WPT/browser pixels, keyboard/accessibility, lifecycle, performance, memory, package, and cross-platform gates remain under #257/#235/#227.
Active implementation checkpoint — 19 September 2026
Exact upstream heads are WebScene
81811bbf733ea5e2b19488e01b6c8839fb1d40baand AppScenefe14e7b775d347693d6526b7c4d49c0dca082e52; unchanged Code OSS is645f29cc3176500b4b5762ba887cf2a7f0ffdf2c. Local vscode-demo isd27d1316f8fbe66d36350eecdc79ba0f23d9e692and remains intentionally unpushed with Actions disabled.Merged Linux exact-device work remains complete through WebScene #654 and AppScene #270. Linux CLIPBOARD/PRIMARY and inbound/outbound Xdnd are merged through WebScene #658 and AppScene #280. CSS animation direction #659/#660 and fill modes #661/#662 are merged. The current-main native compiler failure exposed by #662 is tracked and fixed by #663/#664; generated selectors now preserve compiled namespace-aware compound and attribute data. #666/#667 binds the remaining native test consumer to the namespace-aware compiler API, and #668/#669 restores complete structured selector parity comparisons. #665/#670 implements demand-free animation pause/resume, and #671/#673 enforces parser package size with both ratio and absolute byte budgets, and #672/#678 implements bounded eight-track animation-list coordination; #674/#681 implements zero-time/count semantics, #679/#680/#682 updates the native stale-track contract for inactive authored list slots, and #675/#683 adds bounded translate/scale keyframe sampling and retained paint composition. #684/#685 refreshes the generated Code OSS ledger and exact property identity count exposed by the post-merge main jobs. #676/#686 adds bounded retained
::before/::afteranimation lifecycle, scoped paint, owner events, cleanup, and demand-free settled state. Full-V8 package portability epic #687 is implemented by #688/#691 for GCC, #689/#692 for MSVC enum/ABI boundaries, #690/#693 for bounded embedded source literals, #694/#695 for const cascade roots, and #696/#697 for native test syntax. #677/#698 adds bounded retained WAAPI with document/element caps, lifecycle settlement, and demand-free inactive states. #699/#700 restores the 384-byte native document footprint by moving WAAPI-only maps and event state behind one lazy auxiliary allocation. #476/#702 adds bounded asynchronous document fetch and stale-generation suppression for dynamically inserted CSS imports, complementing #480/#484 authored-import reflection. #701/#703 adds browser-shaped Worker options, inherited credential policy, final response/CORS enforcement, generation-safe failure, and bounded slot retirement. #704/#705 adds an optional bounded redirect ledger and per-hop Worker status/scheme/loop/downgrade/origin/CORS/credential checks. #706/#707 extracts bounded request-header ABI v5 onto current main; AppScene #281/#282 and vscode-demo #10 populate the ledger in their host providers. #708/#709 adds interactive reportValidity feedback; #710/#711 repairs its native text-measurement compile break, and #710/#712 dismisses stale feedback after programmatic and eligibility mutations.One-agent mode is enforced. One-agent mode remains enforced. The sole implementation lane is idle after #712; no other implementation agent is active. Static fill does not sustain frame demand, and new animation work must preserve that bound without per-frame cascade, selector, or visual-tree churn.
Consolidations remain open and unmerged: WebScene #76 at
8e435212df2ec20c339a37d1cb24a11ad4c4e055, AppScene #65 at0c018306458050a66a19d2c84abd3cf65a20832c, and vscode-demo #1. WebScene #662 and #681 portable V8 contracts passed. Focused #682 native document and Linux SDK runs35448768204and35448768281passed; #683 portable V8 contracts passed. The failed #683 current-main generated-ledger/property-count gates are repaired by #684/#685, and Linux CI job105914816775passed. Full-V8 Linux/Windows RID portability repairs are merged through #691-#697; current-main CI/NuGet runs35456365243and35456365245are retained; superseded PR, previous-main, and consolidation runs were cancellation-requested. AppScene #282 current-main companion run35454940645passed.Ordered next work: current-main CI/package triage, then the remaining bounded validation wrapping/localization policy and focused CSS and acceptance backlog, then physical Linux pixels, synchronization/device-loss/resize/soak/performance, VM/computer-use, and unchanged Code OSS Release qualification. Rich clipboard MIME, MULTIPLE/SAVE_TARGETS, and the recorded desktop-service/cross-platform backlog remain open.
Parent: #257
CSS epic: #235
Release epic: #227
Remaining implementation gap
Constraint validity, form aggregation, submission blocking, and
checkValidity()/reportValidity()APIs are merged through #603-#615. ThereportValidity()path still lacks the browser-facing interactive failure behavior: focus the first unhandled invalid control and show a bounded validation message anchored to that control.Scope
invalidin tree/form order and stop interactive presentation when the event is canceled.checkValidity(),novalidate,formnovalidate, barred controls, custom-element anchors, and submission behavior.Constraints
No Code OSS source changes or browser/CEF/Electron/WebView dependency. Keep this generic to WebScene and avoid structural invalidation ownership outside #257.
Deferred validation
Under the implementation-first directive, implementation may merge after diff checks. WPT/browser pixels, keyboard/accessibility, lifecycle, performance, memory, package, and cross-platform gates remain under #257/#235/#227.