Problem
The exact Linux full-V8 runtime package gate exposed two problems in webscene_css_effect_values_tests:
- several ID selectors in the fixture had lower specificity than the existing
#effects > span rule, so the original compound-filter failure was a stale test expectation;
- a real cascade defect remained: CSSOM writes for textual properties whose native property mask is zero (including
filter, clip-path, masks, and related retained effects) were stored in CSSStyleDeclaration, but a later recascade cleared their computed textual values and did not replay the inline declaration.
This made element.style.filter = 'blur(4px)' report authored state while the retained scene continued to use the stylesheet brightness(0.5). It also required correct author !important precedence over normal inline declarations.
Fix scope
- replay cold inline declarations after stylesheet declarations during a one-node recascade;
- preserve author
!important precedence and restore the inline value when the important stylesheet is removed;
- route both generic and named CSSOM setters for cold properties through the normal one-node cascade;
- return the final cascaded retained-effect value from computed style;
- correct fixture specificity and current mask metadata expectations;
- retain the 4,096-node/100-cycle performance, scene-order, localized-damage, and memory gates.
Acceptance
- inline
filter updates computed style and retained blur damage immediately;
- author
!important overrides normal inline filter, and removing the rule restores the inline value;
- compound effect values retain authored function order;
- the focused full-V8 executable passes with 4,096 nodes, 100 selector cycles, localized 22x16 blur damage, and zero retained heap growth;
- no subtree recascade or mutation-lived winner cache is introduced.
Implementation
Implemented on fix/css-compound-filter-id-848 in commit 9ebf6dbc.
Problem
The exact Linux full-V8 runtime package gate exposed two problems in
webscene_css_effect_values_tests:#effects > spanrule, so the original compound-filter failure was a stale test expectation;filter,clip-path, masks, and related retained effects) were stored inCSSStyleDeclaration, but a later recascade cleared their computed textual values and did not replay the inline declaration.This made
element.style.filter = 'blur(4px)'report authored state while the retained scene continued to use the stylesheetbrightness(0.5). It also required correct author!importantprecedence over normal inline declarations.Fix scope
!importantprecedence and restore the inline value when the important stylesheet is removed;Acceptance
filterupdates computed style and retained blur damage immediately;!importantoverrides normal inlinefilter, and removing the rule restores the inline value;Implementation
Implemented on
fix/css-compound-filter-id-848in commit9ebf6dbc.