mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 15:13:07 +00:00
docs(OPS114): design hi-fi obrigatório no gate — aposenta o rascunho low-fi (Closes #1057)
This commit is contained in:
parent
7b840e7dc7
commit
b7f86e50fe
7 changed files with 155 additions and 21 deletions
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
name: plan-issue
|
||||
description: 'Turn human ideas into tracked GitHub Issues with intention plans and UI drafts.'
|
||||
description: 'Turn human ideas into tracked GitHub Issues with intention plans and hi-fi UI designs.'
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
|
|
@ -23,7 +23,7 @@ parse (main agent)
|
|||
1. **Nada no tracker antes do gate.** Antes da confirmação: proibido `pnpm agent:register`, criar Issue/PR.
|
||||
2. **Register com `--plan` nasce `blocked`.** Promote só depois do plano em `main`.
|
||||
3. **Planos de Issues `in-progress`/`done`/`in-prod` são imutáveis.**
|
||||
4. **Rascunho UI (obrigatório se muda UI):** HTML+Tailwind commitado no repo. Classe A/sem UI → sem rascunho.
|
||||
4. **Design UI (obrigatório se muda UI):** o sub-agente `designer` produz `docs/plans/<slug>-ui-design.html` + `docs/plans/<slug>-ui-design-assets/*.svg` (doutrina: `ui-design-html.md`). Classe A/sem UI → sem design.
|
||||
|
||||
## Decomposição em sub-agentes
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ Cada fase pesada é delegada a um sub-agente com contexto mínimo. O agente prin
|
|||
### Sub-agente: Escritor de plano
|
||||
|
||||
**Quando:** Passo 3, paralelo (1 sub-agente por ideia).
|
||||
**Input:** UMA ideia + achados do explorador + `intention-template.md` + `shaping.md` (+ `ui-draft-html.md` se UI)
|
||||
**Input:** UMA ideia + achados do explorador + `intention-template.md` + `shaping.md`
|
||||
**Task:** Escrever `docs/plans/<slug>.md` conforme o template. **Não registrar Issues nem criar arquivos — só produzir o conteúdo do plano.**
|
||||
**Output:** conteúdo markdown do plano.
|
||||
|
||||
|
|
@ -57,7 +57,7 @@ Cada fase pesada é delegada a um sub-agente com contexto mínimo. O agente prin
|
|||
- [ ] 2. Reserva de IDs
|
||||
- [ ] 3. Dispatch sub-agente explorador → receber findings
|
||||
- [ ] 4. Dispatch sub-agentes escritores (paralelo) → receber planos
|
||||
- [ ] 5. GATE: overview + rascunho UI (se muda UI) + decisão de dados → literais no plano → confirmar
|
||||
- [ ] 5. GATE: overview + design UI (se muda UI) + decisão de dados → literais no plano → confirmar
|
||||
- [ ] 6. Dispatch sub-agente registrador → PR → merge → promote
|
||||
```
|
||||
|
||||
|
|
@ -97,7 +97,6 @@ Para cada ideia, monte o task prompt do escritor com:
|
|||
- **Uma** ideia (título + intenção completa + tipo + ID)
|
||||
- Achados do explorador para essa ideia
|
||||
- Templates: `intention-template.md`, `shaping.md`
|
||||
- Se UI: `ui-draft-html.md`
|
||||
- Se dados: `data-presentation.md`
|
||||
- Instrução: "Escreva `docs/plans/<slug>.md` conforme o template. Output: conteúdo markdown."
|
||||
|
||||
|
|
@ -109,14 +108,14 @@ O agente principal:
|
|||
1. Valida cada plano contra `shaping.md` (self-score ≥4)
|
||||
2. Aplica melhorias se necessário
|
||||
3. Cria os arquivos `docs/plans/<slug>.md` no disco
|
||||
4. Se UI: cria `docs/plans/<slug>-ui-draft.html` (sub-agente ou inline)
|
||||
4. Se UI: dispatcha o sub-agente `designer` (paralelo, 1 por ideia UI) para produzir `docs/plans/<slug>-ui-design.html` + `docs/plans/<slug>-ui-design-assets/*.svg`; o orquestrador grava os arquivos retornados no disco
|
||||
|
||||
## Passo 4 — GATE
|
||||
|
||||
Antes de criar Issues:
|
||||
|
||||
- Overview: ID, título, prio, depends, appetite, link do plano
|
||||
- Para cada item UI: aponte o link do `.html` fonte
|
||||
- Para cada item UI: aponte o link de `docs/plans/<slug>-ui-design.html` e confirme as cenas 390/1280 + estados críticos
|
||||
- Decisão de dados → valores literais presentes no plano? (bloco "Dados da decisão (literais)" — nunca só narrativa)
|
||||
- Perguntas acumuladas, recomendação de produto primeiro
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ Atualizado em: <YYYY-MM-DD>
|
|||
Issue: #<N> (após `pnpm agent:register`; senão "—")
|
||||
Priority: <P0 | P1 | P2 | P3>
|
||||
Impeccable: <A | B | C | D> — <N/A sem UI | encaixe em tela X | fluxo novo em Y>
|
||||
Rascunho UI: <N/A — sem UI | docs/plans/<slug>-ui-draft.html>
|
||||
Design UI: <N/A — sem UI | docs/plans/<slug>-ui-design.html>
|
||||
Appetite: <ex.: ~0,5–1 dia eng; um outcome verificável>
|
||||
Responsável: —
|
||||
|
||||
|
|
@ -29,20 +29,21 @@ Responsável: —
|
|||
|
||||
### Esboço de fluxo (B/C/D)
|
||||
|
||||
<!-- Opcional se houver Rascunho UI. ASCII de jornada (backup textual), não layout de implementação.
|
||||
Omitir se A / sem UI. O artefato obrigatório do gate para UI é o HTML+Tailwind commitado — ver ui-draft-html.md. -->
|
||||
<!-- Opcional se houver Design UI. ASCII de jornada (backup textual), não layout de implementação.
|
||||
Omitir se A / sem UI. O artefato obrigatório do gate para UI é o design hi-fi (HTML+Tailwind + assets) — ver ui-design-html.md. -->
|
||||
|
||||
\```text
|
||||
[início] → … → [outcome]
|
||||
\```
|
||||
|
||||
### Rascunho UI (B/C/D)
|
||||
### Design UI (B/C/D)
|
||||
|
||||
<!-- Obrigatório se houver UI: link para docs/plans/<slug>-ui-draft.html
|
||||
(commitado no repo) — o humano abre no browser para validar no gate.
|
||||
Omitir se A / sem UI. O HTML é a fonte iterável e o registro do aceite. -->
|
||||
<!-- Obrigatório se houver UI: link para docs/plans/<slug>-ui-design.html
|
||||
(+ assets em docs/plans/<slug>-ui-design-assets/) — o humano abre no browser
|
||||
para validar no gate. Omitir se A / sem UI. O HTML hi-fi é a fonte iterável,
|
||||
o registro do aceite e a fonte de verdade do port. -->
|
||||
|
||||
- Rascunho UI (gate): `docs/plans/<slug>-ui-draft.html`
|
||||
- Design UI (gate): `docs/plans/<slug>-ui-design.html`
|
||||
|
||||
## Objetivo e aceite
|
||||
|
||||
|
|
@ -95,7 +96,7 @@ Responsável: —
|
|||
## Referências
|
||||
|
||||
- GitHub Issue #<N>
|
||||
- Rascunho UI (gate): <link do `.html` + PNGs embutidos acima | N/A>
|
||||
- Design UI (gate): <link do `.html` + assets em `<slug>-ui-design-assets/` | N/A>
|
||||
- <arquivos/rotas úteis para o executor abrir primeiro — como pista, não contrato>
|
||||
- `AGENTS.md` / `docs/ARCHITECTURE.md` — só se o item toca convenção já travada no repo
|
||||
````
|
||||
|
|
@ -103,7 +104,7 @@ Responsável: —
|
|||
Notas:
|
||||
|
||||
- Alvo: ~60–100 linhas. Mais que isso costuma significar engenharia vazando para a intenção.
|
||||
- Classe **A:** `Impeccable: A — N/A`; `Rascunho UI: N/A`; omita esboço de fluxo.
|
||||
- Classe **B/C/D:** rascunho HTML+Tailwind obrigatório no gate ([ui-draft-html.md](ui-draft-html.md)); commite o `.html` no repo.
|
||||
- Classe **A:** `Impeccable: A — N/A`; `Design UI: N/A`; omita esboço de fluxo.
|
||||
- Classe **B/C/D:** design hi-fi obrigatório no gate ([ui-design-html.md](ui-design-html.md)); commite o `.html` + os assets no repo.
|
||||
- Não rode `/impeccable` aqui.
|
||||
- Self-score shaping ≥4/5 antes de gravar.
|
||||
|
|
|
|||
|
|
@ -53,6 +53,6 @@ Armadilhas se alguém “só completar” o desejo humano:
|
|||
4. Direção no codebase é hipótese (não contrato técnico)?
|
||||
5. Zero decisões duras de engenharia no plano?
|
||||
|
||||
Se o item muda UI: rascunho HTML+Tailwind no gate ([ui-draft-html.md](ui-draft-html.md)) antes de registrar — não conta como “engenharia no plano”; é validação visual da intenção.
|
||||
Se o item muda UI: design hi-fi no gate ([ui-design-html.md](ui-design-html.md)) antes de registrar — não conta como “engenharia no plano”; é validação visual da intenção.
|
||||
|
||||
<4 → corrigir antes de gravar / registrar Issue.
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ No Teqo: **idea-refine / interview** antes se vago; **spec + plan + tasks** = es
|
|||
|
||||
`frontend-ui-engineering`, `security-and-hardening`, `performance-optimization`, `code-review-and-quality`, `code-simplification`, `observability-and-instrumentation`, `shipping-and-launch`, `ci-cd-and-automation`, `git-workflow-and-versioning`, `deprecation-and-migration`, `debugging-and-error-recovery`, `browser-testing-with-devtools` — entram em `work-issue` / gates do repo, não no registro da Issue.
|
||||
|
||||
**Exceção de superfície:** o **rascunho UI/UX do gate** — HTML+Tailwind commitado no repo ([ui-draft-html.md](ui-draft-html.md)) — é usado no `plan-issue` só quando o item muda UI. Não é implementação de `/campanha` nem substituto de Impeccable.
|
||||
**Exceção de superfície:** o **design hi-fi do gate** — HTML+Tailwind commitado no repo ([ui-design-html.md](ui-design-html.md)) — é usado no `plan-issue` só quando o item muda UI. Não é implementação de `/campanha` nem substituto de Impeccable.
|
||||
|
||||
## Precedência quando conflita
|
||||
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ Mesma doutrina para os dois papéis (fonte única — os prompts dos agentes apo
|
|||
|
||||
## Relação com o plano em `docs/plans/`
|
||||
|
||||
- Campo do cabeçalho do plano aponta o caminho do artefato (`Rascunho UI:` hoje; `Design UI:` a partir do OPS114) — ou `N/A — sem UI`.
|
||||
- Campo do cabeçalho do plano aponta o caminho do artefato (`Design UI:`) — ou `N/A — sem UI`.
|
||||
- Link do `.html` no corpo do plano.
|
||||
- Esboço ASCII no markdown vira **opcional** (backup textual).
|
||||
|
||||
|
|
|
|||
1
docs/changelog/2026-09-16-ops114.md
Normal file
1
docs/changelog/2026-09-16-ops114.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
**OPS114 — `plan-issue`: design hi-fi obrigatório no gate (substitui o rascunho low-fi) (2026-09-16):** o gate do `plan-issue` aposenta o rascunho UI low-fi e passa a exigir o design hi-fi produzido pelo sub-agente `designer` (OPS113): item que muda UI (B/C/D) entrega `docs/plans/<slug>-ui-design.html` + `docs/plans/<slug>-ui-design-assets/*.svg`, e o escritor do plano não recebe mais doutrina de UI. `SKILL.md` atualizado nos seis pontos (regra dura 4, input do escritor, checklist, Passo 3c, Passo 3d — dispatch do `designer` em paralelo + gravação pelo orquestrador —, GATE com link do HTML e cenas 390/1280/estados) e `description` do frontmatter. `intention-template.md` troca o campo `Rascunho UI:` por `Design UI:` e a seção `### Rascunho UI (B/C/D)` por `### Design UI (B/C/D)`, remove a exigência de PNG embutido (renderizador removido em 2026-08-21) e aponta os assets; `shaping.md:56` e `skills-map.md:42` corrigem o link quebrado para `ui-design-html.md`; a nota transitória de `ui-design-html.md:93` é finalizada no campo novo. Sweep duplo (nome + vocabulário) zerado em `.agents/**`/`.opencode/**`; resíduo `ui-draft` global é só o set do painel/CLI/testes (OPS116). Doc-only: sem migration, sem tocar `docs/plans/**`/`docs/changelog/**` existentes nem `src/`.
|
||||
133
docs/plans/ops114-plan-issue-design-hifi-no-gate-impl.md
Normal file
133
docs/plans/ops114-plan-issue-design-hifi-no-gate-impl.md
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
# Impl: OPS114 — plan-issue: design hi-fi obrigatório no gate (substitui o rascunho low-fi)
|
||||
|
||||
Status: rascunho
|
||||
Atualizado em: 2026-09-16
|
||||
Issue: #1057
|
||||
Intenção: docs/plans/ops114-plan-issue-design-hifi-no-gate.md
|
||||
Appetite restante: herdado — doc-only em `.agents/skills/plan-issue/**`, ~0,5 dia eng
|
||||
|
||||
## Leitura da intenção
|
||||
|
||||
- **Outcome:** para item que muda UI (B/C/D), o gate passa a exigir `docs/plans/<slug>-ui-design.html` + `docs/plans/<slug>-ui-design-assets/*.svg` produzidos pelo sub-agente `designer`; o escritor do plano não gera mais UI e nenhuma referência ao low-fi (`ui-draft-html.md`, `-ui-draft.html`, "Rascunho UI") sobra na superfície da skill.
|
||||
- **O que NÃO negociar:**
|
||||
- Planos antigos e seus `-ui-draft.html`/PNGs ficam intactos (nenhum arquivo **existente** em `docs/plans/**` ou `docs/changelog/**` é editado, renomeado ou migrado).
|
||||
- O design hi-fi não carrega lógica de negócio e não nomeia componente final; a doutrina do gate continua fora de `docs/plans/`.
|
||||
- O painel/CLI e seus testes são OPS116 — **não** tocar aqui.
|
||||
- `.opencode/commands/plan-issue.md` só delega à skill — não muda.
|
||||
- **O que reavaliar:**
|
||||
- **A varredura global "zero" da intenção é falsa como escrita.** Sobram hits de `-ui-draft` em `scripts/lib/issues-panel.mjs`, `scripts/issues-tui.mjs` e `tests/unit/issuesPanel.unit.spec.ts` — donos OPS116. A prova honesta é dupla: (a) **zero** em `.agents/**`/`.opencode/**`; (b) globalmente, o conjunto de hits é **exatamente** o set OPS116 pinado (não "vazio"). O PR registra os dois resultados em vez de fingir sweep vazio.
|
||||
- **A verificação "nada sob `docs/plans/`" conflita com o contrato do `work-issue`.** A entrega commita o novo `ops114-…-impl.md` (este arquivo) e a entrada nova de changelog. O critério correto é: **nenhum arquivo antigo** de `docs/plans/**`/`docs/changelog/**` modificado; as únicas adições são `*-impl.md` e `docs/changelog/<data>-ops114.md`. O sweep do OPS114 não renomeia nem migra `-ui-draft.html`/PNGs — a prova de "planos antigos intactos" é o diff não conter nenhum caminho `-ui-draft`.
|
||||
- A hipótese "há `git mv` a fazer" está errada: o rename já foi entregue no OPS113 (commit `488d7af7`, "rename puro") e `ui-design-html.md` é o único arquivo de doutrina na pasta. Só faltam os ponteiros.
|
||||
- `ui-design-html.md:93` tem uma nota transitória ("`Rascunho UI:` hoje; `Design UI:` a partir do OPS114") — este item **é** o OPS114, então a nota deve ser finalizada para não virar stale.
|
||||
|
||||
## Abordagem recomendada
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
idea["Ideia B/C/D (muda UI)"] --> expl["Explorador"]
|
||||
expl --> writer["Escritor: plano SEM UI"]
|
||||
writer --> designer["designer: -ui-design.html + -ui-design-assets/*.svg"]
|
||||
designer --> disk["Orquestrador grava em docs/plans/"]
|
||||
disk --> plan["Plano: campo Design UI: + seção + cenas 390/1280/estados"]
|
||||
plan --> gate["GATE: abre o HTML, itera, confirma"]
|
||||
```
|
||||
|
||||
**Opções consideradas:** A | B | C
|
||||
|
||||
- **A)** Atualizar os ponteiros da skill no lugar (`.agents/skills/plan-issue/SKILL.md`, `intention-template.md`, `shaping.md`, `skills-map.md`) e finalizar a nota transitória em `ui-design-html.md:93`; painel/CLI/testes intocados.
|
||||
- **B)** Reescrever a doutrina hi-fi e/ou migrar os planos antigos para o nome novo.
|
||||
- **C)** Incluir painel/CLI/testes (retrocompat `-ui-design.html`) neste mesmo item.
|
||||
|
||||
**Recomendação:** **A** — o rename da doutrina já está em `main` (OPS113); o trabalho restante é reescrever ponteiros de documentação, doc-only, sem código de app e sem schema.
|
||||
|
||||
**Rejeitadas:** **B** — reescrever a doutrina está fora do escopo (o OPS113 a elevou) e migrar `docs/plans/**` viola o acervo imutável. **C** — quebra a separação OPS114/OPS116 e os testes unitários pinados em `tests/unit/issuesPanel.unit.spec.ts`.
|
||||
|
||||
### Componentes / mudanças
|
||||
|
||||
**`.agents/skills/plan-issue/SKILL.md`** — 6 pontos + coerência de frontmatter:
|
||||
|
||||
| Linha | Antes (atual) | Depois |
|
||||
| ---------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 3 (`description`) | `...intention plans and UI drafts.` | `...intention plans and hi-fi UI designs.` (coerência; não é exigência da varredura) |
|
||||
| 26 (regra dura 4) | `**Rascunho UI (obrigatório se muda UI):** HTML+Tailwind commitado no repo. Classe A/sem UI → sem rascunho.` | `**Design UI (obrigatório se muda UI):** o sub-agente `designer`produz`docs/plans/<slug>-ui-design.html`+`docs/plans/<slug>-ui-design-assets/\*.svg`(doutrina:`ui-design-html.md`). Classe A/sem UI → sem design.` |
|
||||
| 42 (input do escritor) | `... + intention-template.md + shaping.md (+ ui-draft-html.md se UI)` | `... + intention-template.md + shaping.md` — o escritor não recebe mais doutrina de UI |
|
||||
| 60 (checklist item 5) | `GATE: overview + rascunho UI (se muda UI) + decisão de dados` | `GATE: overview + design UI (se muda UI) + decisão de dados` |
|
||||
| 100 (Passo 3c) | `- Se UI: ui-draft-html.md` | remover a linha (o escritor não gera UI); manter `- Se dados: data-presentation.md` |
|
||||
| 112 (Passo 3d item 4) | `Se UI: cria docs/plans/<slug>-ui-draft.html (sub-agente ou inline)` | `Se UI: dispatcha o sub-agente designer (paralelo, 1 por ideia UI) para produzir docs/plans/<slug>-ui-design.html + docs/plans/<slug>-ui-design-assets/*.svg; o orquestrador grava os arquivos retornados no disco.` |
|
||||
| 119 (Passo 4 GATE) | `Para cada item UI: aponte o link do .html fonte` | `Para cada item UI: aponte o link de docs/plans/<slug>-ui-design.html e confirme as cenas 390/1280 + estados críticos` |
|
||||
|
||||
**`.agents/skills/plan-issue/intention-template.md`**:
|
||||
|
||||
| Linha | Depois |
|
||||
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 15 (campo) | `Design UI: <N/A — sem UI \| docs/plans/<slug>-ui-design.html>` |
|
||||
| 32–33 (comentário do esboço) | citar `Design UI` e linkar `ui-design-html.md` (não `ui-draft-html.md`) |
|
||||
| 39 (seção) | `### Design UI (B/C/D)` |
|
||||
| 41–45 (comentário + bullet) | comentário aponta `docs/plans/<slug>-ui-design.html` (+ `-ui-design-assets/`); bullet `- Design UI (gate): docs/plans/<slug>-ui-design.html` |
|
||||
| 98 (Referências) | `- Design UI (gate): <link do .html + assets em <slug>-ui-design-assets/ \| N/A>` — remove "PNGs embutidos acima" (órfão) |
|
||||
| 106 (nota A) | `Classe A: Impeccable: A — N/A; Design UI: N/A; omita esboço de fluxo.` |
|
||||
| 107 (nota B/C/D) | `Classe B/C/D: design hi-fi obrigatório no gate ([ui-design-html.md](ui-design-html.md)); commite o .html + os assets no repo.` |
|
||||
|
||||
**`.agents/skills/plan-issue/shaping.md:56`** (hoje link quebrado): `Se o item muda UI: design hi-fi no gate ([ui-design-html.md](ui-design-html.md)) antes de registrar — não conta como "engenharia no plano"; é validação visual da intenção.`
|
||||
|
||||
**`.agents/skills/plan-issue/skills-map.md:42`** (hoje link quebrado): `**Exceção de superfície:** o **design hi-fi do gate** — HTML+Tailwind commitado no repo ([ui-design-html.md](ui-design-html.md)) — é usado no plan-issue só quando o item muda UI. Não é implementação de /campanha nem substituto de Impeccable.`
|
||||
|
||||
**`.agents/skills/plan-issue/ui-design-html.md:93`** (finaliza a nota transitória): `Campo do cabeçalho do plano aponta o caminho do artefato (\`Design UI:\`) — ou \`N/A — sem UI\`.`
|
||||
|
||||
- **Migration:** sem migration (não toca schema/Payload).
|
||||
- **Access / Consent:** N/A — nenhum caminho de escrita LGPD/access.
|
||||
- **UI:** Impeccable **A — N/A** (muda doutrina de ferramenta de agentes, não UI de produto).
|
||||
|
||||
### Dados → forma (se aplicável)
|
||||
|
||||
N/A — mudança de doutrina de ferramenta de agentes; nenhuma superfície de dados.
|
||||
|
||||
## Decisões de engenharia
|
||||
|
||||
1. **Quem gera o artefato (Passo 3d).** Dispatch do sub-agente `designer` em paralelo por ideia UI; o **orquestrador grava** os arquivos retornados no disco (`docs/plans/<slug>-ui-design.html` + `-ui-design-assets/`). O `designer` já tem `permission.edit` restrita a `docs/plans/*-ui-design*`, então também pode gravar direto; o orquestrador é o escritor canônico para garantir o gate. **Rejeitada:** o escritor do plano gerar o HTML — é o comportamento velho que este item aposenta, e viola a permission do `designer`.
|
||||
2. **Doutrina já renomeada no OPS113.** Não fazer `git mv`; só atualizar ponteiros + finalizar a nota transitória de `ui-design-html.md:93`. **Rejeitada:** reescrever a doutrina (fora do escopo; OPS113 elevou o conteúdo).
|
||||
3. **PNG embutido.** Remover a exigência (`intention-template.md:98`); o renderizador `scripts/render-ui-draft.mjs` foi removido em 2026-08-21 — o fluxo é HTML-only e o humano abre o HTML. **Rejeitada:** reintroduzir PNG/rasterizador.
|
||||
4. **Escopo do sweep.** Atualizar só `.agents/skills/plan-issue/**` + a nota em `ui-design-html.md`; painel/CLI/testes ficam para o OPS116. **Rejeitada:** tocar o painel agora — quebra a separação OPS114/OPS116 e os testes pinados. Consequência registrada: a varredura global **não** fica vazia; a prova é zero em `.agents/**`/`.opencode/**` e globalmente o set exato OPS116 (ver F3).
|
||||
5. **Coerência de vocabulário.** Ajustar a `description` do frontmatter de `SKILL.md` ("UI drafts" → "hi-fi UI designs") para o inventário de skills não anunciar o artefato aposentado. **Rejeitada:** deixar como está — a varredura por `ui-draft`/`Rascunho UI` não pega "UI drafts", mas o descritor fica enganoso.
|
||||
|
||||
## Fases verificáveis
|
||||
|
||||
1. **F1 — `SKILL.md` (owner).** Aplicar os 6 pontos + `description`: regra dura 4 (l.26), input do escritor (l.42), checklist (l.60), Passo 3c (l.100, remove a linha de UI), Passo 3d (l.112, dispatch do `designer` + gravação), Passo 4/GATE (l.119, link `-ui-design.html` + cenas). Quota: metade do appetite.
|
||||
2. **F2 — Template e vizinhos.** `intention-template.md` (campo/seção/paths/notas), `shaping.md:56`, `skills-map.md:42` e finalizar `ui-design-html.md:93`. Quota: a outra metade.
|
||||
3. **F3 — Sweep + prova.**
|
||||
- `rg -n "ui-draft|Rascunho UI|rascunho UI" .agents .opencode` → **vazio**.
|
||||
- `rg -n "ui-draft|Rascunho UI|rascunho UI"` fora de `docs/plans/**`, `docs/changelog*/**`, `docs/CHANGELOG-AGENTS-HISTORY.md`, `node_modules`, `.git` → conjunto **exatamente** `scripts/lib/issues-panel.mjs`, `scripts/issues-tui.mjs`, `tests/unit/issuesPanel.unit.spec.ts` (OPS116); qualquer hit fora disso é falha.
|
||||
- `git diff --name-only <base>...HEAD` → **nenhum arquivo antigo** de `docs/plans/`/`docs/changelog/`; as únicas adições são este `ops114-…-impl.md` e `docs/changelog/<data>-ops114.md`. Nenhum caminho `-ui-draft` no diff (planos antigos intactos).
|
||||
- `.opencode/commands/plan-issue.md` **ausente** do diff.
|
||||
- `pnpm format:check` verde (os markdown editados entram no check).
|
||||
- Leitura do `SKILL.md` final: escritor sem doutrina de UI; 3d dispatcha `designer`; gate exibe `-ui-design.html` + cenas.
|
||||
- Push via `pnpm push`.
|
||||
|
||||
## Rabbit holes / Não escopo (engenharia)
|
||||
|
||||
- **Migrar/renomear planos antigos** (`-ui-draft.html`, PNGs) — acervo imutável vira PR gigante; retrocompat fica no OPS116.
|
||||
- **Tocar `scripts/lib/issues-panel.mjs`, `scripts/issues-tui.mjs`, `tests/unit/issuesPanel.unit.spec.ts`** — OPS116 (retrocompat do painel).
|
||||
- **Alterar a doutrina `ui-design-html.md` além da l.93** — conteúdo elevado no OPS113.
|
||||
- **Mexer em `docs/design-refs/`** — questão aberta de produto; aqui não é ação.
|
||||
- **Gates de implementação** (`work-issue`/`agent-work-issue`) — continuam lendo o plano como está.
|
||||
- **UI de produto / `/impeccable`** — fora de escopo.
|
||||
- **Reintroduzir PNG/rasterizador** — renderizador removido em 2026-08-21.
|
||||
|
||||
## Riscos e mitigação
|
||||
|
||||
- **Doutrina ainda no nome antigo (OPS113 incompleto).** Fail-closed: verificado que `ui-design-html.md` existe (OPS113 mergeado); a F3 começa confirmando o arquivo antes de linkar. Se não existisse, o item estaria bloqueado pelo `depends`, não se adivinha path.
|
||||
- **Referência oculta ao low-fi.** Mitigação: varredura dupla por nome (`ui-draft`) e por vocabulário (`Rascunho UI`/`rascunho UI`), com globs explícitos de exclusão.
|
||||
- **Sweep vazar para arquivos imutáveis.** Mitigação: checar `git diff --name-only` contra `docs/plans/` e `docs/changelog/`; nenhum plano antigo modificado e nenhum novo `-ui-draft`.
|
||||
- **Critério de aceite "zero fora de docs/plans" conflitar com o resíduo OPS116.** Mitigação: a prova em F3 é dupla e honesta (zero em `.agents/**`/`.opencode/**` + set exato OPS116 global), registrada no PR; nada de declarar sweep vazio.
|
||||
- **Prettier vermelho nos markdown editados.** Mitigação: `pnpm format` antes do commit; `format:check` na verificação.
|
||||
- **`description` do frontmatter fora do sweep.** Mitigação: mudança de coerência coberta pela leitura final do `SKILL.md`, não só pela varredura literal.
|
||||
|
||||
## Aceite de engenharia
|
||||
|
||||
- [ ] Aceite de produto da intenção ainda coberto (B/C/D exige `-ui-design.html` + `-ui-design-assets/*.svg` do `designer`; escritor não gera UI).
|
||||
- [ ] Frontmatter `Design UI:` e seção `### Design UI (B/C/D)` no template; PNG embutido deixa de ser exigência.
|
||||
- [ ] Zero `ui-draft`/`Rascunho UI`/`rascunho UI` em `.agents/**` e `.opencode/**`; globalmente só o set OPS116 pinado.
|
||||
- [ ] `shaping.md:56` e `skills-map.md:42` com link corrigido para `ui-design-html.md`; nota transitória de `ui-design-html.md:93` finalizada.
|
||||
- [ ] Invariantes AGENTS/engineering-standards: doc-only, sem migration, sem editar `docs/plans/**`/`docs/changelog/**` existentes, sem tocar painel/CLI/tests.
|
||||
- [ ] `.opencode/commands/plan-issue.md` inalterado (confirmado por `git diff --name-only`).
|
||||
- [ ] `pnpm format:check` verde; push via `pnpm push`.
|
||||
Loading…
Reference in a new issue