Pular para o conteúdo

v0.2.1 — Compliance Spine + MCP-First

Data: 2026-06-08 Commit: 147009f Tag: v0.2.1 Branch: feature/mcp-first-pivot (pushed)

  • Surface pivot MCP-firstADR-002 substitui admin Next.js standalone por MCP server + MCP Apps + Open WebUI sidecar. Cancelou ~3-4 semanas de Next.js admin work; mesma cobertura operacional virou ~12 MCP Apps inline no chat.
  • 146 tests green em 11 workspaces (pnpm -r test clean).
  • Compliance Spine landed@canna/api Fastify thin + @canna/read-models Drizzle projections + @canna/crypto envelope encryption + @canna/sngpc mock XML + @canna/worker BullMQ scaffold.
  • MCP server + 3 Apps prontosapps/mcp (@modelcontextprotocol/sdk + ext-apps) + packages/ui-apps com MemberQuotaCardApp, TraceabilityTimelineApp, DispensationFormApp.
  • Open WebUI smoke validated 2026-06-08 — sub-agent G rodou stack docker-compose end-to-end. Bundles renderizam, postMessage contract OK, OWUI registration via DB confirmado. Verdict: PARTIAL PASS (seed script Lane I em flight). Detalhe em ADR-002 § Smoke Validation.
WorkspaceTipoFunção
@canna/apiappFastify thin endpoints — proxy commands para @canna/app-services
@canna/read-modelspackageDrizzle projections (member-quota, inventory-summary, dispensation-history, member-list, inventory-lot)
@canna/cryptopackagePer-member envelope encryption (DEK random + Site KEK). LGPD Art. 11
@canna/sngpcpackageXML schema + submit mock (real submission em v0.2.1 worker)
@canna/workerappBullMQ jobs (SNGPC async, PDF render, email)
@canna/ui-appspackage3 MCP Apps (member-quota-card, traceability-timeline, dispensation-form) — single-file HTML bundles
apps/mcpappMCP server TypeScript (@modelcontextprotocol/sdk + ext-apps) — stdio transport
ops/openwebui/opsdocker-compose OWUI v0.9.6 + Postgres 16 + Redis 7 + Caddyfile example + Kamal deploy notes

Domain Kernel intacto desde v0.2.0b (ADR-001 spike gate passed). Surface pivot consolidado em ADR-002.

Operação rotineira de dispensação cabe muito bem em fluxo conversacional. MCP Apps spec final (jan 2026) torna o caminho viável. Open WebUI v0.9.6+ tem suporte MCP nativo + OAuth 2.1 — chat UI gratuita. Time pequeno, cada hora gasta em Next.js admin é hora não gasta em MCP tools. Para v0.2.1 até v1.0 o canna-br não terá admin Next.js standalone — toda interação humana acontece via MCP server + MCP Apps inline + REST apps/api (Nível-4 critical commands com TOTP).

pnpm -r test em 2026-06-08, 146 specs green.

WorkspaceTests
@canna/domain (membership + inventory + dispensation)50
@canna/event-store (in-memory + postgres testcontainers)13
@canna/app-services6
@canna/crypto18
@canna/read-models7
@canna/sngpc10
@canna/shared16
@canna/ui-apps (registry + build-output)6
@canna/api8
@canna/mcp8
@canna/worker3
@canna/docsbuild-only
Total146 (1 test multiplicado por describe.each)

Sub-agent G smoke 2026-06-08 — OWUI v0.9.6 + Postgres 16 + Redis 7 docker-compose stack. Cold start 44s, 3 GB RAM steady. 9 screenshots em ops/openwebui/smoke/:

  1. 01-landing.png — OWUI sign-in
  2. 02-logged-in.png — admin account
  3. 02-mcp-servers.png — MCP servers list (empty initial)
  4. 03-admin-integrations.png — Settings → Integrações
  5. 04-tool-servers-empty.png — Tool Servers page (confirma seed pendente)
  6. 05-member-quota-empty.pngMemberQuotaCardApp antes do payload
  7. 06-member-quota-rendered.pngMemberQuotaCardApp com payload aplicado
  8. 07-dispensation-form.pngDispensationFormApp inputs
  9. 08-traceability-timeline.pngTraceabilityTimelineApp phases ordenadas

Detalhe técnico (postMessage contract, payload shapes, GOTCHA do mcp_config.json, verdict) em ADR-002 § Smoke Validation.

  • Admin Next.js standalone — descartado. Estava no roadmap original v0.2.1 como interface canônica. Movido para Ideas Park no roadmap. Caso surja associação que não consegue operar via chat, avaliar PWA fallback naquele momento — não pré-construir.
  • Toda interação humana com o sistema agora acontece via Open WebUI chat + MCP Apps inline. REST apps/api continua exposto mas só para Nível-4 critical commands (crypto deletion, role change, recall, SNGPC produção) com TOTP.

Nenhuma. Sem deploy de produção anterior, sem schema migration, sem upgrade path. Pré-piloto.

  • v0.2.1.x — Kamal deploy (Lane H) — canna-br.fonsecagabriel.com.br Coolify+Traefik. Reusa pattern Mukutu Coolify deploy. OWUI sidecar + canna-mcp stdio + Postgres + Redis. TLS via Traefik wildcard *.fonsecagabriel.com.br.
  • v0.2.1.x — OWUI tool-server seed script (Lane I) — ops/openwebui/scripts/seed-tool-servers.ts idempotente. Lê mcp_config.json template, faz POST /api/v1/configs/tool_servers com bearer admin. Roda no kamal post-deploy hook.
  • apps/mcp HTTP transport para SSE clients — atualmente só stdio. SSE permite hosts remotos (Claude.ai web, ChatGPT) consumirem o MCP server sem subprocess local. Deferred — stdio cobre Open WebUI sidecar (caminho v0.2.1 piloto).
  • MCP Tools L1/L2/L3 completos — 6 read + 3 draft + 3 write-with-approval. Cobertura mínima para core loop “dispensador pergunta → agente abre form → confirma → 3 eventos atômicos → RT aprova PendingAction”. Em progresso pós-piloto.