Skip to content

Develop - #18

Merged
elson-vinicius-lopes merged 32 commits into
masterfrom
develop
Sep 11, 2026
Merged

elson-vinicius-lopes merged 32 commits into
masterfrom
develop

Conversation

@elson-vinicius-lopes

Copy link
Copy Markdown
Collaborator

No description provided.

elson-vinicius-lopes and others added 30 commits August 29, 2026 10:58
Consolida em docs/ o pedido, harness, dados, desenho (@cy-architect),
implementação (@qa-cypress) e resultado real (bloqueio de infra) do
cenário e2e FIAT sysmiddle+tcl-xsl vs. Pollux. Registra em
.claude/agent-memory/cy-pm/ a criação do GitHub Project
LayoutParserCypress — Backlog (#4) e o rascunho de itens de backlog
pendente de confirmação do dono.
…ress

Formaliza no Project #4 os 4 itens de backlog previamente rascunhados
(harness de agentes, cenário e2e FIAT sysmiddle/tcl-xsl, bloqueio de
infra e pendência do fluxo via UI).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ
Cria ci-dev.yml (gate dos mapeadores em PR/push contra master), merge-gate.yml
(sinalizacao de status em PR, sem enforcement tecnico) e prod-gate.yml (gate manual
contra producao, workflow_dispatch). Documenta em agent-authority.md que este repo
e publico (diferente dos irmaos privados) e por isso branch protection nativa e
tecnicamente possivel aqui, embora ainda nao configurada por decisao do usuario.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ
…rs, rede WSL)

Atualiza doc persistente e memória do cy-pm com o que mudou nesta rodada: workflows de
CI criados por @Cy-DevOps, Environments development/production, branch protection nativa
ativada em master, e as duas pendências reais rastreadas (issues #7 e #8).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ
…tType FIAT)

