Skip to content

feat: scoped-Editor migration safety net + docs (#990 slice 4) - #1049

Merged
milkway merged 1 commit into
mainfrom
docs/990-slice4-editor-scope-docs
Jul 30, 2026
Merged

feat: scoped-Editor migration safety net + docs (#990 slice 4)#1049
milkway merged 1 commit into
mainfrom
docs/990-slice4-editor-scope-docs

Conversation

@milkway

@milkway milkway commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Fatia 4 de 5, a última da #990. Implementada por agente codex exec (gpt-5.6-sol, high); revisada por mim afirmação por afirmação — sem correções necessárias desta vez.

O item que mais importa: o warning de boot

Antes das fatias 1–3, todo Editor operava o catálogo inteiro. Depois delas, um Editor sem grupo alcança apenas apps abertos — perda de acesso silenciosa num upgrade. O startup agora emite um WARN no STARTUP_LOG_TARGET (o mesmo alvo do banner, que aparece na aba Logs mesmo no nível warn default) nomeando as contas, não só contando.

Verificado no código, não no relatório:

  • A consulta usa lower(role) = 'editor' — a lição da fatia 2 aplicada sem eu pedir — com ORDER BY username para saída determinística.
  • Roda antes do resto do startup e nunca impede o boot; se a própria checagem falhar, avisa disso em vez de pular calada.
  • O teste é real: instala um subscriber tracing, captura a saída e verifica nível WARN, target ruscker_startup, contagem, nomes ordenados, e o silêncio quando todos têm grupo. Cobre o caso " , " (grupos só com espaço).
  • tracing-subscriber entra como dev-dependency, já pinada no workspace — nada de terceiro entra na árvore de produção.

Documentação: conferida contra o código

A matriz de papéis do admin.md afirmava que Editor não alcança Usuários nem Grupos, o que ficou falso. Reescrita com o escopo real de cada seção, incluindo a nuance de que app restrito por access-users não tem fronteira de grupo e segue Admin-only.

Fui atrás de exagero, que é o risco de uma fatia de doc: ela afirma que a importação de YAML também é escopada. É — via prepare_scoped_import, com fail-closed se o catálogo não carregar. Afirmação sustentada.

O SECURITY.md ganhou o que mais serve a uma auditoria futura: o 404 documentado como não-divulgação deliberada (alvo inexistente e alvo fora do escopo são indistinguíveis, para identificador chutado não revelar que o app de outro time existe), e a nota de que o escopo é lido a cada request em vez de copiado para a sessão — então remover alguém de um grupo vale no próximo clique.

O ROADMAP.md não ganhou checkbox aspiracional: o item de RBAC que já era [x] foi apenas detalhado, e OIDC/SAML/LDAP seguem desmarcados. Este repositório já se queimou com checkbox não verificado.

Antes de subir no box e no hugo

A caixa de aviso na doc pede o passo concreto: dar pelo menos um grupo a cada conta Editor na release atual, antes de iniciar a versão nova. O warning de boot é a rede de segurança se alguém esquecer, não substituto dela.

Gate reexecutado por mim: cargo test limpo, clippy --all-targets -- -D warnings sem warning, i18n-check OK (nenhuma string nova de UI foi necessária).

🤖 Generated with Claude Code

@milkway
milkway merged commit 980473c into main Jul 30, 2026
6 checks passed
@milkway
milkway deleted the docs/990-slice4-editor-scope-docs branch July 30, 2026 00:03
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