test(focus-census): el guard de la política de foco deja de depender del formato; prettier ignora los dos artefactos generados que tocaba (F5 del cierre, parte 2)

Preparación del formateo de una sola vez, medida con el formateo ya aplicado en
el árbol:

- focus-census.test.ts comprobaba el cableado de la política con
  /policy:.*runtime\.focus/, que exige las dos cosas en la MISMA línea. Prettier
  parte `policy: this.provider.runtime.focus?.kind === 'trap' ? … : undefined`
  en dos líneas en seis providers (context-menu, dialog, drawer, dropdown-menu,
  float-panel, popover) y el guard se ponía rojo contra código correcto. Ahora
  /policy:[^,;]*?runtime\.focus/: cruza saltos de línea pero no sale del valor
  de la propiedad. Medido sobre los seis: la regex vieja casa en HEAD y no en
  el árbol formateado; la nueva casa en los dos. Visto fallar: quitando la
  propiedad `policy` de dialog-provider, «dialog: FocusScope without policy»;
  restaurado byte a byte.
- .prettierignore: docs/canon/vocabularies.md (lo genera docs:vocabularies y
  docs:check I7 lo compara byte a byte: formateado, el gate caía) y
  src/libs/emoji/data.ts (AUTO-GENERATED por generate:emoji-data). Se quedan
  como los escribe su generador. .claude/ con su propio comentario.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-background
dev 3 weeks ago
parent e31ac3ce35
commit 6d4aa05fbd

@ -14,7 +14,11 @@ src/uix/active-uix/generated/
docs/audit/theming/
apps/*/src/generated/
apps/*/static/
docs/canon/vocabularies.md
src/libs/emoji/data.ts
# Frozen demo tree (docs/process plan de cierre, F5): not formatted until it is rebuilt.
web/
# Tool configuration (includes the author's settings.local.json).
.claude/

@ -169,7 +169,9 @@ describe('focus census — declaration ↔ executor, both directions', () => {
if (EXECUTOR_EXCEPTIONS[m.kebab]) continue;
const src = somaSources(m.kebab);
const usesScope = src.includes('FocusScope.use');
const wiresPolicy = /policy:.*runtime\.focus/.test(src);
// The value may wrap (prettier breaks a long conditional after `policy:`),
// so the match spans lines but never leaves the property: no `,` or `;`.
const wiresPolicy = /policy:[^,;]*?runtime\.focus/.test(src);
// trap:false species may legitimately skip FocusScope entirely
// (nothing to trap); but if the scope IS used, the policy must ride.
if (m.trap && !usesScope) offenders.push(`${m.kebab}: trap:true without FocusScope`);

Loading…
Cancel
Save

Powered by TurnKey Linux.