@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
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "fixture-js",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "license": "MIT",
6
+ "dependencies": {
7
+ "express": "4.21.2",
8
+ "lodash": "4.17.20"
9
+ }
10
+ }
@@ -0,0 +1,4 @@
1
+ // Fake credential, not a real one. Deliberately committed so the secret scanners have something to find.
2
+ module.exports = {
3
+ apiKey: 'q7Zk2WmX9vB4nR8tLp3YdHs6JfC1aGe5',
4
+ };
@@ -0,0 +1,17 @@
1
+ const express = require('express');
2
+ const { exec } = require('node:child_process');
3
+ const _ = require('lodash');
4
+
5
+ const app = express();
6
+
7
+ app.get('/ls', function (req, res) {
8
+ // Command injection: user input reaches a shell.
9
+ exec('ls ' + req.query.dir, (err, out) => res.send(_.escape(out)));
10
+ });
11
+
12
+ app.get('/calc', function (req, res) {
13
+ // Code injection: user input reaches eval.
14
+ res.send(String(eval(req.query.expr)));
15
+ });
16
+
17
+ app.listen(8080);
@@ -0,0 +1,4 @@
1
+ export function parse(text: string) {
2
+ const data: any = JSON.parse(text);
3
+ return data.value;
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "compilerOptions": { "target": "ES2022", "module": "commonjs", "strict": true, "noEmit": true },
3
+ "include": ["src/**/*.ts"]
4
+ }
@@ -0,0 +1,12 @@
1
+ name: ci
2
+ on:
3
+ pull_request_target:
4
+ branches: [main]
5
+ jobs:
6
+ test:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v4
10
+ with:
11
+ ref: ${{ github.event.pull_request.head.sha }}
12
+ - run: echo "building ${{ github.event.pull_request.title }}"
@@ -0,0 +1,3 @@
1
+ FROM python:latest
2
+ COPY . /app
3
+ CMD ["python", "/app/app/main.py"]
@@ -0,0 +1,4 @@
1
+ # python fixture
2
+
3
+ Deliberately vulnerable and fake. Never run or deploy. It carries a fake secret, a dependency with a known CVE
4
+ (`requests` 2.19.1 in `requirements.txt`), a command injection, an unsafe workflow, a Dockerfile that runs as root and a lint finding.
@@ -0,0 +1,2 @@
1
+ # Fake credential, not a real one. Deliberately committed so the secret scanners have something to find.
2
+ API_KEY = "m4Xv8Qz2LkR7wTn3Bc9YdHs6JfP1aGe5"
@@ -0,0 +1,19 @@
1
+ import os
2
+ import subprocess
3
+ import sys
4
+
5
+ import yaml
6
+ from flask import Flask, request
7
+
8
+ app = Flask(__name__)
9
+
10
+
11
+ @app.route("/run")
12
+ def run():
13
+ # Command injection: user input reaches a shell.
14
+ subprocess.call("ls " + request.args.get("dir"), shell=True)
15
+ return "ok"
16
+
17
+
18
+ if __name__ == "__main__":
19
+ app.run(debug=True)
@@ -0,0 +1 @@
1
+ requests==2.19.1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orkastery/cli",
3
- "version": "0.5.6",
3
+ "version": "0.6.1",
4
4
  "description": "A software factory of AI agents that proves its work: parallel threads, verified results, and short decisions only when they matter.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/orkastery/orkastery#readme",
@@ -42,6 +42,7 @@
42
42
  "!adapters/**/test/",
43
43
  "!adapters/**/__pycache__/",
44
44
  "!adapters/claude-code/ACTIVATION.md",
45
+ "!assets/adapters-en/claude-code/ACTIVATION.md",
45
46
  "monitor/",
46
47
  "!monitor/*.test.cjs",
47
48
  "!monitor/pulse-write-scope.json",
@@ -52,10 +53,13 @@
52
53
  "access": "public"
53
54
  },
54
55
  "scripts": {
55
- "build": "tsc -p tsconfig.json && chmod +x dist/index.js",
56
- "build:test": "tsc -p tsconfig.test.json",
57
- "test": "npm run build && npm run build:test && node --test dist-test/test/*.test.js",
56
+ "build": "tsc --build tsconfig.json && chmod +x dist/index.js",
57
+ "build:test": "tsc --build tsconfig.test.json",
58
+ "test": "npm run build && npm run build:test && node scripts/casa-temporaria.cjs node --test dist-test/test/*.test.js",
58
59
  "test:ci": "npm run build && npm run build:test && node scripts/test-ci.js",
60
+ "test:hermetica": "node scripts/test-lanes.cjs hermetica",
61
+ "test:integracao": "node scripts/test-lanes.cjs integracao",
62
+ "preparo:tsgo": "node scripts/preparo-tsgo.cjs",
59
63
  "ork": "node dist/index.js",
60
64
  "prepack": "npm run build && node scripts/preparar-pacote.js",
61
65
  "postpack": "node scripts/preparar-pacote.js --limpar"
@@ -65,10 +69,11 @@
65
69
  },
