- 11 projetos
.Infrastructurecriados (Arah.Modules.{Feed,Marketplace,Events,Map,Chat,Subscriptions,Moderation,Notifications,Alerts,Assets,Connections}.Infrastructure): EF Core/Npgsql e repositórios Postgres saíram dos csproj principais dos módulos Arah.Applicationnão depende mais de EF Core (transitivamente):packages.lock.jsonsemEntityFrameworkCore; a camada Application referencia apenas Domain + Application.Interfaces de cada móduloArah.Apireferencia os 11 projetos.Infrastructurepara composição (DI de*Module/ DbContexts)Arah.Application.csproj: referência duplicada aArah.Domainremovida; ItemGroups consolidados- Build
Arah.slnRelease verde (0 erros)
Changelog - Arah
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
O formato é baseado em Keep a Changelog, e este projeto adere ao Semantic Versioning.
[Unreleased]
- Diretório órfão removido:
backend/Arah.Tests/(duplicava arquivos debackend/Tests/Arah.Tests/e não estava em nenhuma solution) - Solution morta removida:
Araponga.slnna raiz (apontava para projetosAraponga.*inexistentes; a solution ativa éArah.sln) - Testes duplicados removidos:
MarketplaceServiceTests.cseMarketplaceSearchServiceEdgeCasesTests.csdebackend/Tests/Arah.Tests/Application/— as versões canônicas vivem embackend/Tests/Arah.Tests.Modules.Marketplace/Application/ - Entidade e interface órfãs removidas (duplicatas pré-modularização):
Arah.Domain.Marketplace.StoreRatingResponseeArah.Application.Interfaces.IStoreRatingResponseRepository— o código ativo (RatingService, repositórios InMemory/Postgres, DI) usa as versões deArah.Modules.Marketplace.Domain/Arah.Modules.Marketplace.Application.Interfaces - DRY na wiki: páginas
app/page.tsx,app/docs/[slug]/page.tsx,app/docs/[...slug]/page.tsxeapp/docs/[slug]/content-sections.tsxdeixam de duplicargetDocContent/getYamlContent/processMarkdownLinks/getTextContentlocais e passam a reutilizarlib/document.ts(processMarkdownContent,getYamlContent) elib/markdown.ts.processMarkdownContentfoi estendido com verificaçãostat-antes-de-read(null silencioso para arquivos ausentes) e processamento opcional de blocos Mermaid (processMermaid); novo helpergetYamlContentcentraliza a leitura de YAML - Build
Arah.slnverde; testes da wiki (jest) etype-checkverdes
- DRY: helpers de leitura YAML duplicados entre
export-agent-graph.ps1evalidate-agent-graph.ps1extraídos parascripts/agents/yaml-lite.ps1(fonte única, ambos dot-source) - Falsos positivos de órfã:
agent-activate,agent-metrics,domain-consulteparallel-attemptdeclaramactivation:(orchestrator/workflow/cli); o validador deixa de marcá-las como órfãs (acionadas fora da coreografia de paths) - Dogfooding:
craft-review-check.ps1passa a reconhecer.ps1/.psm1/.mjs/.cjs/.pycomo código — antes ignorava a própria linguagem do tooling do Ará - Lacuna de testes fechada:
scripts/agents/tests/agent-graph.tests.ps1(PS puro, sem Pester) cobreyaml-lite,choreography-parsere a detecção docraft-review;craft-review-check.ps1agora é dot-sourceável (execução principal guardada) - Agent graph regenerado e validado (
-Strict: 0 erro, 0 aviso)
- MCP
globToRegex(bug real pego por teste novo):*→[^/]*corrompia o.*inserido por**, entãobackend/**não casava subpaths; corrigido com sentinelas (runtime PS já estava correto via[regex]::Escape) - MCP ignora regras de evento:
matchRulesForPathpulawhen: pull_request(ex.:pr-always), não reporta maisqa/pr-stewardpara paths locais arbitrários - CodeQL (mjs):
globToRegexpassa a escapar\no conjunto de metacaracteres .mmdpuro:Build-Mermaidnão embrulha mais em cercas```mermaid; arquivo renderiza no Mermaid Live/como.mmd- Validador — integridade referencial sempre roda (não só quando não há erros); catálogo de skills pelo campo
id:do manifest (não pelo filename) choreography-parser: regras sempathsdeixam de sumir silenciosamente — entram na lista e o check "regra sem paths" do validador as flagracraft-review-check:git fetchsegue$BaseRef(nãoorigin/mainfixo), evitando diff vazio que mascararia o aviso de "mudança sem teste"- CI
agents-validate.yml:persist-credentials: falsenos checkouts; paths depushincluemCODEOWNERS/agents-validate.yml/agents.yml; novo job roda os testes PS + Node - Docs: link
arah-craft/SKILL.mdcorrigido (../../../para a raiz do repo) - Testes novos:
scripts/agents/tests/mcp.test.mjs(Node) e MCP tornado importável (loop stdio só em execução direta)
- Nova skill
craft-review(.skills/craft-review.skill.yaml): disciplina Clean Code/Clean Architecture/SOLID/TDD em três fases (projetar, desenvolver, testar), complementandoarchitecture-review(fronteiras/ADR) ecode-review(checklist de PR) - Script
scripts/agents/craft-review-check.ps1(soft): imprime o checklist por fase e avisa sobre mudança de código sem teste;-Strictpromove a gate duro; wired eminvoke-skill.ps1 - Skill de descoberta do Cursor
.cursor/skills/arah-craft/para o agente interativo carregar sob demanda ao projetar/codar/testar - Fiação nos agentes:
craft-reviewadicionada asolutions-architect,backend,flutter,webeqa - Coreografia: novas rules
craft-backend/craft-flutter/craft-web(invocamcraft-reviewno desenvolvimento;solutions-architectco-ativado no backend);pr-alwayspassa a invocarcraft-reviewnoqa;core-control-plane/architecture-docsincluemcraft-reviewnosolutions-architect choreograph-agents.ps1:skill_invocationsagora é sempre registrado (plano auditável), independente de-ExecuteAutonomy(que passa a controlar só a execução)- Agent graph regenerado (25 skills, 18 rules);
AGENTS.mdedocs/ops/AGENT_OPERATION.mdatualizados
- DOD-05 —
PaymentService: transição de pagamentoCreated → AwaitingPayment → Paid; após confirmar, delega o ledger aSellerPayoutService.ProcessPaidCheckoutAsync IPaymentGateway+MockPaymentGateway: abstração de cobrança (PIX/Stripe) espelhando o padrão deIPayoutGateway- Endpoints:
POST /api/v1/transactions/{id}/pay,POST /api/v1/transactions/{id}/confirm-payment; webhook mockPOST /api/v1/webhooks/checkout/mock-approved(dev/testes) - Domínio:
Checkout.MarkAsAwaitingPayment()eCheckout.MarkAsPaid()com guardas de transição; AC-55-8 na spec FASE55 - DOD-06 — estorno no ledger:
SellerPayoutService.ReversePaidCheckoutAsyncpersisteFinancialTransactiontipoRefund(append-only), cancelaSellerTransactionpendente e reverteSellerBalance/PlatformFinancialBalance;RefundServicedelega ao ledger antes de marcarRefunded - DOD-07 — FeeSplitRule Postgres:
FeeSplitRuleRecord,PostgresFeeSplitRuleRepository, migrationAddFeeSplitRules; branch Postgres passa a usar persistência real - Testes:
PaymentServiceTests(unit),RefundLedgerIntegrationTests(pay → confirm → refund → ledger) e casos HTTP emTransactionsControllerTests - Hardening (revisão de bots #431): confirmação valida que o pagamento pertence ao checkout (
PaymentStatusResult.CheckoutId);InitiatePaymentAsyncfaz commit da transiçãoAwaitingPayment(persistência no Postgres); confirmação de checkout já pago reprocessa o ledger de forma idempotente (auto-recuperação); estorno marcaRefundedno mesmo commit da reversão do ledger (atomicidade/idempotência) e persiste statusCompleteddas transações de estorno antes doAddAsync;MockPaymentGatewaysingleton e thread-safe (estado sobrevive entre requisições);IPaymentGatewaymock só fora de produção (UnavailablePaymentGatewayem produção);PostgresFeeSplitRuleRepositorycomparaRevenueTypecase-insensitive
- DSG-03: tokens forest/surface/dark-text em
frontend/shared/styles/design-tokens.css; devportal deriva--bg,--text,--accentetc. dos tokens compartilhados;semantic-colors.cssecolor-depth-system.cssreescritos sem hex e importados emdevportal.css - DSG-05: portal landing — skip link (
skip-to-content), landmarkmain,aria-labelna navegação e links externos,role="banner"no header, alt descritivo na imagem da hero docs/design/AUDITORIA_DESIGN.mdatualizado (DSG-03/05 ✅)
.cursorrulesv2.0: de ~60 KB always-apply para núcleo de ~4 KB (princípios, guardrails, ponteiros) — redução de ~95% do contexto fixo injetado em cada requisição do Cursor- Regras escopadas por glob em
.cursor/rules/:backend-standards.mdc(backend/**),frontend-design.mdc(frontend/**),docs-organization.mdc(docs/**,*.md) — só entram no contexto quando arquivos correspondentes são tocados - Hook
stoppassivo (.cursor/hooks/domain-review.ps1): continua gerando os pareceres em.cursor/domain-review.md, mas não injeta maisfollowup_message— elimina o turno extra de modelo (rodada completa de API) a cada interação; CI (agents.yml) permanece a instância autoritativa publicando pareceres no PR domain-agents-autonomy.mdc: dealwaysApply: truepara escopobackend/**,frontend/**; instrui leitura do parecer por arquivo (comunicação passiva)- Novas skills Cursor (descoberta sob demanda):
arah-open-prearah-domain-consultem.cursor/skills/ AGENTS.mdv2.0: enxugado de ~15 KB para ~5 KB; tabelas de SDD, coreografia e skills movidas paradocs/ops/AGENT_OPERATION.md(PR 14)- Lição LIC-004 em
docs/LICOES_APRENDIDAS.md— contexto fixo e comunicação ativa entre agentes inflam consumo de API
scripts/harness/stop-arah-local-processes.ps1: encerraArah.Bff/Arah.Apiórfãos antes dedotnet buildno harness — evita falsoMSB3027(exe locked) que cascateava em falhas de testerun-harness.ps1: invoca o script automaticamente antes de comandosdotnet build
- Harness: filtros
dotnet testcom|nas specs FASE56/58/61 agora entre aspas simples — o PowerShell interpretava o|como pipe e quebrava o comando - Harness (spec-before-code): specs
draftvalidam estrutura mas pulamscripts/commands— fases sem implementação (FASE56–61) não falham mais o CI com "no test matches filter",flutter testausente ou health check de instância não provisionada validate-specs.ps1: regex do blocoacceptancesem modo singleline — o capture não vaza mais paraharness:/guardrails:, evitando falsocovered_by/evidenceno último AC- Coreografia: regra
community-connectionscobre os paths de frontend do manifest (features/{chat,connections,notifications});design-ux.agent.yamlsincronizado comfrontend/**/tailwind.config.ts - Docs: Estatísticas de
LICOES_APRENDIDAS.mdatualizadas (LIC-002/003);specs/README.mdgeneraliza o runner de cobertura por stack;AGENT_QUICKSTART.mdinclui suítesArah.Tests.Modules.*; checklist backend menciona caminhomanual/evidence agent-metrics.ps1: regravado com BOM UTF-8 (PS 5.1 renderizava acentos como mojibake)
docs/ops/AGENT_STRATEGY_VALIDATION.md— benchmark da malha de agentes contra práticas de mercado 2026 (GitHub Spec Kit, AWS Kiro/EARS, padrão AGENTS.md/AAIF, multi-agente com permissão mínima e merge humano): estratégia conforme em todos os pilares; gaps e recomendações priorizadas (P0: specs FASE56–61 antes de código, gatecovered_by; P1: EARS nos acceptance, passo clarify; P2: métricas de efetividade, worktrees paralelos)docs/ops/AGENT_QUICKSTART.md— guia de operação por agentes para novos devs: fluxo dia a dia, CLI, DoD resumido, como estender a malha (novo agente/skill/fase), guardrails- 4 novos agentes de domínio (fechando cobertura dos módulos do backend):
feed-conteudo(Feed/Events/Media),mapa-lugares(Map/Assets/Geo),comunidade-conexoes(Chat/Connections/Notifications/Alerts),identidade-privacidade(Users/Auth/Policies/LGPD — co-ativa agentesecurity) - Coreografia v2 (
.agents/choreography.yaml): regrasfeed-content,map-places,community-connections,identity-privacy; regrafederation-handoffagora cobre código de federação em runtime (FederationController,Arah.Core/Application/Federation*) - Referências quebradas corrigidas: criado specialist
postgresql(citado porbackend.agent.yaml);docs-stewardsemCHANGELOG.mdde raiz;agent-operation.spec.yamlsem contagem hardcoded de agentes/skills - Integridade referencial de manifests (LIC-003):
validate-manifests.ps1agora falha seconsult.domain,consult.specialistsouskillsde um agente referenciarem manifests/skills inexistentes — referência fantasma quebra o CI - Specs FASE56–61 autoradas (spec-before-code, P0 da validação):
FASE56-transparency,FASE57-cockpit,FASE58-multi-instance,FASE59-federation,FASE60-implementer-app,FASE61-territorial-capitalemdocs/specs/phases/— acceptance em EARS,status: draft;PHASE_QUEUE.yamlcomspec_idnas fases 54–61 - Gate DOD-09 implementado:
validate-specs.ps1falha ACstatus: coveredsemcovered_byestatus: manualsemevidence(retrofit: AC-55-7 comcovered_by, AC-52-5 corrigido paramanual); retrospectiva DoD atualizada - Template de spec em EARS:
_template.spec.yamldocumentawhen/then+status/covered_by/evidence; passo clarify obrigatório nos checklists despec-stewardebackend - Novas skills de operação:
agent-metrics(scripts/agents/agent-metrics.ps1— PRs, tempo→ready-for-merge, apontamentos de bot/PR, pareceres de domínio) eparallel-attempt(scripts/agents/parallel-attempt.ps1— best-of-N em git worktrees isolados) - Catálogos atualizados:
.agents/README.mdcompleto (12 operacionais + 11 domínio + 6 especialistas),AGENTS.md(tabelas consultivos/coreografia/referências),.cursor/rules/domain-agents-autonomy.mdc(mapeamento),docs/ops/PLATFORM_STATE.md(29 agentes + 22 skills) docs/specs/README.md— lista todas as specs (inclui platform/harness) e sinaliza pendência spec-before-code de FASE56–61; pastadocs/specs/features/criada
- Novo agente de domínio
design-ux(.agents/domain/design-ux.agent.yaml): especialista consultivo que garante identidade high-premium, acessibilidade (WCAG AA), mobile-first e uso de tokens (nunca cor hardcoded), em web e Flutter - Coreografia (
.agents/choreography.yaml): regradesign-uxaciona o agente automaticamente ao tocar emfrontend/**, tokens compartilhados,docs/design/**edocs/**/design*— parecer local (hookstop) e no PR (workflowagents.yml/Agents Orchestrate; o gate roda emagents-gates.ymlviarun-gates.ps1) - Catálogo atualizado:
AGENTS.md(consultivos + tabela de coreografia),.cursor/rules/domain-agents-autonomy.mdc(mapeamento),docs/ops/PLATFORM_STATE.md(24 agentes) - Auditoria
docs/design/AUDITORIA_DESIGN.md— 8 gaps mapeados (DSG-01..08) com evidência, severidade e ordem de correção - Corrigido DSG-01 (wiki): 5 cores arbitrárias
bg-[#...]no Mermaid fullscreen → classes configuradasbg-accent/bg-link(frontend/wiki/app/mermaid/fullscreen/page.tsx) - Corrigido DSG-01b (wiki): 22 hex nos
themeVariablesdo Mermaid (2 componentes) → adapterlib/mermaid-theme.tsderivando o tema dos design tokens (descoberto pelo próprio gate DSG-08) - Corrigido DSG-02 (Flutter):
Color(0xFF228B22)/Colors.orangefora do tema no onboarding →AppDesignTokens.territoryBoundary/locationPin(propose_territory_sheet.dart,onboarding_screen.dart) - Gate DSG-08:
scripts/agents/design-gate-check.ps1integrado aorun-gates.ps1(QA) — falha o PR se arquivo de frontend alterado tiver cor hardcoded (Tailwind[#...], hex inline, CSS fora de--token:,Color(0x...)/Colors.*fora do tema) - Backlog
docs/_meta/PHASE_QUEUE.yaml— entradadesign-quality(P1) para DSG-03..07 (devportal→tokens, espaçamento 8px, a11y landing, unificar glass, contraste syntax) - Lição
docs/LICOES_APRENDIDAS.mdLIC-002 — regressão de cores exige agente + gate de design, não só diretriz
docs/backlog-api/RETROSPECTIVA_DOD_GAPS.md— auditoria das entregas anteriores à nova Definition of Done, com 10 itens acionáveis (DOD-01..10) priorizados- DOD-01:
scripts/harness/validate-specs.ps1passa a aceitar rootstatus: completed(antes rejeitava FASE52/53 concluídas) - DOD-02:
FASE53-arah-core.spec.yaml— 10 ACs anotados comcovered_by(unit + integração Core/Federation já existentes) - DOD-03:
FASE54-iac.spec.yaml— ACs de script comstatus: manual+evidence;AC-54-4comcovered_by - DOD-04:
FASE52-cicd.spec.yaml— ACs de workflow comstatus: manual+evidence - Fila
docs/_meta/PHASE_QUEUE.yaml— entradadod-retrofit(P1) para os itens abertos (DOD-05..10: PaymentService, unificação de ledger, Postgres, backfill de spec por risco, gatecovered_by, evidência CI) spec-validateverde (6 specs)
- Estorno (AC-55-6):
POST /api/v1/transactions/{id}/refund— reverte fee e split proporcionalmente; idempotente (sóPaid→Refunded, segundo estorno retorna 409).RefundService+CheckoutStatus.Refunded - Payout consolidado (AC-55-5):
GET /api/v1/territories/{id}/payouts/consolidated?from=&to=— agrega o split das transações pagas (exclui estornadas e fora do período) por destinatário.PayoutConsolidationService(read-model sobre checkouts) - DRY: matemática de split extraída para
FeeSplitCalculator(fonte única, banker's rounding + reconciliação);TransactionQuoteServicee os novos serviços passam a usá-la - Testes:
TransactionsControllerTests(+4 refund: reverte, idempotente, não-pago 400, inexistente 404),TerritoryPayoutsControllerTests(+3: consolida/exclui refunded+fora do período, vazio,from>to400) - Spec
FASE55-monetization— AC-55-5/6covered; harness roda filtroTerritoryPayoutsController - 22/22 testes FASE55 verdes
- Dívida sinalizada: nenhum código de produção leva
CheckoutaPaid(semPaymentService/webhook); payout/refund unificar futuramente comSellerPayoutService/ledgerFinancialTransaction(ver backlog retrospectiva DoD)
TransactionsControllerTests— integração HTTP dePOST /transactions/{id}/quote(AC-55-2) eGET .../receipt(AC-55-3): 200 com split, 404 inexistente, 400 quando não pago, reconciliação soma==taxaFeeSplitRuleTests— imutabilidade/versionamento (AC-55-4): soma 100%, supersede uma via só, não ativa antes da vigênciaTransactionQuoteServiceTests— banker's rounding + reconciliação (sem centavo perdido)- Spec
FASE55-monetizationanotada comcovered_bypor AC; harness roda filtrosTransactionsControllereFeeSplitRule - 15/15 testes FASE55 verdes (
dotnet test --filter TransactionsController|FeeSplitRule|TransactionQuote)
- Autonomia local: hook
stop(.cursor/hooks.json→.cursor/hooks/domain-review.ps1) aciona os agentes de domínio a cada interação, sem gatilho manual, gerando pareceres em.cursor/domain-review.md - Autonomia no CI:
agents.ymlpublica os pareceres de domínio como comentários (post-domain-consult.ps1 -PostComment) em todo PRopened/synchronize scripts/agents/domain-autoreview.ps1— resolve coreografia sobre ogit diff, gera pareceres e evidência (idempotente por conjunto de mudanças).cursor/rules/domain-agents-autonomy.mdc— rulealwaysApplycom DoD + consulta de domínio obrigatóriadocs/governance/DEFINITION_OF_DONE.md— DoD formal (rigor total): AC↔teste, evidência, parecer de domínio endereçado- Pareceres de domínio enriquecidos (checklists acionáveis) em
monetizacao-split,carteira-arata,mercado-economia - Cobertura de paths corrigida em
choreography.yaml(Financial, Application/Services/Marketplace, Items) - Fix: matcher de glob (
Test-PathMatchesGlob) agora trata**em qualquer posição; parser de block scalar (enrich:/validate:) corrigido ((?ms)→(?m))
docs/ops/PILOT_STAGING_CONFIG_TODO.md— checklist config manual (secrets, Stripe, board)docs/ops/CI_CD_PIPELINE.md— passo FASE54 no deploy stagingdocs/API.md— Core, transações, planos comerciaisdocs/backlog-api/README.md,STATUS_FASES.md— status 52–55 atualizadodocs/ops/PLATFORM_STATE.md— prioridade S0 atual
Adicionado — FASE55 monetização v0 (2026-06-30)
FeeSplitRuleversionada + seed por territórioPOST /api/v1/transactions/{id}/quoteeGET .../receiptGET /api/v1/territories/{id}/plans(planos comerciais)- Gate comercial:
CommercialStoreGateServicebloqueia pagamentos semMarketplaceAdvanced
PilotAdminBootstrapHostedService— SystemAdmin em Postgres staging (Pilot__BootstrapAdminEnabled)- Scripts:
verify-pilot-instance.ps1,get-pilot-admin-token.ps1,backup-pilot-db.ps1,verify-stripe-sandbox.ps1 - Deploy staging CI — passo FASE54 pós-health (registro Core + heartbeat + JWT)
- HTTPS opcional — Caddy profile em
infrastructure/pilot/
- FASE53 ✅ — token de instância,
POST /core/releases,ICoreAvailabilityCache close-completed-phases.ps1/github-project close-phases— fecha issues completed em ordem- FASE54 iniciada —
infrastructure/pilot/, specFASE54-iac, scriptregister-core-instance.ps1 Test-PhaseCompleteFromMeta— meta YAML como fonte de conclusão
- Registro de instância com par RSA (
RegisterCoreInstanceResponse+PublicKeyPem) - Diretório global:
POST/GET /api/v1/core/directory/territories - Federação base:
POST/GET /api/v1/federation/identity - Testes Core: 13 passando (unit + integração)
- FASE52 marcada completa em
PHASE_ROADMAP_META.yaml
sync-status— mapeia colunas Status (Backlog/Ready/In Progress/Done) no Project #3dedupe-backlog— fecha issuesepic/phaseduplicadas (REST)Remove-OrphanProjectDrafts— remove drafts quando issue canônica existe no boardexport-phase-status— 49 fases, REST paginado, summary + issue links.github/phase-status.generated.json— snapshot atualizado (16 done, 33 com issue aberta)- Workflow
project-board-sync— concurrency, export + commit do snapshot no dispatch
- Causa raiz:
GITHUB_TOKENnão acessa Projects v2; bootstrap falhava silenciosamente - GraphQL
Ensure-ProjectV2Bootstrap+ secretGH_PROJECT_TOKEN(PAT classicproject+repo) - Workflow dedicado
project-bootstrap.yml(workflow_dispatch) phase-statuscomo artifact CI; repo guarda sóproject_number/project_urlactions/add-to-projectem novas issues comepic/phase
github-project bootstrap— pipeline completo (Project v2, views, board, phase-status)GitHub-ProjectApi.ps1,sync-project,reconcile; workflowproject-board-sync.yml.github/phase-status.generated.json— snapshot operacional das fases 52–61PHASE_QUEUE.yaml—frente,spec_id, deps federação (FASE58→infra, FASE59→Core+58)- Coreografia: regras
infra-deployefederation-handoff
.github/labels.yml,.github/milestones.yml,.github/project/arah-sustentacao.yml- Templates
phase-epic.yml,config.yml(issue chooser) - Scripts:
sync-github-labels,sync-github-milestones,backlog-to-issue,github-project,export-phase-status - Workflow
github-sync.yml; docs/ops/GITHUB_PROJECT_MANAGEMENT.md next-phasecria Issues[Epic]com labels wave/priority + milestone
.agents/choreography.yaml— regras de co-ativação (Core, specs, marketplace, governance, monetization, PR sempre qa+pr-steward)choreograph-agents.ps1,post-domain-consult.ps1;run-agent-activationintegrado- Skills
likec4-export,domain-consult; export LikeC4 + tokens design system docs/architecture/likec4/— modelo C4; CLIarah-agents choreograph- Domain agents com
scope.pathse parecer consultivo automático em PR
- Agente
solutions-architect(Uncle Bob, LikeC4, consultivo) - Skill
register-adr+scripts/agents/register-adr.ps1 - ADRs individuais:
docs/architecture/adrs/+ADR-REGISTRY.yaml - ADR-020: Arah Core como control plane separado (FASE53)
- Gate
architecture-review-check.ps1emrun-gates - Label
area/architecture; co-roteamento automático em PRs estruturais
- Co-roteamento orquestrador (
area/spec,co_routepara specs/Core) - Domain
control-plane, specialistcore-control-plane - Skills
spec-author,harness-run; gatespec-gate-check.ps1 - Checklist dedicado
spec-steward; agentes backend/qa/pr-steward/release/planner evoluídos
docs/specs/— specs YAML com critérios de aceite (FASE52, FASE53, operabilidade, agentes)docs/_meta/SDD_AND_HARNESS.md,docs/ops/PLATFORM_STATE.md- Scripts
scripts/harness/validate-specs.ps1,run-harness.ps1 - Workflow
.github/workflows/spec-harness.yml - Agente
spec-steward+ skillspec-validate - CLI:
arah-agents harness,spec-validate
Adicionado — FASE53 Arah Core (início) (2026-07-01)
- Projeto
backend/Arah.Core— entidades control plane (Instance, Release, HealthCheckReport) - Endpoints
api/v1/core/instances, heartbeat, releases - Testes unitários em
Arah.Tests.Core
Adicionado — Operação por agentes (2026-06-30)
AGENTS.md,.agents/,.skills/,CODEOWNERS, templates e scripts emscripts/agents/- docs/ops/AGENT_OPERATION.md, docs/_meta/DOC_TAXONOMY.md
- Workflow
.github/workflows/agents-validate.yml - Handoff HTML: Operacao por Agentes
- Pacote Arquitetura C4 Arah em
docs/handoff/arquitetura-c4/(7 documentos HTML interativos) - Realinhamento Sustentação Operacional
- Fases 52–61: CI/CD, Core, IaC, monetização open-core, transparência, cockpit, operação, federação, capital
- Onda S (Sustentação) no roadmap — precede economia local (F17–19) até go-live piloto
-
FASE15 reposicionada como base para billing comercial (FASE55)
-
Economia local (F17–19) rebaixada de P0 para P1 até território-piloto no ar
-
Roadmap v3.2 e backlog README atualizados
-
Reorganização federal da documentação (estrutura por domínios, unificação de duplicados, archive de PRs).
-
Changelog unificado (conteúdo de 40_CHANGELOG incorporado).
- ✅ Documentação de Arquitetura C4 publicada no DevPortal (
/architecture/) e referenciada no Wiki (docs/14_C4_ARCHITECTURE.md). - ✅ Governança/Votações no app: nova jornada
governanceno BFF (proxy paraapi/v1/territories/{id}/votings) e tela de votações (listar com filtro de status, votar inline, ver resultados, criar votação). - ✅ Criação de eventos no app: formulário com início/término (date/time pickers) e local, via jornada
events/create-event. - ✅ Deep-links no mapa: toque no pin abre detalhes e navega para evento/asset/alerta/feed (tratamento de toque no nível do mapa).
- ✅ Login com Google na UI: botão "Entrar com Google" no fluxo de login (requer
GOOGLE_SIGN_IN_CLIENT_ID+ config Firebase para E2E). - ✅ Perfil — ações funcionais: "Meu território" abre o seletor de território, "Notificações" leva à aba de notificações, e atalho "Governança" no menu de configurações (antes eram no-op).
- ✅ Busca de territórios: campo de busca no seletor (Explorar e folha "Meu território") usando a jornada
territories/search— encontrar território por nome/cidade sem depender de geolocalização. - ✅ Busca de território no onboarding: novo usuário pode buscar, selecionar e concluir o onboarding sem conceder localização (antes a conclusão dependia de geolocalização).
- ✅ Detalhe de post: tocar num card do feed abre a tela "Publicação" com conteúdo completo, todas as mídias, autor/data, contadores e ações (curtir/comentar/compartilhar/excluir).
- ✅ GET de post único (
feed/post-detail): novo endpoint na API + jornada BFF que retorna um post no formato de item do feed; o deep-link de pinpostno mapa agora abre o detalhe direto (rota/post), com modo fetch na tela quando o post não está no feed carregado. - ✅ Documentação sincronizada:
README.md,docs/STABLE_RELEASE_APP_ONBOARDING.md,docs/FEATURE_MATRIX_API_BFF_APP.md.
- ✅ Fase 12 declarada 100% encerrada. Todas as funcionalidades críticas entregues; melhorias contínuas (cobertura >90%, P95 < 200ms) fora do escopo de fechamento.
- ✅ FASE12.md, FASE12_RESULTADOS.md: status 100%, tabelas atualizadas, conclusão e próximos passos do projeto (Fase 13+).
- ✅ README.md, MAPA_FASES.md, 02_ROADMAP.md, backlog-api/README.md: Fase 12 100% (encerrada); MVP Essencial 100% completo.
- ✅ UserProfileStatsServiceTests (7 testes):
GetStatsAsynccom repositórios null/parciais, agregação de posts/eventos/participações/memberships, exclusão de Visitor sem verificação. - ✅ TerritoryMediaConfigServiceEdgeCasesTests (6 testes):
GetConfigAsync(cria default, retorna existente),UpdateConfigAsync(mismatch território → exceção, válido → salva),GetEffectiveContentLimitsAsync/GetEffectiveChatLimitsAsync. - ✅ FASE12_RESULTADOS.md: atualizado com ações realizadas e referência à branch e aos novos testes.
- ✅ FASE12.md: status atualizado para ~98%; "Resumo da Fase 10" e "Critérios da Fase 10" corrigidos para Fase 12; tabelas de implementação alinhadas.
- ✅ FASE12_RESULTADOS.md: documento completo com métricas finais, referências, links para FASE12/README/MAPA_FASES/02_ROADMAP e implementação (compression, testes Analytics, FeatureFlag, MediaStorageConfig, UserPreferences).
- ✅ README.md, MAPA_FASES.md, 02_ROADMAP.md, backlog-api/README.md: Fase 12 atualizada para ~98%; inclusão de Response Compression (gzip/brotli) na descrição.
Adicionado - Fase 14: Governança Comunitária e Sistema de Votação (2025-01-21)
-
✅ Sistema de Interesses do Usuário
- Usuários podem definir interesses (tags/categorias)
- Máximo 10 interesses por usuário
- Interesses aparecem no perfil
- Endpoints:
GET/POST/DELETE /api/v1/users/me/interests
-
✅ Sistema de Votação Comunitária
- Votações para decisões coletivas (5 tipos: ThemePrioritization, ModerationRule, TerritoryCharacterization, FeatureFlag, CommunityPolicy)
- Controle de visibilidade (AllMembers, ResidentsOnly, CuratorsOnly)
- Aplicação automática de resultados
- Endpoints completos: criar, listar, votar, fechar, obter resultados
-
✅ Moderação Dinâmica Comunitária
- Regras de moderação definidas pela comunidade via votações
- Aplicação automática na criação de conteúdo (posts, items)
- Tipos de regras: ContentType, ProhibitedWords, Behavior, MarketplacePolicy, EventPolicy
- Regras podem ser criadas via votações ou diretamente por curadores
-
✅ Feed Filtrado por Interesses
- Filtro opcional de feed por interesses do usuário
- Feed cronológico completo permanece como padrão
- Query parameter
filterByInterestsno endpoint de feed
-
✅ Caracterização do Território
- Tags que descrevem o território
- Podem ser definidas via votações
- Aparecem nas respostas de território
-
✅ Histórico de Participação no Perfil
- Histórico de votações participadas
- Contribuições para moderação comunitária
- Endpoint:
GET /api/v1/users/me/profile/governance
Validações e Segurança
- ✅ Validators FluentValidation para todos os requests
- ✅ Validação de permissões (resident/curador conforme tipo de votação)
- ✅ Validação de visibilidade e elegibilidade para votar
Testes
- ✅ Testes unitários:
UserInterestServiceTests,VotingServiceTests - ✅ Testes de integração:
GovernanceIntegrationTests - ✅ Cobertura >85% para funcionalidades de governança
Documentação
- ✅
docs/GOVERNANCE_SYSTEM.md- Visão geral do sistema - ✅
docs/VOTING_SYSTEM.md- Documentação detalhada do sistema de votação - ✅
docs/COMMUNITY_MODERATION.md- Moderação comunitária
Adicionado - Fase 12 (2026-01-21)
-
✅ Sistema de Políticas de Termos e Critérios de Aceite
- Versionamento de termos de uso e políticas de privacidade
- Aceite obrigatório por papel, capability ou system permission
- Auditoria completa (IP, User Agent, versão aceita)
- Integração com funcionalidades críticas (Posts, Events, Stores)
- API completa com endpoints de consulta e aceite
-
✅ Exportação de Dados (LGPD)
- Endpoint
GET /api/v1/users/me/exportpara exportação de dados pessoais - Exportação em formato JSON com todos os dados do usuário
- Endpoint
DELETE /api/v1/users/mepara exclusão de conta - Anonimização completa de dados pessoais identificáveis
- Documentação de conformidade LGPD (
docs/LGPD_COMPLIANCE.md)
- Endpoint
-
✅ Analytics e Métricas de Negócio
- Estatísticas por território (
GET /api/v1/analytics/territories/{id}/stats) - Estatísticas da plataforma (
GET /api/v1/analytics/platform/stats) - Estatísticas do marketplace (
GET /api/v1/analytics/marketplace/stats) - Métricas: posts, eventos, membros, vendas, payouts
- Estatísticas por território (
-
✅ Compression HTTP
- Gzip e Brotli compression implementados
- Configuração otimizada (CompressionLevel.Optimal)
- MIME types configurados (JSON, XML, CSS, JS)
-
✅ Otimização de Serialização JSON
WriteIndented = falseem produção (reduz tamanho de payload)DefaultIgnoreCondition = WhenWritingNull(reduz payload)- CamelCase naming policy
-
✅ Índices de Performance
- Migration
AddPerformanceIndexescom índices compostos para:- Feed (territory, status, created_at)
- Eventos (territory, starts_at, status)
- Participações (user, event)
- Notificações (user, read_at, created_at)
- Marketplace (stores, items, checkouts)
- Analytics (aceites de termos e políticas)
- Migration
-
✅ Testes de Performance
- SLAs definidos e validados para endpoints críticos
- Testes de carga (LoadTests) - 10 clientes, 30 requisições
- Testes de stress (StressTests) - carga pico, extrema, concorrente
- Documentação completa (
docs/PERFORMANCE_TEST_RESULTS.md)
-
✅ Cobertura de Testes
- 716 testes passando, 0 falhando, 2 pulados (100% dos executáveis)
- Suite completa: unitários, integração, segurança, performance
-
✅ CI/CD Pipeline
- Build e testes automatizados
- Code coverage com Codecov
- Security scan com Trivy
- Build e push de Docker para GHCR
- Documentação (
docs/CI_CD_PIPELINE.md)
-
✅ Documentação de Operação
docs/OPERATIONS_MANUAL.md- Procedimentos completos de deploy, rollback, backup, monitoramentodocs/INCIDENT_RESPONSE.md- Plano de resposta a incidentes (P0-P3)docs/CI_CD_PIPELINE.md- Documentação do pipelinedocs/TROUBLESHOOTING.md- Mantido e atualizado
Documentação
- ✅ Avaliação e Resultados
docs/FASE12_AVALIACAO_IMPLEMENTACAO.md- Avaliação completa da implementaçãodocs/PLANO_ACAO_10_10_RESULTADOS.md- Resultados do plano de açãodocs/backlog-api/FASE12_STATUS.md- Status atualizado (85% completo)
[1.0.0] - 2026-01-21
Resumo das Fases Implementadas
Fase 1: Segurança e Fundação Crítica ✅
- Autenticação JWT
- Rate limiting
- Health checks
- Logging estruturado (Serilog)
- OpenTelemetry (tracing e metrics)
- Prometheus metrics
Fase 2: Qualidade de Código ✅
- FluentValidation
- Result pattern
- Error handling centralizado
- Middleware de segurança
Fase 3: Performance e Escalabilidade ✅
- Concorrência otimista (RowVersion)
- Cache distribuído (Redis com fallback para IMemoryCache)
- Paginação
- Batch operations
- Connection pooling
Fase 4: Observabilidade ✅
- Serilog com Seq
- OpenTelemetry
- Prometheus
- Health checks detalhados
- Correlation ID
Fase 5: Segurança Avançada ✅
- 2FA (TOTP)
- Sanctions automáticas
- User blocking
- Audit logging
Fase 6: Sistema de Pagamentos ✅
- Integração com gateway de pagamento
- Checkout
- Transações financeiras
- Reconciliation records
Fase 7: Sistema de Payout ✅
- Seller transactions
- Territory payout config
- Platform fee config
- Seller balance
Fase 8: Infraestrutura de Mídia ✅
- Upload de mídias (imagens, vídeos, áudios)
- Validação de MIME types e tamanhos
- Media attachments
- Media service completo
Fase 9-11: Pendentes
- Perfil de Usuário Completo
- Mídias em Conteúdo
- Edição e Gestão
Fase 12: Otimizações Finais ✅ (85%)
- Sistema de Políticas ✅
- Exportação de Dados (LGPD) ✅
- Analytics e Métricas ✅
- Testes de Performance ✅
- Otimizações de Performance ⚠️ (60%)
- CI/CD Pipeline ✅
- Documentação de Operação ✅
- Documentação Final ⚠️ (50%)
[0.9.0] - 2025-01
Adicionado
- Sistema base de territórios
- Feed comunitário
- Sistema de mapas
- Sistema de eventos
- Marketplace básico
- Sistema de chat
- Notificações
Última Atualização: 2026-01-21