Skip to content

refactor(console): corte final — remove todo o mock do bundle + guard anti-regressão (limpeza de mocks 5.7) - #112

Merged
danzeroum merged 1 commit into
masterfrom
claude/criptotrade-onboarding-06pd5p
Jul 20, 2026
Merged

refactor(console): corte final — remove todo o mock do bundle + guard anti-regressão (limpeza de mocks 5.7)#112
danzeroum merged 1 commit into
masterfrom
claude/criptotrade-onboarding-06pd5p

Conversation

@danzeroum

Copy link
Copy Markdown
Owner

Limpeza de mocks — Fatia 5.7 (corte final do core + guard) 🏁

Última fatia do programa. Remove o último encanamento de mock do CORE, deleta o data.js (fonte do mock global) e planta um guard anti-regressão. A partir daqui nenhum branch de mock é alcançável no bundle de produção — o mock vive só em e2e/fixtures. Diff 100% em docs/design/pages/; net −577 linhas.

Fato estrutural

data.js definia window.CT (mock); todos os stores reais (CT_API, CT_PAIR, CT_DESK_VIEW, CT_GROUPS, CT_PREFS, CT_AUTH) vivem em apiClient.js. Então o data.js foi deletado inteiro (diretriz "deletar, não desidratar").

Core de-mockado

  • app.jsx: useState(CT.alerts/pendingOrders)[]/0; branch mock do auto-open de onboarding + o ternário onboardingWins do desk-landing removidos. O caminho real é determinístico por guardas assimétricas: as duas ordens de resolução dos fetches terminam em #onboarding quando o guia está incompleto (a Mesa relê o hash e cede; o auto-open sobrescreve). Sem MOCK_ONBOARDING.
  • shell.jsx: const mock + fallbacks ?? CT.symbol removidos.
  • screen_overview / screen_desk: branches mock vivos + o gerador _mockDesk() removidos.
  • components.jsx: braços mock de loadPairs/loadPairsRich removidos.
  • apiClient.js: branch mock do CT_AUTH.load + MOCK_MATRIX + seed MOCK_PREFS + comentários stale removidos. Auth sempre via fromMe(GET /v1/auth/me).

Hook de teste do boundary

MOCK_THROW_SCREENwindow.__E2E_THROW_SCREEN (sem prefixo MOCK_/CT. → escapa o guard). É fault-injection síncrona (o error-boundary precisa de throw em render; fixture não substitui), inerte na produção, injetada só via addInitScript do e2e — mesmo estatuto dos mocks de e2e.

Guard anti-regressão (build.mjs → roda local antes do push E no CI console-build)

Varre os fontes de produção (e2e/ fica fora de readdir(here)) e falha se achar USE_MOCK_DATA | MOCK_[A-Z_]+ | CT.<campo> | data.js, apontando a diretriz. Já validado: pegou 4 comentários stale (reescritos) antes de passar.

Fixture (e2e/fixtures/)

+deskSummaryN(n) (hint de 14 pares); +opções operados (single-pair do console) e desk (contagem de linhas); desk summary agora stateful (o PATCH de par sincroniza a linha da Mesa → o N9 resume reflete no reload).

Specs migrados a fixture PURO (últimos 6 no flag)

console · desk · system (boundary usa __E2E_THROW_SCREEN) · onboarding (T1/T2/T4 sem flag — redirect 100% do caminho real) · pairs_path. Nenhum window.USE_MOCK_DATA/MOCK_* runtime resta em spec algum.

Aceite final da faixa

  • Build sem nenhum branch de mock alcançável (guard ativo, mock-guard OK: 27 fontes).
  • Suíte completa 75 verdes só com o fixture (--retries=1).
  • node build.mjs OK.

Encerra o programa de limpeza de mocks

5.1 prototype → 5.2 substrate+auth → 5.3/5.3b (Risco/Obs/Config/Mercado/Diário/Backtest) → 5.4 (HITL/Ordens/Users) → 5.5 (Notif/Conexões) → 5.6a/5.6b (Conta/Segurança/Auditoria/Onboarding/Agentes) → 5.7 (core + delete data.js + guard).

