@orkastery/cli 0.5.6 → 0.6.1

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 (396) hide show
  1. package/adapters/README.md +18 -0
  2. package/adapters/claude-code/.claude-plugin/plugin.json +1 -0
  3. package/adapters/claude-code/README.md +37 -5
  4. package/adapters/claude-code/agents/ork-check.md +1 -0
  5. package/adapters/claude-code/agents/ork-go.md +1 -0
  6. package/adapters/claude-code/agents/ork-goal.md +1 -0
  7. package/adapters/claude-code/agents/ork-master.md +1 -0
  8. package/adapters/claude-code/agents/ork-plan.md +1 -0
  9. package/adapters/claude-code/agents/ork-ship.md +1 -0
  10. package/adapters/claude-code/hooks/hooks.json +2 -1
  11. package/adapters/claude-code/hooks/ork-guard.js +15 -1
  12. package/adapters/claude-code/hooks/ork-resposta.js +91 -0
  13. package/adapters/claude-code/hooks/ork-sensor.js +18 -2
  14. package/adapters/claude-code/hooks/quota-signal.js +14 -0
  15. package/adapters/claude-code/mods/ork-mensageiro/.claude-plugin/plugin.json +14 -0
  16. package/adapters/claude-code/mods/ork-mensageiro/hooks/caixa.ts +215 -0
  17. package/adapters/claude-code/mods/ork-mensageiro/hooks/hooks.json +3 -0
  18. package/adapters/claude-code/mods/ork-mensageiro/hooks/painel.tsx +165 -0
  19. package/adapters/claude-code/mods/ork-mensageiro/hooks/recepcao.ts +256 -0
  20. package/adapters/claude-code/mods/ork-mensageiro/hooks/register.tsx +481 -0
  21. package/adapters/claude-code/mods/ork-mensageiro/orkastery-mod.json +5 -0
  22. package/adapters/claude-code/mods/ork-mensageiro/types/index.d.ts +85 -0
  23. package/adapters/claude-code/mods/ork-pista/hooks/ci.ts +9 -5
  24. package/adapters/claude-code/mods/ork-ritual/.claude-plugin/plugin.json +14 -0
  25. package/adapters/claude-code/mods/ork-ritual/hooks/hooks.json +3 -0
  26. package/adapters/claude-code/mods/ork-ritual/hooks/nota.ts +88 -0
  27. package/adapters/claude-code/mods/ork-ritual/hooks/register.tsx +494 -0
  28. package/adapters/claude-code/mods/ork-ritual/hooks/replay.tsx +271 -0
  29. package/adapters/claude-code/mods/ork-ritual/hooks/ritual.ts +218 -0
  30. package/adapters/claude-code/mods/ork-ritual/orkastery-mod.json +5 -0
  31. package/adapters/claude-code/mods/ork-ritual/types/index.d.ts +106 -0
  32. package/adapters/claude-code/mods/ork-sentinela/hooks/vigia.ts +1 -1
  33. package/adapters/codex/skills/ork/SKILL.md +2 -0
  34. package/adapters/hermes/README.md +64 -1
  35. package/adapters/hermes/bin/ork-conhecimento-colecoes.sh +14 -0
  36. package/adapters/hermes/bin/ork-conhecimento-listar.sh +15 -0
  37. package/adapters/hermes/bin/ork-conhecimento-mostrar.sh +16 -0
  38. package/adapters/hermes/bin/ork-conhecimento-verificar.sh +15 -0
  39. package/adapters/hermes/bin/ork-vigia-batida.py +127 -0
  40. package/adapters/hermes/hermes.plugin.json +4 -0
  41. package/adapters/hermes/hitl-ingress/__init__.py +101 -8
  42. package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +2 -2
  43. package/adapters/openclaw/README.md +81 -9
  44. package/adapters/openclaw/bin/ork-vigia-batida.js +86 -0
  45. package/adapters/openclaw/dist/hitl-ingress.js +106 -9
  46. package/adapters/openclaw/dist/index.js +86 -0
  47. package/adapters/openclaw/openclaw.plugin.json +34 -4
  48. package/adapters/openclaw/package.json +2 -2
  49. package/adapters/openclaw/src/hitl-ingress.ts +103 -9
  50. package/adapters/openclaw/src/index.ts +94 -0
  51. package/assets/adapters-en/claude-code/README.md +403 -0
  52. package/assets/adapters-en/claude-code/agents/ork-check.md +33 -0
  53. package/assets/adapters-en/claude-code/agents/ork-go.md +33 -0
  54. package/assets/adapters-en/claude-code/agents/ork-goal.md +34 -0
  55. package/assets/adapters-en/claude-code/agents/ork-master.md +35 -0
  56. package/assets/adapters-en/claude-code/agents/ork-plan.md +33 -0
  57. package/assets/adapters-en/claude-code/agents/ork-ship.md +33 -0
  58. package/assets/adapters-en/claude-code/commands/check.md +46 -0
  59. package/assets/adapters-en/claude-code/commands/go.md +46 -0
  60. package/assets/adapters-en/claude-code/commands/goal.md +55 -0
  61. package/assets/adapters-en/claude-code/commands/master.md +54 -0
  62. package/assets/adapters-en/claude-code/commands/onboarding.md +22 -0
  63. package/assets/adapters-en/claude-code/commands/ork.md +126 -0
  64. package/assets/adapters-en/claude-code/commands/plan.md +47 -0
  65. package/assets/adapters-en/claude-code/commands/ship.md +45 -0
  66. package/assets/adapters-en/codex/skills/ork/SKILL.md +85 -0
  67. package/assets/adapters-en/hermes/README.md +273 -0
  68. package/assets/adapters-en/hermes/skills/orkastery-devmaster/SKILL.md +169 -0
  69. package/assets/references-en/README.md +25 -0
  70. package/assets/references-en/code-review-axes.md +82 -0
  71. package/assets/references-en/definition-of-done.md +74 -0
  72. package/assets/references-en/performance-checklist.md +53 -0
  73. package/assets/references-en/security-checklist.md +101 -0
  74. package/assets/references-en/testing-patterns.md +51 -0
  75. package/assets/security-scan/defaults/.golangci.yml +2 -0
  76. package/assets/security-scan/defaults/eslint.config.mjs +11 -0
  77. package/assets/security-scan/defaults/gitleaks.toml +3 -0
  78. package/assets/security-scan/defaults/ruff.toml +1 -0
  79. package/assets/security-scan/tools-agil.json +87 -0
  80. package/assets/security-scan/tools.json +625 -0
  81. package/assets/skills-en/core/onboarding/SKILL.md +58 -0
  82. package/assets/skills-en/core/orkastery-bootstrap/SKILL.md +119 -0
  83. package/assets/skills-en/core/thread-state/SKILL.md +88 -0
  84. package/assets/skills-en/governance/decision-triage/SKILL.md +65 -0
  85. package/assets/skills-en/governance/narrative-guardian/SKILL.md +66 -0
  86. package/assets/skills-en/governance/roadmap-keeper/SKILL.md +60 -0
  87. package/assets/skills-en/governance/scope-check-capability-map/SKILL.md +71 -0
  88. package/assets/skills-en/observability/thread-tracing/SKILL.md +63 -0
  89. package/assets/skills-en/phases/check-quality/SKILL.md +103 -0
  90. package/assets/skills-en/phases/go-implementation/SKILL.md +78 -0
  91. package/assets/skills-en/phases/goal-definition/SKILL.md +69 -0
  92. package/assets/skills-en/phases/master-metrics/SKILL.md +72 -0
  93. package/assets/skills-en/phases/plan-specification/SKILL.md +67 -0
  94. package/assets/skills-en/phases/security-remediation/SKILL.md +70 -0
  95. package/assets/skills-en/phases/ship-release/SKILL.md +71 -0
  96. package/assets/skills-en/reviewers/code-reviewer/SKILL.md +61 -0
  97. package/assets/skills-en/reviewers/security-auditor/SKILL.md +93 -0
  98. package/assets/skills-en/reviewers/test-engineer/SKILL.md +66 -0
  99. package/assets/skills-en/reviewers/web-performance-auditor/SKILL.md +63 -0
  100. package/dist/adapters/claude-bg.js +123 -9
  101. package/dist/adapters/codex-controller-worker.js +12 -5
  102. package/dist/adapters/codex-events.js +16 -4
  103. package/dist/adapters/codex.js +3 -1
  104. package/dist/adapters/grok-events.js +227 -0
  105. package/dist/adapters/grok-mcp-servidor.js +612 -0
  106. package/dist/adapters/grok-mcp.js +178 -0
  107. package/dist/adapters/grok.js +686 -0
  108. package/dist/agendador-cpu.js +92 -0
  109. package/dist/atualizar-branch.js +245 -0
  110. package/dist/auditoria.js +13 -11
  111. package/dist/auditrun.js +51 -46
  112. package/dist/autorizacao-duravel.js +327 -0
  113. package/dist/board.js +94 -40
  114. package/dist/branch-de-estado.js +23 -10
  115. package/dist/busca-semantica.js +7 -5
  116. package/dist/catalogo.js +2 -1
  117. package/dist/changelog-reconciliacao.js +290 -0
  118. package/dist/check-agil.js +528 -0
  119. package/dist/check-modo.js +41 -0
  120. package/dist/check-paralelo.js +238 -0
  121. package/dist/ci.js +248 -45
  122. package/dist/ciclos.js +8 -6
  123. package/dist/claim-lint.js +12 -8
  124. package/dist/claims-conferir.js +47 -39
  125. package/dist/claims.js +10 -9
  126. package/dist/company-brain-client.js +10 -3
  127. package/dist/company-brain-migration.js +11 -5
  128. package/dist/conducao-batida.js +759 -0
  129. package/dist/conducao-sentinela.js +25 -8
  130. package/dist/conducao.js +89 -29
  131. package/dist/conhecimento-consulta.js +270 -0
  132. package/dist/conhecimento.js +111 -87
  133. package/dist/conta-esgotada.js +127 -0
  134. package/dist/dado-privado.js +816 -0
  135. package/dist/decisao-autonoma.js +5 -4
  136. package/dist/demo.js +14 -12
  137. package/dist/dependencias-da-worktree.js +25 -0
  138. package/dist/divida.js +38 -36
  139. package/dist/docs.js +89 -89
  140. package/dist/doctor-forja.js +343 -0
  141. package/dist/doctor-pulse-cron.js +113 -1
  142. package/dist/doctor.js +164 -6
  143. package/dist/dsn-da-memoria.js +417 -0
  144. package/dist/entrega-por-mod.js +503 -0
  145. package/dist/entrega-pr.js +154 -54
  146. package/dist/esgotamentos.js +13 -11
  147. package/dist/estado-thread.js +21 -18
  148. package/dist/evalrunner.js +35 -32
  149. package/dist/fabrica-batida.js +34 -21
  150. package/dist/fabrica-estado.js +33 -21
  151. package/dist/fix.js +21 -19
  152. package/dist/forja/adaptador.js +6 -0
  153. package/dist/forja/ambiente-de-ci.js +27 -0
  154. package/dist/forja/api.js +256 -0
  155. package/dist/forja/cache.js +89 -0
  156. package/dist/forja/cli.js +60 -0
  157. package/dist/forja/contrato.js +9 -0
  158. package/dist/forja/endereco.js +43 -0
  159. package/dist/forja/estado.js +22 -0
  160. package/dist/forja/executor.js +73 -0
  161. package/dist/forja/github/ci.js +95 -0
  162. package/dist/forja/github/dono-da-rede.js +18 -0
  163. package/dist/forja/github/metadados.js +15 -0
  164. package/dist/forja/github/pedidos.js +200 -0
  165. package/dist/forja/gitlab/ci.js +141 -0
  166. package/dist/forja/gitlab/consultas.js +59 -0
  167. package/dist/forja/gitlab/dono-da-rede.js +43 -0
  168. package/dist/forja/gitlab/metadados.js +15 -0
  169. package/dist/forja/gitlab/pedidos-abertos.js +158 -0
  170. package/dist/forja/gitlab/pedidos.js +141 -0
  171. package/dist/forja/produtor.js +32 -0
  172. package/dist/forja/registro.js +31 -0
  173. package/dist/forja/resolver.js +121 -0
  174. package/dist/forja/texto.js +13 -0
  175. package/dist/forja/versao.js +71 -0
  176. package/dist/forja.js +123 -80
  177. package/dist/handoff.js +23 -13
  178. package/dist/hitl-contract.js +46 -43
  179. package/dist/hitl-curto.js +37 -25
  180. package/dist/hitl-gates.js +13 -11
  181. package/dist/hitl-local-receipt.js +51 -0
  182. package/dist/hitl-local.js +11 -2
  183. package/dist/hitl-lock.js +5 -11
  184. package/dist/hitl-public-receipt.js +11 -0
  185. package/dist/hitl-resumo.js +44 -1
  186. package/dist/hitl-sessions.js +62 -9
  187. package/dist/hitl-texto-livre.js +7 -4
  188. package/dist/hitl.js +34 -31
  189. package/dist/horario.js +20 -1
  190. package/dist/hosts.js +104 -134
  191. package/dist/index.js +864 -554
  192. package/dist/indice-vetorial.js +14 -12
  193. package/dist/init.js +11 -2
  194. package/dist/integracoes-locais.js +4 -0
  195. package/dist/intelligence-graph-cli.js +123 -69
  196. package/dist/intelligence-graph-query.js +37 -22
  197. package/dist/leases.js +19 -18
  198. package/dist/ledger-stats.js +17 -16
  199. package/dist/ledger.js +31 -1
  200. package/dist/licoes.js +12 -11
  201. package/dist/locale-accounts.js +228 -0
  202. package/dist/locale-adapter.js +291 -0
  203. package/dist/locale-ajuda.js +86 -10
  204. package/dist/locale-audit.js +199 -0
  205. package/dist/locale-claims.js +213 -0
  206. package/dist/locale-conducao.js +138 -0
  207. package/dist/locale-conhecimento.js +181 -0
  208. package/dist/locale-decisao.js +205 -0
  209. package/dist/locale-docs.js +230 -0
  210. package/dist/locale-estado.js +101 -0
  211. package/dist/locale-forja.js +288 -0
  212. package/dist/locale-gerados.js +5 -0
  213. package/dist/locale-grafo.js +129 -0
  214. package/dist/locale-master.js +83 -0
  215. package/dist/locale-network.js +524 -0
  216. package/dist/locale-operacao-restante.js +931 -0
  217. package/dist/locale-projetos.js +100 -0
  218. package/dist/locale-prompts.js +194 -0
  219. package/dist/locale-pulse.js +140 -2
  220. package/dist/locale-reservas.js +87 -0
  221. package/dist/locale-retry.js +183 -6
  222. package/dist/locale-security-scan.js +69 -0
  223. package/dist/locale-setup.js +192 -0
  224. package/dist/locale-ship.js +177 -66
  225. package/dist/locale-thread.js +149 -5
  226. package/dist/locale-verify.js +80 -4
  227. package/dist/locale-worktree.js +246 -0
  228. package/dist/locale.js +553 -9
  229. package/dist/maestro-runtime.js +22 -3
  230. package/dist/manifest.js +293 -12
  231. package/dist/maquina-ociosa.js +211 -0
  232. package/dist/maquina.js +10 -5
  233. package/dist/master-nota-local.js +200 -0
  234. package/dist/master-nota.js +10 -2
  235. package/dist/master.js +118 -41
  236. package/dist/mcp-conhecimento.js +52 -0
  237. package/dist/mcp-experiencia.js +26 -5
  238. package/dist/mcp-install.js +90 -15
  239. package/dist/mcp-noctum.js +101 -0
  240. package/dist/mcp-server.js +116 -22
  241. package/dist/mcp-ship-transporte.js +977 -0
  242. package/dist/mcp-ship.js +68 -24
  243. package/dist/mcp-transportes.js +17 -0
  244. package/dist/memoria.js +63 -58
  245. package/dist/merge-da-entrega.js +85 -0
  246. package/dist/modos-migracao.js +8 -6
  247. package/dist/modos.js +17 -18
  248. package/dist/network-roadmap.js +94 -54
  249. package/dist/noctum-aceite.js +929 -0
  250. package/dist/noctum-arco.js +540 -33
  251. package/dist/noctum-capacidade.js +3 -3
  252. package/dist/noctum-changelog.js +399 -0
  253. package/dist/noctum-cli.js +539 -0
  254. package/dist/noctum-coordenacao.js +1225 -0
  255. package/dist/noctum-entrega.js +1217 -0
  256. package/dist/noctum-envelope.js +253 -17
  257. package/dist/noctum-execucao.js +100 -24
  258. package/dist/noctum-fechamento.js +416 -0
  259. package/dist/noctum-fila.js +49 -10
  260. package/dist/noctum-guarda.js +333 -0
  261. package/dist/noctum-integracao.js +507 -0
  262. package/dist/noctum-maquinas.js +387 -0
  263. package/dist/noctum-medicao.js +450 -0
  264. package/dist/noctum-modo.js +390 -0
  265. package/dist/noctum-pergunta-canal.js +96 -0
  266. package/dist/noctum-pergunta.js +115 -0
  267. package/dist/noctum-provas.js +838 -0
  268. package/dist/noctum-reconciliacao.js +594 -0
  269. package/dist/noctum-rede.js +102 -0
  270. package/dist/noctum-registro.js +215 -0
  271. package/dist/noctum-relatorio.js +861 -0
  272. package/dist/noctum-resposta.js +207 -0
  273. package/dist/noctum-retomada-rede.js +71 -0
  274. package/dist/noctum-sessoes-em-voo.js +93 -0
  275. package/dist/noctum-supervisao.js +649 -0
  276. package/dist/noctum-terminal.js +459 -0
  277. package/dist/noctum-transporte.js +655 -0
  278. package/dist/noctum-vigia.js +679 -0
  279. package/dist/ocupacao.js +3 -1
  280. package/dist/onboarding.js +16 -5
  281. package/dist/orkmind.js +39 -23
  282. package/dist/orquestracao.js +31 -35
  283. package/dist/parado-no-condutor.js +160 -139
  284. package/dist/phase.js +96 -42
  285. package/dist/policies.js +33 -0
  286. package/dist/postura-local.js +11 -6
  287. package/dist/preflight.js +2 -1
  288. package/dist/procedencia.js +9 -14
  289. package/dist/projeto-alvo.js +59 -20
  290. package/dist/prompts.js +136 -42
  291. package/dist/prova-minima.js +5 -6
  292. package/dist/pulse-cadencia.js +5 -4
  293. package/dist/pulse-consentimento.js +53 -1
  294. package/dist/pulse-delivery.js +143 -27
  295. package/dist/pulse-resposta.js +368 -4
  296. package/dist/pulse.js +136 -3
  297. package/dist/ratelimit.js +13 -4
  298. package/dist/recall.js +14 -13
  299. package/dist/rede-adesao.js +13 -8
  300. package/dist/rede-forja.js +108 -24
  301. package/dist/rede-status.js +63 -45
  302. package/dist/rede.js +86 -46
  303. package/dist/retomada-checkpoint.js +101 -0
  304. package/dist/retry.js +326 -78
  305. package/dist/roadmap-reservas.js +32 -32
  306. package/dist/runtime-ambiente.js +5 -0
  307. package/dist/runtime-context.js +279 -85
  308. package/dist/runtime-escada.js +429 -0
  309. package/dist/runtime-profiles.js +130 -63
  310. package/dist/runtimes.js +42 -5
  311. package/dist/saida-segura.js +3 -2
  312. package/dist/security-scan/agil.js +366 -0
  313. package/dist/security-scan/cli.js +76 -0
  314. package/dist/security-scan/compare.js +149 -0
  315. package/dist/security-scan/config.js +93 -0
  316. package/dist/security-scan/detect.js +97 -0
  317. package/dist/security-scan/executor.js +196 -0
  318. package/dist/security-scan/guard.js +180 -0
  319. package/dist/security-scan/imagem-de-lint.js +96 -0
  320. package/dist/security-scan/normalize/actionlint.js +12 -0
  321. package/dist/security-scan/normalize/eslint.js +12 -0
  322. package/dist/security-scan/normalize/gitleaks.js +13 -0
  323. package/dist/security-scan/normalize/golangci-lint.js +13 -0
  324. package/dist/security-scan/normalize/govulncheck.js +36 -0
  325. package/dist/security-scan/normalize/index.js +25 -0
  326. package/dist/security-scan/normalize/npm-audit.js +30 -0
  327. package/dist/security-scan/normalize/osv-scanner.js +32 -0
  328. package/dist/security-scan/normalize/oxlint.js +51 -0
  329. package/dist/security-scan/normalize/pip-audit.js +16 -0
  330. package/dist/security-scan/normalize/ruff.js +12 -0
  331. package/dist/security-scan/normalize/semgrep.js +20 -0
  332. package/dist/security-scan/normalize/trivy.js +33 -0
  333. package/dist/security-scan/normalize/util.js +204 -0
  334. package/dist/security-scan/normalize/zizmor.js +19 -0
  335. package/dist/security-scan/report.js +156 -0
  336. package/dist/security-scan/run.js +448 -0
  337. package/dist/security-scan/tools.js +62 -0
  338. package/dist/security-scan/trabalhador.js +74 -0
  339. package/dist/security-scan/types.js +15 -0
  340. package/dist/session-events.js +19 -2
  341. package/dist/session-watcher-claude.js +74 -19
  342. package/dist/session-watcher-grok.js +425 -0
  343. package/dist/session-watcher.js +174 -13
  344. package/dist/sessoes-contas.js +42 -5
  345. package/dist/sessoes-inventario.js +1 -1
  346. package/dist/sessoes.js +25 -23
  347. package/dist/setup.js +67 -66
  348. package/dist/ship-publicar.js +263 -92
  349. package/dist/ship.js +160 -17
  350. package/dist/superficie.js +14 -11
  351. package/dist/thread-close.js +9 -9
  352. package/dist/thread.js +121 -18
  353. package/dist/tokens.js +15 -11
  354. package/dist/trabalho-thread.js +297 -0
  355. package/dist/transporte-do-canal.js +189 -0
  356. package/dist/types.js +12 -1
  357. package/dist/util.js +5 -2
  358. package/dist/varredura-acoes.js +500 -0
  359. package/dist/verify.js +491 -32
  360. package/dist/worktree-local.js +12 -10
  361. package/dist/worktree.js +81 -85
  362. package/eval/casos/check-quality.json +77 -0
  363. package/eval/casos/security-auditor.json +148 -0
  364. package/eval/casos/security-remediation.json +161 -0
  365. package/eval/fixtures/security-scan/README.md +8 -0
  366. package/eval/fixtures/security-scan/go/.github/workflows/ci.yml +12 -0
  367. package/eval/fixtures/security-scan/go/Dockerfile +4 -0
  368. package/eval/fixtures/security-scan/go/README.md +4 -0
  369. package/eval/fixtures/security-scan/go/config.go +4 -0
  370. package/eval/fixtures/security-scan/go/go.mod +5 -0
  371. package/eval/fixtures/security-scan/go/go.sum +2 -0
  372. package/eval/fixtures/security-scan/go/main.go +31 -0
  373. package/eval/fixtures/security-scan/js/.github/workflows/ci.yml +12 -0
  374. package/eval/fixtures/security-scan/js/Dockerfile +3 -0
  375. package/eval/fixtures/security-scan/js/README.md +4 -0
  376. package/eval/fixtures/security-scan/js/package-lock.json +844 -0
  377. package/eval/fixtures/security-scan/js/package.json +10 -0
  378. package/eval/fixtures/security-scan/js/src/config.js +4 -0
  379. package/eval/fixtures/security-scan/js/src/server.js +17 -0
  380. package/eval/fixtures/security-scan/js/src/util.ts +4 -0
  381. package/eval/fixtures/security-scan/js/tsconfig.json +4 -0
  382. package/eval/fixtures/security-scan/python/.github/workflows/ci.yml +12 -0
  383. package/eval/fixtures/security-scan/python/Dockerfile +3 -0
  384. package/eval/fixtures/security-scan/python/README.md +4 -0
  385. package/eval/fixtures/security-scan/python/app/__init__.py +0 -0
  386. package/eval/fixtures/security-scan/python/app/config.py +2 -0
  387. package/eval/fixtures/security-scan/python/app/main.py +19 -0
  388. package/eval/fixtures/security-scan/python/requirements.txt +1 -0
  389. package/package.json +10 -5
  390. package/references/security-checklist.md +3 -3
  391. package/skills/README.md +1 -0
  392. package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
  393. package/skills/phases/check-quality/SKILL.md +16 -0
  394. package/skills/phases/go-implementation/SKILL.md +6 -0
  395. package/skills/phases/security-remediation/SKILL.md +70 -0
  396. package/skills/reviewers/security-auditor/SKILL.md +25 -0
