mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 23:25:18 +00:00
3.7 KiB
3.7 KiB
Tornar worktree fix (sem argumento) driverless, espelhando plan
Status: rascunho Atualizado em: 2026-09-20 Issue: #1226 Priority: P2 Impeccable: A — N/A Design UI: N/A Appetite: ~0,5 dia eng; um outcome verificável Responsável: —
Intenção
pnpm worktree fix sem argumento hoje abre a sessão e auto-envia a string vazia como mensagem do usuário, resultando em um prompt vazio para o agente. O plan (sem bag) já é driverless — abre a sessão sem mensagem, esperando o humano digitar o contexto. O fix deve espelhar esse comportamento: sem argumento → sessão aberta, nenhuma mensagem automática.
Persona e fluxo
- Persona / contexto: dev que identificou um bug e quer diagnosticar interativamente (campo/mesa, terminal)
- Job principal: Abrir uma sessão
fixsem bag sem que o agente receba uma mensagem vazia - Fluxo desejado:
pnpm worktree fix→ sessão abre, prompt vazio → humano digita o contexto do bug - Anti-goals de produto: Não quebrar
pnpm worktree fix "descrição do bug"— o caso com argumento continua funcionando como hoje
Esboço de fluxo
fix (sem arg) → sessão aberta, prompt vazio → humano digita
fix (com arg) → sessão aberta, argumento sanitizado auto-enviado (como hoje)
plan (sem arg) → sessão aberta, prompt vazio (referência — sem mudança)
Objetivo e aceite
pnpm worktree fix(sem argumento) abre sessão driverless — nenhuma mensagem automática enviadapnpm worktree fix "descrição"continua funcionando como hoje (argumento sanitizado → mensagem auto-enviada)pnpm worktree fix --auto(sem argumento) lança erro alto explicando que--autoexige um bag- Testes unitários atualizados cobrem o novo comportamento
Dados (intenção)
- Vou apresentar dados? N/A — feature de tooling interna, sem métrica de produto
- Decisões desbloqueadas: Executor — comportamento driverless do fix sem bag
- Forma: adiada ao plano de implementação
Dados da decisão (literais)
if (purpose === 'plan' && !sanitized) return null— padrão existente emscripts/lib/agent-session.mjs:212- Nova linha:
if (purpose === 'fix' && !sanitized) return null— posição imediatamente abaixo, antes doautocheck
Direção no codebase (hipótese)
- Áreas prováveis:
scripts/lib/agent-session.mjs(purposeInvocation),scripts/lib/worktree.mjs(assertSkillAutoSupported),tests/unit/agentSession.unit.spec.ts,tests/unit/worktree.unit.spec.ts - Precedente a olhar: OPS119 —
plansem bag driverless (linha 212 doagent-session.mjs) - Risco de acoplamento: Baixo — mudança pontual em lógica de sanitização de argumento, não toca collections/negócio
Dependências
- OPS119 (referência de padrão já implementado para
plan)
Fora de escopo
- Mudar comportamento de
plansem bag (já é driverless) - Alterar
newounext(fora do escopo desta issue)
Rabbit holes de produto
- Refatorar sanitização unificada. Se alguém "só completar" a limpeza: explosão de escopo. Corte neste item: adicionar apenas a linha
if (purpose === 'fix' && !sanitized) return null, sem refatorar o blocofix || plan.
Questões em aberto (produto)
- Nenhuma — comportamento espelhado do
planjá validado em produção (OPS119).
Referências
scripts/lib/agent-session.mjs:208-217—purposeInvocation, blocofix || planscripts/lib/worktree.mjs:142—assertSkillAutoSupported, lógica de--autotests/unit/agentSession.unit.spec.ts:243-252— testes defixcom/san bagtests/unit/worktree.unit.spec.ts:599-604— testes deassertSkillAutoSupportedAGENTS.md— convenção de sessões driverless (OPS119)