Skip to content

Versão 5.3.0: decisor local Laya com automelhoramento + rodada de segurança - #13

Merged
Yiuky merged 2 commits into
mainfrom
feat/decisor-laya
Oct 4, 2026
Merged

Yiuky merged 2 commits into
mainfrom
feat/decisor-laya

Conversation

@Yiuky

@Yiuky Yiuky commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

O que muda

Primeira etapa do roteiro de detecção configurável e decisor que aprende (BACKLOG B-70 a B-79): um decisor local com o Laya (modelo de decisão local, Apache-2.0, roda na CPU) para o tipo de endereço, com treinamento e automelhoramento.

  • Segurança primeiro: o decisor nunca reduz proteção (só acrescenta tarja ou pede revisão). Desligado por padrão; modo shadow (só observa) até haver perfil aprovado; assist exige aprovação no portão.
  • Treinamento: Laya congelado + cabeça logística (método de Newton) sobre 9 respostas numa passada + limiares aprendidos.
  • Automelhoramento: correções do revisor viram exemplos (opt-in LEARNING_ENABLED=1), python -m utils.decisions train gera candidato que só vira ativo se passar no portão de qualidade (conjunto realista fictício fora do treino); perfis versionados, rollback, purge.
  • Privacidade: tudo local; texto minimizado (CPF mascarado, dígitos → 0); exemplos fora do git.
  • Rede corporativa: truststore resolve o download atrás de proxy com inspeção TLS (testado nesta rede).

Resultados reais (CPU, conjunto realista de 36 endereços fictícios fora do treino)

Laya sem treino Treinado
AUC 0,83 0,91
Precisão ao afirmar "residencial" — 0,92
NPV ao afirmar "não residencial" — 0,88
Incertos (vão para revisão) — 17%

Lição registrada em docs/decisions.md: um primeiro perfil avaliado só em dados gerados (AUC 0,95) errou em textos reais; o portão agora usa o conjunto realista.

Verificação

  • pytest --ignore=tests/ui: 392 passaram (22 novos, motor falso, sem Laya/rede); pytest tests/ui: ok
  • ruff, auditoria, check_versions.py: ok
  • Treino e decisões reais com o Laya executados nesta máquina

Segurança antes de publicar (versão 5.3.0)

  • B-41: ?token= só abre uma sessão aleatória e sai da URL; o token nunca vai para o cookie e é mascarado nos registros.
  • B-42: painel do gatekeeper exige API_TOKEN; kill_port_owner só encerra app_service.py órfão, sem shell.
  • B-52: saída do app herdada (pipe não lido travava o app).
  • Revisão independente (nada crítico/alto; 8 médios/baixos, todos corrigidos): Release com privilégio mínimo, /purge apaga decisions.json, exemplos apagados com a tarefa, .dockerignore, versões exatas e commit do modelo fixado no projeto, SHA-256 do modelo YOLO, CPF com separadores incomuns mascarado, resposta do LLM fora do log, Origem conferida pela porta.
  • Varredura do histórico inteiro: nenhum token, chave ou e-mail institucional; binários sem metadados sensíveis; pacote laya sem pickle/trust_remote_code, pesos em safetensors.
  • 416 testes + 85 de interface passando.

🤖 Generated with Claude Code

Yiuky and others added 2 commits October 4, 2026 10:46
…o da detecção configurável

- utils/decisions: perguntas, motor (Laya, carregamento preguiçoso, truststore),
  regra que nunca reduz proteção, modos sombra/assistido
- Treinamento: cabeça logística (Newton) sobre 9 respostas do Laya congelado,
  limiares aprendidos
- Automelhoramento: correções do revisor viram exemplos (opt-in), portão de
  qualidade com conjunto realista fictício, perfis versionados, rollback, purge
- CLI python -m utils.decisions {status,train,rollback,purge}; extra [laya]
- Treino real na CPU (conjunto realista): AUC 0,83 -> 0,91
- docs/decisions.md, configuração, AGENTS (I-10), BACKLOG (B-70..B-79), CHANGELOG
- 22 testes com motor falso (sem Laya, sem rede)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Joberth Firmino Gambati <joberth.gambati@gmail.com>
…cisor local

- B-41: ?token= só abre sessão aleatória (redireciona sem o token); token
  mascarado nos registros; utils/auth.py compartilhado
- B-42: painel do gatekeeper exige API_TOKEN; kill_port_owner só encerra
  app_service.py órfão, sem shell
- B-52: saída do app herdada (pipe não lido travava o app)
- Revisão independente: Release com privilégio mínimo; /purge apaga
  decisions.json; exemplos apagados com a tarefa; .dockerignore; versões
  exatas e commit do modelo fixado no projeto; SHA-256 do YOLO; CPF com
  separadores incomuns mascarado; resposta do LLM fora do log; Origem com porta
- Testes: 416 + 85 de interface

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Joberth Firmino Gambati <joberth.gambati@gmail.com>
@Yiuky Yiuky changed the title Decisor local Laya com treinamento e automelhoramento (B-70) Versão 5.3.0: decisor local Laya com automelhoramento + rodada de segurança Oct 4, 2026
@Yiuky
Yiuky merged commit bc7af7e into main Oct 4, 2026
5 checks passed
@Yiuky
Yiuky deleted the feat/decisor-laya branch October 4, 2026 15:16
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.

1 participant