mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 15:13:07 +00:00
3.3 KiB
3.3 KiB
OPS117 — Guard de escrita dos agentes de design além dos file tools (bash)
Status: rascunho Atualizado em: 2026-09-15 Issue: #1063 Priority: P2 Impeccable: A — N/A sem UI de produto Rascunho UI: N/A — sem UI Appetite: ~0,5 dia eng; um outcome verificável Responsável: —
Intenção
Os agentes designer e designer-degraded (OPS113) são fail-closed para os file tools (edit/write/patch negados fora de docs/plans/*-ui-design*), mas o anti-goal "o designer nunca escreve em src/" ainda é contornável por bash (redirecionamento, sed -i, tee). O gate cobre o caminho principal; falta fechar o desvio — sem transformar o agente num sandbox de SO.
Objetivo e aceite
- Escrita em disco via bash pelos dois agentes falha fechado (negada ou ask conforme o mecanismo escolhido) para caminhos fora do artefato
docs/plans/<slug>-ui-design*. - Gravar o próprio artefato (
docs/plans/<slug>-ui-design.htmle-ui-design-assets/*.svg) segue permitido — inclusive oprettier --writedo artefato, se necessário ao fluxo. - Smoke em subprocesso prova:
echo > src/...negado; artefato permitido. - Nada de sandbox de SO, nada de agente twin, nada de bloquear leitura (
cat/sed -n).
Dados (intenção)
- Vou apresentar dados? Não — configuração de agente.
- Forma: N/A.
Direção no codebase (hipótese)
- Áreas prováveis:
.opencode/agent/designer.mde.opencode/agent/designer-degraded.md(permission.bashpor agente), doutrina.agents/skills/plan-issue/ui-design-html.md(nota do teto) edocs/AGENT-OPS.md(parágrafo OPS113) se a semântica mudar. - Precedente a olhar: o próprio bloco
permission.editfail-closed dos agentes; docs opencode depermission.bash(padrões por comando, last-match-wins). - Risco de acoplamento:
permission.bashcasa comando (não caminho de arquivo) — a forma exata precisa ser confirmada no schema/docs antes de pinar; falso-deny doprettier --writedo artefato é o risco a evitar.
Fora de escopo
- Sandbox de SO/container para agentes.
- Mexer no allowlist de escrita do artefato (já resolvido no OPS113).
- Bloquear leitura ou comandos não-escrita (
git diff,cat,sed -n).
Rabbit holes
- "Já que mexeu, faz sandbox de SO." Vira infraestrutura para um risco de ferramenta de design. Corte neste item: só a
permission.bashdos dois agentes. - "Bloqueia bash inteiro." O designer pode precisar de
prettier --writeno artefato (docs/plans é format-checked). Corte neste item: bloquear escrita fora do artefato, não o shell.
Verificação
- Smoke em subprocesso (
opencode run --agent designer; degraded via task):echo x > src/…negado; escrita no artefato permitida;opencode agent listmostra o ruleset resolvido. pnpm gate:fastverde; sem mudança emsrc/.
Riscos
- Semântica de
permission.bashpor caminho não existir. Então o desenho vira "ask" para bash (humano no loop) ou hook/plugin — decidir no impl plan com evidência das docs, sem pinar adivinhação.
Referências
- GitHub Issue #1063
docs/plans/ops113-agentes-designer-e-designer-degraded-impl.md— decisão 1 (resíduo declarado do bash).opencode/agent/designer.md·.opencode/agent/designer-degraded.md—permissionfail-closed dos file tools