C141 — Perfis de permissão por assessor (visão × edição), configuráveis por coordenador/candidato #105

Closed
opened 2026-08-19 20:53:41 +00:00 by fsolla · 5 comments
Owner
id depends serializes priority model
C141
P1 cursor-grok-4.5-high

Plano: docs/plans/permissao-granular-assessores.md

--- id: C141 depends: [] serializes: [] priority: P1 model: cursor-grok-4.5-high --- Plano: [`docs/plans/permissao-granular-assessores.md`](docs/plans/permissao-granular-assessores.md)
fsolla added the
blocked
prio:P1
labels 2026-08-19 20:53:41 +00:00
fsolla added
ready
and removed
blocked
labels 2026-08-19 20:58:26 +00:00
Author
Owner

Promovido a ready via Action OPS18 — plano de intenção em main (PR #108 com Related #105).

Promovido a `ready` via Action OPS18 — plano de intenção em `main` (PR #108 com `Related #105`).
fsolla added
in-progress
and removed
ready
labels 2026-08-19 21:20:04 +00:00
Author
Owner

Claimed by agent run at 2026-08-19T21:20:04.480Z. Lock otimista: outro claim deve falhar e re-rodar pnpm agent:claim.

Claimed by agent run at 2026-08-19T21:20:04.480Z. Lock otimista: outro claim deve falhar e re-rodar `pnpm agent:claim`.
Author
Owner

Entrega pronta: PR #110 (Ready, base main, Closes #105) — perfis Visão × Edição com enforcement fail-closed no servidor, configuração em 3 pontos em /campanha/assessores, default Carteira·Carteira, caps PII/demandas/coordenação mantidos. CI no PR roda o gate completo; o automerge fecha por rebase e o CI flipeia done.

/simplify: 3 revisores (segurança/DRY/testes) + critique — 2 P1s corrigidos no cleanup (ficha de contatos autorizada por leitura → assertPersonContactWritable write-scoped; create individual de atividade sem check de município → getWritableMunicipalityIds), 1 P2 (actions de liderança com carteira dura), alias allocationDecision capado, vocabulário/coerência unificados, ~12 lacunas de teste cobertas (spec int novo com 15 testes). Débito registrado: C144 (#112) — options write-scoped para formulários de escrita (com Visão "Tudo" + Edição "Carteira" os pickers oferecem municípios que o servidor rejeita; em atividade o servidor já rejeita, falta a base de dados do form). Deferidos com gatilho: helper de eixo de visão (3º padrão divergente) e dedup do prólogo (nova coleção sensível). Descartados: achados do design-vision refutados por medição (popover 320px sem overflow desktop/mobile) e contraste do botão padrão do design system.

Entrega pronta: PR #110 (Ready, base main, `Closes #105`) — perfis Visão × Edição com enforcement fail-closed no servidor, configuração em 3 pontos em `/campanha/assessores`, default Carteira·Carteira, caps PII/demandas/coordenação mantidos. CI no PR roda o gate completo; o automerge fecha por rebase e o CI flipeia `done`. /simplify: 3 revisores (segurança/DRY/testes) + critique — 2 P1s corrigidos no cleanup (ficha de contatos autorizada por leitura → `assertPersonContactWritable` write-scoped; create individual de atividade sem check de município → `getWritableMunicipalityIds`), 1 P2 (actions de liderança com carteira dura), alias `allocationDecision` capado, vocabulário/coerência unificados, ~12 lacunas de teste cobertas (spec int novo com 15 testes). Débito registrado: **C144 (#112)** — options write-scoped para formulários de escrita (com Visão "Tudo" + Edição "Carteira" os pickers oferecem municípios que o servidor rejeita; em atividade o servidor já rejeita, falta a base de dados do form). Deferidos com gatilho: helper de eixo de visão (3º padrão divergente) e dedup do prólogo (nova coleção sensível). Descartados: achados do design-vision refutados por medição (popover 320px sem overflow desktop/mobile) e contraste do botão padrão do design system.
fsolla added
done
in-prod
and removed
in-progress
labels 2026-08-20 01:25:17 +00:00
Author
Owner

Merged em main via PR #110 — done + in-prod. Deploy de produção segue o verificador ci.yml (gated).

Merged em main via PR #110 — `done` + `in-prod`. Deploy de produção segue o verificador `ci.yml` (gated).
Author
Owner

Merged em main via PR #757 — done + in-prod + Issue fechada. Deploy de produção é manual (workflow_dispatch no GitHub Actions) — ver docs/AGENT-OPS.md.

Merged em main via PR #757 — `done` + `in-prod` + Issue fechada. Deploy de produção é manual (workflow_dispatch no GitHub Actions) — ver docs/AGENT-OPS.md.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: fsolla/teqo#105
No description provided.