Usuário confirmou que os bloqueios da rodada 2026-08-29 não são infra momentânea:
execute-lowcode exige OAuth sem mecanismo de auth de serviço (#9), e
generate-for-layout não suporta layoutType do FIAT (#10). Comentário em #5 e doc
atualizados para refletir isso.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ
Adiciona o sistema de agentes deste repo espelhando LayoutParserApi/LayoutParserReact
(cy-architect, cy-ai-flow, cy-devops, cy-doc, cy-pm; qa-cypress atualizado), rules,
commands e hook. Implementa o cenario e2e do gate FIAT com dois caminhos de geracao
de NF-e (Sysmiddle via execute-lowcode e TCL/XSL via generate-for-layout+execute),
ambos validados contra o Pollux. Adiciona workflows de CI/CD (ci-dev, merge-gate,
prod-gate) e documentacao persistente do que foi desenhado, implementado e das
pendencias reais de execucao (auth M2M e layoutType do FIAT na LayoutParserApi,
issues #218/#219/#221 la; #3-#10 aqui).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ
Regra do repo: master so recebe merge vindo de develop (feature -> develop ->
master). Workflow falha o check se o head do PR contra master for diferente de
"develop", ficando como status check obrigatorio na protecao de branch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ
#11)

* docs: registra cenário e2e FIAT (sysmiddle+tcl-xsl) e cria board do repo

Consolida em docs/ o pedido, harness, dados, desenho (@cy-architect),
implementação (@qa-cypress) e resultado real (bloqueio de infra) do
cenário e2e FIAT sysmiddle+tcl-xsl vs. Pollux. Registra em
.claude/agent-memory/cy-pm/ a criação do GitHub Project
LayoutParserCypress — Backlog (#4) e o rascunho de itens de backlog
pendente de confirmação do dono.

* docs(memory): registrar issues #3-#6 criadas no board LayoutParserCypress

Formaliza no Project #4 os 4 itens de backlog previamente rascunhados
(harness de agentes, cenário e2e FIAT sysmiddle/tcl-xsl, bloqueio de
infra e pendência do fluxo via UI).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ

* ci: adiciona workflows de CI/CD e Environments dev/prod

Cria ci-dev.yml (gate dos mapeadores em PR/push contra master), merge-gate.yml
(sinalizacao de status em PR, sem enforcement tecnico) e prod-gate.yml (gate manual
contra producao, workflow_dispatch). Documenta em agent-authority.md que este repo
e publico (diferente dos irmaos privados) e por isso branch protection nativa e
tecnicamente possivel aqui, embora ainda nao configurada por decisao do usuario.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ

* docs: registrar branch protection real e novas pendências (secrets/vars, rede WSL)

Atualiza doc persistente e memória do cy-pm com o que mudou nesta rodada: workflows de
CI criados por @Cy-DevOps, Environments development/production, branch protection nativa
ativada em master, e as duas pendências reais rastreadas (issues #7 e #8).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ

* docs: registrar causas reais dos bloqueios de execução (OAuth e layoutType FIAT)

Usuário confirmou que os bloqueios da rodada 2026-08-29 não são infra momentânea:
execute-lowcode exige OAuth sem mecanismo de auth de serviço (#9), e
generate-for-layout não suporta layoutType do FIAT (#10). Comentário em #5 e doc
atualizados para refletir isso.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ

* feat: harness de agentes, cenario e2e FIAT (sysmiddle+tcl-xsl) e CI/CD

Adiciona o sistema de agentes deste repo espelhando LayoutParserApi/LayoutParserReact
(cy-architect, cy-ai-flow, cy-devops, cy-doc, cy-pm; qa-cypress atualizado), rules,
commands e hook. Implementa o cenario e2e do gate FIAT com dois caminhos de geracao
de NF-e (Sysmiddle via execute-lowcode e TCL/XSL via generate-for-layout+execute),
ambos validados contra o Pollux. Adiciona workflows de CI/CD (ci-dev, merge-gate,
prod-gate) e documentacao persistente do que foi desenhado, implementado e das
pendencias reais de execucao (auth M2M e layoutType do FIAT na LayoutParserApi,
issues #218/#219/#221 la; #3-#10 aqui).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ

* ci: bloqueia PR para master que nao venha de develop

Regra do repo: master so recebe merge vindo de develop (feature -> develop ->
master). Workflow falha o check se o head do PR contra master for diferente de
"develop", ficando como status check obrigatorio na protecao de branch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oQoPAHAN6QrMp9nj4hqVQ

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…izado)

Time da API reportou fix M2M em produção; reteste local (172.19.176.1:5100)
ainda retorna 401 sem WWW-Authenticate, mas a instância está Unhealthy
(SQL Server indisponível) — não é o servidor corrigido. Decisão de qual
URL usar para revalidar devolvida ao dono via comentário na issue #13.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
Reteste de execute-lowcode em 172.19.176.1:5100 (local) e
layoutparser.duckdns.org (produção/dev real) revela dois sintomas de 401
distintos: sem body no ambiente local (sintoma original de #13) e com
"Autenticação obrigatória" no duckdns, afetando inclusive endpoint sem
[Authorize] — sugerindo causa raiz diferente. Comentário em #13, issue #15
aberta e linkada, prompt formal para o time da LayoutParserApi salvo em
docs/comunicacao-layoutparserapi-2026-09-10.md, e doc persistente
e2e-fiat-sysmiddle-tcl-xsl.md atualizado (seção 13).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…wcode

Endpoint POST /api/TransformationExecution/execute-lowcode passou a exigir
Bearer token ([Authorize]) na LayoutParserApi. Adiciona módulo Node puro
(cypress/support/lib/m2m-token.js) que obtém e cacheia o token via cy.task,
garantindo que client secret nunca trafegue para o contexto do browser onde
a spec roda. cypress.env.json.example documenta as novas variáveis
(m2mTenantId/m2mTokenUrl/m2mClientId/m2mClientSecret/m2mScope) sem valores
reais. Bloqueado no ambiente de dev atual por 401 do [Authorize] (mesma
causa raiz da issue #13 documentada em docs/e2e-fiat-sysmiddle-tcl-xsl.md
§11) — reconfirmado rodando a suíte antes deste commit.

Também adiciona .claude/temp/ ao .gitignore (scratch de sessão, não doc
persistente).
…issue #6)

@cy-architect fechou o contrato real de execute-candidates (multi-candidato
sysmiddle+tcl-xsl, fallback assíncrono de IA via ticket) lendo o
LayoutParserReact. @qa-cypress implementou a spec correspondente e rodou de
verdade contra o ambiente de dev: 401 no [Authorize], mesmo bloqueio da
issue #13, agora confirmado também em execute-candidates (não só
execute-lowcode). A spec em si NÃO é commitada neste ponto — regra do
projeto é só commitar spec novo quando os it() passarem de verdade; fica
registrado aqui pra retomar quando o bloqueio de auth for resolvido no
servidor de dev.
…auth e docs UI-candidates

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…e divergência de PR/branch

Time da API classificou duckdns como ambiente incorreto por design (BFF) e a instancia local
como desatualizada (scheme M2M nao ativo). Registrada ressalva: checkout irmao do
LayoutParserApi nao confirma as PRs #360/#361 citadas (branch e log divergentes) -
checklist de reteste segue pendente ate esclarecer isso.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…ranch M2M

Reteste do #13/#15 recebeu resposta citando PRs #360/#361 mergeadas em
master, mas o checkout local (único disponível) está em
feat/xml-layout-sample-generator-356, sem PR #361 no log e PR #360 sem
relação óbvia com M2M. Formaliza pedido de esclarecimento (branch/PR
correta ou sincronização sem perder trabalho em andamento) antes de
reexecutar o checklist técnico. Comentado em #13; nota curta no doc
principal do cenário FIAT.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…o passo (clone limpo)

Time LayoutParserApi corrigiu a numeração citada antes (#360/#361 eram de outro
assunto). Números corretos: bb458fa/PR #305 (scheme M2M) e 39d9cbd/PR #316
(Authority/Audience). Divergência anterior era só checkout local desatualizado
(feat/xml-layout-sample-generator-356), não problema real. Registrado em #13,
docs/e2e-fiat-sysmiddle-tcl-xsl.md e docs/comunicacao-layoutparserapi-2026-09-10.md
o próximo passo pendente: checklist técnico em clone limpo separado, ainda não
executado (depende de decisão do usuário). Também commitados os arquivos de
memória do cy-pm pendentes de rodada anterior (board_setup, issues_index,
m2m_auth_saga).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…ntra)

Checklist técnico pedido pelo time LayoutParserApi foi executado de verdade em
clone limpo de master: config M2M confirmada carregada corretamente, mas
execute-lowcode continua 401 por IDX10205 (issuer sts.windows.net vs
login.microsoftonline.com/.../v2.0). Comentado em #13 com pergunta sobre qual
das duas correções (manifesto Entra vs ValidIssuers no Program.cs) o time
prefere aplicar.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
… de issuer v1/v2

Issue #15 fechada com o veredito confirmado do time LayoutParserApi: duckdns.org passa por
BFF que rejeita audience da API antes de repassar. Adiciona prompt formal com as duas
correções possíveis do mismatch de issuer da issue #13 (manifesto Entra vs Program.cs).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
Time LayoutParserApi decidiu aplicar accessTokenAcceptedVersion=2 no
Manifest do App Registration via Portal Azure (opção a), sem PR/deploy.
Bloqueio confirmado: sem Azure CLI e sem acesso admin Entra nesta sessão -
próximo passo prático depende do usuário aplicar no Portal Azure e avisar
para reteste no clone LayoutParserApi-reteste.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…ueio audience)

Issuer v1/v2 (IDX10205) resolvido após accessTokenAcceptedVersion=2 no manifest;
execute-lowcode agora falha com IDX10214 (audience GUID vs URI). Comentado em #13,
doc seção 19, memória atualizada.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…issuer

Adendo no doc de comunicacao com o time LayoutParserApi cobrindo o novo
bloqueio IDX10214 (SecurityTokenInvalidAudienceException) apos a correcao
do issuer v1/v2 ter funcionado. Apresenta as duas opcoes de correcao
(mudar Audience para GUID puro vs aceitar ambos os formatos via
ValidAudiences) sem decidir qual aplicar, e linka a partir da secao 19 do
doc e2e-fiat-sysmiddle-tcl-xsl.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…ar sucesso

Reteste com token M2M novo contra o fix de audience (GUID puro) do time da API confirma
que 401/IDX10205/IDX10214 foram resolvidos por completo. Bloqueio restante no caminho
sysmiddle passa a ser so ambiental (runner low-code nao publicado no host de teste), e o
proximo bloqueio real do gate padrao FIAT vira a issue #14.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…t de dev

Reteste no clone limpo LayoutParserApi-reteste confirmou auth M2M 100%
funcional (issue #13 permanece fechada), mas revelou o próximo bloqueio
real do gate padrão FIAT: LowCode:RunnerPath aponta para um caminho de
produção/IIS que não existe localmente. Issue já existente no
LayoutParserApi (#373) cobre a causa raiz do lado de produção/CI; não
abrimos issue nova. Prompt formal pergunta (sem tomar partido) sobre
fonte+build do runner, path configurável para dev, ou binário
pré-buildado.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
Registra novo capítulo pós-saga M2M: bloqueio ambiental (LowCode:RunnerPath) no
caminho sysmiddle, já coberto por issue existente no LayoutParserApi (#373).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
Reteste do fix do mapper (commit 9259b0e) não pôde ser validado no clone
local de reteste — a busca por termo exato falha antes do código corrigido
por falta de Database__Password. Não é regressão, é lacuna de setup local.
Prompt formal enviado ao time pedindo credencial read-only ou reteste feito
por eles; comentado na issue #14 (segue aberta).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…o de log4net no LowCodeRunner

Adendo em docs/comunicacao-layoutparserapi-2026-09-10.md e nota na seção 22 de
docs/e2e-fiat-sysmiddle-tcl-xsl.md: time da API recusou compartilhar Database__Password
(recomenda rodar contra produção ou usar DB_PASSWORD_DEV do CI deste repo) e novo bloqueio
de mismatch de versão do log4net entre .exe.config e o DLL commitado em
tools/LowCodeRunner/Functions/, reportado sem tomar partido em LayoutParserApi#391.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…arserApi

Time da API perguntou contra qual instância o gate E2E roda, após 504 relatado
pelo LayoutParserReact em execute-candidates. Confirmamos que usamos sempre o
clone LayoutParserApi-reteste, batendo com a hipótese do bug log4net (#391,
fix PR #392, já promovido para master via #393). Próximo passo: git pull no
clone e reteste real, registrado sem execução nesta sessão.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
…uda para rejeição fiscal Pollux

Reteste pos-fix log4net (LayoutParserApi#391) confirma auth M2M + runner Sysmiddle
funcionando de ponta a ponta pela primeira vez (sem 401, sem crash, XML gerado e
submetido ao Pollux). Bloqueio remanescente é fiscal (Pollux rejeitou o XML), nao
mais de infraestrutura - registrado como fronteira separada em docs/ e na memoria
da saga M2M, que fica encerrada.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
master carregava 40d2904 (merge duplicado do conteúdo do PR #11/#12) que develop não
tinha; develop seguiu ~30 commits à frente por outro caminho de merge a partir do mesmo
commit-base. Resolvidos os 7 arquivos com conflito de merge preferindo develop (mais
avançado) em todos os casos, exceto onde o outro lado já estava vazio (add puro).
Nenhum arquivo de CI/branch-protection teve conflito. Documentado em
docs/e2e-fiat-sysmiddle-tcl-xsl.md §23.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWmaRHYhrdyNmC3fUHgRvX
@elson-vinicius-lopes
elson-vinicius-lopes merged commit cfbd461 into master Sep 11, 2026
1 of 3 checks passed

This branch had an error being deployed

1 failed deployment
development dc9ff1e7 Deployed Sep 11, 2026 by elson-vinicius-lopes via Gate dos mapeadores (sinalização de PR) #2
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