66
70
  "devDependencies": {
67
71
  "@types/node": "^22.10.2",
72
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
68
73
  "markdownlint-cli2": "^0.22.1"
69
74
  },
70
75
  "dependencies": {
71
- "@modelcontextprotocol/sdk": "1.29.0",
76
+ "@modelcontextprotocol/sdk": "1.32.2",
72
77
  "decode-named-character-reference": "1.3.0",
73
78
  "micromark": "4.0.2",
74
79
  "micromark-extension-gfm-table": "2.1.1",
@@ -27,8 +27,8 @@ flowchart TB
27
27
 
28
28
  | # | Verificacao | Como se comprova |
29
29
  |---|---|---|
30
- | 1 | Nenhum segredo na arvore de trabalho: token, chave de API, senha, bloco de chave privada, string de conexao e string de alta entropia com cara de credencial, incluindo arquivos `.env`, fixtures de teste e configs de exemplo. | Leitura do diff da branch mais varredura da arvore. O relatorio nomeia a ferramenta usada ou diz que a passagem foi manual. |
31
- | 2 | Nenhum segredo no historico atras da branch. Segredo commitado e depois apagado continua vazado. | `git log -p <base>..HEAD` sobre o intervalo inteiro, nao so a arvore. Bloqueador ate a credencial ser rotacionada e o historico limpo, com a rotacao verificada e nao prometida. |
30
+ | 1 | Nenhum segredo na arvore de trabalho: token, chave de API, senha, bloco de chave privada, string de conexao e string de alta entropia com cara de credencial, incluindo arquivos `.env`, fixtures de teste e configs de exemplo. | Leitura do diff da branch mais varredura da arvore. O relatorio nomeia a ferramenta usada ou diz que a passagem foi manual. Com `verify.security_scan` declarado, a evidencia e o `security_scan` (Gitleaks na arvore); a passagem manual so vale com o scan `unavailable` declarado. |
31
+ | 2 | Nenhum segredo no historico atras da branch. Segredo commitado e depois apagado continua vazado. | `git log -p <base>..HEAD` sobre o intervalo inteiro, nao so a arvore. Bloqueador ate a credencial ser rotacionada e o historico limpo, com a rotacao verificada e nao prometida. Com `verify.security_scan` declarado, o `security_scan` varre tambem os commits de `<base>..HEAD`; a passagem manual so vale com o scan `unavailable` declarado. |
32
32
  | 3 | Nenhuma credencial real em prompt despachado. O gate `phase.dispatch` do `ork` avalia a policy `segredo_em_prompt` ANTES de gravar o prompt em disco: prompt reprovado nao chega a existir como arquivo, porque gravar um prompt com credencial cria um segundo vazamento dentro do proprio repositorio. | `ork phase run` sai com motivo tipado `policy.violation`; o ledger registra o nome do padrao e a linha, nunca o trecho casado. |
33
33
  | 4 | Nenhuma credencial real em artefato de thread, ledger, saida de comando capturada ou no proprio relatorio de auditoria. Relatorio de vazamento que imprime o segredo e um segundo vazamento. | Leitura dos artefatos que a thread produziu. Placeholder redigido passa e e declarado como tal; credencial e referenciada por localizacao e forma redigida. |
34
34
 
@@ -46,7 +46,7 @@ flowchart TB
46
46
  | # | Verificacao | Como se comprova |
47
47
  |---|---|---|
48
48
  | 9 | Nenhuma dependencia nova sem justificativa no PLAN. Dependencia que entra sem tarefa e scope creep com superficie de ataque. | Diff dos arquivos de manifesto de pacote contra as tarefas do PLAN. |
49
- | 10 | Vulnerabilidade conhecida nas dependencias declaradas foi consultada, e o resultado esta no relatorio com a data e a ferramenta. Onde nao ha ferramenta, o item sai `unavailable` com o motivo. | `npm audit` onde ha dependencia de producao declarada. |
49
+ | 10 | Vulnerabilidade conhecida nas dependencias declaradas foi consultada, e o resultado esta no relatorio com a data e a ferramenta. Onde nao ha ferramenta, o item sai `unavailable` com o motivo. | `npm audit` onde ha dependencia de producao declarada. Com `verify.security_scan` declarado, a evidencia e o `security_scan` (dependencias e `reachable` do govulncheck); a passagem manual so vale com o scan `unavailable` declarado. |
50
50
 
51
51
  ## Artefatos do repositorio
52
52
 
package/skills/README.md CHANGED
@@ -17,6 +17,7 @@ faz, o nucleo vence, e a divergencia e defeito da skill.
17
17
  | phases | [plan-specification](phases/plan-specification/SKILL.md) | `ork phase run <t> PLAN`, `ork lease acquire` |
18
18
  | phases | [go-implementation](phases/go-implementation/SKILL.md) | `ork worktree ensure`, `ork verify --baseline` |
19
19
  | phases | [check-quality](phases/check-quality/SKILL.md) | `ork verify`, `ork gate request` |
20
+ | phases | [security-remediation](phases/security-remediation/SKILL.md) | `ork fix open`, `ork fix reverify`, `ork security-scan` |
20
21
  | phases | [ship-release](phases/ship-release/SKILL.md) | `ork ship` |
21
22
  | phases | [master-metrics](phases/master-metrics/SKILL.md) | `ork master`, `ork master <thread> --aceitar-omissao` |
22
23
  | reviewers | [code-reviewer](reviewers/code-reviewer/SKILL.md) | `references/code-review-axes.md` |
@@ -21,6 +21,7 @@ Distinga o contexto antes de agir:
21
21
  - **Sessao condutora:** recebe o pedido do dono, identifica ou abre a thread, despacha pelo `ork` e acompanha o resultado; nunca escreve codigo de produto no lugar da sessao despachada.
22
22
  - **Sessao de fase ja despachada:** recebeu thread, fase, prompt e worktree do `ork`.
23
23
  Trabalhe nesse escopo pela skill da fase. Nao abra outra thread nem redespache a propria fase para fazer o trabalho que ja lhe foi atribuido.
24
+ - Esperas: nunca dispare verify, build ou suite com `&` dentro do comando, porque o processo se perde e a sessao espera um aviso que nunca vem; rode o `ork verify` em primeiro plano, com `timeout` (ele espera a vez na fila de recursos pesados), ou use a execucao em segundo plano do host, que avisa quando termina; nunca espere com `pgrep -f` cujo padrao aparece no proprio comando, porque o laco acha a si mesmo e nao termina: espere pelo arquivo de saida com prazo, ou pelo PID guardado.
24
25
 
25
26
  ## Comecar ou retomar
26
27
 
@@ -89,8 +90,7 @@ uma pendencia humana atual, identificada por gate, pedido ou evento da thread/se
89
90
  Uma thread nova, sem fase executada nem pedido aberto, ainda nao aguarda veredito.
90
91
  Se faltar evidencia da pendencia, informe a incerteza e consulte a fonte; nao invente a espera.
91
92
 
92
- Apresente o resultado primeiro: o que ja foi comprovado, o que esta acontecendo, quem precisa agir e o proximo passo. Em trabalho demorado, comunique mudanca relevante, bloqueio ou marco.
93
- Nao prometa notificacoes ou execucao em segundo plano que o host nao consegue sustentar.
93
+ Apresente o resultado primeiro: o que ja foi comprovado, o que esta acontecendo, quem precisa agir e o proximo passo. Em trabalho demorado, comunique mudanca relevante, bloqueio ou marco. Nao prometa notificacoes ou execucao em segundo plano que o host nao consegue sustentar.
94
94
 
95
95
  ## Decisoes na propria sessao
96
96
 
@@ -23,6 +23,8 @@ ork worktree audit <thread> # a worktree confere no proprio git
23
23
  ork gate request <thread> # o pedido da pausa; o humano responde pelo canal autenticado
24
24
  ```
25
25
 
26
+ - Esperas: nunca dispare verify, build ou suite com `&` dentro do comando, porque o processo se perde e a sessao espera um aviso que nunca vem; rode o `ork verify` em primeiro plano, com `timeout` (ele espera a vez na fila de recursos pesados), ou use a execucao em segundo plano do host, que avisa quando termina; nunca espere com `pgrep -f` cujo padrao aparece no proprio comando, porque o laco acha a si mesmo e nao termina: espere pelo arquivo de saida com prazo, ou pelo PID guardado.
27
+
26
28
  Quando o veredito e PRECISA DE MUDANCA, o sub-loop GO-FIX / CHECK-REVERIFY do bloco B3 e
27
29
  quem conduz a volta, e ele nao depende de humano ate o veredito final:
28
30
 
@@ -53,6 +55,18 @@ e `web-performance-auditor`. Cada um roda no seu escopo e devolve achados catego
53
55
  reexecucao completa, nunca parcial.
54
56
  6. **Um veredito unico**, no diretorio da thread, com todo aviso aceito carregando seu registro.
55
57
 
58
+ ## Com `verify.security_scan` declarado
59
+
60
+ Sem `verify.security_scan`, nada desta secao vale e o CHECK e o de sempre. Com a chave, o `ork verify` roda `ork security-scan` e o veredito consolida o scan:
61
+
62
+ 1. Leia `report.md` e `report.json` em `.orkastery/security-scan/<sha>/`, na arvore principal; o SHA e o do HEAD verificado.
63
+ 2. Zero bloqueadores de seguranca passa a ser: nenhum achado `new` do laco sem veredito resolvido do `security-auditor` (real corrigido, falso positivo dispensado com decisao registrada, ou inconclusivo com o `ork gate request` respondido).
64
+ 3. Achado `new` com `loop: false` (`warn` no relatorio, como qualidade, licenca ou severidade abaixo do corte) vai ao eixo certo como aviso registrado, com o nome de quem aceitou, nunca como bloqueador escondido.
65
+ 4. Ferramenta `unavailable` ou `failed` e declarada no veredito e nunca conta como limpa; com `ORK_SECURITY_SCAN_REQUIRED=1` ela faz o scan sair 1.
66
+ 5. Correcao vinda do scan volta pelo GO-FIX, com a skill `security-remediation`; a prova e o `ork fix reverify`, que reexecuta o verify e o scan.
67
+ 6. O veredito por achado chega ao GO-FIX pela claim do CHECK (`--fase CHECK`), uma por achado real ou falso positivo, como a skill `security-auditor` diz. O `ork fix open <thread>` reexecuta o verify e abre uma correcao por claim reprovada, tipo B para o real (`claims.failed`) e tipo A para o falso positivo (`claims.unverifiable`), ao lado da correcao tipo B do comando `security_scan`; o `ork fix list <thread>` as mostra ao GO-FIX com o texto do veredito.
68
+ 7. Inconclusivo nao abre o pedido de dentro da sessao do CHECK: o `ork gate request` recusa enquanto o observador nao grava a conclusao da fase (`a conclusao da fase precisa estar registrada antes da pausa`), e `--motivo` so aceita escalacao tipada ja registrada no ledger (`escalacao tipada nao comprovada`). A pergunta curta vai ao parecer, a sessao termina, e quem conduz roda `ork gate request <thread> --formato telegram`, que abre a pausa do fim do bloco que termina no CHECK, com o parecer nas evidencias. Entre os modos vivos, so o #Classic tem essa pausa (bloco GO-CHECK); #Look e #Ork tambem pausavam no CHECK, mas estao aposentados (I-43) e o pedido recusa para eles. O pedido leva a pergunta generica do gate (`Qual e o veredito sobre evidencias...?`): quem conduz aponta ao dono a pergunta do parecer, com o id do achado. A resposta do dono vira claim do CHECK como a skill `security-auditor` diz, antes do `ork fix open`. Em modo sem essa pausa (#Maestro, #Auto), o pedido recusa (`modo nao preve pausa humana nesta fase`): o veredito e BLOQUEADO, com a pergunta escrita, e nada segue ate o dono responder.
69
+
56
70
  ## O que o nucleo verifica por voce
57
71
 
58
72
  Os motivos tipados do `ork` fazem o veredito parar de ser conversa: `claims.failed`,
@@ -79,6 +93,8 @@ a pausa, nunca a verificacao**. Cada um deles tem uma acao de retry deterministi
79
93
  - Correcao tipo B seguida de reexecucao parcial.
80
94
  - Aviso aceito sem nome de quem aceitou.
81
95
  - CHECK rodado sem baseline para comparar.
96
+ - Achado `new` do laco sem veredito dado como zero bloqueadores.
97
+ - Inconclusivo de achado `new` do scan levado por `ork gate request` de dentro da sessao do CHECK, ou com `--motivo` de texto livre.
82
98
 
83
99
  ## Verificacao antes de sair da fase
84
100
 
@@ -24,6 +24,8 @@ ork claims add <thread> <arquivo> --claim "<...>" --verificar "<comando>" --fase
24
24
  ork verify <thread> # reexecuta no HEAD real
25
25
  ```
26
26
 
27
+ - Esperas: nunca dispare verify, build ou suite com `&` dentro do comando, porque o processo se perde e a sessao espera um aviso que nunca vem; rode o `ork verify` em primeiro plano, com `timeout` (ele espera a vez na fila de recursos pesados), ou use a execucao em segundo plano do host, que avisa quando termina; nunca espere com `pgrep -f` cujo padrao aparece no proprio comando, porque o laco acha a si mesmo e nao termina: espere pelo arquivo de saida com prazo, ou pelo PID guardado.
28
+
27
29
  ## O que o GO entrega
28
30
 
29
31
  1. **Um commit atomico por tarefa**, com a thread e a tarefa na mensagem, no maximo cinco arquivos.
@@ -39,6 +41,10 @@ ork verify <thread> # reexecuta no HEAD real
39
41
  proposta, nunca commit escondido no meio da entrega. O que o diff faz alem do combinado o
40
42
  revisor tem que descobrir sozinho, e e assim que uma entrega pequena vira uma revisao cara.
41
43
 
44
+ ## Com `verify.security_scan` declarado
45
+
46
+ Sem `verify.security_scan`, esta fase e a de sempre. Correcao que nasce de achado do scan de seguranca usa a skill `security-remediation`: corrige so o achado, e a prova e o scan reexecutado por `ork fix reverify`, nao o relato do agente. A spec traz uma correcao por achado triado pelo CHECK, com o tipo e o texto do veredito (`ork fix list <thread>`): o tipo A fecha gravando a dispensa e anexando o comando que a prova com `ork claims verificar <thread> <claim> --comando "<comando>"`.
47
+
42
48
  ## O que o nucleo verifica por voce
43
49
 
44
50
  `ork verify` reexecuta claims e comandos do manifesto no HEAD real e compara com a baseline:
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: security-remediation
3
+ description: "Correcao de achado do security scan no GO: corrige so o achado triado como real, exige rotacao declarada para segredo, sobe dependencia para a menor versao corrigida e prova pelo scan reexecutado. Roteia para ork fix e ork security-scan."
4
+ bucket: phases
5
+ roteia: "ork fix open | ork fix list | ork claims verificar | ork fix reverify | ork security-scan"
6
+ license: MIT
7
+ ---
8
+
9
+ # Remediacao de seguranca
10
+
11
+ ## O que esta skill e
12
+
13
+ Um roteador fino para a correcao que nasce de um achado `new` do laco do `ork security-scan`, depois que o `security-auditor` o triou como real. Ela vale so com `verify.security_scan` declarado e roda dentro do GO, na worktree da thread, com a conduta de [go-implementation](../go-implementation/SKILL.md).
14
+
15
+ ## Como rotear
16
+
17
+ ```bash
18
+ ork fix open <thread>
19
+ ork fix list <thread>
20
+ git ls-remote --heads <remoto> <branch>
21
+ ork security-scan
22
+ ork claims verificar <thread> <claim> --comando "<comando>"
23
+ ork fix reverify <thread>
24
+ ork decisao registrar <thread> ...
25
+ ```
26
+
27
+ ## O que a remediacao entrega
28
+
29
+ 1. **So o achado.** A correcao muda o que o achado aponta (regra, `arquivo:linha`) e nada ao redor: refatoracao vizinha e scope creep, e esconde a correcao dentro do diff.
30
+ 2. **Segredo sai do codigo E tem rotacao declarada.** Remover do arquivo nao desfaz o vazamento (`SEC 2`): o historico nao e limpo por corrigir o codigo. A correcao so fecha com a rotacao declarada ao dono da credencial, com data, e verificada, nao prometida. O valor do segredo nunca vai ao relatorio, ao commit ou ao prompt.
31
+ - **Quem corrige tambem nunca imprime o valor.** A regra do auditor vale no GO: a linha do achado, as vizinhas e o commit que a trouxe nao vao a saida da sessao por ferramenta nenhuma (Read, `sed -n`, `head`, `cat`, `grep -n`, editor, `git show`, `git log -p`, diff). Edite sem ler, pelo numero do relatorio: apague a linha (`sed -i '<n>d' <arquivo>`) ou troque-a inteira (`sed -i '<n>s/.*/<substituto>/' <arquivo>`, com o substituto lendo a credencial do ambiente ou do cofre, nunca com o valor). Segredo de varias linhas (chave PEM): o fim do bloco sai so como numero (`command grep -n -- '-----END' <arquivo> | cut -d: -f1`) e o intervalo se apaga com `sed -i '<n>,<m>d' <arquivo>`. Confira pelo scan, nao pelo olho: o `fingerprint` do achado sai do relatorio novo. Na reescrita do historico abaixo, refaca os commits pelo mesmo caminho, sem `git diff` nem `git show` do commit do segredo.
32
+ - **Segredo que entrou na thread sai do historico da thread.** O Gitleaks varre os commits de `<base>..HEAD`, e o achado continua `new` enquanto um commit da thread carregar o valor. Nunca so apague a linha num commit novo. Com a branch da thread fora de todo remoto (`git ls-remote --heads <remoto> <branch>` sai 0 e vazio para cada `git remote`; saida diferente de 0 e duvida, nao ausencia), reescreva so os commits da thread a partir do que trouxe o segredo: `git reset --soft <commit anterior ao segredo>`, com o alvo na base da thread ou depois dela (`git merge-base --is-ancestor <base> <alvo>`), e os commits de novo sem o valor, sem `push --force`. Reescrever commit ainda nao publicado da thread e o caminho que o metodo ja usa, e o `ork ship publicar` empurra sem forca: historia reescrita que ja estivesse publicada seria recusada no push de qualquer jeito.
33
+ - **Branch ja publicada nao se reescreve.** O achado continua `new`, porque o commit segue em `<base>..HEAD`. A rotacao declarada e verificada continua obrigatoria, e a saida e uma dispensa que cita a rotacao declarada, decidida pelo dono: o achado volta ao CHECK como inconclusivo e, com a resposta, vira tipo A como qualquer dispensa.
34
+ 3. **Dependencia sobe para a menor versao corrigida**, a que o relatorio indica, com a justificativa da escolha no commit. Pular para a ultima traz mudanca que ninguem pediu.
35
+ 4. **A prova e o scan reexecutado.** A prova e o scan reexecutado por `ork fix reverify`, que o `ork` roda no HEAD real; o relato do agente de que "corrigiu" nao e prova. O achado precisa sair do relatorio novo, e nenhum `new` pode ter entrado. **O scan le so o HEAD commitado:** a arvore varrida e um checkout do commit HEAD, entao correcao, entrada de dispensa ou config ainda nao commitada e invisivel para ele. Commite antes de reexecutar.
36
+ 5. **Dispensa e correcao tipo A**, e so quando o triador classificou falso positivo. A entrada vai ao `.ork-security/dismissals.json` com `fingerprint`, `tool`, `rule`, `file`, `reason`, `decidedBy`, `decisionRef` (a referencia da decisao registrada com `ork decisao registrar`) e `date`; sem motivo e sem decisao registrada, a config e invalida e o scan sai 1.
37
+ 6. **Arquivo excluido nao se corrige.** Achado em caminho que a config do scan exclui volta a triagem: ou o achado e de outro arquivo, ou a exclusao e que esta errada, e mudar a exclusao e decisao registrada, nao atalho.
38
+ 7. **Uma correcao por achado.** A spec do `ork fix open` traz, ao lado da correcao do comando `security_scan`, uma correcao por claim do CHECK, com o tipo e o texto do veredito (`ork fix list <thread>`): tipo B para o real, tipo A para o falso positivo. O tipo A fecha com a entrada de dispensa e com o comando que a prova anexado a claim (`ork claims verificar <thread> <claim> --comando "<comando>"`); a claim do real reprova e passa com o scan inteiro, entao o tipo B fecha quando o scan reexecutado sai sem achado `new` do laco, nao so quando este `fingerprint` some.
39
+
40
+ ## O que o nucleo verifica por voce
41
+
42
+ O `ork security-scan` sai 1 com achado `new` no laco (todo segredo novo; dependencia, SAST, IaC e workflow novos em `high` ou `critical`) e com dispensa invalida. `ork fix reverify` da o veredito por correcao e recusa reexecucao parcial depois de tipo B. Ferramenta `unavailable` ou `failed` nunca conta como limpa.
43
+
44
+ ## Racionalizacoes comuns
45
+
46
+ | Desculpa | Realidade |
47
+ |---|---|
48
+ | "Tirei o segredo do codigo, esta resolvido" | O segredo continua valido e continua no historico. Falta a rotacao declarada ao dono e verificada. |
49
+ | "Apaguei a linha num commit novo, o achado sai" | O Gitleaks varre `<base>..HEAD`: o commit antigo ainda carrega o valor e o achado continua `new`. Reescreva o historico nao publicado da thread e declare a rotacao. |
50
+ | "Ja que estou aqui, arrumo o resto do arquivo" | A correcao e so do achado. O resto vira proposta, com tarefa e commit proprios. |
51
+ | "Subo para a versao mais nova, e mais seguro" | A menor versao corrigida, com justificativa. A mais nova traz mudanca que ninguem avaliou. |
52
+ | "Funcionou aqui, o achado deve ter sumido" | A prova e o scan reexecutado, nao a impressao de quem corrigiu. |
53
+ | "E falso positivo, dispenso e pronto" | Dispensa exige a triagem, o motivo e a decisao registrada. Sem eles a config fica invalida. |
54
+
55
+ ## Bandeiras vermelhas
56
+
57
+ - Segredo removido do arquivo sem rotacao declarada ao dono.
58
+ - Segredo da thread corrigido so por commit novo, com o commit que o trouxe ainda em `<base>..HEAD`.
59
+ - `push --force` para limpar o historico de branch publicada.
60
+ - Correcao fechada sem `ork fix reverify` e sem scan novo.
61
+ - Diff com mudanca que nao e o achado.
62
+ - Dependencia que pulou varias versoes sem justificativa.
63
+ - Entrada em `.ork-security/dismissals.json` sem `reason` ou sem `decisionRef`.
64
+ - Valor de segredo colado no commit, no relatorio ou no prompt.
65
+ - Linha do segredo lida ou impressa para editar (Read, `sed -n`, `cat`, `git show`) em vez da edicao pelo numero.
66
+ - Scan reexecutado com a correcao ou a dispensa ainda fora de commit.
67
+
68
+ ## Verificacao antes de sair da correcao
69
+
70
+ Diff restrito ao achado, rotacao declarada e historico da thread sem o commit do segredo quando era segredo, versao justificada quando era dependencia, entrada de dispensa completa quando era tipo A, e o `ork fix reverify` verde com o achado fora do relatorio novo. Ver `SEC 1`, `SEC 2` e `SEC 10`.
@@ -36,6 +36,25 @@ ork doctor # provider e ambiente da maquina
36
36
  5. **Ausencia e afirmada como resultado**, com o que foi olhado: "nada encontrado" sem escopo e
37
37
  diferente de "auditado e limpo", e a diferenca fica escrita.
38
38
 
39
+ ## Com `verify.security_scan` declarado
40
+
41
+ Sem `verify.security_scan`, esta skill faz o que sempre fez: a checklist inteira por leitura, e a passagem manual continua valendo. Com a chave declarada, o relatorio do scan (`.orkastery/security-scan/<sha>/report.json`, na arvore principal) e a evidencia de `SEC 1`, `SEC 2` e `SEC 10`, e a triagem abaixo vale.
42
+
43
+ 1. **Declare o escopo do scan:** `base`, `head`, as stacks e cada ferramenta com o estado (`ran`, `failed` ou `unavailable`) e o `reason`.
44
+ 2. **Ferramenta `unavailable` ou `failed` nunca conta como limpa.** Declare-a assim; os itens `SEC` dela voltam para a leitura manual, marcada como tal. A passagem manual so vale com o scan `unavailable` declarado.
45
+ 3. **Triagem: um veredito por achado `new` do laco** (`loop`), nenhum sem veredito:
46
+ - **real:** correcao tipo B, com a regra, `arquivo:linha`, a saida real **redigida (nunca o valor do segredo; so regra, `arquivo:linha` e `fingerprint`)**, o `SEC n` e o alcance (`reachable` do govulncheck); a volta e da skill `security-remediation`;
47
+ - **falso positivo:** correcao tipo A, `acrescentar <fingerprint> ao .ork-security/dismissals.json, motivo <m>`, mais `ork decisao registrar`;
48
+ - **inconclusivo:** sem correcao; a pergunta curta vai ao parecer, o veredito nao e PASSOU e o achado fica aberto ate a resposta do dono pelo `ork gate request` (o caminho esta na skill `check-quality`).
49
+ 4. **O veredito chega ao GO-FIX como claim do CHECK, uma por achado.** O `ork fix open` deriva a spec do GO-FIX so do `ork verify`, e o verify reexecuta as claims: cada claim reprovada vira uma correcao com o texto dela.
50
+ - real: `ork claims add <thread> <arquivo> --fase CHECK --claim "<veredito>" --verificar "<comando de verify.security_scan>"`; o comando reprova no HEAD e a correcao nasce tipo B (`claims.failed`). A claim reprova e passa com o scan inteiro, nao com este achado (o `fingerprint` fica no texto), custa uma varredura do HEAD a mais por claim em cada verify e vai ao bundle `.ork-ci` com as outras claims;
51
+ - falso positivo: `ork claims add <thread> .ork-security/dismissals.json --fase CHECK --claim "<veredito>"`, sem `--verificar`; a claim sem comando nasce tipo A (`claims.unverifiable`). Alegacao que o nucleo le como negativa reprova sem comando e vira tipo B sem aviso: `ehAlegacaoNegativa` em `core/src/claims.ts` procura, sem acento e ate dentro de palavras, `nenhum`, `nenhuma`, `nunca`, `sempre`, `zero`, `todos`, `todas`, `nao ha`, `nao existe`, `nao resta`, `sem nenhum`, `100%`, `totalmente`, `completamente` (`metodos` contem `todos`). Confira a saida do `ork claims add`: o falso positivo so vale com a linha `negativa` em `nao` e a linha `estado` em `nao-verificavel` (no locale `en`, a linha `negative` em `no` e a linha `state` em `unverifiable`); fora disso, `ork claims retirar <thread> <claim> --motivo "<motivo>"` e registre de novo com texto neutro;
52
+ - o `<veredito>` leva o id do achado, a ferramenta, a regra, `arquivo:linha`, o `fingerprint`, o tipo e a correcao, e no falso positivo o motivo e o `eventId` do `ork decisao registrar`;
53
+ - a resposta do dono a um inconclusivo vira claim do mesmo jeito, registrada por quem conduz ou por um CHECK novo, antes do `ork fix open`.
54
+ 5. **O auditor nao edita:** nem codigo, nem o `.ork-security/dismissals.json`. Ele devolve o veredito, e quem escreve a correcao e o GO.
55
+ 6. **Material de segredo nunca vai a saida da sessao.** Com achado `new` do Gitleaks, a linha do achado e o conteudo do commit que a trouxe nao vao a saida por ferramenta nenhuma: Read, `sed`, `head`, `grep -n`, editor, `git log -p`, `git show`, `cat`, diff. A saida vai a transcricao e ao provider, e e um segundo vazamento. **Achado `secret` nao tem leitura de contexto nenhuma:** nem a linha, nem as vizinhas, nem o arquivo, porque um segredo de varias linhas (chave PEM) passa por qualquer mascara de uma linha. O veredito dele se faz so com a `rule`, o `arquivo:linha` e o `fingerprint` do relatorio, e comparar o valor com outro se faz por hash (`sha256sum`), sem imprimir nenhum dos dois. O contexto sem a linha do achado (`awk -v n=<linha> 'NR>=n-5 && NR<=n+5 && NR!=n' <arquivo>`) vale so para as outras categorias (`sast`, `dependency`, `iac`, `workflow`).
56
+ 7. `existing` e `dismissed` entram no relatorio como divida declarada, nunca como bloqueador novo.
57
+
39
58
  ## O que o nucleo verifica por voce
40
59
 
41
60
  A policy `segredo_em_prompt` roda no gate `phase.dispatch` **antes de o prompt ser gravado em
@@ -52,6 +71,7 @@ thread. As tres reprovam em qualquer modo.
52
71
  | "Colo o trecho no relatorio para o time ver" | Relatorio de vazamento que imprime o segredo e um segundo vazamento. Nomeie o padrao e a linha, redigido. |
53
72
  | "Esse bloqueador e teorico, ninguem exploraria" | Zero bloqueadores e condicao dura, nao negociavel por probabilidade estimada no olho. |
54
73
  | "A thread e `#Auto`, a auditoria pode ser mais leve" | O modo afrouxa a pausa, nunca a verificacao. A lista e a mesma; o que muda e quem espera pelo veredito. |
74
+ | "Ja que achei, corrijo aqui mesmo" | O auditor nao edita. Auditor que corrige passa a auditar o proprio trabalho; o veredito vai ao GO e a correcao volta pelo CHECK. |
55
75
 
56
76
  ## Bandeiras vermelhas
57
77
 
@@ -60,6 +80,11 @@ thread. As tres reprovam em qualquer modo.
60
80
  - Achado sem o `SEC n` que ele viola.
61
81
  - "Nada encontrado" sem dizer o que foi olhado.
62
82
  - Dependencia nova sem justificativa no PLAN.
83
+ - Valor de segredo do Gitleaks colado na correcao, no veredito ou no ledger.
84
+ - Achado `new` do laco sem veredito, ou ferramenta `failed` contada como limpa.
85
+ - Linha ou commit de achado `new` do Gitleaks na saida da sessao, por qualquer ferramenta (Read, `sed`, `grep -n`, `git log -p`, `git show`, `cat`, diff).
86
+ - Contexto de arquivo lido para achado `secret`, mesmo sem a linha do achado.
87
+ - Veredito de achado `new` do scan so no parecer, sem a claim do CHECK que o leva ao `ork fix open`.
63
88
 
64
89
  ## Verificacao antes de sair da auditoria
65
90