🤖 Generated with Claude Code


Generated by Claude Code

… (limpeza 5.7)

Última fatia do programa de limpeza de mocks (strangler). Remove o último encanamento
de mock do CORE, deleta o data.js (fonte do mock global) e planta um guard
anti-regressão. A partir daqui NENHUM branch de mock é alcançável no bundle de
produção — o mock vive só em e2e/fixtures. Diff 100% em docs/design/pages/.

Fato estrutural: data.js definia SÓ window.CT (mock); todos os stores reais (CT_API,
CT_PAIR, CT_DESK_VIEW, CT_GROUPS, CT_PREFS, CT_AUTH) vivem em apiClient.js. Então o
data.js foi DELETADO inteiro (diretriz "deletar, não desidratar").

Core de-mockado (leftovers das fatias anteriores):
- app.jsx: useState(CT.alerts/pendingOrders) → []/0; branch mock do auto-open de
  onboarding e o ternário onboardingWins do desk-landing removidos. O caminho real
  é DETERMINÍSTICO por guardas assimétricas: as duas ordens de resolução dos fetches
  terminam em #onboarding quando o guia está incompleto (a Mesa relê o hash e cede;
  o auto-open sobrescreve). Sem MOCK_ONBOARDING.
- shell.jsx: const mock + fallbacks ?? CT.symbol removidos (price = ticker.last ?? 65200).
- screen_overview / screen_desk: branches mock vivos + o gerador _mockDesk() removidos.
- components.jsx: braços mock de loadPairs/loadPairsRich removidos.
- apiClient.js: branch mock do CT_AUTH.load + MOCK_MATRIX + seed MOCK_PREFS +
  comentários stale removidos. Auth agora SEMPRE via fromMe(GET /v1/auth/me).

Hook de teste do boundary: MOCK_THROW_SCREEN → window.__E2E_THROW_SCREEN (sem prefixo
MOCK_/CT. → escapa o guard). É fault-injection síncrona (o error-boundary precisa de
throw em render; fixture não substitui), inerte na produção, injetada só via
addInitScript do e2e — mesmo estatuto dos mocks de e2e.

Guard anti-regressão (build.mjs → roda local antes do push E no CI console-build):
varre os fontes de produção (e2e/ fica fora de readdir(here)) e falha se achar
USE_MOCK_DATA | MOCK_[A-Z_]+ | CT.<campo> | data.js, apontando a diretriz. Já
validado: pegou 4 comentários stale (reescritos) antes de passar.

Fixture (e2e/fixtures/): +deskSummaryN(n) (hint de 14 pares); +opções operados
(single-pair do console) e desk (contagem de linhas); desk summary agora STATEFUL
(o PATCH de par sincroniza a linha da Mesa → N9 resume reflete no reload).

Specs migrados a fixture PURO (últimos 6 no flag): console, desk, system (boundary
usa __E2E_THROW_SCREEN), onboarding (T1/T2/T4 sem flag — redirect 100% do caminho
real), pairs_path. Nenhum window.USE_MOCK_DATA/MOCK_* runtime resta em spec algum.

Aceite final da faixa: build sem nenhum branch de mock alcançável (guard ativo);
suíte completa 75 verdes só com o fixture (retries=1); node build.mjs OK.

Encerra o programa de limpeza de mocks: 5.1 prototype → 5.2 substrate+auth → 5.3/5.3b
Risco/Obs/Config/Mercado/Diário/Backtest → 5.4 HITL/Ordens/Users → 5.5 Notif/Conexões
→ 5.6a/5.6b Conta/Segurança/Auditoria/Onboarding/Agentes → 5.7 core+data.js+guard.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UZ3vLNTHKekjQVtjFVRi5D
@danzeroum
danzeroum merged commit 87b07a8 into master Jul 20, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants