teqo-backup/docs/changelog/2026-09-16-ops119plusplus.md
Francisco Solla 6641e7e993 chore(OPS119++): blast radius de scripts/ — risk map das libs + static scope (Closes #1077)
Fecha o resíduo da classe S6 da OPS119+ no resto de scripts/. F1: SCRIPTS_SPEC_PINNED (42 módulos scripts/** alcançáveis de specs unit+int) espalhado em HIGH_RISK_EXACT, sincronizado por invariante de igualdade que anda o grafo de imports dos specs (missing = lib nova pinada; stale = rename). F2: isCodePath cobre scripts/ (classifyStaticScope = code). Sem migration/access/Consent/UI. gate:fast verde.
2026-09-16 12:12:37 -03:00

1.8 KiB

OPS119++ — blast radius de scripts/: risk map das libs restantes + static scope (2026-09-16): fecha o resíduo da classe S6 que a OPS119+ (#1071) tinha tratado só para as libs de launch. F1: HIGH_RISK_EXACT (scripts/lib/test-affected-core.mjs) cobria só alguns dos scripts/lib/*.mjs unit-pinados — um diff que tocasse apenas uma lib como scripts/lib/worktree-env.mjs (pinada por tests/unit/worktree.unit.spec.ts e importada por scripts/lib/auto-unblock.mjs) classificava classifyTestScope como none e a suíte que a cobre nunca rodava. Novo grupo exportado SCRIPTS_SPEC_PINNED (42 caminhos scripts/** alcançáveis de specs unit+int, deduplicado no Set) espalhado em HIGH_RISK_EXACT, sincronizado por um invariante de igualdade em tests/unit/ciSkipInvariants.unit.spec.ts que recalcula o fechamento transitivo do grafo de imports dos specs (arestas relativas, inclusive via tests/helpers/src/): lib nova pinada falha como missing, rename/entrada morta falha como stale — o buraco não reabre em silêncio. F2: isCodePath passa a cobrir scripts/, então classifyStaticScope devolve code e typecheck/knip/cycles deixam de pular um diff só-scripts. classifyBuildScope/build_mode intocados. Pins de comportamento em tests/unit/testAffected.unit.spec.ts (classifyTestScope → full, classifyStaticScope → code, classifyBuildScope → none). Sem migration, sem access/Consent/UI/URL pública (Impeccable A). pnpm gate:fast verde (lint + typecheck + 3421 unit). Débitos diferidos da triagem /simplify (regex sem boundary; closure não cobre e2e; existência repo-wide) registrados no impl plan — nenhum vira Issue nova. Issue #1077. Impl plan: docs/plans/escala-dry-pos-scripts-blast-radius-impl.md.