Skip to content

Criar o orq tui, o workspace Central e o plugin do Herdr orq #5 - #4

Merged
cedric-lamalle merged 3 commits into
mainfrom
TG-5
Oct 11, 2026
Merged

cedric-lamalle merged 3 commits into
mainfrom
TG-5

Conversation

@cedric-lamalle

Copy link
Copy Markdown
Member

US: https://agile.basis.com.br/project/orq/us/5

O que muda

  • orq tui [--coord X | --todos] (bubbletea + lipgloss, mouse): lê o mesmo snapshot do orq snapshot a cada 2 s (sem consultar as fontes) e desenha, por onda, o cabeçalho (coordenador · projeto — título [até: MR pronta] n/m done · k pend), as US (ícone do status Herdr, #ref com OSC 8 para o Taiga, título truncado, status/rodada com link https://orq.local/pane/<id>), as MRs coloridas por estado (draft vermelho, pronta verde, aberta neutra, mesclada cinza tachado, fechada roxo itálico, [IaC] laranja) e as pendências abertas. A US com pane blocked sobe e fica em destaque. Erro de fonte aparece discreto (* e rodapé) sem esconder o último valor bom; falha de leitura ou de foco vai para a linha de status e o TUI segue.
  • orq central abrir [--nome] [--sem-foco]: cria/reaproveita o workspace Central com um pane orq tui --coord X por coordenador com onda aberta. Idempotente pelo rótulo orq · <coord>; o pane de coordenador sem onda aberta é fechado; panes alheios não são tocados.
  • Plugin do Herdr (herdr-plugin.toml): build (scripts/build-plugin.sh, acha o go fora do PATH), startup orq daemon --detach, ações abrir-central, popup-todos, focar-pane, pane popup todos (85%×80%) e link handler ^https://orq\.local/pane/. Sem [[events]]: o daemon já assina pane.agent_status_changed no socket.
  • orq plugin configurar | desconfigurar | doctor: linhas $orq/$orq_mrs da sidebar e teclas (prefix+u popup, prefix+shift+u Central) no config.toml, preservando o texto, idempotente, com backup datado, herdr config check antes e depois e restauração se o check reprovar.
  • orq focar [<pane>|<url>] (a ação focar-pane), orq daemon --detach, orq.env no config-dir do plugin para ORQ_* das ações.
  • Menor da US Criar o orq tui, o workspace Central e o plugin do Herdr orq #5 #4: orq atualizar --output text passa a mostrar os avisos dos tokens.

Testes

gofmt -l . vazio, go vet ./... e go test -race ./... verdes. Novos: renderização do TUI (texto, truncamento, ordem com blocked no topo, estilos das MRs, OSC 8, texto de agente com controles), modelo sobrevivendo a leitura/foco com erro e pânico, edição do config.toml (idempotência, backup, restauração com check reprovado via herdr falso, tecla ocupada, formas multilinha/dotted), central abrir com herdr falso (criação, reaproveitamento, fechamento), roteamento orq.local/pane/<id>, orq.env, daemon --detach e o aviso no modo texto.

Validação ao vivo e roteiro de teste manual: relatório da rodada r1 do orquestrador.

@cedric-lamalle

Copy link
Copy Markdown
Member Author

Revisão qa-adversarial r1 da US orq #5: com achados no SHA 3ec61337fedb8d960829ee51c1c5bc600842cf6c. Um Sério, dois Menores; nenhuma aprovação ou alteração de código/story.

Sério — a Central não reabre o TUI após sair com q. Onde: internal/cli/central.go:255. Caso: criar uma onda aberta, executar central abrir, esperar a tela aparecer, sair com a tecla documentada q e repetir a abertura. Esperado: voltar a disponibilizar o TUI. Acontece: sucesso com acao: "mantido", mas somente o zsh permanece; o comando verifica apenas o rótulo orq · <coord>. Ocorre em: uso normal da Central na cedagente descrito no pacote. Executei no Herdr real, em workspace/estado temporários, e confirmei com pane read e pane process-info o orq tui antes de q e apenas o shell após reabrir. Esse achado precisa de correção antes do merge.

Menores, reproduzidos com herdr config check real em variações de uma cópia do config:

  • internal/herdrcfg/herdrcfg.go:277: desconfigurar apaga um [[keys.command]] manual command="orq.popup-todos" mesmo sem # orq:. Configurar preserva essa tecla, mas desconfigurar a remove; deveria retirar apenas o que acrescentou.
  • internal/herdrcfg/herdrcfg.go:155: um comentário dentro de rows multilinha desaparece porque o array inteiro é reserializado. O config resultante é válido, mas a preservação de comentários declarada não se cumpre.

Ocorre em: nenhum ambiente nosso confirmado para essas duas variações; não estão no config atual do Cedric. Por isso são Menores e não exigem rodada por si sós.

O que tentei e não quebrou: build, vet, race e gofmt passaram; CI 38157263829 conferido no mesmo SHA, success. Config real copiado: idempotência e retorno byte a byte após desconfigurar. Check reprovado restaurou backup. Build com PATH mínimo encontrou Go do linuxbrew. Oito chamadas simultâneas de detach convergiram para um daemon com sessão própria. Central com dois TUIs ativos não duplicou panes e preservou shell alheio ao orq ao fechar uma onda. TUI em PTY sobreviveu a subprocesso ausente e erro real de leitura do snapshot, sanitizou controles e saiu com q. Testes conferiram estilos, OSC 8 e roteamento de URLs. Startup verdadeiro e clique humano remoto não foram repetidos; não reiniciei o Herdr nem instalei o plugin.

Relatório e evidências locais: /home/cedric/tmp/orquestrador/orq/TG-5/revisao/r1/relatorio.md. Worktree e config real intactos; recursos de teste encerrados.

@cedric-lamalle

Copy link
Copy Markdown
Member Author

Revisão qa-adversarial r2, somente delta 3ec6133..5bc1e3b: aprovada com Menores, sem Bloqueante/Sério demonstrado. Não executei aprovação pela API nem merge.

S1, M1 e M2 confirmados corrigidos, reexecutando as reproduções da r1:

  • No Herdr real, sair com q e reabrir relança o TUI no mesmo pane, com detalhe: null. A próxima chamada retorna mantido.
  • A tecla manual orq.popup-todos, sem # orq:, permanece após configurar/desconfigurar; retorno byte a byte ao arquivo original.
  • O comentário dentro de rows multilinha permanece; retorno byte a byte na reprodução M2.

Menores do delta, todos em casos construídos, sem consumidor real identificado — não abrem r3:

  1. internal/cli/central.go:382: ehTUI confere argumentos, sem verificar executável. Um Python de teste esperando 300 s, chamado com tui --coord qa-r2, foi considerado mantido; depois de encerrar a onda, seu pane foi fechado. Deveria permanecer ocupado.
  2. internal/cli/central.go:375: um zsh executando o builtin read mantém grupo em primeiro plano igual ao PID do shell, sendo tratado como ocioso. O relançamento é enviado como entrada do read, e o TUI não aparece; capturei a linha consumida e o detalhe após 5 s.
  3. internal/herdrcfg/lexer.go:370: rows = [["agent"], ] volta como rows = [["agent"] ] após configurar/desconfigurar. Só a vírgula final preexistente se perde; o significado e a validade permanecem.

O que tentei e não quebrou: build, vet, race e gofmt locais passaram. CI 38158586393 conferido no SHA completo 5bc1e3b62cc48a548e37ce6845d4617166b1c575, success. sleep 300 comum é preservado com/sem onda; ao voltar ao shell, o pane sem onda fecha. Lançamento provocado com /bin/false produziu detalhe após 5,25 s e a próxima chamada recuperou o TUI. Matriz textual preservou arquivo real, tecla manual, comentários, CRLF, arrays vazios/multilinha, vírgula em linha separada e tokens do usuário com estilo/linha compartilhada; só a variante inline acima diferiu.

Relatório e evidências: /home/cedric/tmp/orquestrador/orq/TG-5/revisao/r2/relatorio.md. Worktree/config real intactos; testes somente em estado/workspaces temporários, já encerrados. Nenhuma pendência da pessoa aberta.

@cedric-lamalle
cedric-lamalle merged commit 700a232 into main Oct 11, 2026
1 check passed
@cedric-lamalle
cedric-lamalle deleted the TG-5 branch October 11, 2026 18:27
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