Skip to content

feat(core): durable tool decisions and multimodal sends - #1828

Merged
EmersonBraun merged 12 commits into
mainfrom
EmersonBraun/ch-e-core-decide
Oct 7, 2026
Merged

EmersonBraun merged 12 commits into
mainfrom
EmersonBraun/ch-e-core-decide

Conversation

@EmersonBraun

Copy link
Copy Markdown
Member

Trilha 04, etapa 3 (RF-17–24), compatível na 1.x.

  • ToolDecisionStore (putPending/get/claim CAS/settle) e controller.decide() reidratável entre requests e após restart; replay sem reexecução.
  • send aceita ContentPart[] mantendo send(text); wrapper Svelte atualizado.
  • approve/deny preservados e depreciados; erros AK_ACTION_NOT_FOUND, AK_ACTION_ALREADY_DECIDED.
  • ADR 0042 (0041 é do PR de adapters feat(adapters): free OpenAI-compatible transport and image/file parts #1826); changesets.

Evidência local: 546 testes do core, 100 rodadas × 100 decides concorrentes = 1 execução, restart real ESM/CJS, pre-push equivalente (52 quality gates, lint 60, build 44), size-limit ok. Relatório: docs/ch-e-core-decide.md.

Draft: sem release até autorização. Integração HTTP/Postgres no agentskit-chat (#198, #199).

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Lighthouse

URL Performance Accessibility Best practices SEO
http://127.0.0.1:3000/ 60 100 96 100
http://127.0.0.1:3000/docs 81 100 96 100
http://127.0.0.1:3000/docs/get-started/getting-started/quickstart 84 100 96 100
http://127.0.0.1:3000/stack 94 100 96 100
http://127.0.0.1:3000/showcase 94 100 96 100

Run by .github/workflows/lighthouse.yml.

@EmersonBraun

Copy link
Copy Markdown
Member Author

Investigação PR-CI: os advisories atuais do audit atingem versões já presentes no lockfile da main 0e1c1aa92e69f29f41241e49753ecab8ae279119: source-map-js 1.2.1, seroval 1.5.4, shell-quote 1.10.0. O último CI equivalente da main passou antes destes advisories; não existe run de Dependency Review na main, pois esse workflow é exclusivo de PRs. Portanto a classificação como herdado vem da comparação do lockfile, e não de um suposto audit reprovado na main.

A correção de segurança será um commit separado com overrides de versões corrigidas e lockfile atualizado, sem alterar severidades, allowlists, budgets ou gates. A main não será modificada por esta tarefa.

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Lighthouse

URL Performance Accessibility Best practices SEO
http://127.0.0.1:3000/ 58 100 96 100
http://127.0.0.1:3000/docs 78 100 96 100
http://127.0.0.1:3000/docs/get-started/getting-started/quickstart 82 100 96 100
http://127.0.0.1:3000/stack 90 100 96 100
http://127.0.0.1:3000/showcase 95 100 96 100

Run by .github/workflows/lighthouse.yml.

@EmersonBraun

Copy link
Copy Markdown
Member Author

A rodada 37557730980 passou audit e revelou uma falha adicional causada pelo branch: o teste documentation-contracts exige todos os ErrorCodes no guia de erros, mas faltavam AK_ACTION_NOT_FOUND e AK_ACTION_ALREADY_DECIDED (novos neste branch, já presentes na referência core). O commit separado 3254e130 documenta as duas entradas e regenera o índice.

A suite documental real passou 56 testes/12 arquivos e o Doc Bridge completo passou localmente; o pre-push normal está sendo integralmente executado antes de publicar e observar o novo CI. Nenhum teste, gate ou budget foi relaxado.

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Lighthouse

URL Performance Accessibility Best practices SEO
http://127.0.0.1:3000/ 66 100 96 100
http://127.0.0.1:3000/docs 78 100 96 100
http://127.0.0.1:3000/docs/get-started/getting-started/quickstart 82 100 96 100
http://127.0.0.1:3000/stack 94 100 96 100
http://127.0.0.1:3000/showcase 95 100 96 100

Run by .github/workflows/lighthouse.yml.

@EmersonBraun

Copy link
Copy Markdown
Member Author

CI final verde em 3254e130cf18361b6acfd294ea03b93c077a8a59: CI, audit e todos os demais checks ativos passaram; agregador CodeQL NEUTRAL. O PR continua em rascunho.

As dependências vulneráveis herdadas da main foram corrigidas no commit separado 09836c56: seroval 1.6.8, source-map-js 1.2.2 e shell-quote 1.11.0, sem mudar a waiver existente. O check Test, Build revelou depois uma falha documental do branch; 3254e130 acrescenta os dois novos códigos de decisão ao guia de erros e atualiza índices. A suite documental local passou 56/56 testes, e a suite completa passou no CI final.

Os dois pushes executaram o pre-push normal integral (quality/lint/build), sem bypass; commits publicados não foram reescritos. Nenhum gate, budget ou allowlist foi relaxado, e não houve main write, merge ou release.

@EmersonBraun
EmersonBraun marked this pull request as ready for review October 7, 2026 13:12
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Lighthouse

URL Performance Accessibility Best practices SEO
http://127.0.0.1:3000/ 84 100 96 100
http://127.0.0.1:3000/docs 82 100 96 100
http://127.0.0.1:3000/docs/get-started/getting-started/quickstart 83 100 96 100
http://127.0.0.1:3000/stack 94 100 96 100
http://127.0.0.1:3000/showcase 90 100 96 100

Run by .github/workflows/lighthouse.yml.

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Lighthouse

URL Performance Accessibility Best practices SEO
http://127.0.0.1:3000/ 61 100 96 100
http://127.0.0.1:3000/docs 80 100 96 100
http://127.0.0.1:3000/docs/get-started/getting-started/quickstart 82 100 96 100
http://127.0.0.1:3000/stack 94 100 96 100
http://127.0.0.1:3000/showcase 94 100 96 100

Run by .github/workflows/lighthouse.yml.

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Lighthouse

URL Performance Accessibility Best practices SEO
http://127.0.0.1:3000/ 53 100 96 100
http://127.0.0.1:3000/docs 83 100 96 100
http://127.0.0.1:3000/docs/get-started/getting-started/quickstart 80 100 96 100
http://127.0.0.1:3000/stack 95 100 96 100
http://127.0.0.1:3000/showcase 94 100 96 100

Run by .github/workflows/lighthouse.yml.

@EmersonBraun
EmersonBraun merged commit 8bf15b0 into main Oct 7, 2026
32 of 34 checks passed
@EmersonBraun
EmersonBraun deleted the EmersonBraun/ch-e-core-decide branch October 7, 2026 20:55
@EmersonBraun

Copy link
Copy Markdown
Member Author

Merge feito com --admin (contornando apenas a exigência de aprovação de outra conta), por decisão do responsável, após:

  • 4 rodadas de revisão independente: a primeira encontrou o bug de histórico apagado em decide(); as seguintes confirmaram as correções (ab14016, cf6cb1c, 3b7b90c), cada uma com testes de regressão que falham no código anterior. Veredito final: READY.
  • CI: os 6 checks obrigatórios verdes; Example apps E2E verde (2ª tentativa, a 1ª travou na instalação do Chromium no runner). Lychee falha só no link para o ADR 0042 na main, que passa a existir com este merge.

Pendências não bloqueantes apontadas na revisão final (follow-up):

  1. resume() acrescenta o resultado da tool e o novo turno do assistente no fim da conversa, não logo após a call aprovada; com outra call ainda aguardando confirmação, provedores estritos podem rejeitar esse formato. Sugestão: em decide, persistir sem retomar o modelo, a menos que a call alvo esteja na última mensagem do assistente e nada mais aguarde confirmação.
  2. Com decisionStore, approve/deny antes do fim do stream (ou duplo clique) agora lançam AK_ACTION_NOT_FOUND / AK_ACTION_ALREADY_DECIDED em vez de não fazer nada. Registrar as calls pendentes na chegada, ou documentar no changeset.
  3. Uma decisão que acaba recusada ainda interrompe o stream em andamento (stop() em prepare roda antes da re-checagem).

🤖 Generated with Claude Code

EmersonBraun added a commit that referenced this pull request Oct 8, 2026
…1828) (#1833)

* fix(core): preserve ordered durable tool decisions

* docs(core): clarify streamed decision recovery

* fix(core): persist results for earlier decided turns

* chore(docs): refresh durable decision index

* fix(core): keep tool continuation within import budget

* chore(docs): index lazy tool continuation

* fix(core): recover tool decisions across later turns and restart

* fix(core): flatten restart recovery conditionals

* fix(core): trim target confirmation checks within size budget

* docs(core): clarify decision replay and target confirmation scope
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