@@ -10,6 +10,8 @@
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.SHIP_EN = exports.SHIP_PT_BR = void 0;
13
+ /** O pedido de merge pelo numero, como cada forja o escreve: `PR #n` no GitHub, `MR !n` no GitLab. */
14
+ const rotuloDoPedido = (n, gitlab) => (gitlab ? `MR !${n}` : `PR #${n}`);
13
15
  exports.SHIP_PT_BR = {
14
16
  uso: 'uso: ork ship <thread-id> --para <branch> [--de <branch>] [--dry-run]',
15
17
  // textoDoShip
@@ -58,6 +60,10 @@ exports.SHIP_PT_BR = {
58
60
  contratoPublicoCorrecao: 'refaca a mudanca numa thread #Classic, #Maestro ou #Auto',
59
61
  ciReprovou: (detalhe, sha, contexto) => `${detalhe} (commit ${sha}, contexto ${contexto})`,
60
62
  ciReprovouCorrecao: (contexto) => `publique a branch, aguarde o check ${contexto} verde no GitHub e repita o SHIP`,
63
+ scanNaoVarrido: (categorias, sha) => `o security scan nao varreu estas categorias do laco no commit ${sha}: ${categorias} (ferramenta indisponivel, com falha ou sem relatorio)`,
64
+ passoAutorizariaSemScan: (quem, categorias, sha) => `ensaio: o ship real gravaria ship_unscanned_authorized por ${quem} para ${categorias} no commit ${sha}`,
65
+ allowUnscannedSemValor: 'erro: --allow-unscanned pede quem autoriza: ork ship <thread> --para <branch> --allow-unscanned "<quem>"',
66
+ scanNaoVarridoCorrecao: (thread) => `rode ork security-scan com Docker ou os binarios nativos e repita o SHIP; para entregar sem varredura, autorize: ork ship ${thread} --para <branch> --allow-unscanned "<quem>"`,
61
67
  arvoreDona: (dona, para, suja) => `${dona} (arvore que tem ${para} em check-out; ${suja ? 'SUJA, o ship reprovaria com tree.blocked' : 'limpa'})`,
62
68
  arvoreTemporaria: (dir, para) => `worktree temporaria em ${dir} (ninguem tem ${para} em check-out)`,
63
69
  arvoreDeMerge: (arvore) => `arvore de merge: ${arvore}`,
@@ -85,17 +91,31 @@ exports.SHIP_PT_BR = {
85
91
  semPrimeiroPaiCorrecao: 'confira o repositorio: o ship_done precisa do merge que entregou a thread',
86
92
  passoJaIncorporado: (de, para, sha) => `(nada a mergear: ${de} ja e ancestral de ${para}, incorporado em ${sha})`,
87
93
  pushFalhou: (remoto, para, erro) => `push para ${remoto}/${para} falhou: ${erro}`,
94
+ configDoRemotoInvalida: (chave) => `ship.config-do-remoto.invalida: a config do remoto aceita só pares -c chave=valor das chaves do transporte fixado (recusada: ${chave || 'forma inválida'}); nada foi passado ao git`,
88
95
  pushFalhouCorrecao: 'resolva o acesso ao remoto e rode o ship de novo (o merge local ja aconteceu)',
96
+ pushBaseProtegida: (remoto, para, erro) => `a proteção de ${remoto}/${para} recusou o push direto na base (entrega.base-protegida): ${erro}`,
97
+ pushBaseProtegidaCorrecao: (thread) => `entregue por PR/MR: ork ship publicar ${thread} (em #Auto e #Maestro) ou o pedido aberto na forja; depois do merge, ` +
98
+ `ork ship registrar-pr ${thread}. O merge local na base não chegou ao remoto`,
89
99
  pushSemProva: (sha, ponta) => `ls-remote devolveu ${sha ?? '(nada)'} e o destino local esta em ${ponta}: o push nao ficou provado`,
90
100
  pushSemProvaCorrecao: 'rode o ship de novo e confira o remoto',
91
101
  // ci.ts: o detalhe da consulta ao CI (vai ao ledger dentro da evidencia do ship)
92
102
  ciNaoExigidoDetalhe: 'gate de CI não exigido pelo manifesto',
93
- ciRemotoNaoGithub: (remoto) => `remoto ${remoto} não é um repositório GitHub reconhecível`,
103
+ ciRemotoNaoGithub: (remoto) => `remoto ${remoto} não é um repositório GitHub reconhecível, nem GitLab`,
104
+ ciHostSemLogin: (host) => `o gh não está autenticado em ${host}: a CI desse host não foi consultada`,
105
+ ciForjaNaoResolvida: (remoto, motivo) => `a forja do remoto ${remoto} não foi resolvida: ${motivo}`,
94
106
  ciConsultaFalhou: 'consulta ao GitHub falhou',
95
107
  ciRespostaInvalida: 'GitHub devolveu uma resposta de checks inválida',
108
+ ciIncompleto: (contexto) => `check ${contexto}: a lista de check-runs ou de commit statuses do commit veio incompleta e o gate não decide sem ela inteira`,
109
+ ciStatusSemProdutorConfiavel: (contexto) => `${contexto}: só commit status de conta fora de ci.produtor; status verde só aprova de produtor aceito`,
110
+ ciSemProdutorAceito: (contexto, produtores, aceitos) => `${contexto}: verde só de produtor fora de ci.produtor (${produtores}); aceitos: ${aceitos}`,
111
+ ciProdutores: (contexto, produtores) => `check ${contexto} com mais de um produtor: ${produtores}`,
96
112
  ciSemCheck: (contexto) => `check ${contexto} não encontrado no commit`,
97
113
  ciVerde: 'CHECK independente verde no GitHub',
114
+ ciBloqueado: (contexto, conclusao) => `check ${contexto}: bloqueado (${conclusao})`,
98
115
  ciEstado: (contexto, status, conclusao) => `check ${contexto}: ${status}/${conclusao || 'sem conclusão'}`,
116
+ ciVerdeNoGitlab: 'CHECK independente verde no GitLab',
117
+ ciLeituraFalhou: (contexto, motivo) => `check ${contexto}: a CI não foi lida: ${motivo}`,
118
+ ciMescladoSemVinculo: (contexto, sha) => `ci.merged-results-sem-vinculo: o ${contexto} rodou só em pipeline de resultado mesclado sem vínculo provado com o head ${sha}; o gate não aprova`,
99
119
  // ork ship registrar-pr
100
120
  usoRegistrarPr: 'uso: ork ship registrar-pr <thread-id> [--repo <dono/nome> --pr <n>] | --todas [--remoto R] [--json] [--dry-run]',
101
121
  ensaio: 'Ensaio (--dry-run): nada foi gravado.',
@@ -103,7 +123,7 @@ exports.SHIP_PT_BR = {
103
123
  linhaDoRegistro: (thread, acao, motivo) => ` ${thread.padEnd(20)} ${acao.padEnd(13)} ${motivo}`,
104
124
  /** A acao e dado do `--json`; o texto so a traduz na impressao. */
105
125
  acoes: { 'registrou': 'registrou', 'registraria': 'registraria', 'ja-registrada': 'ja-registrada', 'sem-merge': 'sem-merge',
106
- 'recusada': 'recusada' },
126
+ 'recusada': 'recusada', 'pulada': 'pulada' },
107
127
  avisoDeDocs: (n) => `Aviso: ${n} pagina(s) do roadmap com estado.codigo fora de "Mesclado" depois do merge; ` +
108
128
  'o push da base reprova em docs.paridade.merge:',
109
129
  docPendente: (id, arquivo, merge, thread, codigo) => ` ${id} (${arquivo}): merge ${merge} de ship(${thread}), estado.codigo "${codigo || 'vazio'}"`,
@@ -113,6 +133,9 @@ exports.SHIP_PT_BR = {
113
133
  // entrega-pr.ts: o motivo de cada registro (sai no --json)
114
134
  prThreadFechada: 'thread ja fechada',
115
135
  prSemMerge: (thread, remoto, base) => `nenhum merge ship(${thread}) em ${remoto}/${base}`,
136
+ prSemLeitura: (remoto, base) => `o git fetch de ${remoto}/${base} falhou: sem leitura do remoto nao ha como achar o merge`,
137
+ prSemVinculo: (thread, sha) => `o merge ${sha} de ship(${thread}) tem um pai so (squash ou rebase) e nao liga a base ao head verificado; entregue por merge commit`,
138
+ prSemHead: (n, repo, forja = 'GitHub') => `o ${rotuloDoPedido(n, forja === 'GitLab')} de ${repo} esta mesclado, mas o ${forja} nao informou o head`,
116
139
  prJaTemShipDone: 'esta entrega ja tem ship_done',
117
140
  prForaDaPonta: (merge, remoto, base) => `o merge ${merge} nao esta na ponta de ${remoto}/${base}`,
118
141
  prSemCiVerde: (detalhe) => `sem CI verde no head do PR: ${detalhe}`,
@@ -120,15 +143,44 @@ exports.SHIP_PT_BR = {
120
143
  prRegistrou: (merge) => `ship_done pelo merge ${merge} do PR`,
121
144
  prRepoNaoDeclarado: (repo) => `o repositorio ${repo} nao esta declarado em ci.external_repositories do orkastery.yaml`,
122
145
  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'}`,
146
+ prExternoJaTem: (n, repo, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} de ${repo} ja tem ship_done`,
147
+ prConsultaFalhou: (n, repo, forja = 'GitHub') => `a consulta do ${rotuloDoPedido(n, forja === 'GitLab')} de ${repo} ao ${forja} falhou`,
148
+ prNaoMesclado: (n, repo, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} de ${repo} nao esta mesclado`,
149
+ prNaoCitaThread: (n, repo, thread, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} de ${repo} nao cita a thread ${thread} no titulo, no corpo nem na branch`,
150
+ prRepoFalhou: (repo, forja = 'GitHub') => `a consulta de ${repo} ao ${forja} falhou`,
151
+ prOutraBase: (n, base, repo, padrao, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} entrou em ${base}, e a branch padrao de ${repo} e ${padrao ?? 'desconhecida'}`,
129
152
  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}`,
153
+ prForjaDoExterno: (repo, motivo) => `a forja de ${repo} não foi resolvida: ${motivo}`,
154
+ prForjaDoProjetoNaoResolvida: (repo, remoto, motivo) => `a forja do remoto ${remoto} não foi resolvida (${motivo}), e ${repo} não é consultado em outro host; declare forja.tipo no orkastery.yaml ou faça login na CLI da forja nesse host`,
155
+ prRepoComSubgrupoNoGithub: (repo) => `${repo} tem subgrupos, e um repositorio do GitHub e so dono/nome; num projeto do GitLab, o remoto ou forja.tipo: gitlab no orkastery.yaml diz a forja`,
156
+ prExternoRegistraria: (merge, n, repo, gitlab = false) => `ensaio: registraria ship_done pelo merge ${merge} do ${rotuloDoPedido(n, gitlab)} de ${repo} (nada gravado)`,
157
+ prExternoRegistrou: (merge, n, repo, gitlab = false) => `ship_done pelo merge ${merge} do ${rotuloDoPedido(n, gitlab)} de ${repo}`,
158
+ // RM-058, integração (T1.1 e D3 da ork-rm058integra): a guarda das threads do arco #Noctum nos caminhos de entrega de fora
159
+ // do arco (`noctum-guarda.ts`). O motivo tipado abre o texto, igual nas duas línguas.
160
+ guarda: {
161
+ situacoes: { 'proposto': 'proposto', 'agendado': 'agendado', 'vigente': 'vigente', 'expirado': 'expirado', 'revogado': 'revogado',
162
+ 'encerrado': 'encerrado' },
163
+ origens: { 'envelope': 'pela lista do envelope', 'proposta': 'pela proposta que espera o dono', 'despacho': 'pelo log de despachos do arco',
164
+ 'correlacao': 'pelo último despacho da thread', 'rede': 'pela rede do arco' },
165
+ doArco: (thread, arco, situacao, origem) => `noctum.guarda.thread-do-arco: a thread ${thread} é trabalho do arco ${arco} (${situacao}, ${origem})`,
166
+ doArcoCorrecao: (arco) => `a entrega desta thread é do passo da entrega do arco ${arco}: o SHIP e o MASTER dela são do arco (ork noctum status ${arco})`,
167
+ arcoIlegivel: (thread, arco, motivo) => `noctum.guarda.arco-ilegivel: o último despacho da thread ${thread} foi do arco ${arco}, e o arco não se lê (${motivo})`,
168
+ arcoIlegivelCorrecao: (arco) => `inspecione o arco antes de entregar a thread por fora dele (ork noctum status ${arco})`,
169
+ redeIlegivel: (thread, arco, motivo) => `noctum.guarda.rede-ilegivel: a thread ${thread} é trabalho do arco ${arco}, encerrado nesta máquina, e a rede não se lê (${motivo})`,
170
+ redeIlegivelCorrecao: (arco) => `restaure a leitura da rede antes de entregar a thread por fora do arco (ork noctum status ${arco})`,
171
+ redeDoArco: (thread, arco, estado, trabalho) => `noctum.guarda.thread-do-arco: a thread ${thread} é o trabalho ${trabalho} do arco ${arco}, ainda ${estado} na rede`,
172
+ redeDoArcoCorrecao: (arco) => `espere o trabalho terminar na rede ou entregue-o pelo passo da entrega do arco ${arco} (ork noctum status ${arco})`,
173
+ retencao: (thread, arco, situacao) => `noctum.guarda.thread-do-arco: o arco ${arco} (${situacao}) despachou a thread ${thread} por último; a batida e a Sentinela ` +
174
+ 'não a despacham, não a retomam nem a mesclam até um despacho fora do arco ou um arco novo que a liste',
175
+ // A2 do CHECK: o arco terminou, e a sessão que ele despachou ainda conduz a thread.
176
+ sessaoDoArco: (thread, arco, situacao, sessao) => `noctum.guarda.thread-do-arco: o arco ${arco} está ${situacao}, e a sessão ${sessao} que ele despachou ainda conduz a thread ${thread}: ` +
177
+ 'ela não entrega fora do arco',
178
+ sessaoDoArcoCorrecao: (arco) => `espere a parada que o fechamento do arco pede, ou pare a sessão; sem sessão do arco em voo, a thread se entrega à mão (ork noctum status ${arco})`,
179
+ // M3 do CHECK 3: a reserva pendente sem o id da sessão; não há sessão a parar, e quem a resolve é o vigia.
180
+ reservaDoArco: (thread, arco, situacao, seq) => `noctum.guarda.thread-do-arco: o arco ${arco} está ${situacao}, e a reserva ${seq} que ele fez para a thread ${thread} pode ter aberto ` +
181
+ 'uma sessão sem id: ela não entrega fora do arco',
182
+ reservaDoArcoCorrecao: (arco) => `espere o vigia reconciliar a reserva (ele a conclui com a sessão ou a devolve); sem sessão do arco em voo, a thread se entrega à mão (ork noctum status ${arco})`,
183
+ },
132
184
  // RM-059 (F7, T7.1): `ork ship publicar` e `ork ship pista`. O detalhe, a correcao e o texto das etapas vao ao
133
185
  // `--json` e ao ledger em pt-BR; a impressao os remonta no locale do comando.
134
186
  publicar: {
@@ -141,7 +193,7 @@ exports.SHIP_PT_BR = {
141
193
  linhaRemoto: (remoto, antes, depois) => ` remoto ${remoto}: ${depois} (antes: ${antes})`,
142
194
  linhaPushProvado: ' push PROVADO pelo ls-remote (mesmo sha do HEAD)',
143
195
  linhaPushSemProva: ' push sem prova',
144
- linhaPr: (n, criado, url) => ` PR #${n} ${criado ? 'aberto agora' : 'reaproveitado'}${url ? ` (${url})` : ''}`,
196
+ linhaPr: (n, criado, url, gitlab = false) => ` ${gitlab ? 'MR !' : 'PR #'}${n} ${criado ? 'aberto agora' : 'reaproveitado'}${url ? ` (${url})` : ''}`,
145
197
  linhaCorpo: (corpo) => ` corpo do PR ${corpo}`,
146
198
  resultado: (acao) => `${acao}.`,
147
199
  acoes: { 'publicou': 'PUBLICADA', 'publicaria': 'PUBLICARIA', 'ja-publicada': 'JÁ PUBLICADA', 'recusada': 'RECUSADA' },
@@ -152,6 +204,8 @@ exports.SHIP_PT_BR = {
152
204
  threadFechadaCorrecao: 'a entrega nova vai numa thread nova',
153
205
  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
206
  modoSemPushCorrecao: (comando) => `o dono publica do próprio terminal: ${comando}`,
207
+ /** O comando do dono quando o tipo da forja nao se sabe sem rede (host proprio sem o bloco `forja:`). */
208
+ comandoDasDuasForjas: (gh, glab) => `no GitHub, ${gh}; no GitLab, ${glab}`,
155
209
  conduzida: (sessao, fase) => `a sessão ${sessao} conduz a thread agora (fase ${fase}); a branch pode mudar no meio da publicação`,
156
210
  conduzidaCorrecao: (thread) => `publique depois do fim do turno (ork conducao status ${thread})`,
157
211
  semBranch: (branch) => `a branch ${branch} da thread não existe neste repositório`,
@@ -186,27 +240,32 @@ exports.SHIP_PT_BR = {
186
240
  bundleCorrecao: (thread) => `rode ork ci prepare ${thread} na worktree e commite o bundle como ci(${thread}): bundle`,
187
241
  semRemoto: (remoto) => `o remoto ${remoto} não está configurado neste repositório`,
188
242
  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`,
243
+ semForja: (remoto, motivo) => `o remoto ${remoto} não é um repositório do GitHub nem do GitLab${motivo ? ` (${motivo})` : ''}; o ork ship publicar abre PR/MR só nessas forjas`,
190
244
  semForjaCorrecao: 'publique a branch e abra o pedido de merge pela forja do remoto',
191
245
  lsRemoteFalhou: (remoto, erro) => `git ls-remote ${remoto} falhou: ${erro}`,
192
246
  prsFalharam: (erro) => `a lista de PRs da branch falhou: ${erro}`,
193
247
  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`,
248
+ jaPublicada: (n, gitlab = false) => `a branch já está no remoto no HEAD e o ${rotuloDoPedido(n, gitlab)} está aberto; nada a fazer`,
249
+ jaMesclado: (n, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} já foi mesclado no HEAD; nada a publicar`,
196
250
  registreAEntrega: (thread) => `registre a entrega: ork ship registrar-pr ${thread}`,
197
251
  remotoDivergiu: (remoto, branch, sha) => `o remoto ${remoto} tem a branch ${branch} em ${sha}, com commit que a branch local não tem`,
198
252
  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)`,
253
+ passoReaproveita: (n, gitlab = false) => `reaproveita o ${rotuloDoPedido(n, gitlab)}, já aberto`,
254
+ publicaria: (sha, n, gitlab = false) => `ensaio: publicaria o HEAD ${sha} e ${n ? `atualizaria o ${rotuloDoPedido(n, gitlab)}` : `abriria o ${gitlab ? 'MR' : 'PR'}`} (nada foi feito)`,
201
255
  pushFalhou: (remoto, branch, erro) => `o push de ${branch} para ${remoto} falhou: ${erro}`,
202
256
  pushSemProva: (remota, head) => `o ls-remote devolveu ${remota ?? '(nada)'} e o HEAD está em ${head}: o push não ficou provado`,
203
257
  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.`,
258
+ corpoPadrao: (tag, branch, sha, contexto, gitlab = false) => `Publicado pelo ork ship publicar (modo ${tag}): a branch ${branch} no HEAD ${sha}, provada pelo ls-remote. ` +
259
+ `O CHECK independente roda no CI (${contexto}) a partir deste ${gitlab ? 'MR' : 'PR'}.`,
206
260
  prSemReleitura: 'o PR não apareceu na releitura da lista',
207
261
  prFalhou: (sha, erro) => `a branch foi publicada e provada no HEAD ${sha}, mas o PR não abriu: ${erro}`,
208
262
  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'}`,
263
+ prsFalharamGitlab: (erro) => `a lista de MRs da branch falhou: ${erro}`,
264
+ redeCorrecaoGitlab: 'confira a rede e o login do glab no host (glab auth status) e rode de novo',
265
+ prSemReleituraGitlab: 'o MR não apareceu na releitura da lista',
266
+ prFalhouGitlab: (sha, erro) => `a branch foi publicada e provada no HEAD ${sha}, mas o MR não abriu: ${erro}`,
267
+ prFalhouCorrecaoGitlab: (thread) => `confira o login do glab e rode ork ship publicar ${thread} de novo (o push já está provado)`,
268
+ publicou: (sha, n, criado, gitlab = false) => `HEAD ${sha} publicado e provado; ${rotuloDoPedido(n, gitlab)} ${criado ? 'aberto agora' : 'reaproveitado'}`,
210
269
  // As etapas da pista
211
270
  remotoNaoLido: (remoto) => `o git ls-remote ${remoto} não respondeu`,
212
271
  branchPublicada: (sha) => `branch publicada no HEAD ${sha}`,
@@ -215,20 +274,20 @@ exports.SHIP_PT_BR = {
215
274
  prsNaoLidos: (erro) => `PRs não lidos: ${erro}`,
216
275
  prsCortados: (limite) => `a lista dos PRs abertos veio cortada nos ${limite} mais novos: o PR da branch não foi lido`,
217
276
  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`,
277
+ prFechado: (n, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} foi fechado sem merge`,
219
278
  semPr: 'sem PR da branch',
220
279
  ciSemPr: 'sem PR, o CI não roda',
221
280
  ciNaoExigido: 'CI não exigido pelo manifesto',
222
281
  conflitoSemPr: 'sem PR, sem conflito a medir',
223
- prMesclado: (n) => `PR #${n} mesclado`,
282
+ prMesclado: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} mesclado`,
224
283
  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}`,
284
+ prRascunho: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} aberto em rascunho`,
285
+ prAberto: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} aberto`,
286
+ ciSemCheck: (contexto, n, gitlab = false) => `o check ${contexto} ainda não apareceu no ${rotuloDoPedido(n, gitlab)}`,
228
287
  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`,
288
+ ciVermelho: (contexto, n, gitlab = false) => `check ${contexto} vermelho no ${rotuloDoPedido(n, gitlab)}`,
289
+ ciEsperando: (contexto, n, gitlab = false) => `check ${contexto} em andamento no ${rotuloDoPedido(n, gitlab)}`,
290
+ conflito: (n, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} conflita com a base`,
232
291
  semConflito: 'sem conflito com a base',
233
292
  conflitoNaoCalculado: 'o GitHub ainda não calculou o merge com a base',
234
293
  entregue: 'entregue: ship_done no ledger',
@@ -238,14 +297,14 @@ exports.SHIP_PT_BR = {
238
297
  proximoEntregue: 'entregue; o MASTER fecha a thread',
239
298
  proximoRegistrar: 'mesclado na base: registre a entrega',
240
299
  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}`,
300
+ proximoPublicarNoPr: (n, gitlab = false) => `publique os commits novos no ${rotuloDoPedido(n, gitlab)}`,
242
301
  proximoPublicar: 'publique a branch e abra o PR',
243
302
  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`,
303
+ proximoConflito: (n, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} conflita com a base: mescle a origin/main na worktree pela sessão de GO, rode o verify e regrave o bundle`,
304
+ proximoCiVermelho: (contexto, n, gitlab = false) => `o check ${contexto} está vermelho no ${rotuloDoPedido(n, gitlab)}: corrija pela sessão de GO e publique de novo`,
305
+ proximoEsperandoCi: (contexto, n, gitlab = false) => `esperando o check ${contexto} no ${rotuloDoPedido(n, gitlab)}`,
306
+ proximoRascunho: (n, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} está em rascunho, com o CI verde: tire do rascunho; o merge é do dono ou do condutor`,
307
+ proximoMerge: (n, gitlab = false) => `o ${rotuloDoPedido(n, gitlab)} está pronto para o merge, que é do dono ou do condutor`,
249
308
  // A impressao da pista
250
309
  cabecalhoPista: (quando, remoto, base) => `Pista de entrega (lida em ${quando}, base ${remoto}/${base})`,
251
310
  semPistas: 'Nenhuma thread aberta na entrega.',
@@ -303,6 +362,10 @@ exports.SHIP_EN = {
303
362
  contratoPublicoCorrecao: 'redo the change in a #Classic, #Maestro or #Auto thread',
304
363
  ciReprovou: (detalhe, sha, contexto) => `${detalhe} (commit ${sha}, context ${contexto})`,
305
364
  ciReprovouCorrecao: (contexto) => `publish the branch, wait for the ${contexto} check to go green on GitHub and run SHIP again`,
365
+ scanNaoVarrido: (categorias, sha) => `the security scan did not scan these loop categories at commit ${sha}: ${categorias} (tool unavailable, failed or no report)`,
366
+ passoAutorizariaSemScan: (quem, categorias, sha) => `dry run: the real ship would record ship_unscanned_authorized by ${quem} for ${categorias} at commit ${sha}`,
367
+ allowUnscannedSemValor: 'error: --allow-unscanned needs who authorizes: ork ship <thread> --para <branch> --allow-unscanned "<who>"',
368
+ scanNaoVarridoCorrecao: (thread) => `run ork security-scan with Docker or the native binaries and run SHIP again; to ship unscanned, authorize it: ork ship ${thread} --para <branch> --allow-unscanned "<who>"`,
306
369
  arvoreDona: (dona, para, suja) => `${dona} (the tree with ${para} checked out; ${suja ? 'DIRTY, ship would fail with tree.blocked' : 'clean'})`,
307
370
  arvoreTemporaria: (dir, para) => `temporary worktree at ${dir} (nobody has ${para} checked out)`,
308
371
  arvoreDeMerge: (arvore) => `merge tree: ${arvore}`,
@@ -329,22 +392,36 @@ exports.SHIP_EN = {
329
392
  semPrimeiroPaiCorrecao: 'check the repository: ship_done needs the merge that delivered the thread',
330
393
  passoJaIncorporado: (de, para, sha) => `(nothing to merge: ${de} is already an ancestor of ${para}, brought in by ${sha})`,
331
394
  pushFalhou: (remoto, para, erro) => `push to ${remoto}/${para} failed: ${erro}`,
395
+ configDoRemotoInvalida: (chave) => `ship.config-do-remoto.invalida: the remote config accepts only -c key=value pairs for the pinned transport keys (refused: ${chave || 'invalid shape'}); nothing was passed to git`,
332
396
  pushFalhouCorrecao: 'fix the access to the remote and run ship again (the local merge already happened)',
397
+ pushBaseProtegida: (remoto, para, erro) => `the protection of ${remoto}/${para} refused the direct push to the base (entrega.base-protegida): ${erro}`,
398
+ pushBaseProtegidaCorrecao: (thread) => `deliver by PR/MR: ork ship publicar ${thread} (in #Auto and #Maestro) or a request opened on the forge; after the merge, ` +
399
+ `ork ship registrar-pr ${thread}. The local merge on the base did not reach the remote`,
333
400
  pushSemProva: (sha, ponta) => `ls-remote returned ${sha ?? '(nothing)'} and the local target is at ${ponta}: the push was not proven`,
334
401
  pushSemProvaCorrecao: 'run ship again and check the remote',
335
402
  ciNaoExigidoDetalhe: 'CI gate not required by the manifest',
336
- ciRemotoNaoGithub: (remoto) => `remote ${remoto} is not a recognizable GitHub repository`,
403
+ ciRemotoNaoGithub: (remoto) => `remote ${remoto} is not a recognizable GitHub repository, nor a GitLab one`,
404
+ ciHostSemLogin: (host) => `gh is not logged in to ${host}: CI on that host was not queried`,
405
+ ciForjaNaoResolvida: (remoto, motivo) => `the forge of remote ${remoto} was not resolved: ${motivo}`,
337
406
  ciConsultaFalhou: 'GitHub query failed',
338
407
  ciRespostaInvalida: 'GitHub returned an invalid checks response',
408
+ ciIncompleto: (contexto) => `check ${contexto}: the commit's list of check runs or commit statuses came back incomplete, and the gate does not decide without all of it`,
409
+ ciStatusSemProdutorConfiavel: (contexto) => `${contexto}: commit status only, from accounts outside ci.produtor; a green status approves only from an accepted producer`,
410
+ ciSemProdutorAceito: (contexto, produtores, aceitos) => `${contexto}: green only from producers outside ci.produtor (${produtores}); accepted: ${aceitos}`,
411
+ ciProdutores: (contexto, produtores) => `check ${contexto} from more than one producer: ${produtores}`,
339
412
  ciSemCheck: (contexto) => `check ${contexto} not found on the commit`,
340
413
  ciVerde: 'independent CHECK green on GitHub',
414
+ ciBloqueado: (contexto, conclusao) => `check ${contexto}: blocked (${conclusao})`,
341
415
  ciEstado: (contexto, status, conclusao) => `check ${contexto}: ${status}/${conclusao || 'no conclusion'}`,
416
+ ciVerdeNoGitlab: 'independent CHECK green on GitLab',
417
+ ciLeituraFalhou: (contexto, motivo) => `check ${contexto}: CI was not read: ${motivo}`,
418
+ ciMescladoSemVinculo: (contexto, sha) => `ci.merged-results-sem-vinculo: ${contexto} ran only in a merged results pipeline with no proven link to head ${sha}; the gate does not approve`,
342
419
  usoRegistrarPr: 'usage: ork ship registrar-pr <thread-id> [--repo <owner/name> --pr <n>] | --todas [--remoto R] [--json] [--dry-run]',
343
420
  ensaio: 'Dry run (--dry-run): nothing was written.',
344
421
  nenhumaComMerge: 'No open thread with a ship(<thread>) merge on the base.',
345
422
  linhaDoRegistro: (thread, acao, motivo) => ` ${thread.padEnd(20)} ${acao.padEnd(13)} ${motivo}`,
346
423
  acoes: { 'registrou': 'recorded', 'registraria': 'would record', 'ja-registrada': 'already recorded', 'sem-merge': 'no merge',
347
- 'recusada': 'refused' },
424
+ 'recusada': 'refused', 'pulada': 'skipped' },
348
425
  avisoDeDocs: (n) => `Warning: ${n} roadmap page(s) with \`estado.codigo\` other than "Mesclado" after the merge; ` +
349
426
  'the push to the base fails on docs.paridade.merge:',
350
427
  docPendente: (id, arquivo, merge, thread, codigo) => ` ${id} (${arquivo}): merge ${merge} from ship(${thread}), estado.codigo "${codigo || 'empty'}"`,
@@ -353,6 +430,9 @@ exports.SHIP_EN = {
353
430
  registrariam: (n) => `${n} delivery(ies) would be recorded. To write them, run the same command without \`--dry-run\`.`,
354
431
  prThreadFechada: 'thread already closed',
355
432
  prSemMerge: (thread, remoto, base) => `no ship(${thread}) merge on ${remoto}/${base}`,
433
+ prSemLeitura: (remoto, base) => `git fetch of ${remoto}/${base} failed: without reading the remote the merge cannot be found`,
434
+ prSemVinculo: (thread, sha) => `merge ${sha} of ship(${thread}) has a single parent (squash or rebase) and does not tie the base to the verified head; deliver with a merge commit`,
435
+ prSemHead: (n, repo, forja = 'GitHub') => `${rotuloDoPedido(n, forja === 'GitLab')} of ${repo} is merged, but ${forja} did not report its head`,
356
436
  prJaTemShipDone: 'this delivery already has ship_done',
357
437
  prForaDaPonta: (merge, remoto, base) => `merge ${merge} is not at the tip of ${remoto}/${base}`,
358
438
  prSemCiVerde: (detalhe) => `no green CI on the PR head: ${detalhe}`,
@@ -360,15 +440,40 @@ exports.SHIP_EN = {
360
440
  prRegistrou: (merge) => `ship_done from merge ${merge} of the PR`,
361
441
  prRepoNaoDeclarado: (repo) => `repository ${repo} is not declared in \`ci.external_repositories\` of \`orkastery.yaml\``,
362
442
  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'}`,
443
+ prExternoJaTem: (n, repo, gitlab = false) => `${rotuloDoPedido(n, gitlab)} of ${repo} already has ship_done`,
444
+ prConsultaFalhou: (n, repo, forja = 'GitHub') => `the ${forja} query for ${rotuloDoPedido(n, forja === 'GitLab')} of ${repo} failed`,
445
+ prNaoMesclado: (n, repo, gitlab = false) => `${rotuloDoPedido(n, gitlab)} of ${repo} is not merged`,
446
+ prNaoCitaThread: (n, repo, thread, gitlab = false) => `${rotuloDoPedido(n, gitlab)} of ${repo} does not mention thread ${thread} in its title, body or branch`,
447
+ prRepoFalhou: (repo, forja = 'GitHub') => `the ${forja} query for ${repo} failed`,
448
+ prOutraBase: (n, base, repo, padrao, gitlab = false) => `${rotuloDoPedido(n, gitlab)} landed on ${base}, and the default branch of ${repo} is ${padrao ?? 'unknown'}`,
369
449
  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}`,
450
+ prForjaDoExterno: (repo, motivo) => `the forge of ${repo} was not resolved: ${motivo}`,
451
+ prForjaDoProjetoNaoResolvida: (repo, remoto, motivo) => `the forge of remote ${remoto} was not resolved (${motivo}), and ${repo} is not queried on another host; declare forja.tipo in orkastery.yaml or log in to the forge CLI on that host`,
452
+ prRepoComSubgrupoNoGithub: (repo) => `${repo} has subgroups, and a GitHub repository is only owner/name; in a GitLab project, the remote or forja.tipo: gitlab in orkastery.yaml names the forge`,
453
+ prExternoRegistraria: (merge, n, repo, gitlab = false) => `dry run: would record ship_done from merge ${merge} of ${rotuloDoPedido(n, gitlab)} of ${repo} (nothing written)`,
454
+ prExternoRegistrou: (merge, n, repo, gitlab = false) => `ship_done from merge ${merge} of ${rotuloDoPedido(n, gitlab)} of ${repo}`,
455
+ guarda: {
456
+ situacoes: { 'proposto': 'proposed', 'agendado': 'scheduled', 'vigente': 'in force', 'expirado': 'expired', 'revogado': 'revoked',
457
+ 'encerrado': 'closed' },
458
+ origens: { 'envelope': 'by the envelope list', 'proposta': 'by the proposal waiting for the owner', 'despacho': 'by the arc dispatch log',
459
+ 'correlacao': 'by the last dispatch of the thread', 'rede': 'by the arc network' },
460
+ doArco: (thread, arco, situacao, origem) => `noctum.guarda.thread-do-arco: thread ${thread} is work of arc ${arco} (${situacao}, ${origem})`,
461
+ doArcoCorrecao: (arco) => `this thread is delivered by the delivery step of arc ${arco}: its SHIP and MASTER belong to the arc (ork noctum status ${arco})`,
462
+ arcoIlegivel: (thread, arco, motivo) => `noctum.guarda.arco-ilegivel: the last dispatch of thread ${thread} came from arc ${arco}, and the arc cannot be read (${motivo})`,
463
+ arcoIlegivelCorrecao: (arco) => `inspect the arc before delivering the thread outside it (ork noctum status ${arco})`,
464
+ redeIlegivel: (thread, arco, motivo) => `noctum.guarda.rede-ilegivel: thread ${thread} is work of arc ${arco}, closed on this machine, and its network cannot be read (${motivo})`,
465
+ redeIlegivelCorrecao: (arco) => `restore network reading before delivering the thread outside the arc (ork noctum status ${arco})`,
466
+ redeDoArco: (thread, arco, estado, trabalho) => `noctum.guarda.thread-do-arco: thread ${thread} is work ${trabalho} of arc ${arco}, still ${estado} on the network`,
467
+ redeDoArcoCorrecao: (arco) => `wait for the work to finish on the network or deliver it through the delivery step of arc ${arco} (ork noctum status ${arco})`,
468
+ retencao: (thread, arco, situacao) => `noctum.guarda.thread-do-arco: arc ${arco} (${situacao}) dispatched thread ${thread} last; the beat and the Sentinel ` +
469
+ 'do not dispatch, resume or merge it until a dispatch outside the arc or a new arc that lists it',
470
+ sessaoDoArco: (thread, arco, situacao, sessao) => `noctum.guarda.thread-do-arco: arc ${arco} is ${situacao}, and session ${sessao} that it dispatched still conducts thread ${thread}: ` +
471
+ 'it does not deliver outside the arc',
472
+ sessaoDoArcoCorrecao: (arco) => `wait for the stop that the arc closing requests, or stop the session; with no arc session in flight, the thread is delivered by hand (ork noctum status ${arco})`,
473
+ reservaDoArco: (thread, arco, situacao, seq) => `noctum.guarda.thread-do-arco: arc ${arco} is ${situacao}, and reservation ${seq} that it made for thread ${thread} may have opened ` +
474
+ 'a session without an id: it does not deliver outside the arc',
475
+ reservaDoArcoCorrecao: (arco) => `wait for the watcher to reconcile the reservation (it concludes it with the session or returns it); with no arc session in flight, the thread is delivered by hand (ork noctum status ${arco})`,
476
+ },
372
477
  publicar: {
373
478
  uso: 'usage: ork ship publicar <thread-id> [--dry-run] [--remoto R] [--json]',
374
479
  usoPista: 'usage: ork ship pista [<thread-id>] [--remoto R] [--json]',
@@ -379,7 +484,7 @@ exports.SHIP_EN = {
379
484
  linhaRemoto: (remoto, antes, depois) => ` remote ${remoto}: ${depois} (before: ${antes})`,
380
485
  linhaPushProvado: ' push PROVEN by ls-remote (same sha as HEAD)',
381
486
  linhaPushSemProva: ' push without proof',
382
- linhaPr: (n, criado, url) => ` PR #${n} ${criado ? 'opened now' : 'reused'}${url ? ` (${url})` : ''}`,
487
+ linhaPr: (n, criado, url, gitlab = false) => ` ${gitlab ? 'MR !' : 'PR #'}${n} ${criado ? 'opened now' : 'reused'}${url ? ` (${url})` : ''}`,
383
488
  linhaCorpo: (corpo) => ` PR body ${corpo}`,
384
489
  resultado: (acao) => `${acao}.`,
385
490
  acoes: { 'publicou': 'PUBLISHED', 'publicaria': 'WOULD PUBLISH', 'ja-publicada': 'ALREADY PUBLISHED', 'recusada': 'REFUSED' },
@@ -389,6 +494,7 @@ exports.SHIP_EN = {
389
494
  threadFechadaCorrecao: 'the new delivery goes in a new thread',
390
495
  modoSemPush: (tag) => `the ${tag} mode asks for the owner's authorization to push; ork ship publicar only publishes in #Auto and #Maestro`,
391
496
  modoSemPushCorrecao: (comando) => `the owner publishes from their own terminal: ${comando}`,
497
+ comandoDasDuasForjas: (gh, glab) => `on GitHub, ${gh}; on GitLab, ${glab}`,
392
498
  conduzida: (sessao, fase) => `session ${sessao} is conducting the thread now (phase ${fase}); the branch may change in the middle of the publication`,
393
499
  conduzidaCorrecao: (thread) => `publish after the end of the turn (ork conducao status ${thread})`,
394
500
  semBranch: (branch) => `the thread branch ${branch} does not exist in this repository`,
@@ -423,27 +529,32 @@ exports.SHIP_EN = {
423
529
  bundleCorrecao: (thread) => `run ork ci prepare ${thread} in the worktree and commit the bundle as ci(${thread}): bundle`,
424
530
  semRemoto: (remoto) => `remote ${remoto} is not configured in this repository`,
425
531
  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`,
532
+ semForja: (remoto, motivo) => `remote ${remoto} is not a GitHub or GitLab repository${motivo ? ` (${motivo})` : ''}; ork ship publicar only opens PRs/MRs on those forges`,
427
533
  semForjaCorrecao: 'publish the branch and open the merge request through the remote forge',
428
534
  lsRemoteFalhou: (remoto, erro) => `git ls-remote ${remoto} failed: ${erro}`,
429
535
  prsFalharam: (erro) => `the branch PR list failed: ${erro}`,
430
536
  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`,
537
+ jaPublicada: (n, gitlab = false) => `the branch is already on the remote at HEAD and ${rotuloDoPedido(n, gitlab)} is open; nothing to do`,
538
+ jaMesclado: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} was already merged at HEAD; nothing to publish`,
433
539
  registreAEntrega: (thread) => `record the delivery: ork ship registrar-pr ${thread}`,
434
540
  remotoDivergiu: (remoto, branch, sha) => `remote ${remoto} has branch ${branch} at ${sha}, with a commit the local branch does not have`,
435
541
  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)`,
542
+ passoReaproveita: (n, gitlab = false) => `reuses ${rotuloDoPedido(n, gitlab)}, already open`,
543
+ publicaria: (sha, n, gitlab = false) => `rehearsal: would publish HEAD ${sha} and ${n ? `update ${rotuloDoPedido(n, gitlab)}` : `open the ${gitlab ? 'MR' : 'PR'}`} (nothing was done)`,
438
544
  pushFalhou: (remoto, branch, erro) => `the push of ${branch} to ${remoto} failed: ${erro}`,
439
545
  pushSemProva: (remota, head) => `ls-remote returned ${remota ?? '(nothing)'} and HEAD is at ${head}: the push was not proven`,
440
546
  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.`,
547
+ corpoPadrao: (tag, branch, sha, contexto, gitlab = false) => `Published by ork ship publicar (${tag} mode): branch ${branch} at HEAD ${sha}, proven by ls-remote. ` +
548
+ `The independent CHECK runs on CI (${contexto}) from this ${gitlab ? 'MR' : 'PR'}.`,
443
549
  prSemReleitura: 'the PR did not show up when the list was read again',
444
550
  prFalhou: (sha, erro) => `the branch was published and proven at HEAD ${sha}, but the PR did not open: ${erro}`,
445
551
  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'}`,
552
+ prsFalharamGitlab: (erro) => `the branch MR list failed: ${erro}`,
553
+ redeCorrecaoGitlab: 'check the network and the glab login on the host (glab auth status) and run it again',
554
+ prSemReleituraGitlab: 'the MR did not show up when the list was read again',
555
+ prFalhouGitlab: (sha, erro) => `the branch was published and proven at HEAD ${sha}, but the MR did not open: ${erro}`,
556
+ prFalhouCorrecaoGitlab: (thread) => `check the glab login and run ork ship publicar ${thread} again (the push is already proven)`,
557
+ publicou: (sha, n, criado, gitlab = false) => `HEAD ${sha} published and proven; ${rotuloDoPedido(n, gitlab)} ${criado ? 'opened now' : 'reused'}`,
447
558
  remotoNaoLido: (remoto) => `git ls-remote ${remoto} did not answer`,
448
559
  branchPublicada: (sha) => `branch published at HEAD ${sha}`,
449
560
  branchNaoPublicada: 'branch not published yet',
@@ -451,20 +562,20 @@ exports.SHIP_EN = {
451
562
  prsNaoLidos: (erro) => `PRs not read: ${erro}`,
452
563
  prsCortados: (limite) => `the open PR list was cut at the ${limite} newest: the branch PR was not read`,
453
564
  branchSemConferir: 'the branch was left unchecked in this forge read: its PR was not read',
454
- prFechado: (n) => `PR #${n} was closed without merge`,
565
+ prFechado: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} was closed without merge`,
455
566
  semPr: 'no PR for the branch',
456
567
  ciSemPr: 'without a PR, CI does not run',
457
568
  ciNaoExigido: 'CI not required by the manifest',
458
569
  conflitoSemPr: 'without a PR, no conflict to measure',
459
- prMesclado: (n) => `PR #${n} merged`,
570
+ prMesclado: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} merged`,
460
571
  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`,
572
+ prRascunho: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} open as a draft`,
573
+ prAberto: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} open`,
574
+ ciSemCheck: (contexto, n, gitlab = false) => `check ${contexto} has not shown up on ${rotuloDoPedido(n, gitlab)} yet`,
464
575
  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`,
576
+ ciVermelho: (contexto, n, gitlab = false) => `check ${contexto} red on ${rotuloDoPedido(n, gitlab)}`,
577
+ ciEsperando: (contexto, n, gitlab = false) => `check ${contexto} running on ${rotuloDoPedido(n, gitlab)}`,
578
+ conflito: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} conflicts with the base`,
468
579
  semConflito: 'no conflict with the base',
469
580
  conflitoNaoCalculado: 'GitHub has not computed the merge with the base yet',
470
581
  entregue: 'delivered: ship_done in the ledger',
@@ -473,14 +584,14 @@ exports.SHIP_EN = {
473
584
  proximoEntregue: 'delivered; the MASTER closes the thread',
474
585
  proximoRegistrar: 'merged on the base: record the delivery',
475
586
  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}`,
587
+ proximoPublicarNoPr: (n, gitlab = false) => `publish the new commits to ${rotuloDoPedido(n, gitlab)}`,
477
588
  proximoPublicar: 'publish the branch and open the PR',
478
589
  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`,
590
+ proximoConflito: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} conflicts with the base: merge origin/main in the worktree through the GO session, run verify and write the bundle again`,
591
+ proximoCiVermelho: (contexto, n, gitlab = false) => `check ${contexto} is red on ${rotuloDoPedido(n, gitlab)}: fix it through the GO session and publish again`,
592
+ proximoEsperandoCi: (contexto, n, gitlab = false) => `waiting for check ${contexto} on ${rotuloDoPedido(n, gitlab)}`,
593
+ proximoRascunho: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} is a draft with green CI: take it out of draft; the merge belongs to the owner or the conductor`,
594
+ proximoMerge: (n, gitlab = false) => `${rotuloDoPedido(n, gitlab)} is ready for the merge, which belongs to the owner or the conductor`,
484
595
  cabecalhoPista: (quando, remoto, base) => `Delivery lane (read at ${quando}, base ${remoto}/${base})`,
485
596
  semPistas: 'No open thread in delivery.',
486
597
  remotoNaoRespondeu: (remoto) => `Warning: git ls-remote ${remoto} did not answer; the branch step was left unread.`,