diff --git a/internal/verify-5-capabilities.mjs b/internal/verify-5-capabilities.mjs new file mode 100644 index 000000000..2cb230cc2 --- /dev/null +++ b/internal/verify-5-capabilities.mjs @@ -0,0 +1,82 @@ +#!/usr/bin/env node +/** + * verify-5-capabilities.mjs — prove ALL FIVE capability levels actually render. + * + * ★ WHY: the card BUILD-DXMAPS-ALL-5-CAPS-WORKING-LOW-BUG was marked done with NO end-to-end check. + * "Done is a passing test, not a field value" — this is that test. First run (2026-09-20) came back + * 3/5: caps 1-3 clean, caps 4-5 failing on ONE shared bug (vue-i18n code 27), which is exactly the + * kind of thing a field value hides and a sweep surfaces. + * + * ★ THE MODEL, grounded not remembered: capability = 5 - PROFILE_TIER, where PROFILE_TIER lives in + * internal/plugin-gallery/discover.mjs: + * nested-mfe-spa 0 · nested-elements-mfe 1 · monolithic 2 · parameterized 3 · single 4 + * One representative bundle per level. If a bundle's declared type changes, update REPS here. + * + * ★ TWO MEASUREMENT TRAPS THIS ENCODES (both cost real debugging time): + * - SHADOW DOM DOES NOT PIERCE. A cap-4/cap-5 composite mounts CHILD elements with their OWN shadow + * roots, so a single-level querySelector reports a working canvas as absent. Hence the recursive + * deep() walk, and hence "a canvas that HOLDS a GL context" rather than "a canvas exists". + * - shadowRoot.textContent INCLUDES the injected