@orkastery/cli 0.5.3 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/adapters/claude-code/README.md +158 -0
  2. package/adapters/claude-code/mods/autoridade.json +56 -0
  3. package/adapters/claude-code/mods/ork-clima/.claude-plugin/plugin.json +14 -0
  4. package/adapters/claude-code/mods/ork-clima/hooks/contas.ts +283 -0
  5. package/adapters/claude-code/mods/ork-clima/hooks/hooks.json +3 -0
  6. package/adapters/claude-code/mods/ork-clima/hooks/previsao.ts +393 -0
  7. package/adapters/claude-code/mods/ork-clima/hooks/register.ts +205 -0
  8. package/adapters/claude-code/mods/ork-clima/orkastery-mod.json +5 -0
  9. package/adapters/claude-code/mods/ork-clima/types/index.d.ts +80 -0
  10. package/adapters/claude-code/mods/ork-freio/.claude-plugin/plugin.json +14 -0
  11. package/adapters/claude-code/mods/ork-freio/hooks/carga.ts +160 -0
  12. package/adapters/claude-code/mods/ork-freio/hooks/conferencia.ts +309 -0
  13. package/adapters/claude-code/mods/ork-freio/hooks/hooks.json +3 -0
  14. package/adapters/claude-code/mods/ork-freio/hooks/lote.ts +270 -0
  15. package/adapters/claude-code/mods/ork-freio/hooks/register.ts +285 -0
  16. package/adapters/claude-code/mods/ork-freio/orkastery-mod.json +5 -0
  17. package/adapters/claude-code/mods/ork-freio/types/index.d.ts +127 -0
  18. package/adapters/claude-code/mods/ork-mesa/.claude-plugin/plugin.json +14 -0
  19. package/adapters/claude-code/mods/ork-mesa/hooks/cartoes.tsx +246 -0
  20. package/adapters/claude-code/mods/ork-mesa/hooks/decidir.ts +110 -0
  21. package/adapters/claude-code/mods/ork-mesa/hooks/fila.ts +253 -0
  22. package/adapters/claude-code/mods/ork-mesa/hooks/hooks.json +3 -0
  23. package/adapters/claude-code/mods/ork-mesa/hooks/obvia.ts +98 -0
  24. package/adapters/claude-code/mods/ork-mesa/hooks/register.tsx +493 -0
  25. package/adapters/claude-code/mods/ork-mesa/orkastery-mod.json +5 -0
  26. package/adapters/claude-code/mods/ork-mesa/types/index.d.ts +131 -0
  27. package/adapters/claude-code/mods/ork-pista/.claude-plugin/plugin.json +14 -0
  28. package/adapters/claude-code/mods/ork-pista/hooks/acoes.ts +71 -0
  29. package/adapters/claude-code/mods/ork-pista/hooks/ci.ts +117 -0
  30. package/adapters/claude-code/mods/ork-pista/hooks/hooks.json +3 -0
  31. package/adapters/claude-code/mods/ork-pista/hooks/pista.tsx +356 -0
  32. package/adapters/claude-code/mods/ork-pista/hooks/register.tsx +439 -0
  33. package/adapters/claude-code/mods/ork-pista/orkastery-mod.json +5 -0
  34. package/adapters/claude-code/mods/ork-pista/types/index.d.ts +85 -0
  35. package/adapters/claude-code/mods/ork-ponte/.claude-plugin/plugin.json +13 -0
  36. package/adapters/claude-code/mods/ork-ponte/hooks/faixa.tsx +57 -0
  37. package/adapters/claude-code/mods/ork-ponte/hooks/guarda.ts +410 -0
  38. package/adapters/claude-code/mods/ork-ponte/hooks/hooks.json +3 -0
  39. package/adapters/claude-code/mods/ork-ponte/hooks/mostrado.ts +55 -0
  40. package/adapters/claude-code/mods/ork-ponte/hooks/nucleo.ts +157 -0
  41. package/adapters/claude-code/mods/ork-ponte/hooks/papel.ts +42 -0
  42. package/adapters/claude-code/mods/ork-ponte/hooks/register.ts +331 -0
  43. package/adapters/claude-code/mods/ork-ponte/hooks/vigia.ts +76 -0
  44. package/adapters/claude-code/mods/ork-ponte/orkastery-mod.json +5 -0
  45. package/adapters/claude-code/mods/ork-ponte/types/index.d.ts +178 -0
  46. package/adapters/claude-code/mods/ork-portao/.claude-plugin/plugin.json +14 -0
  47. package/adapters/claude-code/mods/ork-portao/hooks/hooks.json +3 -0
  48. package/adapters/claude-code/mods/ork-portao/hooks/lease.ts +201 -0
  49. package/adapters/claude-code/mods/ork-portao/hooks/plano.ts +304 -0
  50. package/adapters/claude-code/mods/ork-portao/hooks/register.ts +339 -0
  51. package/adapters/claude-code/mods/ork-portao/hooks/verify.ts +152 -0
  52. package/adapters/claude-code/mods/ork-portao/orkastery-mod.json +5 -0
  53. package/adapters/claude-code/mods/ork-portao/types/index.d.ts +60 -0
  54. package/adapters/claude-code/mods/ork-radar/.claude-plugin/plugin.json +14 -0
  55. package/adapters/claude-code/mods/ork-radar/hooks/colisao.ts +420 -0
  56. package/adapters/claude-code/mods/ork-radar/hooks/hooks.json +3 -0
  57. package/adapters/claude-code/mods/ork-radar/hooks/mapa.tsx +322 -0
  58. package/adapters/claude-code/mods/ork-radar/hooks/register.tsx +470 -0
  59. package/adapters/claude-code/mods/ork-radar/orkastery-mod.json +5 -0
  60. package/adapters/claude-code/mods/ork-radar/types/index.d.ts +72 -0
  61. package/adapters/claude-code/mods/ork-sentinela/.claude-plugin/plugin.json +14 -0
  62. package/adapters/claude-code/mods/ork-sentinela/hooks/alertas.ts +85 -0
  63. package/adapters/claude-code/mods/ork-sentinela/hooks/despacho.ts +156 -0
  64. package/adapters/claude-code/mods/ork-sentinela/hooks/hooks.json +3 -0
  65. package/adapters/claude-code/mods/ork-sentinela/hooks/register.ts +511 -0
  66. package/adapters/claude-code/mods/ork-sentinela/hooks/vigia.ts +186 -0
  67. package/adapters/claude-code/mods/ork-sentinela/orkastery-mod.json +5 -0
  68. package/adapters/claude-code/mods/ork-sentinela/types/index.d.ts +65 -0
  69. package/adapters/claude-code/mods/ork-torre/.claude-plugin/plugin.json +14 -0
  70. package/adapters/claude-code/mods/ork-torre/hooks/agenda.ts +60 -0
  71. package/adapters/claude-code/mods/ork-torre/hooks/detalhe.tsx +236 -0
  72. package/adapters/claude-code/mods/ork-torre/hooks/frases.ts +42 -0
  73. package/adapters/claude-code/mods/ork-torre/hooks/hooks.json +3 -0
  74. package/adapters/claude-code/mods/ork-torre/hooks/painel.tsx +344 -0
  75. package/adapters/claude-code/mods/ork-torre/hooks/rede.ts +97 -0
  76. package/adapters/claude-code/mods/ork-torre/hooks/register.tsx +437 -0
  77. package/adapters/claude-code/mods/ork-torre/orkastery-mod.json +5 -0
  78. package/adapters/claude-code/mods/ork-torre/types/index.d.ts +108 -0
  79. package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +1 -1
  80. package/adapters/openclaw/README.md +2 -1
  81. package/adapters/openclaw/openclaw.plugin.json +1 -1
  82. package/adapters/openclaw/package.json +1 -1
  83. package/assets/docs-en/markdownlint-cli2.jsonc +22 -0
  84. package/assets/docs-en/padroes/documentacao-de-produto.md +135 -0
  85. package/assets/docs-en/padroes/roadmap-de-produto.md +100 -0
  86. package/assets/docs-en/produto/README.md +14 -0
  87. package/assets/docs-en/produto/_modelo-feature.md +62 -0
  88. package/assets/docs-en/roadmap/README.md +14 -0
  89. package/assets/docs-en/roadmap/_modelo-item.md +75 -0
  90. package/dist/adapters/claude-bg.js +77 -13
  91. package/dist/adapters/codex.js +10 -1
  92. package/dist/agents-md.js +24 -15
  93. package/dist/auditrun.js +17 -2
  94. package/dist/board.js +4 -3
  95. package/dist/branch-de-estado.js +23 -1
  96. package/dist/catalogo.js +33 -0
  97. package/dist/ci.js +13 -7
  98. package/dist/claims-conferir.js +342 -0
  99. package/dist/claims.js +3 -1
  100. package/dist/company-brain-client.js +36 -1
  101. package/dist/company-brain-journal.js +2 -1
  102. package/dist/company-brain-migration.js +36 -1
  103. package/dist/conducao-sentinela.js +388 -0
  104. package/dist/conducao-texto.js +12 -18
  105. package/dist/conducao.js +122 -30
  106. package/dist/conhecimento.js +490 -0
  107. package/dist/docs.js +22 -8
  108. package/dist/doctor-pulse-cron.js +182 -27
  109. package/dist/doctor-rede.js +18 -17
  110. package/dist/doctor.js +115 -111
  111. package/dist/entrega-pr.js +22 -21
  112. package/dist/escopo-escrita.js +10 -1
  113. package/dist/estado-thread.js +23 -1
  114. package/dist/experiencia-instalacao.js +45 -25
  115. package/dist/fabrica-batida.js +310 -0
  116. package/dist/fabrica-estado.js +38 -8
  117. package/dist/fabrica-publicar.js +3 -1
  118. package/dist/fila-pesada.js +444 -0
  119. package/dist/fix.js +3 -2
  120. package/dist/forja.js +1 -1
  121. package/dist/gates.js +3 -28
  122. package/dist/handoff.js +10 -6
  123. package/dist/hitl-local-receipt.js +2 -0
  124. package/dist/hitl-resumo.js +29 -3
  125. package/dist/hitl-tempo-parado.js +4 -4
  126. package/dist/hitl.js +29 -33
  127. package/dist/horario.js +14 -7
  128. package/dist/hosts.js +52 -1
  129. package/dist/impedimento.js +108 -14
  130. package/dist/index.js +623 -521
  131. package/dist/indice.js +7 -1
  132. package/dist/init.js +43 -47
  133. package/dist/instabilidade.js +144 -0
  134. package/dist/integracoes-locais.js +2 -0
  135. package/dist/intelligence-graph-cli.js +92 -21
  136. package/dist/intelligence-graph-contexto.js +56 -17
  137. package/dist/intelligence-graph-contract.js +2 -1
  138. package/dist/intelligence-graph-extract-md.js +56 -4
  139. package/dist/intelligence-graph-extract-ts.js +71 -3
  140. package/dist/intelligence-graph-query.js +66 -19
  141. package/dist/ledger.js +15 -1
  142. package/dist/liveness.js +6 -3
  143. package/dist/locale-ajuda.js +761 -0
  144. package/dist/locale-gerados.js +160 -0
  145. package/dist/locale-master.js +99 -0
  146. package/dist/locale-onboarding.js +92 -0
  147. package/dist/locale-phase.js +151 -0
  148. package/dist/locale-pulse.js +211 -0
  149. package/dist/locale-retry.js +385 -0
  150. package/dist/locale-roadmap.js +102 -0
  151. package/dist/locale-ship.js +494 -0
  152. package/dist/locale-thread.js +277 -0
  153. package/dist/locale-verify.js +125 -0
  154. package/dist/locale.js +714 -0
  155. package/dist/manifest.js +129 -3
  156. package/dist/maquina.js +23 -4
  157. package/dist/master-digest.js +6 -1
  158. package/dist/master-nota.js +4 -6
  159. package/dist/master.js +21 -24
  160. package/dist/mcp-artifacts.js +11 -2
  161. package/dist/mcp-git.js +23 -6
  162. package/dist/mcp-grafo.js +7 -4
  163. package/dist/mcp-server.js +8 -2
  164. package/dist/mcp-ship.js +3 -1
  165. package/dist/mcp-verify.js +6 -1
  166. package/dist/modos.js +3 -6
  167. package/dist/network-roadmap.js +5 -2
  168. package/dist/noctum-arco.js +911 -0
  169. package/dist/noctum-capacidade.js +141 -0
  170. package/dist/noctum-envelope.js +810 -0
  171. package/dist/noctum-execucao.js +304 -0
  172. package/dist/noctum-fila.js +280 -0
  173. package/dist/ocupacao.js +29 -2
  174. package/dist/onboarding.js +40 -21
  175. package/dist/orkmind.js +9 -2
  176. package/dist/orquestracao.js +13 -12
  177. package/dist/parado-no-condutor.js +34 -9
  178. package/dist/phase.js +94 -39
  179. package/dist/policies.js +4 -4
  180. package/dist/portfolio.js +4 -2
  181. package/dist/postura-local.js +234 -0
  182. package/dist/preflight.js +11 -10
  183. package/dist/procedencia.js +225 -0
  184. package/dist/projeto-alvo.js +127 -4
  185. package/dist/prompts.js +6 -2
  186. package/dist/pulse-delivery.js +13 -2
  187. package/dist/pulse.js +52 -19
  188. package/dist/ratelimit.js +4 -2
  189. package/dist/redacao-saida.js +63 -0
  190. package/dist/rede-status.js +3 -2
  191. package/dist/retry.js +232 -148
  192. package/dist/roadmap-reservas.js +20 -3
  193. package/dist/roadmap-status.js +129 -33
  194. package/dist/runtime-context.js +181 -3
  195. package/dist/runtimes.js +2 -1
  196. package/dist/session-events.js +7 -3
  197. package/dist/session-watcher-claude.js +7 -1
  198. package/dist/session-watcher.js +185 -33
  199. package/dist/sessoes-contas.js +1 -1
  200. package/dist/ship-publicar.js +800 -0
  201. package/dist/ship.js +84 -81
  202. package/dist/steal.js +77 -0
  203. package/dist/thread-close.js +3 -2
  204. package/dist/thread.js +153 -82
  205. package/dist/util.js +8 -1
  206. package/dist/verify.js +141 -52
  207. package/dist/vida-da-thread.js +254 -0
  208. package/dist/worktree-local.js +165 -0
  209. package/dist/worktree.js +20 -0
  210. package/dist/yaml.js +27 -8
  211. package/package.json +1 -1
  212. package/schemas/code-artifact-graph.v1.schema.json +2 -1
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * RM-061, fatia F2b: a familia `roadmap` do catalogo de mensagens (`ork roadmap status` em texto; o `--json`
4
+ * nao muda). O pt-BR e a fonte; o ingles e tipado por ele. Sem import do nucleo.
5
+ *
6
+ * Sai como veio: o titulo e o que esta em aberto de cada item (dado do `docs/roadmap`), a pergunta que espera
7
+ * o dono (dado do pedido HITL), o estado e o proximo passo da entrega (familia de entregas, G5) e o bloco
8
+ * `Projeto consultado:` / `Não lido:` do RM-052, que os hosts leem e fica igual nas duas linguas (D14 da F2a).
9
+ * O titulo do grupo e dado do contrato e so se traduz na impressao, pelo id. Data em ingles em ISO (D2 da RM-061).
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ROADMAP_EN = exports.ROADMAP_PT_BR = void 0;
13
+ exports.ROADMAP_PT_BR = {
14
+ titulo: (projeto, p) => `Roadmap do ${projeto} (${p.dia}/${p.mes}, ${p.hora}:${p.minuto})`,
15
+ /** O titulo de cada grupo pelo id (o `--json` guarda o titulo pt-BR). */
16
+ grupos: { concluidos: 'Concluídos', disponiveis: 'Disponíveis com algo em aberto', hoje: 'Entregue hoje', piloto: 'Piloto',
17
+ desenvolvimento: 'Em desenvolvimento', refinamento: 'Refinamento', proposto: 'Proposto', descontinuado: 'Descontinuado' },
18
+ eMais: (n) => `• e mais ${n}`,
19
+ precisaDeVoce: 'O que precisa de você',
20
+ responda: (codigo, letra) => ` Responda ${codigo} ${letra} (ou outra letra).`,
21
+ chegaNoResumo: ' A pergunta chega no próximo resumo.',
22
+ nadaAgora: '• Nada agora.',
23
+ foraDoRoadmap: (n) => `• Fora do roadmap: ${n} thread(s) esperam você (ork pulse).`,
24
+ hitlDeConducao: (abertas, mediana) => `• HITL de condução: ${abertas} aberta(s); ${mediana}.`,
25
+ emSeguida: 'O que eu faço em seguida',
26
+ nadaEmAndamento: '• Nada em andamento; sigo o que você priorizar.',
27
+ prLido: (hora) => ` (PR lido às ${hora})`,
28
+ sigoComEstado: (item, thread, fase, maquina, estado, leitura) => `• ${item}: sigo ${thread} na fase ${fase}${maquina}; ${estado}${leitura}.`,
29
+ comEstado: (item, thread, fase, maquina, estado, leitura) => `• ${item}: ${thread} na fase ${fase}${maquina}, ${estado}${leitura}.`,
30
+ sigo: (item, thread, fase, maquina) => `• ${item}: sigo ${thread} na fase ${fase}${maquina}.`,
31
+ /** RM-063 (F2): a thread sem sessao viva verificada no runtime: desde quando e por que (o estado da entrega, quando ha). */
32
+ parada: (item, thread, maquina, desde, motivo, estado) => `• ${item}: ${thread}${maquina} parada${desde ? ` desde ${desde}` : ''}: ${motivo}${estado ? `; ${estado}` : ''}.`,
33
+ semSessaoVerificada: (item, thread, fase, maquina) => `• ${item}: ${thread} na fase ${fase}${maquina}, sem sessão verificada no runtime.`,
34
+ /** RM-063 (F2): a fila do `ork pulse` no fecho. */
35
+ filaNaoLida: (detalhe) => `• Fila do pulse não lida inteira${detalhe ? ` (${detalhe})` : ''}: confira com ork pulse.`,
36
+ responder: (comando) => ` Responder: ${comando}`,
37
+ sessaoSemThread: (id) => `sessão ${id}`,
38
+ /** RM-063 (F2): por que a thread parou, pelo tipo; o detalhe e dado (o ledger, o runtime). */
39
+ motivoDaParada: {
40
+ nenhumaSessao: (fase) => `nenhuma sessão despachada na fase ${fase}`,
41
+ despachoFalhou: (fase, detalhe) => `despacho${fase ? ` de ${fase}` : ''} falhou (${detalhe})`,
42
+ sessaoCaiu: (sessao, motivo) => `sessão ${sessao} caiu (${motivo})`,
43
+ runtimeSemResposta: (runtime, detalhe, sessao) => `runtime ${runtime} sem resposta${detalhe ? ` (${detalhe})` : ''}; a sessão ${sessao} não foi verificada`,
44
+ naoAparece: (sessao) => `sessão ${sessao} não aparece no runtime`,
45
+ fantasma: (sessao) => `sessão ${sessao} sem processo (fantasma)`,
46
+ encerrada: (sessao, estado) => `sessão ${sessao} encerrada (${estado})`,
47
+ naoLida: (detalhe) => `vida da sessão não lida (${detalhe})`,
48
+ semAtividade: (sessao, minutos) => `sessão ${sessao} sem atividade no rollout há ${minutos} min`,
49
+ retratoVelho: (minutos) => `retrato da máquina sem atualização há ${minutos} min; a sessão não foi reverificada`,
50
+ },
51
+ fabricaNaoLida: (motivo) => `Fábrica: não lido (${motivo}).`,
52
+ fabricaSemCopia: (branch) => `esta máquina não tem cópia local de ${branch}`,
53
+ fabricaClone: (branch) => `clone parcial: a cópia local de ${branch} não é lida sem rede`,
54
+ fabricaIlegivel: (branch) => `a cópia local de ${branch} está ilegível`,
55
+ fabricaVelha: (branch, ultimo) => `Fábrica: a cópia local de ${branch} está velha (${ultimo
56
+ ? `esta máquina publicou nela por último em ${ultimo}` : 'esta máquina não aparece nela'}); não dá para dizer quem está sem batida.`,
57
+ semBatida: (maquina, idade, retrato) => `${maquina} sem batida há ${idade} (último retrato ${retrato})`,
58
+ fabricaSemBatida: (maquinas, branch) => `Fábrica: ${maquinas}, pela cópia local de ${branch}.`,
59
+ };
60
+ exports.ROADMAP_EN = {
61
+ titulo: (projeto, p) => `${projeto} roadmap (${p.ano}-${p.mes}-${p.dia} ${p.hora}:${p.minuto})`,
62
+ grupos: { concluidos: 'Done', disponiveis: 'Available with something open', hoje: 'Shipped today', piloto: 'Pilot',
63
+ desenvolvimento: 'In development', refinamento: 'Refinement', proposto: 'Proposed', descontinuado: 'Discontinued' },
64
+ eMais: (n) => `• and ${n} more`,
65
+ precisaDeVoce: 'What needs you',
66
+ responda: (codigo, letra) => ` Reply ${codigo} ${letra} (or another letter).`,
67
+ chegaNoResumo: ' The question comes in the next summary.',
68
+ nadaAgora: '• Nothing right now.',
69
+ foraDoRoadmap: (n) => `• Outside the roadmap: ${n} thread(s) waiting for you (\`ork pulse\`).`,
70
+ hitlDeConducao: (abertas, mediana) => `• Conduction HITL: ${abertas} open; ${mediana}.`,
71
+ emSeguida: 'What I do next',
72
+ nadaEmAndamento: '• Nothing in progress; next is whatever you prioritize.',
73
+ prLido: (hora) => ` (PR read at ${hora})`,
74
+ sigoComEstado: (item, thread, fase, maquina, estado, leitura) => `• ${item}: I continue with ${thread} in phase ${fase}${maquina}; ${estado}${leitura}.`,
75
+ comEstado: (item, thread, fase, maquina, estado, leitura) => `• ${item}: ${thread} in phase ${fase}${maquina}, ${estado}${leitura}.`,
76
+ sigo: (item, thread, fase, maquina) => `• ${item}: I continue with ${thread} in phase ${fase}${maquina}.`,
77
+ parada: (item, thread, maquina, desde, motivo, estado) => `• ${item}: ${thread}${maquina} stopped${desde ? ` since ${desde}` : ''}: ${motivo}${estado ? `; ${estado}` : ''}.`,
78
+ semSessaoVerificada: (item, thread, fase, maquina) => `• ${item}: ${thread} in phase ${fase}${maquina}, no session verified in the runtime.`,
79
+ filaNaoLida: (detalhe) => `• Pulse queue not fully read${detalhe ? ` (${detalhe})` : ''}: check \`ork pulse\`.`,
80
+ responder: (comando) => ` Reply: ${comando}`,
81
+ sessaoSemThread: (id) => `session ${id}`,
82
+ motivoDaParada: {
83
+ nenhumaSessao: (fase) => `no session dispatched in phase ${fase}`,
84
+ despachoFalhou: (fase, detalhe) => `dispatch${fase ? ` of ${fase}` : ''} failed (${detalhe})`,
85
+ sessaoCaiu: (sessao, motivo) => `session ${sessao} went down (${motivo})`,
86
+ runtimeSemResposta: (runtime, detalhe, sessao) => `runtime ${runtime} not responding${detalhe ? ` (${detalhe})` : ''}; session ${sessao} was not verified`,
87
+ naoAparece: (sessao) => `session ${sessao} does not appear in the runtime`,
88
+ fantasma: (sessao) => `session ${sessao} with no process (ghost)`,
89
+ encerrada: (sessao, estado) => `session ${sessao} ended (${estado})`,
90
+ naoLida: (detalhe) => `session liveness not read (${detalhe})`,
91
+ semAtividade: (sessao, minutos) => `session ${sessao} with no rollout activity for ${minutos} min`,
92
+ retratoVelho: (minutos) => `machine snapshot not updated for ${minutos} min; the session was not re-verified`,
93
+ },
94
+ fabricaNaoLida: (motivo) => `Factory: not read (${motivo}).`,
95
+ fabricaSemCopia: (branch) => `this machine has no local copy of ${branch}`,
96
+ fabricaClone: (branch) => `partial clone: the local copy of ${branch} is not read without network`,
97
+ fabricaIlegivel: (branch) => `the local copy of ${branch} is unreadable`,
98
+ fabricaVelha: (branch, ultimo) => `Factory: the local copy of ${branch} is stale (${ultimo
99
+ ? `this machine last published to it at ${ultimo}` : 'this machine does not appear in it'}); there is no telling which machine has no heartbeat.`,
100
+ semBatida: (maquina, idade, retrato) => `${maquina} with no heartbeat for ${idade} (last snapshot ${retrato})`,
101
+ fabricaSemBatida: (maquinas, branch) => `Factory: ${maquinas}, from the local copy of ${branch}.`,
102
+ };
@@ -0,0 +1,494 @@
1
+ "use strict";
2
+ /**
3
+ * RM-061, fatia F2b: a familia `ship` do catalogo de mensagens (`ork ship` e `ork ship registrar-pr`). O
4
+ * pt-BR e a fonte; o ingles e tipado por ele. Sem import do nucleo.
5
+ *
6
+ * O detalhe e a correcao de um bloqueio, a razao da autorizacao, os passos do ensaio e o motivo do
7
+ * `registrar-pr` vao ao ledger ou ao `--json`: o comando os monta em pt-BR, e so a impressao os remonta no
8
+ * locale (G2 da F2b). Comando, branch, sha e motivo tipado saem iguais nas duas linguas; a mensagem de
9
+ * merge do git e o que so o ledger le seguem em pt-BR fora do catalogo.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SHIP_EN = exports.SHIP_PT_BR = void 0;
13
+ exports.SHIP_PT_BR = {
14
+ uso: 'uso: ork ship <thread-id> --para <branch> [--de <branch>] [--dry-run]',
15
+ // textoDoShip
16
+ cabecalho: (dryRun, thread) => `${dryRun ? 'ork ship (--dry-run, nada foi executado)' : 'ork ship'}: thread ${thread}`,
17
+ de: (branch, sha) => ` de ${branch}${sha ? ` @ ${sha}` : ''}`,
18
+ para: (branch, sha) => ` para ${branch}${sha ? ` @ ${sha}` : ''}`,
19
+ autorizado: (por, tipo) => ` autorizacao AUTORIZADO por ${por} (${tipo})`,
20
+ /** O tipo da autorizacao e dado (ledger, --json); o texto so o traduz na impressao. */
21
+ tiposDeAutorizacao: { 'modo': 'modo', 'humano-no-cli': 'humano-no-cli', 'humano-antecipado': 'humano-antecipado',
22
+ 'pendente': 'pendente' },
23
+ aguardandoAutorizacao: ' autorizacao AGUARDANDO AUTORIZACAO HUMANA',
24
+ razao: (razao) => ` ${razao}`,
25
+ verificacao: (ok, sha, claimsOk, claims, comandosOk, comandos) => ` verificacao ${ok ? 'passou' : 'REPROVOU'} no HEAD ${sha} (${claimsOk}/${claims} claims, ${comandosOk}/${comandos} comandos)`,
26
+ ciExigido: (estado, contexto, sha) => ` ci ${estado} ${contexto} em ${sha}`,
27
+ ciNaoExigido: ' ci não exigido',
28
+ leaseOcupado: (lease, thread, desde) => ` lease ${lease} OCUPADO pela thread ${thread} (desde ${desde})`,
29
+ leaseTomado: (lease, thread) => ` lease ${lease} tomado por ${thread} e liberado ao fim`,
30
+ leaseLivre: (lease) => ` lease ${lease} livre`,
31
+ bloqueado: (motivo) => `BLOQUEADO. motivo tipado: ${motivo}`,
32
+ detalhe: (detalhe) => ` detalhe ${detalhe}`,
33
+ correcao: (correcao) => ` correcao ${correcao}`,
34
+ passosDoEnsaio: 'Passos que o ship real executaria, nesta ordem:',
35
+ nadaAMergear: (de, para, sha) => `Nada a mergear: ${de} ja estava em ${para}, incorporado em ${sha}.`,
36
+ mergeConcluido: (sha) => `Merge --no-ff concluido: ${sha}`,
37
+ pushProvado: (remoto, para, sha) => `Push PROVADO: ls-remote de ${remoto}/${para} devolveu ${sha}`,
38
+ mesmoSha: (sha) => ` e o destino local esta no mesmo sha: ${sha}`,
39
+ pushNaoProvado: (detalhe) => `Push nao provado: ${detalhe}`,
40
+ semRemotoConfigurado: 'sem remoto configurado',
41
+ evidencia: 'Evidencia (comandos executados):',
42
+ ledger: (thread) => `Ledger: ork phase list ${thread} (evento ship_done)`,
43
+ // Autorizacao (vai ao ledger como dado do ship)
44
+ autorizadoNaLinha: (tag) => `pausa de push do modo ${tag} autorizada na linha de comando`,
45
+ porTag: (tag) => `#TAG ${tag} no pedido do builder`,
46
+ autorizadoPeloModo: (tag) => `o modo ${tag} entrega dentro de um bloco sem pausa: a #TAG e a autorizacao previa`,
47
+ autorizadoAntes: (quando) => `autorizacao antecipada de push registrada no ledger em ${quando}`,
48
+ semAutorizacao: (tag, thread) => `o modo ${tag} pausa no push e ainda nao ha autorizacao humana registrada. ` +
49
+ `Autorize na entrega: ork ship ${thread} --para <branch> --autorizar-push <quem>`,
50
+ // Bloqueios: detalhe e correcao (vao ao ledger)
51
+ verificacaoReprovou: (commit, motivos) => `verificacao reprovou no HEAD ${commit}: ${motivos}`,
52
+ rodeVerify: (thread) => 'rode `ork verify ' + thread + '` e corrija antes de entregar',
53
+ origemAusente: (de) => `branch de origem "${de}" nao existe neste repositorio`,
54
+ origemAusenteCorrecao: 'use --de <branch> ou crie a branch da thread',
55
+ destinoAusente: (para) => `branch de destino "${para}" nao existe neste repositorio`,
56
+ destinoAusenteCorrecao: 'crie a branch de destino ou informe outra em --para',
57
+ contratoPublico: (tocados) => `contrato publico em ciclo sem PLAN nem CHECK: ${tocados}`,
58
+ contratoPublicoCorrecao: 'refaca a mudanca numa thread #Classic, #Maestro ou #Auto',
59
+ ciReprovou: (detalhe, sha, contexto) => `${detalhe} (commit ${sha}, contexto ${contexto})`,
60
+ ciReprovouCorrecao: (contexto) => `publique a branch, aguarde o check ${contexto} verde no GitHub e repita o SHIP`,
61
+ arvoreDona: (dona, para, suja) => `${dona} (arvore que tem ${para} em check-out; ${suja ? 'SUJA, o ship reprovaria com tree.blocked' : 'limpa'})`,
62
+ arvoreTemporaria: (dir, para) => `worktree temporaria em ${dir} (ninguem tem ${para} em check-out)`,
63
+ arvoreDeMerge: (arvore) => `arvore de merge: ${arvore}`,
64
+ semPushPorFlag: 'push nao executado por --sem-push (merge local concluido)',
65
+ semRemoto: (remoto) => `remoto "${remoto}" nao configurado: merge local concluido, sem push a provar`,
66
+ passoSemPush: (motivo) => `sem push: ${motivo}`,
67
+ passoProvaDoPush: (remoto, para) => `git ls-remote ${remoto} refs/heads/${para} (prova do push)`,
68
+ passoMerge: (de) => `git merge --no-ff ${de} -m "<mensagem de ship>"`,
69
+ autorizeNaEntrega: (thread) => `ork ship ${thread} --para <branch> --autorizar-push <quem>`,
70
+ leaseComOutra: (lease, thread, desde, motivo, posicao) => `lease ${lease} esta com a thread ${thread} desde ${desde} (${motivo}); esta thread entrou na merge queue na posicao ${posicao}`,
71
+ desconhecida: '(desconhecida)',
72
+ semMotivo: 'sem motivo',
73
+ /** Quem autorizou o push antes, quando o ledger nao diz o nome. */
74
+ humano: 'humano',
75
+ arvoreSuja: (para, dona) => `a branch de destino "${para}" esta em check-out em ${dona} com alteracoes nao commitadas; commite ou reverta la antes do ship`,
76
+ arvoreNaoMontada: (para, erro) => `nao foi possivel montar a arvore de merge de "${para}": ${erro}`,
77
+ arvoreCorrecao: 'deixe a arvore da branch de destino limpa (ou libere a branch) e rode o ship de novo',
78
+ mergeFalhou: (de, para, erro) => `merge de ${de} em ${para} falhou: ${erro}`,
79
+ mergeFalhouCorrecao: 'resolva o conflito na branch da thread e rode o ship de novo',
80
+ headIlegivel: 'nao foi possivel ler o HEAD apos o merge',
81
+ confiraRepositorio: 'confira o repositorio',
82
+ naoAncestral: (de, merge) => `o commit de ${de} nao aparece como ancestral do merge ${merge}`,
83
+ naoEmpurre: 'nao empurre: investigue o estado do repositorio',
84
+ semPrimeiroPai: (de, para) => `${de} ja e ancestral de ${para}, mas o git nao achou o commit de primeiro pai que o incorporou`,
85
+ semPrimeiroPaiCorrecao: 'confira o repositorio: o ship_done precisa do merge que entregou a thread',
86
+ passoJaIncorporado: (de, para, sha) => `(nada a mergear: ${de} ja e ancestral de ${para}, incorporado em ${sha})`,
87
+ pushFalhou: (remoto, para, erro) => `push para ${remoto}/${para} falhou: ${erro}`,
88
+ pushFalhouCorrecao: 'resolva o acesso ao remoto e rode o ship de novo (o merge local ja aconteceu)',
89
+ pushSemProva: (sha, ponta) => `ls-remote devolveu ${sha ?? '(nada)'} e o destino local esta em ${ponta}: o push nao ficou provado`,
90
+ pushSemProvaCorrecao: 'rode o ship de novo e confira o remoto',
91
+ // ci.ts: o detalhe da consulta ao CI (vai ao ledger dentro da evidencia do ship)
92
+ ciNaoExigidoDetalhe: 'gate de CI não exigido pelo manifesto',
93
+ ciRemotoNaoGithub: (remoto) => `remoto ${remoto} não é um repositório GitHub reconhecível`,
94
+ ciConsultaFalhou: 'consulta ao GitHub falhou',
95
+ ciRespostaInvalida: 'GitHub devolveu uma resposta de checks inválida',
96
+ ciSemCheck: (contexto) => `check ${contexto} não encontrado no commit`,
97
+ ciVerde: 'CHECK independente verde no GitHub',
98
+ ciEstado: (contexto, status, conclusao) => `check ${contexto}: ${status}/${conclusao || 'sem conclusão'}`,
99
+ // ork ship registrar-pr
100
+ usoRegistrarPr: 'uso: ork ship registrar-pr <thread-id> [--repo <dono/nome> --pr <n>] | --todas [--remoto R] [--json] [--dry-run]',
101
+ ensaio: 'Ensaio (--dry-run): nada foi gravado.',
102
+ nenhumaComMerge: 'Nenhuma thread aberta com merge ship(<thread>) na base.',
103
+ linhaDoRegistro: (thread, acao, motivo) => ` ${thread.padEnd(20)} ${acao.padEnd(13)} ${motivo}`,
104
+ /** A acao e dado do `--json`; o texto so a traduz na impressao. */
105
+ acoes: { 'registrou': 'registrou', 'registraria': 'registraria', 'ja-registrada': 'ja-registrada', 'sem-merge': 'sem-merge',
106
+ 'recusada': 'recusada' },
107
+ avisoDeDocs: (n) => `Aviso: ${n} pagina(s) do roadmap com estado.codigo fora de "Mesclado" depois do merge; ` +
108
+ 'o push da base reprova em docs.paridade.merge:',
109
+ docPendente: (id, arquivo, merge, thread, codigo) => ` ${id} (${arquivo}): merge ${merge} de ship(${thread}), estado.codigo "${codigo || 'vazio'}"`,
110
+ docPendenteComando: (comando) => ` ${comando} (num PR de docs sobre a base atualizada)`,
111
+ registradas: (n) => `${n} entrega(s) registrada(s). Fechar pelo MASTER so a(s) desta entrega (a nota humana sobrescreve):`,
112
+ registrariam: (n) => `${n} entrega(s) seria(m) registrada(s). Para gravar, rode o mesmo comando sem --dry-run.`,
113
+ // entrega-pr.ts: o motivo de cada registro (sai no --json)
114
+ prThreadFechada: 'thread ja fechada',
115
+ prSemMerge: (thread, remoto, base) => `nenhum merge ship(${thread}) em ${remoto}/${base}`,
116
+ prJaTemShipDone: 'esta entrega ja tem ship_done',
117
+ prForaDaPonta: (merge, remoto, base) => `o merge ${merge} nao esta na ponta de ${remoto}/${base}`,
118
+ prSemCiVerde: (detalhe) => `sem CI verde no head do PR: ${detalhe}`,
119
+ prRegistraria: (merge) => `ensaio: registraria ship_done pelo merge ${merge} do PR (nada gravado)`,
120
+ prRegistrou: (merge) => `ship_done pelo merge ${merge} do PR`,
121
+ prRepoNaoDeclarado: (repo) => `o repositorio ${repo} nao esta declarado em ci.external_repositories do orkastery.yaml`,
122
+ prNumeroInvalido: (recebido) => `--pr precisa ser o numero do PR, recebido ${recebido}`,
123
+ prExternoJaTem: (n, repo) => `o PR #${n} de ${repo} ja tem ship_done`,
124
+ prConsultaFalhou: (n, repo) => `a consulta do PR #${n} de ${repo} ao GitHub falhou`,
125
+ prNaoMesclado: (n, repo) => `o PR #${n} de ${repo} nao esta mesclado`,
126
+ prNaoCitaThread: (n, repo, thread) => `o PR #${n} de ${repo} nao cita a thread ${thread} no titulo, no corpo nem na branch`,
127
+ prRepoFalhou: (repo) => `a consulta de ${repo} ao GitHub falhou`,
128
+ prOutraBase: (n, base, repo, padrao) => `o PR #${n} entrou em ${base}, e a branch padrao de ${repo} e ${padrao ?? 'desconhecida'}`,
129
+ prExternoForaDaPonta: (merge, repo, base) => `o merge ${merge} nao esta na ponta de ${repo}:${base}`,
130
+ prExternoRegistraria: (merge, n, repo) => `ensaio: registraria ship_done pelo merge ${merge} do PR #${n} de ${repo} (nada gravado)`,
131
+ prExternoRegistrou: (merge, n, repo) => `ship_done pelo merge ${merge} do PR #${n} de ${repo}`,
132
+ // RM-059 (F7, T7.1): `ork ship publicar` e `ork ship pista`. O detalhe, a correcao e o texto das etapas vao ao
133
+ // `--json` e ao ledger em pt-BR; a impressao os remonta no locale do comando.
134
+ publicar: {
135
+ uso: 'uso: ork ship publicar <thread-id> [--dry-run] [--remoto R] [--json]',
136
+ usoPista: 'uso: ork ship pista [<thread-id>] [--remoto R] [--json]',
137
+ semAutorizarPush: 'erro: ork ship publicar não aceita --autorizar-push: ele só publica no modo que já autoriza o push ' +
138
+ '(#Auto e #Maestro); nos outros modos, o push é do dono, no terminal dele',
139
+ cabecalho: (dryRun, thread, tag) => `${dryRun ? 'ork ship publicar (--dry-run, nada foi publicado nem gravado)' : 'ork ship publicar'}: thread ${thread} (${tag})`,
140
+ linhaBranch: (branch, sha) => ` branch ${branch} @ ${sha}`,
141
+ linhaRemoto: (remoto, antes, depois) => ` remoto ${remoto}: ${depois} (antes: ${antes})`,
142
+ linhaPushProvado: ' push PROVADO pelo ls-remote (mesmo sha do HEAD)',
143
+ linhaPushSemProva: ' push sem prova',
144
+ linhaPr: (n, criado, url) => ` PR #${n} ${criado ? 'aberto agora' : 'reaproveitado'}${url ? ` (${url})` : ''}`,
145
+ linhaCorpo: (corpo) => ` corpo do PR ${corpo}`,
146
+ resultado: (acao) => `${acao}.`,
147
+ acoes: { 'publicou': 'PUBLICADA', 'publicaria': 'PUBLICARIA', 'ja-publicada': 'JÁ PUBLICADA', 'recusada': 'RECUSADA' },
148
+ // As conferencias (detalhe e correcao vao ao --json)
149
+ threadInexistente: (thread, erro) => `a thread ${thread} não foi lida neste projeto: ${erro}`,
150
+ threadInexistenteCorrecao: 'confira o id da thread (ork thread status <thread>)',
151
+ threadFechada: (thread) => `a thread ${thread} está fechada; nada a publicar`,
152
+ threadFechadaCorrecao: 'a entrega nova vai numa thread nova',
153
+ modoSemPush: (tag) => `o modo ${tag} pede a autorização do dono para o push; o ork ship publicar só publica em #Auto e #Maestro`,
154
+ modoSemPushCorrecao: (comando) => `o dono publica do próprio terminal: ${comando}`,
155
+ conduzida: (sessao, fase) => `a sessão ${sessao} conduz a thread agora (fase ${fase}); a branch pode mudar no meio da publicação`,
156
+ conduzidaCorrecao: (thread) => `publique depois do fim do turno (ork conducao status ${thread})`,
157
+ semBranch: (branch) => `a branch ${branch} da thread não existe neste repositório`,
158
+ semBranchCorrecao: (thread) => `confira a worktree da thread (ork worktree ensure ${thread})`,
159
+ branchEBase: (base) => `a branch da thread é a base ${base}; publicar a base sem merge é o push direto que o ork ship barra`,
160
+ branchEBaseCorrecao: 'a entrega sai de uma branch de thread (ork/<thread>), nunca da base',
161
+ semProduto: (branch, base) => `a branch ${branch} não tem commit fora de ${base}; nada a publicar`,
162
+ semProdutoCorrecao: 'commite o trabalho da thread pela sessão de GO antes de publicar',
163
+ checkSemCiclo: (tag) => `o ciclo ${tag} não tem CHECK`,
164
+ checkAusente: 'o docs/check.md da thread ainda não foi gravado',
165
+ checkSemVeredito: 'o docs/check.md não tem exatamente um veredito',
166
+ checkOutroVeredito: (veredito) => `o veredito do CHECK é ${veredito}`,
167
+ checkVelho: (sha) => `o CHECK com PASSOU é anterior ao commit ${sha}`,
168
+ checkFeito: 'CHECK com veredito PASSOU depois do último commit de produto',
169
+ comandoDoCheck: (thread) => `ork phase run ${thread} CHECK --prompt "<pedido da fase>"`,
170
+ checkCorrecao: (thread) => `rode o CHECK da thread no HEAD e grave o veredito PASSOU (ork phase run ${thread} CHECK --prompt "<pedido da fase>")`,
171
+ verifyAusente: 'nenhum ork verify gravado na thread',
172
+ verifyReprovou: (sha, motivos) => `o último ork verify reprovou no commit ${sha} (${motivos})`,
173
+ verifyAntigo: (sha) => `o último ork verify verde foi no commit ${sha}, e o HEAD mudou depois dele além do bundle`,
174
+ verifyNoHead: (sha) => `ork verify verde no HEAD ${sha}`,
175
+ verifySoBundle: (sha) => `ork verify verde no commit ${sha}; depois dele, só o bundle`,
176
+ verifySoClaims: (sha) => `o último ork verify (commit ${sha}) rodou só as claims, sem o build e o test do manifesto`,
177
+ verifyCorrecao: (thread) => `rode ork verify ${thread} no HEAD e corrija antes de publicar`,
178
+ bundleAusente: (arquivo) => `o bundle ${arquivo} não está no HEAD`,
179
+ bundleInvalido: (arquivo) => `o bundle ${arquivo} no HEAD não abre como ork.ci-bundle/v1 desta thread`,
180
+ bundleOutraBranch: (arquivo, branch) => `o bundle ${arquivo} no HEAD é da branch ${branch}`,
181
+ bundleVelho: (faltam, sobram) => `o bundle no HEAD está velho` +
182
+ `${faltam ? `: faltam as claims ${faltam}` : ''}${sobram ? `${faltam ? ';' : ':'} sobram as claims ${sobram}` : ''}`,
183
+ bundleMudou: (ids) => `o bundle no HEAD está velho: o comando das claims ${ids} mudou depois dele`,
184
+ bundleManifestoMudou: 'o bundle no HEAD está velho: os comandos de verify do manifesto mudaram depois dele',
185
+ bundleFeito: (n) => `bundle no HEAD com as ${n} claims ativas e os comandos delas`,
186
+ bundleCorrecao: (thread) => `rode ork ci prepare ${thread} na worktree e commite o bundle como ci(${thread}): bundle`,
187
+ semRemoto: (remoto) => `o remoto ${remoto} não está configurado neste repositório`,
188
+ semRemotoCorrecao: 'configure o remoto (git remote add) ou informe outro em --remoto',
189
+ semForja: (remoto) => `o remoto ${remoto} não é um repositório do GitHub; o ork ship publicar abre PR só no GitHub`,
190
+ semForjaCorrecao: 'publique a branch e abra o pedido de merge pela forja do remoto',
191
+ lsRemoteFalhou: (remoto, erro) => `git ls-remote ${remoto} falhou: ${erro}`,
192
+ prsFalharam: (erro) => `a lista de PRs da branch falhou: ${erro}`,
193
+ redeCorrecao: 'confira a rede e o login do gh (gh auth status) e rode de novo',
194
+ jaPublicada: (n) => `a branch já está no remoto no HEAD e o PR #${n} está aberto; nada a fazer`,
195
+ jaMesclado: (n) => `o PR #${n} já foi mesclado no HEAD; nada a publicar`,
196
+ registreAEntrega: (thread) => `registre a entrega: ork ship registrar-pr ${thread}`,
197
+ remotoDivergiu: (remoto, branch, sha) => `o remoto ${remoto} tem a branch ${branch} em ${sha}, com commit que a branch local não tem`,
198
+ remotoDivergiuCorrecao: (remoto, branch) => `traga o remoto para a branch pela sessão de GO (git pull --no-rebase ${remoto} ${branch}) e publique de novo; nunca force`,
199
+ passoReaproveita: (n) => `reaproveita o PR #${n}, já aberto`,
200
+ publicaria: (sha, n) => `ensaio: publicaria o HEAD ${sha} e ${n ? `atualizaria o PR #${n}` : 'abriria o PR'} (nada foi feito)`,
201
+ pushFalhou: (remoto, branch, erro) => `o push de ${branch} para ${remoto} falhou: ${erro}`,
202
+ pushSemProva: (remota, head) => `o ls-remote devolveu ${remota ?? '(nada)'} e o HEAD está em ${head}: o push não ficou provado`,
203
+ pushSemProvaCorrecao: (thread) => `confira o remoto e rode ork ship publicar ${thread} de novo`,
204
+ corpoPadrao: (tag, branch, sha, contexto) => `Publicado pelo ork ship publicar (modo ${tag}): a branch ${branch} no HEAD ${sha}, provada pelo ls-remote. ` +
205
+ `O CHECK independente roda no CI (${contexto}) a partir deste PR.`,
206
+ prSemReleitura: 'o PR não apareceu na releitura da lista',
207
+ prFalhou: (sha, erro) => `a branch foi publicada e provada no HEAD ${sha}, mas o PR não abriu: ${erro}`,
208
+ prFalhouCorrecao: (thread) => `confira o login do gh e rode ork ship publicar ${thread} de novo (o push já está provado)`,
209
+ publicou: (sha, n, criado) => `HEAD ${sha} publicado e provado; PR #${n} ${criado ? 'aberto agora' : 'reaproveitado'}`,
210
+ // As etapas da pista
211
+ remotoNaoLido: (remoto) => `o git ls-remote ${remoto} não respondeu`,
212
+ branchPublicada: (sha) => `branch publicada no HEAD ${sha}`,
213
+ branchNaoPublicada: 'branch ainda não publicada',
214
+ commitsSemPush: (remota, head) => `o remoto está em ${remota} e o HEAD em ${head}: há commits sem push`,
215
+ prsNaoLidos: (erro) => `PRs não lidos: ${erro}`,
216
+ prsCortados: (limite) => `a lista dos PRs abertos veio cortada nos ${limite} mais novos: o PR da branch não foi lido`,
217
+ branchSemConferir: 'a branch ficou sem conferir nesta leitura da forja: o PR dela não foi lido',
218
+ prFechado: (n) => `o PR #${n} foi fechado sem merge`,
219
+ semPr: 'sem PR da branch',
220
+ ciSemPr: 'sem PR, o CI não roda',
221
+ ciNaoExigido: 'CI não exigido pelo manifesto',
222
+ conflitoSemPr: 'sem PR, sem conflito a medir',
223
+ prMesclado: (n) => `PR #${n} mesclado`,
224
+ ciDoMesclado: 'PR mesclado; o ork ship registrar-pr confere o CI no head',
225
+ prRascunho: (n) => `PR #${n} aberto em rascunho`,
226
+ prAberto: (n) => `PR #${n} aberto`,
227
+ ciSemCheck: (contexto, n) => `o check ${contexto} ainda não apareceu no PR #${n}`,
228
+ ciVerde: (contexto, sha) => `check ${contexto} verde no head ${sha}`,
229
+ ciVermelho: (contexto, n) => `check ${contexto} vermelho no PR #${n}`,
230
+ ciEsperando: (contexto, n) => `check ${contexto} em andamento no PR #${n}`,
231
+ conflito: (n) => `o PR #${n} conflita com a base`,
232
+ semConflito: 'sem conflito com a base',
233
+ conflitoNaoCalculado: 'o GitHub ainda não calculou o merge com a base',
234
+ entregue: 'entregue: ship_done no ledger',
235
+ mergeSemRegistro: (sha) => `merge ${sha} na base, sem ship_done`,
236
+ semShipDone: 'sem ship_done ainda',
237
+ // O proximo passo
238
+ proximoEntregue: 'entregue; o MASTER fecha a thread',
239
+ proximoRegistrar: 'mesclado na base: registre a entrega',
240
+ proximoConduzida: (sessao) => `a sessão ${sessao} conduz a thread agora; a entrega espera o fim do turno`,
241
+ proximoPublicarNoPr: (n) => `publique os commits novos no PR #${n}`,
242
+ proximoPublicar: 'publique a branch e abra o PR',
243
+ proximoDoDono: (thread, tag) => `o modo ${tag} da ${thread} pede a sua autorização de push: publique do seu terminal`,
244
+ proximoConflito: (n) => `o PR #${n} conflita com a base: mescle a origin/main na worktree pela sessão de GO, rode o verify e regrave o bundle`,
245
+ proximoCiVermelho: (contexto, n) => `o check ${contexto} está vermelho no PR #${n}: corrija pela sessão de GO e publique de novo`,
246
+ proximoEsperandoCi: (contexto, n) => `esperando o check ${contexto} no PR #${n}`,
247
+ proximoRascunho: (n) => `o PR #${n} está em rascunho, com o CI verde: tire do rascunho; o merge é do dono ou do condutor`,
248
+ proximoMerge: (n) => `o PR #${n} está pronto para o merge, que é do dono ou do condutor`,
249
+ // A impressao da pista
250
+ cabecalhoPista: (quando, remoto, base) => `Pista de entrega (lida em ${quando}, base ${remoto}/${base})`,
251
+ semPistas: 'Nenhuma thread aberta na entrega.',
252
+ remotoNaoRespondeu: (remoto) => `Aviso: o git ls-remote ${remoto} não respondeu; a etapa da branch ficou sem leitura.`,
253
+ prsNaoResponderam: (erro) => `Aviso: os PRs não foram lidos (${erro}); PR, CI e conflito ficaram sem leitura.`,
254
+ linhaDaThread: (thread, tag, branch) => ` ${thread} ${tag} ${branch}`,
255
+ /** O nome e a marca de cada etapa sao a mesma palavra nas duas linguas, fora conflito e entrega. */
256
+ nomeDaEtapa: (id) => ({ check: 'CHECK', verify: 'verify', bundle: 'bundle', branch: 'branch', pr: 'PR', ci: 'CI',
257
+ conflito: 'conflito', entrega: 'entrega' }[id] ?? id),
258
+ marcaDaEtapa: (estado) => ({ 'feita': 'ok', 'pendente': '...', 'falhou': 'X', 'nao-lida': '?', 'nao-se-aplica': '-' }[estado] ?? estado),
259
+ linhaDoProximo: (texto, comando) => ` próximo: ${texto}${comando ? ` (${comando})` : ''}`,
260
+ },
261
+ };
262
+ exports.SHIP_EN = {
263
+ uso: 'usage: ork ship <thread-id> --para <branch> [--de <branch>] [--dry-run]',
264
+ cabecalho: (dryRun, thread) => `${dryRun ? 'ork ship (--dry-run, nothing was run)' : 'ork ship'}: thread ${thread}`,
265
+ de: (branch, sha) => ` from ${branch}${sha ? ` @ ${sha}` : ''}`,
266
+ para: (branch, sha) => ` to ${branch}${sha ? ` @ ${sha}` : ''}`,
267
+ autorizado: (por, tipo) => ` authorization AUTHORIZED by ${por} (${tipo})`,
268
+ tiposDeAutorizacao: { 'modo': 'by mode', 'humano-no-cli': 'human on the command line', 'humano-antecipado': 'human, in advance',
269
+ 'pendente': 'pending' },
270
+ aguardandoAutorizacao: ' authorization WAITING FOR HUMAN AUTHORIZATION',
271
+ razao: (razao) => ` ${razao}`,
272
+ verificacao: (ok, sha, claimsOk, claims, comandosOk, comandos) => ` verification ${ok ? 'passed' : 'FAILED'} at HEAD ${sha} (${claimsOk}/${claims} claims, ${comandosOk}/${comandos} commands)`,
273
+ ciExigido: (estado, contexto, sha) => ` ci ${estado} ${contexto} at ${sha}`,
274
+ ciNaoExigido: ' ci not required',
275
+ leaseOcupado: (lease, thread, desde) => ` lease ${lease} HELD by thread ${thread} (since ${desde})`,
276
+ leaseTomado: (lease, thread) => ` lease ${lease} taken by ${thread} and released at the end`,
277
+ leaseLivre: (lease) => ` lease ${lease} free`,
278
+ bloqueado: (motivo) => `BLOCKED. Typed reason: ${motivo}`,
279
+ detalhe: (detalhe) => ` detail ${detalhe}`,
280
+ correcao: (correcao) => ` fix ${correcao}`,
281
+ passosDoEnsaio: 'Steps the real ship would run, in this order:',
282
+ nadaAMergear: (de, para, sha) => `Nothing to merge: ${de} was already in ${para}, brought in by ${sha}.`,
283
+ mergeConcluido: (sha) => `\`--no-ff\` merge done: ${sha}`,
284
+ pushProvado: (remoto, para, sha) => `Push PROVEN: ls-remote of ${remoto}/${para} returned ${sha}`,
285
+ mesmoSha: (sha) => ` and the local target is at the same sha: ${sha}`,
286
+ pushNaoProvado: (detalhe) => `Push not proven: ${detalhe}`,
287
+ semRemotoConfigurado: 'no remote configured',
288
+ evidencia: 'Evidence (commands run):',
289
+ ledger: (thread) => `Ledger: \`ork phase list ${thread}\` (ship_done event)`,
290
+ autorizadoNaLinha: (tag) => `push pause of mode ${tag} authorized on the command line`,
291
+ porTag: (tag) => `#TAG ${tag} in the builder's request`,
292
+ autorizadoPeloModo: (tag) => `mode ${tag} ships inside a block with no pause: the #TAG is the prior authorization`,
293
+ autorizadoAntes: (quando) => `push authorized in advance, recorded in the ledger at ${quando}`,
294
+ semAutorizacao: (tag, thread) => `mode ${tag} pauses at the push and no human authorization is recorded yet. ` +
295
+ `Authorize it at delivery: \`ork ship ${thread} --para <branch> --autorizar-push <who>\``,
296
+ verificacaoReprovou: (commit, motivos) => `verification failed at HEAD ${commit}: ${motivos}`,
297
+ rodeVerify: (thread) => 'run `ork verify ' + thread + '` and fix it before shipping',
298
+ origemAusente: (de) => `source branch "${de}" does not exist in this repository`,
299
+ origemAusenteCorrecao: 'pass `--de <branch>` or create the thread branch',
300
+ destinoAusente: (para) => `target branch "${para}" does not exist in this repository`,
301
+ destinoAusenteCorrecao: 'create the target branch or pass another one with `--para`',
302
+ contratoPublico: (tocados) => `public contract in a cycle without PLAN or CHECK: ${tocados}`,
303
+ contratoPublicoCorrecao: 'redo the change in a #Classic, #Maestro or #Auto thread',
304
+ ciReprovou: (detalhe, sha, contexto) => `${detalhe} (commit ${sha}, context ${contexto})`,
305
+ ciReprovouCorrecao: (contexto) => `publish the branch, wait for the ${contexto} check to go green on GitHub and run SHIP again`,
306
+ arvoreDona: (dona, para, suja) => `${dona} (the tree with ${para} checked out; ${suja ? 'DIRTY, ship would fail with tree.blocked' : 'clean'})`,
307
+ arvoreTemporaria: (dir, para) => `temporary worktree at ${dir} (nobody has ${para} checked out)`,
308
+ arvoreDeMerge: (arvore) => `merge tree: ${arvore}`,
309
+ semPushPorFlag: 'push skipped by `--sem-push` (local merge done)',
310
+ semRemoto: (remoto) => `remote "${remoto}" not configured: local merge done, no push to prove`,
311
+ passoSemPush: (motivo) => `no push: ${motivo}`,
312
+ passoProvaDoPush: (remoto, para) => `git ls-remote ${remoto} refs/heads/${para} (push proof)`,
313
+ passoMerge: (de) => `git merge --no-ff ${de} -m "<ship message>"`,
314
+ autorizeNaEntrega: (thread) => `ork ship ${thread} --para <branch> --autorizar-push <who>`,
315
+ leaseComOutra: (lease, thread, desde, motivo, posicao) => `lease ${lease} is held by thread ${thread} since ${desde} (${motivo}); this thread joined the merge queue at position ${posicao}`,
316
+ desconhecida: '(unknown)',
317
+ semMotivo: 'no reason',
318
+ humano: 'a human',
319
+ arvoreSuja: (para, dona) => `target branch "${para}" is checked out at ${dona} with uncommitted changes; commit or revert them there before shipping`,
320
+ arvoreNaoMontada: (para, erro) => `could not set up the merge tree for "${para}": ${erro}`,
321
+ arvoreCorrecao: 'leave the target branch tree clean (or free the branch) and run ship again',
322
+ mergeFalhou: (de, para, erro) => `merge of ${de} into ${para} failed: ${erro}`,
323
+ mergeFalhouCorrecao: 'resolve the conflict on the thread branch and run ship again',
324
+ headIlegivel: 'could not read HEAD after the merge',
325
+ confiraRepositorio: 'check the repository',
326
+ naoAncestral: (de, merge) => `the ${de} commit is not an ancestor of merge ${merge}`,
327
+ naoEmpurre: 'do not push: investigate the repository state',
328
+ semPrimeiroPai: (de, para) => `${de} is already an ancestor of ${para}, but git found no first-parent commit that brought it in`,
329
+ semPrimeiroPaiCorrecao: 'check the repository: ship_done needs the merge that delivered the thread',
330
+ passoJaIncorporado: (de, para, sha) => `(nothing to merge: ${de} is already an ancestor of ${para}, brought in by ${sha})`,
331
+ pushFalhou: (remoto, para, erro) => `push to ${remoto}/${para} failed: ${erro}`,
332
+ pushFalhouCorrecao: 'fix the access to the remote and run ship again (the local merge already happened)',
333
+ pushSemProva: (sha, ponta) => `ls-remote returned ${sha ?? '(nothing)'} and the local target is at ${ponta}: the push was not proven`,
334
+ pushSemProvaCorrecao: 'run ship again and check the remote',
335
+ ciNaoExigidoDetalhe: 'CI gate not required by the manifest',
336
+ ciRemotoNaoGithub: (remoto) => `remote ${remoto} is not a recognizable GitHub repository`,
337
+ ciConsultaFalhou: 'GitHub query failed',
338
+ ciRespostaInvalida: 'GitHub returned an invalid checks response',
339
+ ciSemCheck: (contexto) => `check ${contexto} not found on the commit`,
340
+ ciVerde: 'independent CHECK green on GitHub',
341
+ ciEstado: (contexto, status, conclusao) => `check ${contexto}: ${status}/${conclusao || 'no conclusion'}`,
342
+ usoRegistrarPr: 'usage: ork ship registrar-pr <thread-id> [--repo <owner/name> --pr <n>] | --todas [--remoto R] [--json] [--dry-run]',
343
+ ensaio: 'Dry run (--dry-run): nothing was written.',
344
+ nenhumaComMerge: 'No open thread with a ship(<thread>) merge on the base.',
345
+ linhaDoRegistro: (thread, acao, motivo) => ` ${thread.padEnd(20)} ${acao.padEnd(13)} ${motivo}`,
346
+ acoes: { 'registrou': 'recorded', 'registraria': 'would record', 'ja-registrada': 'already recorded', 'sem-merge': 'no merge',
347
+ 'recusada': 'refused' },
348
+ avisoDeDocs: (n) => `Warning: ${n} roadmap page(s) with \`estado.codigo\` other than "Mesclado" after the merge; ` +
349
+ 'the push to the base fails on docs.paridade.merge:',
350
+ docPendente: (id, arquivo, merge, thread, codigo) => ` ${id} (${arquivo}): merge ${merge} from ship(${thread}), estado.codigo "${codigo || 'empty'}"`,
351
+ docPendenteComando: (comando) => ` ${comando} (in a docs PR on top of the updated base)`,
352
+ registradas: (n) => `${n} delivery(ies) recorded. Close only this delivery through MASTER (a human score overrides):`,
353
+ registrariam: (n) => `${n} delivery(ies) would be recorded. To write them, run the same command without \`--dry-run\`.`,
354
+ prThreadFechada: 'thread already closed',
355
+ prSemMerge: (thread, remoto, base) => `no ship(${thread}) merge on ${remoto}/${base}`,
356
+ prJaTemShipDone: 'this delivery already has ship_done',
357
+ prForaDaPonta: (merge, remoto, base) => `merge ${merge} is not at the tip of ${remoto}/${base}`,
358
+ prSemCiVerde: (detalhe) => `no green CI on the PR head: ${detalhe}`,
359
+ prRegistraria: (merge) => `dry run: would record ship_done from merge ${merge} of the PR (nothing written)`,
360
+ prRegistrou: (merge) => `ship_done from merge ${merge} of the PR`,
361
+ prRepoNaoDeclarado: (repo) => `repository ${repo} is not declared in \`ci.external_repositories\` of \`orkastery.yaml\``,
362
+ prNumeroInvalido: (recebido) => `\`--pr\` must be the PR number, got ${recebido}`,
363
+ prExternoJaTem: (n, repo) => `PR #${n} of ${repo} already has ship_done`,
364
+ prConsultaFalhou: (n, repo) => `the GitHub query for PR #${n} of ${repo} failed`,
365
+ prNaoMesclado: (n, repo) => `PR #${n} of ${repo} is not merged`,
366
+ prNaoCitaThread: (n, repo, thread) => `PR #${n} of ${repo} does not mention thread ${thread} in its title, body or branch`,
367
+ prRepoFalhou: (repo) => `the GitHub query for ${repo} failed`,
368
+ prOutraBase: (n, base, repo, padrao) => `PR #${n} landed on ${base}, and the default branch of ${repo} is ${padrao ?? 'unknown'}`,
369
+ prExternoForaDaPonta: (merge, repo, base) => `merge ${merge} is not at the tip of ${repo}:${base}`,
370
+ prExternoRegistraria: (merge, n, repo) => `dry run: would record ship_done from merge ${merge} of PR #${n} of ${repo} (nothing written)`,
371
+ prExternoRegistrou: (merge, n, repo) => `ship_done from merge ${merge} of PR #${n} of ${repo}`,
372
+ publicar: {
373
+ uso: 'usage: ork ship publicar <thread-id> [--dry-run] [--remoto R] [--json]',
374
+ usoPista: 'usage: ork ship pista [<thread-id>] [--remoto R] [--json]',
375
+ semAutorizarPush: 'error: ork ship publicar does not accept --autorizar-push: it only publishes in the mode that already ' +
376
+ 'authorizes the push (#Auto and #Maestro); in the other modes, the push belongs to the owner, in their own terminal',
377
+ cabecalho: (dryRun, thread, tag) => `${dryRun ? 'ork ship publicar (--dry-run, nothing was published or written)' : 'ork ship publicar'}: thread ${thread} (${tag})`,
378
+ linhaBranch: (branch, sha) => ` branch ${branch} @ ${sha}`,
379
+ linhaRemoto: (remoto, antes, depois) => ` remote ${remoto}: ${depois} (before: ${antes})`,
380
+ linhaPushProvado: ' push PROVEN by ls-remote (same sha as HEAD)',
381
+ linhaPushSemProva: ' push without proof',
382
+ linhaPr: (n, criado, url) => ` PR #${n} ${criado ? 'opened now' : 'reused'}${url ? ` (${url})` : ''}`,
383
+ linhaCorpo: (corpo) => ` PR body ${corpo}`,
384
+ resultado: (acao) => `${acao}.`,
385
+ acoes: { 'publicou': 'PUBLISHED', 'publicaria': 'WOULD PUBLISH', 'ja-publicada': 'ALREADY PUBLISHED', 'recusada': 'REFUSED' },
386
+ threadInexistente: (thread, erro) => `thread ${thread} was not read in this project: ${erro}`,
387
+ threadInexistenteCorrecao: 'check the thread id (ork thread status <thread>)',
388
+ threadFechada: (thread) => `thread ${thread} is closed; nothing to publish`,
389
+ threadFechadaCorrecao: 'the new delivery goes in a new thread',
390
+ modoSemPush: (tag) => `the ${tag} mode asks for the owner's authorization to push; ork ship publicar only publishes in #Auto and #Maestro`,
391
+ modoSemPushCorrecao: (comando) => `the owner publishes from their own terminal: ${comando}`,
392
+ conduzida: (sessao, fase) => `session ${sessao} is conducting the thread now (phase ${fase}); the branch may change in the middle of the publication`,
393
+ conduzidaCorrecao: (thread) => `publish after the end of the turn (ork conducao status ${thread})`,
394
+ semBranch: (branch) => `the thread branch ${branch} does not exist in this repository`,
395
+ semBranchCorrecao: (thread) => `check the thread worktree (ork worktree ensure ${thread})`,
396
+ branchEBase: (base) => `the thread branch is the base ${base}; publishing the base without a merge is the direct push that ork ship blocks`,
397
+ branchEBaseCorrecao: 'the delivery comes from a thread branch (ork/<thread>), never from the base',
398
+ semProduto: (branch, base) => `branch ${branch} has no commit outside ${base}; nothing to publish`,
399
+ semProdutoCorrecao: 'commit the thread work through the GO session before publishing',
400
+ checkSemCiclo: (tag) => `the ${tag} cycle has no CHECK`,
401
+ checkAusente: 'the thread docs/check.md was not written yet',
402
+ checkSemVeredito: 'docs/check.md does not have exactly one verdict',
403
+ checkOutroVeredito: (veredito) => `the CHECK verdict is ${veredito}`,
404
+ checkVelho: (sha) => `the CHECK with PASSOU is older than commit ${sha}`,
405
+ checkFeito: 'CHECK with verdict PASSOU after the last product commit',
406
+ comandoDoCheck: (thread) => `ork phase run ${thread} CHECK --prompt "<phase request>"`,
407
+ checkCorrecao: (thread) => `run the thread CHECK on HEAD and write the verdict PASSOU (ork phase run ${thread} CHECK --prompt "<phase request>")`,
408
+ verifyAusente: 'no ork verify written in the thread',
409
+ verifyReprovou: (sha, motivos) => `the last ork verify failed at commit ${sha} (${motivos})`,
410
+ verifyAntigo: (sha) => `the last green ork verify was at commit ${sha}, and HEAD changed after it beyond the bundle`,
411
+ verifyNoHead: (sha) => `green ork verify at HEAD ${sha}`,
412
+ verifySoBundle: (sha) => `green ork verify at commit ${sha}; after it, only the bundle`,
413
+ verifySoClaims: (sha) => `the last ork verify (commit ${sha}) ran only the claims, without the manifest build and test`,
414
+ verifyCorrecao: (thread) => `run ork verify ${thread} on HEAD and fix it before publishing`,
415
+ bundleAusente: (arquivo) => `the bundle ${arquivo} is not on HEAD`,
416
+ bundleInvalido: (arquivo) => `the bundle ${arquivo} on HEAD does not open as this thread's ork.ci-bundle/v1`,
417
+ bundleOutraBranch: (arquivo, branch) => `the bundle ${arquivo} on HEAD belongs to branch ${branch}`,
418
+ bundleVelho: (faltam, sobram) => `the bundle on HEAD is stale` +
419
+ `${faltam ? `: claims ${faltam} are missing` : ''}${sobram ? `${faltam ? ';' : ':'} claims ${sobram} are left over` : ''}`,
420
+ bundleMudou: (ids) => `the bundle on HEAD is stale: the command of claims ${ids} changed after it`,
421
+ bundleManifestoMudou: 'the bundle on HEAD is stale: the manifest verify commands changed after it',
422
+ bundleFeito: (n) => `bundle on HEAD with the ${n} active claims and their commands`,
423
+ bundleCorrecao: (thread) => `run ork ci prepare ${thread} in the worktree and commit the bundle as ci(${thread}): bundle`,
424
+ semRemoto: (remoto) => `remote ${remoto} is not configured in this repository`,
425
+ semRemotoCorrecao: 'configure the remote (git remote add) or give another one in --remoto',
426
+ semForja: (remoto) => `remote ${remoto} is not a GitHub repository; ork ship publicar only opens PRs on GitHub`,
427
+ semForjaCorrecao: 'publish the branch and open the merge request through the remote forge',
428
+ lsRemoteFalhou: (remoto, erro) => `git ls-remote ${remoto} failed: ${erro}`,
429
+ prsFalharam: (erro) => `the branch PR list failed: ${erro}`,
430
+ redeCorrecao: 'check the network and the gh login (gh auth status) and run it again',
431
+ jaPublicada: (n) => `the branch is already on the remote at HEAD and PR #${n} is open; nothing to do`,
432
+ jaMesclado: (n) => `PR #${n} was already merged at HEAD; nothing to publish`,
433
+ registreAEntrega: (thread) => `record the delivery: ork ship registrar-pr ${thread}`,
434
+ remotoDivergiu: (remoto, branch, sha) => `remote ${remoto} has branch ${branch} at ${sha}, with a commit the local branch does not have`,
435
+ remotoDivergiuCorrecao: (remoto, branch) => `bring the remote into the branch through the GO session (git pull --no-rebase ${remoto} ${branch}) and publish again; never force`,
436
+ passoReaproveita: (n) => `reuses PR #${n}, already open`,
437
+ publicaria: (sha, n) => `rehearsal: would publish HEAD ${sha} and ${n ? `update PR #${n}` : 'open the PR'} (nothing was done)`,
438
+ pushFalhou: (remoto, branch, erro) => `the push of ${branch} to ${remoto} failed: ${erro}`,
439
+ pushSemProva: (remota, head) => `ls-remote returned ${remota ?? '(nothing)'} and HEAD is at ${head}: the push was not proven`,
440
+ pushSemProvaCorrecao: (thread) => `check the remote and run ork ship publicar ${thread} again`,
441
+ corpoPadrao: (tag, branch, sha, contexto) => `Published by ork ship publicar (${tag} mode): branch ${branch} at HEAD ${sha}, proven by ls-remote. ` +
442
+ `The independent CHECK runs on CI (${contexto}) from this PR.`,
443
+ prSemReleitura: 'the PR did not show up when the list was read again',
444
+ prFalhou: (sha, erro) => `the branch was published and proven at HEAD ${sha}, but the PR did not open: ${erro}`,
445
+ prFalhouCorrecao: (thread) => `check the gh login and run ork ship publicar ${thread} again (the push is already proven)`,
446
+ publicou: (sha, n, criado) => `HEAD ${sha} published and proven; PR #${n} ${criado ? 'opened now' : 'reused'}`,
447
+ remotoNaoLido: (remoto) => `git ls-remote ${remoto} did not answer`,
448
+ branchPublicada: (sha) => `branch published at HEAD ${sha}`,
449
+ branchNaoPublicada: 'branch not published yet',
450
+ commitsSemPush: (remota, head) => `the remote is at ${remota} and HEAD at ${head}: there are commits without push`,
451
+ prsNaoLidos: (erro) => `PRs not read: ${erro}`,
452
+ prsCortados: (limite) => `the open PR list was cut at the ${limite} newest: the branch PR was not read`,
453
+ branchSemConferir: 'the branch was left unchecked in this forge read: its PR was not read',
454
+ prFechado: (n) => `PR #${n} was closed without merge`,
455
+ semPr: 'no PR for the branch',
456
+ ciSemPr: 'without a PR, CI does not run',
457
+ ciNaoExigido: 'CI not required by the manifest',
458
+ conflitoSemPr: 'without a PR, no conflict to measure',
459
+ prMesclado: (n) => `PR #${n} merged`,
460
+ ciDoMesclado: 'PR merged; ork ship registrar-pr checks the CI on the head',
461
+ prRascunho: (n) => `PR #${n} open as a draft`,
462
+ prAberto: (n) => `PR #${n} open`,
463
+ ciSemCheck: (contexto, n) => `check ${contexto} has not shown up on PR #${n} yet`,
464
+ ciVerde: (contexto, sha) => `check ${contexto} green on head ${sha}`,
465
+ ciVermelho: (contexto, n) => `check ${contexto} red on PR #${n}`,
466
+ ciEsperando: (contexto, n) => `check ${contexto} running on PR #${n}`,
467
+ conflito: (n) => `PR #${n} conflicts with the base`,
468
+ semConflito: 'no conflict with the base',
469
+ conflitoNaoCalculado: 'GitHub has not computed the merge with the base yet',
470
+ entregue: 'delivered: ship_done in the ledger',
471
+ mergeSemRegistro: (sha) => `merge ${sha} on the base, without ship_done`,
472
+ semShipDone: 'no ship_done yet',
473
+ proximoEntregue: 'delivered; the MASTER closes the thread',
474
+ proximoRegistrar: 'merged on the base: record the delivery',
475
+ proximoConduzida: (sessao) => `session ${sessao} is conducting the thread now; the delivery waits for the end of the turn`,
476
+ proximoPublicarNoPr: (n) => `publish the new commits to PR #${n}`,
477
+ proximoPublicar: 'publish the branch and open the PR',
478
+ proximoDoDono: (thread, tag) => `the ${tag} mode of ${thread} asks for your push authorization: publish from your terminal`,
479
+ proximoConflito: (n) => `PR #${n} conflicts with the base: merge origin/main in the worktree through the GO session, run verify and write the bundle again`,
480
+ proximoCiVermelho: (contexto, n) => `check ${contexto} is red on PR #${n}: fix it through the GO session and publish again`,
481
+ proximoEsperandoCi: (contexto, n) => `waiting for check ${contexto} on PR #${n}`,
482
+ proximoRascunho: (n) => `PR #${n} is a draft with green CI: take it out of draft; the merge belongs to the owner or the conductor`,
483
+ proximoMerge: (n) => `PR #${n} is ready for the merge, which belongs to the owner or the conductor`,
484
+ cabecalhoPista: (quando, remoto, base) => `Delivery lane (read at ${quando}, base ${remoto}/${base})`,
485
+ semPistas: 'No open thread in delivery.',
486
+ remotoNaoRespondeu: (remoto) => `Warning: git ls-remote ${remoto} did not answer; the branch step was left unread.`,
487
+ prsNaoResponderam: (erro) => `Warning: the PRs were not read (${erro}); PR, CI and conflict were left unread.`,
488
+ linhaDaThread: (thread, tag, branch) => ` ${thread} ${tag} ${branch}`,
489
+ nomeDaEtapa: (id) => ({ check: 'CHECK', verify: 'verify', bundle: 'bundle', branch: 'branch', pr: 'PR', ci: 'CI',
490
+ conflito: 'conflict', entrega: 'delivery' }[id] ?? id),
491
+ marcaDaEtapa: (estado) => ({ 'feita': 'ok', 'pendente': '...', 'falhou': 'X', 'nao-lida': '?', 'nao-se-aplica': '-' }[estado] ?? estado),
492
+ linhaDoProximo: (texto, comando) => ` next: ${texto}${comando ? ` (${comando})` : ''}`,
493
+ },
494
+ };