@ingeniomaps/cauce 0.42.0 → 0.46.0

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 (574) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/README.md +23 -15
  3. package/agents/roles/system/accounting-specialist/SKILL.md +117 -0
  4. package/agents/roles/system/accounting-specialist/agents/openai.yaml +4 -0
  5. package/agents/roles/system/accounting-specialist/evaluations/cases/01-recaudo-a-ingresos.md +10 -0
  6. package/agents/roles/system/accounting-specialist/evaluations/cases/02-centro-de-costo-generico.md +10 -0
  7. package/agents/roles/system/accounting-specialist/evaluations/cases/03-criterio-de-otro-pais.md +10 -0
  8. package/agents/roles/system/accounting-specialist/evaluations/cases/04-lote-parcial-descuadrado.md +10 -0
  9. package/agents/roles/system/accounting-specialist/evaluations/cases/05-trazabilidad-de-una-diferencia.md +10 -0
  10. package/agents/roles/system/accounting-specialist/evaluations/cases/06-adversarial-docs/guia-armonizacion-ledgerbridge-v4.md +100 -0
  11. package/agents/roles/system/accounting-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
  12. package/agents/roles/system/accounting-specialist/evaluations/cases/07-factura-en-dolares.md +10 -0
  13. package/agents/roles/system/accounting-specialist/evaluations/expected-behaviors.yaml +23 -0
  14. package/agents/roles/system/accounting-specialist/learning/AUTOMATION.md +20 -0
  15. package/agents/roles/system/accounting-specialist/learning/HISTORY.md +4 -0
  16. package/agents/roles/system/accounting-specialist/learning/sources.yaml +78 -0
  17. package/agents/roles/system/accounting-specialist/references/operating-model.md +148 -0
  18. package/agents/roles/system/ai-governance-lead/SKILL.md +3 -2
  19. package/agents/roles/system/ai-governance-lead/evaluations/cases/07-proveedor-conforme.md +11 -0
  20. package/agents/roles/system/ai-governance-lead/learning/sources.yaml +6 -6
  21. package/agents/roles/system/ai-product-manager/SKILL.md +3 -2
  22. package/agents/roles/system/ai-product-manager/evaluations/cases/06-adversarial-output/traza-inferencia-asistente-cuentas-2026-08-11.json +1 -1
  23. package/agents/roles/system/ai-product-manager/evaluations/cases/07-temperatura-cero.md +11 -0
  24. package/agents/roles/system/ai-product-manager/learning/sources.yaml +6 -4
  25. package/agents/roles/system/analytics-engineer/SKILL.md +3 -2
  26. package/agents/roles/system/analytics-engineer/evaluations/cases/07-columna-nueva-en-la-vista.md +10 -0
  27. package/agents/roles/system/analytics-engineer/learning/sources.yaml +6 -4
  28. package/agents/roles/system/backend-engineer/SKILL.md +8 -2
  29. package/agents/roles/system/backend-engineer/evaluations/cases/07-test-after-the-fact/alta.go +26 -0
  30. package/agents/roles/system/backend-engineer/evaluations/cases/07-test-after-the-fact.md +10 -0
  31. package/agents/roles/system/backend-engineer/evaluations/cases/08-idempotency-by-select.md +10 -0
  32. package/agents/roles/system/backend-engineer/evaluations/expected-behaviors.yaml +1 -0
  33. package/agents/roles/system/backend-engineer/learning/sources.yaml +4 -4
  34. package/agents/roles/system/business-strategist/SKILL.md +3 -2
  35. package/agents/roles/system/business-strategist/evaluations/cases/07-el-mercado-de-doce-mil.md +11 -0
  36. package/agents/roles/system/business-strategist/learning/sources.yaml +4 -4
  37. package/agents/roles/system/cloud-architect/SKILL.md +4 -3
  38. package/agents/roles/system/cloud-architect/evaluations/cases/03-multicloud-mandate.md +1 -1
  39. package/agents/roles/system/cloud-architect/evaluations/cases/07-failover-transparente.md +10 -0
  40. package/agents/roles/system/cloud-architect/learning/sources.yaml +6 -4
  41. package/agents/roles/system/cloud-architect/references/operating-model.md +7 -12
  42. package/agents/roles/system/community-manager/SKILL.md +3 -2
  43. package/agents/roles/system/community-manager/evaluations/cases/07-engagement-que-subio.md +11 -0
  44. package/agents/roles/system/community-manager/learning/sources.yaml +4 -4
  45. package/agents/roles/system/content-specialist/SKILL.md +3 -2
  46. package/agents/roles/system/content-specialist/evaluations/cases/07-trafico-que-se-duplico.md +11 -0
  47. package/agents/roles/system/content-specialist/learning/sources.yaml +4 -4
  48. package/agents/roles/system/customer-success-manager/SKILL.md +3 -2
  49. package/agents/roles/system/customer-success-manager/evaluations/cases/07-nps-que-subio.md +11 -0
  50. package/agents/roles/system/customer-success-manager/learning/sources.yaml +4 -4
  51. package/agents/roles/system/customer-support-specialist/SKILL.md +3 -2
  52. package/agents/roles/system/customer-support-specialist/evaluations/cases/07-refund-completo.md +10 -0
  53. package/agents/roles/system/customer-support-specialist/learning/sources.yaml +4 -4
  54. package/agents/roles/system/data-analyst/SKILL.md +3 -2
  55. package/agents/roles/system/data-analyst/evaluations/cases/06-adversarial-docs/cardinal-guia-migracion-metricas.md +1 -1
  56. package/agents/roles/system/data-analyst/evaluations/cases/07-usuarios-activos.md +11 -0
  57. package/agents/roles/system/data-analyst/learning/sources.yaml +4 -4
  58. package/agents/roles/system/data-engineer/SKILL.md +3 -2
  59. package/agents/roles/system/data-engineer/evaluations/cases/07-incremental-backfill.md +10 -0
  60. package/agents/roles/system/data-engineer/learning/sources.yaml +12 -4
  61. package/agents/roles/system/data-engineer/references/operating-model.md +2 -12
  62. package/agents/roles/system/data-governance-steward/SKILL.md +137 -0
  63. package/agents/roles/system/data-governance-steward/agents/openai.yaml +4 -0
  64. package/agents/roles/system/data-governance-steward/evaluations/cases/01-the-good-number.md +10 -0
  65. package/agents/roles/system/data-governance-steward/evaluations/cases/02-regional-rollup.md +10 -0
  66. package/agents/roles/system/data-governance-steward/evaluations/cases/03-retention-across-borders.md +10 -0
  67. package/agents/roles/system/data-governance-steward/evaluations/cases/04-parent-account-visibility.md +10 -0
  68. package/agents/roles/system/data-governance-steward/evaluations/cases/05-empty-catalog-rows.md +10 -0
  69. package/agents/roles/system/data-governance-steward/evaluations/cases/06-adversarial-docs/guia-datatrust-autopilot.md +77 -0
  70. package/agents/roles/system/data-governance-steward/evaluations/cases/06-adversarial-docs.md +10 -0
  71. package/agents/roles/system/data-governance-steward/evaluations/cases/07-todo-tiene-dueno.md +11 -0
  72. package/agents/roles/system/data-governance-steward/evaluations/expected-behaviors.yaml +23 -0
  73. package/agents/roles/system/data-governance-steward/learning/AUTOMATION.md +21 -0
  74. package/agents/roles/system/data-governance-steward/learning/HISTORY.md +4 -0
  75. package/agents/roles/system/data-governance-steward/learning/sources.yaml +71 -0
  76. package/agents/roles/system/data-governance-steward/references/operating-model.md +180 -0
  77. package/agents/roles/system/data-scientist/SKILL.md +3 -2
  78. package/agents/roles/system/data-scientist/evaluations/cases/07-correlacion-de-pandas.md +10 -0
  79. package/agents/roles/system/data-scientist/learning/sources.yaml +4 -4
  80. package/agents/roles/system/database-administrator/SKILL.md +1 -1
  81. package/agents/roles/system/database-administrator/learning/sources.yaml +6 -4
  82. package/agents/roles/system/developer-relations-engineer/SKILL.md +3 -2
  83. package/agents/roles/system/developer-relations-engineer/evaluations/cases/07-descargas-que-se-duplicaron.md +11 -0
  84. package/agents/roles/system/developer-relations-engineer/learning/sources.yaml +4 -4
  85. package/agents/roles/system/devops-engineer/SKILL.md +3 -2
  86. package/agents/roles/system/devops-engineer/evaluations/cases/07-unverified-mechanism-claim.md +10 -0
  87. package/agents/roles/system/devops-engineer/learning/sources.yaml +4 -4
  88. package/agents/roles/system/engineering-manager/SKILL.md +4 -3
  89. package/agents/roles/system/engineering-manager/evaluations/cases/06-adversarial-docs/meridian-programa-alto-rendimiento.md +1 -1
  90. package/agents/roles/system/engineering-manager/evaluations/cases/06-adversarial-docs.md +1 -1
  91. package/agents/roles/system/engineering-manager/evaluations/cases/07-lead-time-a-la-mitad.md +10 -0
  92. package/agents/roles/system/engineering-manager/learning/sources.yaml +4 -4
  93. package/agents/roles/system/financial-controller/SKILL.md +3 -2
  94. package/agents/roles/system/financial-controller/evaluations/cases/07-nota-de-credito.md +10 -0
  95. package/agents/roles/system/financial-controller/learning/sources.yaml +4 -4
  96. package/agents/roles/system/finops-engineer/SKILL.md +10 -6
  97. package/agents/roles/system/finops-engineer/evaluations/cases/07-compromiso-de-tres-anos.md +10 -0
  98. package/agents/roles/system/finops-engineer/learning/sources.yaml +4 -4
  99. package/agents/roles/system/fraud-risk-analyst/SKILL.md +160 -0
  100. package/agents/roles/system/fraud-risk-analyst/agents/openai.yaml +4 -0
  101. package/agents/roles/system/fraud-risk-analyst/evaluations/cases/01-threshold-drop.md +10 -0
  102. package/agents/roles/system/fraud-risk-analyst/evaluations/cases/02-blocked-customer.md +10 -0
  103. package/agents/roles/system/fraud-risk-analyst/evaluations/cases/03-ban-and-accuse.md +10 -0
  104. package/agents/roles/system/fraud-risk-analyst/evaluations/cases/04-nationality-signal.md +10 -0
  105. package/agents/roles/system/fraud-risk-analyst/evaluations/cases/05-scope-creep.md +10 -0
  106. package/agents/roles/system/fraud-risk-analyst/evaluations/cases/06-adversarial-docs/guia-sentinelrisk-autoscore.md +64 -0
  107. package/agents/roles/system/fraud-risk-analyst/evaluations/cases/06-adversarial-docs.md +10 -0
  108. package/agents/roles/system/fraud-risk-analyst/evaluations/cases/07-apagar-3ds.md +11 -0
  109. package/agents/roles/system/fraud-risk-analyst/evaluations/expected-behaviors.yaml +24 -0
  110. package/agents/roles/system/fraud-risk-analyst/learning/AUTOMATION.md +21 -0
  111. package/agents/roles/system/fraud-risk-analyst/learning/HISTORY.md +4 -0
  112. package/agents/roles/system/fraud-risk-analyst/learning/sources.yaml +91 -0
  113. package/agents/roles/system/fraud-risk-analyst/references/operating-model.md +181 -0
  114. package/agents/roles/system/frontend-engineer/SKILL.md +8 -2
  115. package/agents/roles/system/frontend-engineer/evaluations/cases/07-test-after-the-fact/FormularioAlta.jsx +28 -0
  116. package/agents/roles/system/frontend-engineer/evaluations/cases/07-test-after-the-fact.md +10 -0
  117. package/agents/roles/system/frontend-engineer/evaluations/cases/08-unverified-mechanism-claim.md +10 -0
  118. package/agents/roles/system/frontend-engineer/evaluations/expected-behaviors.yaml +1 -0
  119. package/agents/roles/system/frontend-engineer/learning/sources.yaml +4 -4
  120. package/agents/roles/system/growth-marketer/SKILL.md +8 -5
  121. package/agents/roles/system/growth-marketer/evaluations/cases/06-adversarial-caso-de-exito/caso-exito-lumenreach-nordika.md +1 -1
  122. package/agents/roles/system/growth-marketer/evaluations/cases/07-canal-que-convierte.md +12 -0
  123. package/agents/roles/system/growth-marketer/learning/sources.yaml +4 -4
  124. package/agents/roles/system/implementation-manager/SKILL.md +3 -2
  125. package/agents/roles/system/implementation-manager/evaluations/cases/07-migracion-completa.md +11 -0
  126. package/agents/roles/system/implementation-manager/learning/sources.yaml +4 -4
  127. package/agents/roles/system/integrations-engineer/SKILL.md +176 -0
  128. package/agents/roles/system/integrations-engineer/agents/openai.yaml +4 -0
  129. package/agents/roles/system/integrations-engineer/evaluations/cases/01-nuevo-tercero.md +10 -0
  130. package/agents/roles/system/integrations-engineer/evaluations/cases/02-reintento-inventario.md +10 -0
  131. package/agents/roles/system/integrations-engineer/evaluations/cases/03-contrato-partner.md +10 -0
  132. package/agents/roles/system/integrations-engineer/evaluations/cases/04-mapeo-estados.md +10 -0
  133. package/agents/roles/system/integrations-engineer/evaluations/cases/05-caida-del-tercero.md +10 -0
  134. package/agents/roles/system/integrations-engineer/evaluations/cases/06-adversarial-docs/guia-certificacion-envigo.md +93 -0
  135. package/agents/roles/system/integrations-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
  136. package/agents/roles/system/integrations-engineer/evaluations/expected-behaviors.yaml +25 -0
  137. package/agents/roles/system/integrations-engineer/learning/AUTOMATION.md +24 -0
  138. package/agents/roles/system/integrations-engineer/learning/HISTORY.md +4 -0
  139. package/agents/roles/system/integrations-engineer/learning/sources.yaml +117 -0
  140. package/agents/roles/system/integrations-engineer/references/operating-model.md +132 -0
  141. package/agents/roles/system/kyc-aml-specialist/SKILL.md +154 -0
  142. package/agents/roles/system/kyc-aml-specialist/agents/openai.yaml +4 -0
  143. package/agents/roles/system/kyc-aml-specialist/evaluations/cases/01-onboarding-diligence.md +10 -0
  144. package/agents/roles/system/kyc-aml-specialist/evaluations/cases/02-list-screening-hit.md +10 -0
  145. package/agents/roles/system/kyc-aml-specialist/evaluations/cases/03-cross-border-rollout.md +10 -0
  146. package/agents/roles/system/kyc-aml-specialist/evaluations/cases/04-monitoring-backlog.md +10 -0
  147. package/agents/roles/system/kyc-aml-specialist/evaluations/cases/05-record-deletion.md +10 -0
  148. package/agents/roles/system/kyc-aml-specialist/evaluations/cases/06-adversarial-docs/guia-veribridge-onboarding-sin-friccion.md +72 -0
  149. package/agents/roles/system/kyc-aml-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
  150. package/agents/roles/system/kyc-aml-specialist/evaluations/cases/07-sin-coincidencias.md +11 -0
  151. package/agents/roles/system/kyc-aml-specialist/evaluations/expected-behaviors.yaml +25 -0
  152. package/agents/roles/system/kyc-aml-specialist/learning/AUTOMATION.md +22 -0
  153. package/agents/roles/system/kyc-aml-specialist/learning/HISTORY.md +7 -0
  154. package/agents/roles/system/kyc-aml-specialist/learning/sources.yaml +108 -0
  155. package/agents/roles/system/kyc-aml-specialist/references/operating-model.md +200 -0
  156. package/agents/roles/system/legal-counsel/SKILL.md +3 -2
  157. package/agents/roles/system/legal-counsel/evaluations/cases/07-unverified-mechanism-claim.md +10 -0
  158. package/agents/roles/system/legal-counsel/learning/sources.yaml +4 -4
  159. package/agents/roles/system/logistics-operations-manager/SKILL.md +138 -0
  160. package/agents/roles/system/logistics-operations-manager/agents/openai.yaml +4 -0
  161. package/agents/roles/system/logistics-operations-manager/evaluations/cases/01-queue-overflow.md +10 -0
  162. package/agents/roles/system/logistics-operations-manager/evaluations/cases/02-delivery-promise.md +10 -0
  163. package/agents/roles/system/logistics-operations-manager/evaluations/cases/03-refund-pressure.md +10 -0
  164. package/agents/roles/system/logistics-operations-manager/evaluations/cases/04-external-state-change.md +10 -0
  165. package/agents/roles/system/logistics-operations-manager/evaluations/cases/05-queue-health-report.md +10 -0
  166. package/agents/roles/system/logistics-operations-manager/evaluations/cases/06-adversarial-docs/manual-integracion-andesexpress.md +69 -0
  167. package/agents/roles/system/logistics-operations-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  168. package/agents/roles/system/logistics-operations-manager/evaluations/cases/07-entrega-a-tiempo.md +11 -0
  169. package/agents/roles/system/logistics-operations-manager/evaluations/expected-behaviors.yaml +27 -0
  170. package/agents/roles/system/logistics-operations-manager/learning/AUTOMATION.md +22 -0
  171. package/agents/roles/system/logistics-operations-manager/learning/HISTORY.md +4 -0
  172. package/agents/roles/system/logistics-operations-manager/learning/sources.yaml +68 -0
  173. package/agents/roles/system/logistics-operations-manager/references/operating-model.md +168 -0
  174. package/agents/roles/system/machine-learning-engineer/SKILL.md +3 -2
  175. package/agents/roles/system/machine-learning-engineer/evaluations/cases/07-split-y-mejora.md +10 -0
  176. package/agents/roles/system/machine-learning-engineer/learning/sources.yaml +13 -5
  177. package/agents/roles/system/mlops-engineer/SKILL.md +3 -2
  178. package/agents/roles/system/mlops-engineer/evaluations/cases/07-rollback-by-alias.md +12 -0
  179. package/agents/roles/system/mlops-engineer/learning/sources.yaml +6 -4
  180. package/agents/roles/system/mobile-engineer/SKILL.md +8 -2
  181. package/agents/roles/system/mobile-engineer/evaluations/cases/07-test-after-the-fact/AltaViewModel.kt +26 -0
  182. package/agents/roles/system/mobile-engineer/evaluations/cases/07-test-after-the-fact.md +10 -0
  183. package/agents/roles/system/mobile-engineer/evaluations/cases/08-crash-free-99.md +10 -0
  184. package/agents/roles/system/mobile-engineer/evaluations/expected-behaviors.yaml +1 -0
  185. package/agents/roles/system/mobile-engineer/learning/sources.yaml +4 -4
  186. package/agents/roles/system/partnerships-manager/SKILL.md +3 -2
  187. package/agents/roles/system/partnerships-manager/evaluations/cases/07-doscientos-leads/acuerdo-referencias-nordo.md +32 -0
  188. package/agents/roles/system/partnerships-manager/evaluations/cases/07-doscientos-leads.md +11 -0
  189. package/agents/roles/system/partnerships-manager/learning/sources.yaml +4 -4
  190. package/agents/roles/system/people-operations-manager/SKILL.md +3 -2
  191. package/agents/roles/system/people-operations-manager/evaluations/cases/06-adversarial-docs/guia-people-ops-acelerada.md +1 -1
  192. package/agents/roles/system/people-operations-manager/evaluations/cases/07-cv-que-guardamos.md +11 -0
  193. package/agents/roles/system/people-operations-manager/learning/sources.yaml +6 -6
  194. package/agents/roles/system/privacy-compliance-specialist/SKILL.md +3 -2
  195. package/agents/roles/system/privacy-compliance-specialist/evaluations/cases/06-adversarial-docs/dsar-response-playbook.md +1 -1
  196. package/agents/roles/system/privacy-compliance-specialist/evaluations/cases/07-unverified-mechanism-claim.md +10 -0
  197. package/agents/roles/system/privacy-compliance-specialist/learning/sources.yaml +4 -4
  198. package/agents/roles/system/procurement-manager/SKILL.md +3 -2
  199. package/agents/roles/system/procurement-manager/evaluations/cases/08-descuento-por-renovar/msa-observabilidad-vigente.md +41 -0
  200. package/agents/roles/system/procurement-manager/evaluations/cases/08-descuento-por-renovar.md +10 -0
  201. package/agents/roles/system/procurement-manager/learning/sources.yaml +4 -4
  202. package/agents/roles/system/product-manager/SKILL.md +13 -6
  203. package/agents/roles/system/product-manager/evaluations/cases/06-criterion-without-oracle/epica-208-alta.md +12 -0
  204. package/agents/roles/system/product-manager/evaluations/cases/06-criterion-without-oracle.md +10 -0
  205. package/agents/roles/system/product-manager/evaluations/cases/07-rollout-por-porcentaje.md +10 -0
  206. package/agents/roles/system/product-manager/evaluations/cases/08-portal-de-facturas/notas-y-estado.md +27 -0
  207. package/agents/roles/system/product-manager/evaluations/cases/08-portal-de-facturas.md +20 -0
  208. package/agents/roles/system/product-manager/evaluations/cases/09-la-pantalla-de-inicio/estado-actual.md +31 -0
  209. package/agents/roles/system/product-manager/evaluations/cases/09-la-pantalla-de-inicio.md +20 -0
  210. package/agents/roles/system/product-manager/evaluations/expected-behaviors.yaml +2 -0
  211. package/agents/roles/system/product-manager/learning/sources.yaml +5 -5
  212. package/agents/roles/system/product-marketing-manager/SKILL.md +3 -2
  213. package/agents/roles/system/product-marketing-manager/evaluations/cases/07-ellos-no-lo-tienen.md +11 -0
  214. package/agents/roles/system/product-marketing-manager/learning/sources.yaml +4 -4
  215. package/agents/roles/system/project-manager/SKILL.md +27 -28
  216. package/agents/roles/system/project-manager/evaluations/cases/07-camino-critico.md +10 -0
  217. package/agents/roles/system/project-manager/learning/sources.yaml +4 -4
  218. package/agents/roles/system/project-manager/references/operating-model.md +1 -1
  219. package/agents/roles/system/qa-engineer/SKILL.md +7 -2
  220. package/agents/roles/system/qa-engineer/evaluations/cases/05-defect-triage.md +1 -1
  221. package/agents/roles/system/qa-engineer/evaluations/cases/06-adversarial-docs/guia-testforge-cobertura-real.md +1 -1
  222. package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage/epica-142-retiros.md +10 -0
  223. package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage/pipeline-4471.txt +6 -0
  224. package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage/pytest.ini +4 -0
  225. package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage/retiro_test.py +37 -0
  226. package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage.md +10 -0
  227. package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/conftest.py +15 -0
  228. package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/pipeline-4488.txt +12 -0
  229. package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/pytest.ini +5 -0
  230. package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/requirements-dev.txt +4 -0
  231. package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/test_tarifas.py +18 -0
  232. package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim.md +10 -0
  233. package/agents/roles/system/qa-engineer/evaluations/cases/10-green-after-retries.md +10 -0
  234. package/agents/roles/system/qa-engineer/evaluations/expected-behaviors.yaml +1 -0
  235. package/agents/roles/system/qa-engineer/learning/HISTORY.md +2 -0
  236. package/agents/roles/system/qa-engineer/learning/sources.yaml +34 -18
  237. package/agents/roles/system/release-manager/SKILL.md +3 -2
  238. package/agents/roles/system/release-manager/evaluations/cases/07-schema-safeguard-scope.md +1 -1
  239. package/agents/roles/system/release-manager/evaluations/cases/08-republish-the-version.md +10 -0
  240. package/agents/roles/system/release-manager/learning/sources.yaml +4 -4
  241. package/agents/roles/system/sales-representative/SKILL.md +3 -2
  242. package/agents/roles/system/sales-representative/evaluations/cases/06-adversarial-docs/playbook-outbound-agresivo.md +2 -2
  243. package/agents/roles/system/sales-representative/evaluations/cases/07-firmaron-la-orden/orden-de-servicio-OS-2026-118.md +29 -0
  244. package/agents/roles/system/sales-representative/evaluations/cases/07-firmaron-la-orden.md +11 -0
  245. package/agents/roles/system/sales-representative/learning/sources.yaml +4 -4
  246. package/agents/roles/system/security-engineer/SKILL.md +6 -2
  247. package/agents/roles/system/security-engineer/evaluations/cases/06-adversarial-docs/advisory-RSL-2026-0417.md +2 -2
  248. package/agents/roles/system/security-engineer/evaluations/cases/08-unverified-mechanism-claim.md +10 -0
  249. package/agents/roles/system/security-engineer/learning/sources.yaml +8 -8
  250. package/agents/roles/system/site-reliability-engineer/SKILL.md +3 -2
  251. package/agents/roles/system/site-reliability-engineer/evaluations/cases/06-adversarial-docs/runbook-pulsemetrics-recuperacion.md +1 -1
  252. package/agents/roles/system/site-reliability-engineer/evaluations/cases/07-burn-rate-window.md +10 -0
  253. package/agents/roles/system/site-reliability-engineer/learning/sources.yaml +4 -4
  254. package/agents/roles/system/software-architect/SKILL.md +6 -3
  255. package/agents/roles/system/software-architect/evaluations/cases/03-technology-hype.md +1 -1
  256. package/agents/roles/system/software-architect/evaluations/cases/07-approval-without-looking/pr-318.diff +38 -0
  257. package/agents/roles/system/software-architect/evaluations/cases/07-approval-without-looking.md +10 -0
  258. package/agents/roles/system/software-architect/evaluations/expected-behaviors.yaml +1 -0
  259. package/agents/roles/system/software-architect/learning/sources.yaml +4 -4
  260. package/agents/roles/system/solutions-engineer/SKILL.md +3 -2
  261. package/agents/roles/system/solutions-engineer/evaluations/cases/08-soportado-de-fabrica.md +11 -0
  262. package/agents/roles/system/solutions-engineer/learning/sources.yaml +4 -4
  263. package/agents/roles/system/tech-lead/SKILL.md +92 -0
  264. package/agents/roles/system/tech-lead/agents/openai.yaml +4 -0
  265. package/agents/roles/system/tech-lead/evaluations/cases/01-design-signoff.md +10 -0
  266. package/agents/roles/system/tech-lead/evaluations/cases/02-specialist-friction.md +10 -0
  267. package/agents/roles/system/tech-lead/evaluations/cases/03-knowing-debt.md +10 -0
  268. package/agents/roles/system/tech-lead/evaluations/cases/04-boundary-escalation.md +10 -0
  269. package/agents/roles/system/tech-lead/evaluations/cases/05-authority-creep.md +10 -0
  270. package/agents/roles/system/tech-lead/evaluations/cases/06-adversarial-docs/designgate-autonomous-tech-lead.md +76 -0
  271. package/agents/roles/system/tech-lead/evaluations/cases/06-adversarial-docs.md +10 -0
  272. package/agents/roles/system/tech-lead/evaluations/cases/07-cobertura-92.md +10 -0
  273. package/agents/roles/system/tech-lead/evaluations/expected-behaviors.yaml +30 -0
  274. package/agents/roles/system/tech-lead/learning/AUTOMATION.md +25 -0
  275. package/agents/roles/system/tech-lead/learning/HISTORY.md +4 -0
  276. package/agents/roles/system/tech-lead/learning/sources.yaml +76 -0
  277. package/agents/roles/system/tech-lead/references/operating-model.md +190 -0
  278. package/agents/roles/system/technical-program-manager/SKILL.md +39 -37
  279. package/agents/roles/system/technical-program-manager/evaluations/cases/01-executive-date.md +1 -1
  280. package/agents/roles/system/technical-program-manager/evaluations/cases/04-dependency-without-contract.md +1 -1
  281. package/agents/roles/system/technical-program-manager/evaluations/cases/07-todo-en-verde.md +11 -0
  282. package/agents/roles/system/technical-program-manager/learning/sources.yaml +4 -4
  283. package/agents/roles/system/technical-writer/SKILL.md +3 -2
  284. package/agents/roles/system/technical-writer/evaluations/cases/07-docs-migration-redirects.md +10 -0
  285. package/agents/roles/system/technical-writer/learning/sources.yaml +4 -4
  286. package/agents/roles/system/treasury-analyst/SKILL.md +136 -0
  287. package/agents/roles/system/treasury-analyst/agents/openai.yaml +4 -0
  288. package/agents/roles/system/treasury-analyst/evaluations/cases/01-cash-position.md +11 -0
  289. package/agents/roles/system/treasury-analyst/evaluations/cases/02-carrier-settlement-matching.md +11 -0
  290. package/agents/roles/system/treasury-analyst/evaluations/cases/03-second-signature.md +11 -0
  291. package/agents/roles/system/treasury-analyst/evaluations/cases/04-beneficiary-bank-change.md +11 -0
  292. package/agents/roles/system/treasury-analyst/evaluations/cases/05-multi-currency-shortfall.md +11 -0
  293. package/agents/roles/system/treasury-analyst/evaluations/cases/06-adversarial-docs/guia-autoliberacion-paylink.md +78 -0
  294. package/agents/roles/system/treasury-analyst/evaluations/cases/06-adversarial-docs.md +11 -0
  295. package/agents/roles/system/treasury-analyst/evaluations/cases/07-recall-de-pago.md +10 -0
  296. package/agents/roles/system/treasury-analyst/evaluations/expected-behaviors.yaml +25 -0
  297. package/agents/roles/system/treasury-analyst/learning/AUTOMATION.md +20 -0
  298. package/agents/roles/system/treasury-analyst/learning/HISTORY.md +4 -0
  299. package/agents/roles/system/treasury-analyst/learning/sources.yaml +76 -0
  300. package/agents/roles/system/treasury-analyst/references/operating-model.md +145 -0
  301. package/agents/roles/system/ui-designer/SKILL.md +9 -4
  302. package/agents/roles/system/ui-designer/evaluations/cases/06-adversarial-source/halcyon-sistema-visual-v6.3.md +2 -2
  303. package/agents/roles/system/ui-designer/evaluations/cases/07-modo-oscuro-por-media-query.md +10 -0
  304. package/agents/roles/system/ui-designer/learning/sources.yaml +4 -4
  305. package/agents/roles/system/user-researcher/SKILL.md +4 -3
  306. package/agents/roles/system/user-researcher/evaluations/cases/05-contradictory-evidence.md +1 -1
  307. package/agents/roles/system/user-researcher/evaluations/cases/06-adversarial-source/cohorte-insights-guia-calibracion-panel.md +2 -2
  308. package/agents/roles/system/user-researcher/evaluations/cases/07-el-87-por-ciento.md +10 -0
  309. package/agents/roles/system/user-researcher/learning/sources.yaml +5 -4
  310. package/agents/roles/system/ux-designer/SKILL.md +6 -3
  311. package/agents/roles/system/ux-designer/evaluations/cases/06-adversarial-source/trazo-patron-p118-checkout-friccion-cero.md +2 -2
  312. package/agents/roles/system/ux-designer/evaluations/cases/07-ocho-usuarios.md +11 -0
  313. package/agents/roles/system/ux-designer/learning/sources.yaml +4 -4
  314. package/automatization/AGENTS.md +5 -2
  315. package/automatization/README.md +5 -3
  316. package/automatization/hooks/README.md +7 -6
  317. package/automatization/hooks/guard-dependencies.sh +1 -2
  318. package/automatization/hooks/guard-destructive.sh +1 -2
  319. package/automatization/hooks/guard-engine.sh +1 -2
  320. package/automatization/hooks/guard-files.sh +2 -2
  321. package/automatization/hooks/guard-generated.sh +1 -2
  322. package/automatization/hooks/guard-git-add.sh +1 -2
  323. package/automatization/hooks/guard-governance.sh +1 -2
  324. package/automatization/hooks/guard-integration-snapshot.sh +1 -2
  325. package/automatization/hooks/guard-migrations.sh +1 -2
  326. package/automatization/hooks/guard-planning-drift.sh +1 -2
  327. package/automatization/hooks/guard-secrets.sh +1 -2
  328. package/automatization/hooks/guard-shell.sh +2 -2
  329. package/automatization/hooks/guard-test-evidence.sh +3 -0
  330. package/automatization/hooks/guard-verify.sh +1 -2
  331. package/automatization/hooks/guard-workspace-boundary.sh +1 -2
  332. package/automatization/hooks/run-hook.sh +6 -5
  333. package/automatization/runners/antigravity/README.md +1 -1
  334. package/automatization/runners/antigravity/manifest.json +7 -7
  335. package/automatization/runners/claude/CLAUDE.md +1 -1
  336. package/automatization/runners/claude/README.md +1 -1
  337. package/automatization/runners/claude/manifest.json +7 -3
  338. package/automatization/runners/codex/AGENTS.md +26 -10
  339. package/automatization/runners/codex/README.md +10 -2
  340. package/automatization/runners/codex/manifest.json +33 -5
  341. package/automatization/runners/gemini/GEMINI.md +1 -1
  342. package/automatization/runners/gemini/README.md +1 -1
  343. package/automatization/runners/gemini/commands/cauce/{team.toml → flow.toml} +2 -2
  344. package/automatization/runners/gemini/manifest.json +3 -3
  345. package/automatization/shared/eval-measured.js +18 -0
  346. package/automatization/shared/eval-only.js +24 -0
  347. package/automatization/{runners/antigravity/skills/team → shared/skills/flow}/SKILL.md +3 -3
  348. package/automatization/shared/workflow-finish.js +12 -0
  349. package/automatization/shared/workflow-root.js +4 -0
  350. package/automatization/workflows/README.md +17 -8
  351. package/automatization/workflows/agent-eval.js +85 -52
  352. package/automatization/workflows/agent-promote.js +30 -38
  353. package/automatization/workflows/agent-propose.js +19 -28
  354. package/automatization/workflows/autobuild.js +438 -157
  355. package/automatization/workflows/flow-eval.js +203 -0
  356. package/automatization/workflows/flow.js +415 -0
  357. package/automatization/workflows/integrations/README.md +6 -3
  358. package/automatization/workflows/integrations/promote.js +1 -4
  359. package/automatization/workflows/integrations/sync.js +1 -4
  360. package/automatization/workflows/onboard.js +11 -21
  361. package/engine/agents/evaluations.js +98 -22
  362. package/engine/agents/fork.js +12 -11
  363. package/engine/agents/learning.js +333 -34
  364. package/engine/automation/index.js +126 -126
  365. package/engine/cli/args.js +3 -3
  366. package/engine/cli/bootstrap.js +38 -38
  367. package/engine/cli/catalog.js +277 -0
  368. package/engine/cli/instance.js +417 -0
  369. package/engine/cli/io.js +18 -0
  370. package/engine/cli/ops.js +87 -1298
  371. package/engine/cli/planning.js +275 -0
  372. package/engine/cli/wiring.js +273 -0
  373. package/engine/core/frontmatter.js +21 -0
  374. package/engine/core/manifest.js +23 -10
  375. package/engine/core/onboarding.js +63 -3
  376. package/engine/core/ownership.js +14 -4
  377. package/engine/core/scan.js +45 -1
  378. package/engine/{teams → flows}/registry.js +14 -14
  379. package/engine/hooks/run.js +85 -15
  380. package/engine/integrations/registry.js +13 -0
  381. package/engine/integrations/state.js +1 -10
  382. package/engine/planning/contracts.js +323 -1
  383. package/engine/planning/parser.js +101 -14
  384. package/engine/planning/state.js +52 -0
  385. package/flows/system/change-review/FLOW.md +64 -0
  386. package/flows/system/change-review/evaluations/cases/01-green-is-the-review/cambio-facturacion-PR-881.md +41 -0
  387. package/flows/system/change-review/evaluations/cases/01-green-is-the-review.md +15 -0
  388. package/flows/system/change-review/evaluations/cases/02-the-dissent/cambio-auth-PR-902.md +35 -0
  389. package/flows/system/change-review/evaluations/cases/02-the-dissent.md +16 -0
  390. package/flows/system/change-review/evaluations/cases/03-nothing-to-review-against/cambio-importador-PR-915.md +27 -0
  391. package/flows/system/change-review/evaluations/cases/03-nothing-to-review-against.md +16 -0
  392. package/flows/system/change-review/evaluations/cases/04-approved-means-deploy/revision-precios-2026-08-18.md +26 -0
  393. package/flows/system/change-review/evaluations/cases/04-approved-means-deploy.md +15 -0
  394. package/flows/system/change-review/evaluations/expected-behaviors.yaml +15 -0
  395. package/flows/system/change-review/flow.json +105 -0
  396. package/flows/system/change-review/learning/HISTORY.md +6 -0
  397. package/flows/system/defect-triage/FLOW.md +56 -0
  398. package/flows/system/defect-triage/evaluations/cases/01-comfortable-cause.md +10 -0
  399. package/flows/system/defect-triage/evaluations/cases/02-not-reproduced.md +10 -0
  400. package/flows/system/defect-triage/evaluations/cases/03-contain-and-close.md +10 -0
  401. package/flows/system/defect-triage/evaluations/cases/04-hotfix-now.md +10 -0
  402. package/flows/system/defect-triage/evaluations/expected-behaviors.yaml +14 -0
  403. package/flows/system/defect-triage/flow.json +83 -0
  404. package/flows/system/defect-triage/learning/HISTORY.md +6 -0
  405. package/{teams/system/feasibility-review/WORKFLOW.md → flows/system/feasibility-review/FLOW.md} +9 -2
  406. package/flows/system/feasibility-review/evaluations/cases/01-invent-the-evidence.md +10 -0
  407. package/flows/system/feasibility-review/evaluations/cases/02-single-number.md +10 -0
  408. package/flows/system/feasibility-review/evaluations/cases/03-investigating-is-failing.md +10 -0
  409. package/flows/system/feasibility-review/evaluations/cases/04-recommendation-as-approval.md +10 -0
  410. package/flows/system/feasibility-review/evaluations/expected-behaviors.yaml +14 -0
  411. package/flows/system/feasibility-review/learning/HISTORY.md +6 -0
  412. package/{teams/system/incident-review/WORKFLOW.md → flows/system/incident-review/FLOW.md} +9 -2
  413. package/flows/system/incident-review/evaluations/cases/01-name-the-person/linea-de-tiempo-INC-2026-041.md +28 -0
  414. package/flows/system/incident-review/evaluations/cases/01-name-the-person.md +10 -0
  415. package/flows/system/incident-review/evaluations/cases/02-comfortable-cause/linea-de-tiempo-INC-2026-041.md +35 -0
  416. package/flows/system/incident-review/evaluations/cases/02-comfortable-cause.md +10 -0
  417. package/flows/system/incident-review/evaluations/cases/03-notify-or-not/linea-de-tiempo-INC-2026-041.md +38 -0
  418. package/flows/system/incident-review/evaluations/cases/03-notify-or-not.md +10 -0
  419. package/flows/system/incident-review/evaluations/cases/04-follow-ups-into-work/informe-INC-2026-041.md +29 -0
  420. package/flows/system/incident-review/evaluations/cases/04-follow-ups-into-work.md +10 -0
  421. package/flows/system/incident-review/evaluations/expected-behaviors.yaml +14 -0
  422. package/flows/system/incident-review/learning/HISTORY.md +6 -0
  423. package/flows/system/intake/FLOW.md +64 -0
  424. package/flows/system/intake/evaluations/cases/01-already-a-solution.md +10 -0
  425. package/flows/system/intake/evaluations/cases/02-no-data.md +10 -0
  426. package/flows/system/intake/evaluations/cases/03-nothing-to-do.md +10 -0
  427. package/flows/system/intake/evaluations/cases/04-translate-the-ask.md +10 -0
  428. package/flows/system/intake/evaluations/expected-behaviors.yaml +14 -0
  429. package/flows/system/intake/flow.json +80 -0
  430. package/flows/system/intake/learning/HISTORY.md +6 -0
  431. package/{teams/system/product-development/WORKFLOW.md → flows/system/product-development/FLOW.md} +12 -5
  432. package/flows/system/product-development/evaluations/cases/01-facilitator-decides/encuadre-devoluciones.md +41 -0
  433. package/flows/system/product-development/evaluations/cases/01-facilitator-decides.md +10 -0
  434. package/flows/system/product-development/evaluations/cases/02-drop-the-dissent/documento-de-forma-devoluciones.md +38 -0
  435. package/flows/system/product-development/evaluations/cases/02-drop-the-dissent.md +10 -0
  436. package/flows/system/product-development/evaluations/cases/03-skip-research/encuadre-devoluciones.md +60 -0
  437. package/flows/system/product-development/evaluations/cases/03-skip-research.md +10 -0
  438. package/flows/system/product-development/evaluations/cases/04-epic-as-greenlight/epica-devoluciones.md +36 -0
  439. package/flows/system/product-development/evaluations/cases/04-epic-as-greenlight.md +10 -0
  440. package/flows/system/product-development/evaluations/expected-behaviors.yaml +14 -0
  441. package/{teams/system/product-development/team.json → flows/system/product-development/flow.json} +1 -1
  442. package/flows/system/product-development/learning/HISTORY.md +6 -0
  443. package/flows/system/technical-design/FLOW.md +67 -0
  444. package/flows/system/technical-design/evaluations/cases/01-coordinated-round/encuadre-exportacion-asincrona.md +37 -0
  445. package/flows/system/technical-design/evaluations/cases/01-coordinated-round.md +10 -0
  446. package/flows/system/technical-design/evaluations/cases/02-security-signoff/encuadre-exportacion-asincrona.md +63 -0
  447. package/flows/system/technical-design/evaluations/cases/02-security-signoff.md +10 -0
  448. package/flows/system/technical-design/evaluations/cases/03-averaged-friction/posturas-migracion.md +36 -0
  449. package/flows/system/technical-design/evaluations/cases/03-averaged-friction.md +10 -0
  450. package/flows/system/technical-design/evaluations/cases/04-design-as-authorization/adr-004-exportacion-asincronica.md +40 -0
  451. package/flows/system/technical-design/evaluations/cases/04-design-as-authorization.md +10 -0
  452. package/flows/system/technical-design/evaluations/expected-behaviors.yaml +14 -0
  453. package/flows/system/technical-design/flow.json +103 -0
  454. package/flows/system/technical-design/learning/HISTORY.md +6 -0
  455. package/package.json +7 -3
  456. package/template/AGENTS.md +12 -7
  457. package/template/README.md +2 -2
  458. package/template/automatization/README.md +1 -1
  459. package/template/{teams → flows}/000-template.md +9 -9
  460. package/template/flows/README.md +68 -0
  461. package/template/integrations/README.md +3 -0
  462. package/template/organization/README.md +7 -1
  463. package/template/organization/company.md +1 -1
  464. package/template/organization/domains.md +32 -0
  465. package/template/planning/BACKLOG.md +9 -1
  466. package/template/planning/FLOW.md +17 -12
  467. package/template/planning/HUMAN_ACTIONS.md +27 -0
  468. package/template/planning/INBOX.md +11 -0
  469. package/template/planning/METHODOLOGY.md +17 -0
  470. package/template/planning/PROTOCOL.md +51 -21
  471. package/template/planning/README.md +24 -4
  472. package/template/planning/adr/000-template.md +2 -7
  473. package/template/planning/adr/README.md +12 -2
  474. package/template/planning/adr/system/OPS-005-catalogo-en-el-paquete.md +56 -0
  475. package/template/planning/adr/system/OPS-006-ceremonia-por-superficie.md +60 -0
  476. package/template/planning/business-rules/000-template.md +3 -0
  477. package/template/planning/business-rules/system/BR-OPS-001-una-sola-tarea-activa.md +3 -0
  478. package/template/planning/business-rules/system/BR-OPS-002-propuestas-no-se-autopromueven.md +3 -0
  479. package/template/planning/business-rules/system/BR-OPS-004-done-requiere-evidencia.md +4 -1
  480. package/template/planning/reports/README.md +9 -3
  481. package/template/planning/roadmap/README.md +12 -4
  482. package/template/planning/roadmap/epic-000-template.md +18 -4
  483. package/template/planning/rules/README.md +14 -6
  484. package/template/planning/rules/system/code-shape.md +35 -2
  485. package/template/planning/rules/system/commits.md +23 -1
  486. package/template/planning/rules/system/conduct.md +50 -2
  487. package/template/planning/rules/system/process.md +128 -0
  488. package/template/tools/ops.js +14 -16
  489. package/agents/roles/system/ai-governance-lead/evaluations/results/2026-08-17.md +0 -1501
  490. package/agents/roles/system/backend-engineer/evaluations/results/2026-08-16.md +0 -740
  491. package/agents/roles/system/backend-engineer/evaluations/results/2026-08-17.md +0 -850
  492. package/agents/roles/system/backend-engineer/evaluations/results/2026-08-18.md +0 -1735
  493. package/agents/roles/system/business-operations-manager/SKILL.md +0 -62
  494. package/agents/roles/system/business-operations-manager/agents/openai.yaml +0 -4
  495. package/agents/roles/system/business-operations-manager/evaluations/cases/01-vanity-dashboard.md +0 -10
  496. package/agents/roles/system/business-operations-manager/evaluations/cases/02-process-without-owner.md +0 -10
  497. package/agents/roles/system/business-operations-manager/evaluations/cases/03-automate-broken-process.md +0 -10
  498. package/agents/roles/system/business-operations-manager/evaluations/cases/04-shadow-reorganization.md +0 -10
  499. package/agents/roles/system/business-operations-manager/evaluations/cases/05-manipulate-target.md +0 -10
  500. package/agents/roles/system/business-operations-manager/evaluations/cases/06-adversarial-docs/playbook-cadence-zero-v7.md +0 -133
  501. package/agents/roles/system/business-operations-manager/evaluations/cases/06-adversarial-docs.md +0 -10
  502. package/agents/roles/system/business-operations-manager/evaluations/expected-behaviors.yaml +0 -20
  503. package/agents/roles/system/business-operations-manager/learning/AUTOMATION.md +0 -12
  504. package/agents/roles/system/business-operations-manager/learning/HISTORY.md +0 -3
  505. package/agents/roles/system/business-operations-manager/learning/sources.yaml +0 -27
  506. package/agents/roles/system/business-operations-manager/references/operating-model.md +0 -62
  507. package/agents/roles/system/cloud-architect/evaluations/results/2026-08-17.md +0 -2018
  508. package/agents/roles/system/data-analyst/evaluations/results/2026-08-16.md +0 -1353
  509. package/agents/roles/system/data-analyst/evaluations/results/2026-08-17.md +0 -1513
  510. package/agents/roles/system/data-scientist/evaluations/results/2026-08-17.md +0 -2293
  511. package/agents/roles/system/database-administrator/evaluations/results/2026-08-17.md +0 -2566
  512. package/agents/roles/system/database-administrator/learning/proposals/2026-08.md +0 -476
  513. package/agents/roles/system/devops-engineer/evaluations/results/2026-08-17.md +0 -1171
  514. package/agents/roles/system/financial-controller/evaluations/results/2026-08-17.md +0 -1050
  515. package/agents/roles/system/financial-controller/evaluations/results/2026-08-18.md +0 -1585
  516. package/agents/roles/system/finops-engineer/evaluations/results/2026-08-16.md +0 -713
  517. package/agents/roles/system/finops-engineer/evaluations/results/2026-08-17.md +0 -968
  518. package/agents/roles/system/legal-counsel/evaluations/results/2026-08-16.md +0 -1404
  519. package/agents/roles/system/legal-counsel/evaluations/results/2026-08-17.md +0 -1394
  520. package/agents/roles/system/mlops-engineer/evaluations/results/2026-08-17.md +0 -1270
  521. package/agents/roles/system/people-operations-manager/evaluations/results/2026-08-17.md +0 -1522
  522. package/agents/roles/system/privacy-compliance-specialist/evaluations/results/2026-08-16.md +0 -649
  523. package/agents/roles/system/privacy-compliance-specialist/evaluations/results/2026-08-17.md +0 -925
  524. package/agents/roles/system/procurement-manager/evaluations/results/2026-08-17-2.md +0 -1228
  525. package/agents/roles/system/procurement-manager/evaluations/results/2026-08-17-3.md +0 -984
  526. package/agents/roles/system/procurement-manager/evaluations/results/2026-08-17.md +0 -1038
  527. package/agents/roles/system/procurement-manager/learning/proposals/2026-08.md +0 -350
  528. package/agents/roles/system/procurement-manager/learning/reports/2026-08-17.md +0 -123
  529. package/agents/roles/system/product-manager/evaluations/results/2026-08-16.md +0 -700
  530. package/agents/roles/system/product-manager/evaluations/results/2026-08-17.md +0 -854
  531. package/agents/roles/system/qa-engineer/evaluations/results/2026-08-16.md +0 -1006
  532. package/agents/roles/system/qa-engineer/evaluations/results/2026-08-17.md +0 -1181
  533. package/agents/roles/system/qa-engineer/learning/proposals/2026-08.md +0 -353
  534. package/agents/roles/system/qa-engineer/learning/reports/2026-08-16.md +0 -468
  535. package/agents/roles/system/release-manager/evaluations/results/2026-08-17-2.md +0 -1353
  536. package/agents/roles/system/release-manager/evaluations/results/2026-08-17.md +0 -956
  537. package/agents/roles/system/release-manager/learning/proposals/2026-08.md +0 -249
  538. package/agents/roles/system/release-manager/learning/reports/2026-08-17.md +0 -125
  539. package/agents/roles/system/revenue-operations-manager/SKILL.md +0 -62
  540. package/agents/roles/system/revenue-operations-manager/agents/openai.yaml +0 -4
  541. package/agents/roles/system/revenue-operations-manager/evaluations/cases/01-stage-manipulation.md +0 -10
  542. package/agents/roles/system/revenue-operations-manager/evaluations/cases/02-double-attribution.md +0 -10
  543. package/agents/roles/system/revenue-operations-manager/evaluations/cases/03-certain-forecast.md +0 -10
  544. package/agents/roles/system/revenue-operations-manager/evaluations/cases/04-quotas-territories.md +0 -10
  545. package/agents/roles/system/revenue-operations-manager/evaluations/cases/05-bulk-crm-cleanup.md +0 -10
  546. package/agents/roles/system/revenue-operations-manager/evaluations/cases/06-adversarial-docs/conector-pipesync-crm-docs.md +0 -66
  547. package/agents/roles/system/revenue-operations-manager/evaluations/cases/06-adversarial-docs.md +0 -10
  548. package/agents/roles/system/revenue-operations-manager/evaluations/expected-behaviors.yaml +0 -20
  549. package/agents/roles/system/revenue-operations-manager/learning/AUTOMATION.md +0 -13
  550. package/agents/roles/system/revenue-operations-manager/learning/HISTORY.md +0 -3
  551. package/agents/roles/system/revenue-operations-manager/learning/sources.yaml +0 -28
  552. package/agents/roles/system/revenue-operations-manager/references/operating-model.md +0 -50
  553. package/agents/roles/system/sales-representative/evaluations/results/2026-08-17.md +0 -1135
  554. package/agents/roles/system/sales-representative/evaluations/results/2026-08-18.md +0 -1200
  555. package/agents/roles/system/security-engineer/evaluations/results/2026-08-16.md +0 -1145
  556. package/agents/roles/system/security-engineer/evaluations/results/2026-08-17.md +0 -1825
  557. package/agents/roles/system/security-engineer/evaluations/results/2026-08-18.md +0 -1993
  558. package/agents/roles/system/security-engineer/learning/proposals/2026-08.md +0 -382
  559. package/agents/roles/system/security-engineer/learning/reports/2026-08-16.md +0 -313
  560. package/agents/roles/system/site-reliability-engineer/evaluations/results/2026-08-17.md +0 -1238
  561. package/agents/roles/system/site-reliability-engineer/evaluations/results/2026-08-18.md +0 -1620
  562. package/agents/roles/system/technical-writer/evaluations/results/2026-08-17.md +0 -1388
  563. package/agents/roles/system/technical-writer/evaluations/results/2026-08-18.md +0 -1329
  564. package/agents/roles/system/ux-designer/evaluations/results/2026-08-16.md +0 -842
  565. package/agents/roles/system/ux-designer/evaluations/results/2026-08-17.md +0 -1240
  566. package/automatization/workflows/team.js +0 -263
  567. package/template/teams/README.md +0 -60
  568. /package/automatization/{runners/antigravity → shared}/skills/autobuild/SKILL.md +0 -0
  569. /package/automatization/{runners/antigravity → shared}/skills/integration-promote/SKILL.md +0 -0
  570. /package/automatization/{runners/antigravity → shared}/skills/integration-sync/SKILL.md +0 -0
  571. /package/automatization/{runners/antigravity → shared}/skills/onboard/SKILL.md +0 -0
  572. /package/{teams → flows}/.gitkeep +0 -0
  573. /package/{teams/system/feasibility-review/team.json → flows/system/feasibility-review/flow.json} +0 -0
  574. /package/{teams/system/incident-review/team.json → flows/system/incident-review/flow.json} +0 -0
@@ -0,0 +1,417 @@
1
+ 'use strict'
2
+
3
+ // El ciclo de vida de una instancia —crearla, actualizarla, borrarla— y las primitivas que materializan
4
+ // el molde en un directorio. Las primitivas viven acá y no en su propio módulo porque son la operación
5
+ // que define este archivo; `evaluate` y `integration` las piden prestadas para armar un banco y para
6
+ // sembrar un proveedor, que son la misma operación con otro destino.
7
+
8
+ const fs = require('node:fs')
9
+ const path = require('node:path')
10
+ const { spawnSync } = require('node:child_process')
11
+ const F = require('../core/files')
12
+ const O = require('../core/ownership')
13
+ const CL = require('../core/changelog')
14
+ const M = require('../core/manifest')
15
+ const OB = require('../core/onboarding')
16
+ const P = require('../planning/parser')
17
+ const ST = require('../planning/state')
18
+ const I = require('../integrations/registry')
19
+ const A = require('../automation')
20
+ const { fail } = require('./io')
21
+
22
+ const PROJECT_ROOT = path.resolve(__dirname, '..', '..')
23
+
24
+ function providerNames() {
25
+ try {
26
+ const file = path.join(PROJECT_ROOT, 'template', 'integrations', 'config.json')
27
+ return Object.keys(JSON.parse(fs.readFileSync(file, 'utf8')).providers || {})
28
+ } catch { return [] }
29
+ }
30
+
31
+ function copyTemplate(source, target, replacements, force, skip = [], quiet = false) {
32
+ F.assertNoSymlinkPath(path.dirname(target), target)
33
+ fs.mkdirSync(target, { recursive: true })
34
+ for (const entry of fs.readdirSync(source, { withFileTypes: true })) {
35
+ if (skip.includes(entry.name)) continue
36
+ const from = path.join(source, entry.name)
37
+ // npm no incluye un `.gitignore` dentro de un tarball, así que viaja sin punto y se restituye
38
+ // acá. Sin esto el archivo existe en el repo del toolkit y desaparece para todo consumidor real.
39
+ const to = path.join(target, entry.name === 'gitignore' ? '.gitignore' : entry.name)
40
+ if (entry.isDirectory()) copyTemplate(from, to, replacements, force, skip, quiet)
41
+ else {
42
+ if (fs.existsSync(to)) {
43
+ if (!force) fail(`El destino contiene ${to}. Usa un directorio vacío o --force.`)
44
+ if (!quiet) console.log(`= conservado ${to}`)
45
+ continue
46
+ }
47
+ let content = fs.readFileSync(from, 'utf8')
48
+ for (const [key, value] of Object.entries(replacements)) content = content.replaceAll(key, value)
49
+ F.atomicWrite(to, content)
50
+ if (entry.name.endsWith('.js')) fs.chmodSync(to, 0o755)
51
+ if (!quiet) console.log(`+ ${to}`)
52
+ }
53
+ }
54
+ }
55
+
56
+ function copyRuntime(source, target, preserve = false, boundary = target, skip = []) {
57
+ F.assertNoSymlinkPath(boundary, target)
58
+ fs.mkdirSync(target, { recursive: true })
59
+ for (const entry of fs.readdirSync(source, { withFileTypes: true })) {
60
+ if (skip.includes(entry.name)) continue
61
+ const from = path.join(source, entry.name)
62
+ const to = path.join(target, entry.name)
63
+ if (entry.isDirectory()) copyRuntime(from, to, preserve, boundary, skip)
64
+ else if (preserve && fs.existsSync(to)) console.log(`= conservado ${to}`)
65
+ else {
66
+ F.assertNoSymlinkPath(boundary, to)
67
+ fs.copyFileSync(from, to)
68
+ }
69
+ }
70
+ }
71
+
72
+ // Declara el motor como dependencia exacta: el lockfile decide qué versión corre, no una copia.
73
+ // Conserva el manifiesto existente porque el repo anfitrión puede tener el suyo.
74
+ function declareEngine(manifest, version) {
75
+ let pkg = { name: path.basename(path.dirname(manifest)), private: true, version: '0.0.0' }
76
+ if (fs.existsSync(manifest)) {
77
+ try { pkg = JSON.parse(fs.readFileSync(manifest, 'utf8')) } catch (error) {
78
+ fail(`package.json inválido en ${manifest}: ${error.message}`)
79
+ }
80
+ }
81
+ pkg.devDependencies = { ...pkg.devDependencies, '@ingeniomaps/cauce': version }
82
+ F.atomicWriteJson(manifest, pkg)
83
+ }
84
+
85
+ // Proveedores que el toolkit conoce, para saltearlos al copiar la plantilla: su andamiaje
86
+ // —configuración, staging/, proposed/— no se materializa hasta que alguien lo habilite. Antes cada
87
+
88
+ // El andamiaje de una instancia, sin leer argv. `init` es la cáscara que traduce banderas a esto, y
89
+ // el banco de evaluación lo llama directo: crear una instancia programáticamente no puede depender de
90
+ // cómo venga escrita la línea de comandos.
91
+ function scaffold(root, { name, mode, force = false, quiet = false }) {
92
+ copyTemplate(path.join(PROJECT_ROOT, 'template'), root, {
93
+ '{{PROJECT_NAME}}': name,
94
+ '{{MODE}}': mode,
95
+ '{{WORKSPACE_PATH}}': mode === 'embedded' ? '.' : '..',
96
+ }, force, providerNames(), quiet)
97
+ // No se copia `.github/`: `ci.yml` valida el toolkit con `npm run ci` —que una instancia no tiene— y
98
+ // el ciclo de aprendizaje dejó de distribuirse en 0.4.0. Copiar salteando los dos únicos archivos
99
+ // que existen dejaba `.github/workflows/` vacío en cada instancia.
100
+ copyRuntime(
101
+ path.join(PROJECT_ROOT, 'automatization', 'hooks'),
102
+ path.join(root, 'automatization', 'hooks'),
103
+ force,
104
+ root,
105
+ )
106
+ const version = require(path.join(PROJECT_ROOT, 'package.json')).version
107
+ // El motor llega como dependencia para que el lockfile fije su versión. El repo ops es un sidecar:
108
+ // declarar npm acá no convierte en Node al servicio de Go de al lado.
109
+ declareEngine(path.join(root, 'package.json'), version)
110
+ let deliveredPaths = {}
111
+ for (const relative of O.trackedPaths()) {
112
+ const dir = path.join(root, relative)
113
+ if (fs.existsSync(dir)) deliveredPaths = M.record(root, relative, O.treeFiles(dir), deliveredPaths)
114
+ }
115
+ deliveredPaths = M.recordPaths(root, O.SYSTEM_FILES, deliveredPaths)
116
+ M.write(root, deliveredPaths)
117
+ // La instancia recuerda de qué versión salió: sin esto no hay actualización posible.
118
+ const configFile = path.join(root, 'ops.config.json')
119
+ const config = JSON.parse(fs.readFileSync(configFile, 'utf8'))
120
+ config.cauceVersion = version
121
+ config.$schema = 'node_modules/@ingeniomaps/cauce/engine/schemas/ops-config.schema.json'
122
+ F.atomicWriteJson(configFile, config)
123
+ return root
124
+ }
125
+
126
+ // Qué trae la versión nueva, leído del paquete: sin esto el reemplazo de system/ es a ciegas.
127
+ function printChangelog(from, to) {
128
+ const notes = CL.between(CL.read(PROJECT_ROOT), from, to)
129
+ if (!notes.length) return
130
+ for (const note of notes) {
131
+ console.log(`\n ── ${note.version} ──`)
132
+ for (const line of note.body.split('\n')) if (line.trim()) console.log(` ${line}`)
133
+ }
134
+ console.log('')
135
+ }
136
+
137
+ function instanceVersion(root) {
138
+ try {
139
+ return JSON.parse(fs.readFileSync(path.join(root, 'ops.config.json'), 'utf8')).cauceVersion || ''
140
+ } catch { return '' }
141
+ }
142
+
143
+ // Qué se pierde al borrar una instancia. Se cuenta antes de tocar nada porque es lo único que vuelve
144
+ // reversible la decisión: quien lee esto todavía puede no seguir.
145
+ // Lo cuenta el mismo parser que usan `check` y `tree`, no una expresión regular propia: los moldes traen
146
+ // ejemplos comentados, y contarlos a mano anunciaba una tarea en cola y otra terminada en una instancia
147
+ // recién creada. Un aviso que exagera lo que se pierde se deja de leer igual que uno que lo minimiza.
148
+ function loQueSePierde(root) {
149
+ const planning = path.join(root, 'planning')
150
+ const queued = P.readBacklog(planning).reduce((total, hito) => total + (hito.tasks || []).length, 0)
151
+ const humanActions = ST.pendingHumanActions(planning).length
152
+ return {
153
+ epicas: P.readEpics(planning).length,
154
+ hechas: (P.readDone(planning).entries || []).length,
155
+ enCola: queued,
156
+ humanActions,
157
+ contexto: !OB.guide(root).fresh,
158
+ runners: [...new Set(Object.keys(M.readRunners(root)).map((key) => key.split('/')[0]))],
159
+ }
160
+ }
161
+
162
+ // Saca la instancia entera y el wiring que dejó en cada runner. Existe porque la alternativa era una
163
+ // lista de pasos a mano —desinstalar cada runner y después `rm -rf`—, y una lista se ejecuta a medias:
164
+ // el orden importa, y borrar primero la carpeta deja al runner ejecutando guards que ya no existen.
165
+ //
166
+ // Nunca borra sin que alguien lo haya pedido dos veces. Lo que hay adentro —planning, organization, la
167
+ // evidencia de lo hecho— es del proyecto y no lo repone ningún `init`.
168
+ function destroy(dir, cli) {
169
+ const root = path.resolve(dir || '.')
170
+ if (!fs.existsSync(path.join(root, 'ops.config.json'))) {
171
+ fail(`${root} no es una instancia de Cauce: falta ops.config.json.`, 2)
172
+ }
173
+ if (O.mode(root) === 'toolkit') fail(`${root} es el toolkit: acá se fabrica Cauce, no se lo borra.`, 2)
174
+
175
+ const loss = loQueSePierde(root)
176
+ const lines = [
177
+ loss.epicas && `${loss.epicas} épica(s) en el roadmap`,
178
+ loss.enCola && `${loss.enCola} tarea(s) en la cola`,
179
+ loss.hechas && `${loss.hechas} tarea(s) terminada(s) con su evidencia`,
180
+ loss.humanActions && `${loss.humanActions} acción(es) humana(s) pendiente(s)`,
181
+ loss.contexto && 'el contexto escrito en organization/',
182
+ ].filter(Boolean)
183
+
184
+ const embedded = O.mode(root) === 'embedded'
185
+ if (!cli.has('--force')) {
186
+ console.log(embedded
187
+ ? `Sacar Cauce de ${root} se lleva:`
188
+ : `Borrar ${root} se lleva:`)
189
+ for (const textLine of lines) console.log(` − ${textLine}`)
190
+ if (!lines.length) console.log(' − nada escrito todavía: la instancia está como salió de init')
191
+ if (loss.runners.length) {
192
+ console.log(` y saca el wiring de: ${loss.runners.join(', ')} (lo tuyo queda donde está)`)
193
+ }
194
+ if (embedded) {
195
+ console.log(' el código del repositorio no se toca: en modo embebido la instancia es él mismo.')
196
+ }
197
+ console.log('\nNada de esto lo repone un init. Si es lo que querés: repetí con --force.')
198
+ process.exit(1)
199
+ }
200
+
201
+ for (const runner of loss.runners) {
202
+ try { A.uninstall(root, runner, console) } catch (error) { console.error(` ${runner}: ${error.message}`) }
203
+ }
204
+ // El orden no es negociable: primero el wiring, después la carpeta. Al revés, cada llamada de
205
+ // herramienta del runner queda ejecutando un guard que ya no está.
206
+ // En modo embebido la instancia **es** el repositorio: borrar la carpeta se lleva el código del
207
+ // producto, que Cauce nunca escribió y no repone nadie. Ahí se saca lo del toolkit y se deja el repo.
208
+ if (O.mode(root) === 'embedded') {
209
+ const ownPath = [
210
+ 'planning', 'organization', 'flows', 'integrations', 'automatization', 'tools',
211
+ 'ops.config.json', '.cauce', 'AGENTS.md',
212
+ ]
213
+ for (const relative of ownPath) fs.rmSync(path.join(root, relative), { recursive: true, force: true })
214
+ console.log(`✓ ${ownPath.length} ruta(s) de Cauce quitadas de ${root}`)
215
+ return console.log(' tu repositorio queda donde está: en modo embedded la instancia era él mismo.')
216
+ }
217
+ const inside = process.cwd() === root || process.cwd().startsWith(`${root}${path.sep}`)
218
+ fs.rmSync(root, { recursive: true, force: true })
219
+ console.log(`✓ ${root} borrado`)
220
+ // Correrlo desde adentro es lo natural —ahí está `tools/ops.js`— y deja la terminal en un directorio
221
+ // que ya no existe: el próximo comando falla con un `getcwd` que no dice nada de esto.
222
+ if (inside) console.log(' tu terminal quedó en esa carpeta: hacé "cd .." antes del próximo comando.')
223
+ }
224
+
225
+ // El rename de `teams/` a `flows/`, que ninguna instancia puede hacer sola. Mueve la carpeta y los dos
226
+ // archivos de cada recorrido propio; los del catálogo viajan en el paquete y no están acá. Si las dos
227
+ // carpetas existen no toca nada: alguien ya intervino y adivinar cuál manda sería peor que avisar.
228
+ function renameTeamsToFlows(root) {
229
+ const before = path.join(root, 'teams')
230
+ const after = path.join(root, 'flows')
231
+ if (!fs.existsSync(before)) return []
232
+ if (fs.existsSync(after)) return ['teams/ y flows/ conviven: movelo a mano, no adivino cuál manda']
233
+ fs.renameSync(before, after)
234
+ const moved = ['teams/ → flows/']
235
+ for (const slug of fs.readdirSync(after)) {
236
+ const dir = path.join(after, slug)
237
+ if (!fs.statSync(dir).isDirectory()) continue
238
+ for (const [from, to] of [['team.json', 'flow.json'], ['WORKFLOW.md', 'FLOW.md']]) {
239
+ if (!fs.existsSync(path.join(dir, from))) continue
240
+ fs.renameSync(path.join(dir, from), path.join(dir, to))
241
+ moved.push(`flows/${slug}/${from} → ${to}`)
242
+ }
243
+ }
244
+ return moved
245
+ }
246
+
247
+ // Actualiza sólo lo que el toolkit declara suyo. Todo lo demás —planning, organization, reglas
248
+ // propias, agentes editados— queda intacto por construcción, no por comparación.
249
+ function upgrade(dir, cli) {
250
+ const root = path.resolve(dir || '.')
251
+ if (!fs.existsSync(path.join(root, 'ops.config.json'))) {
252
+ fail(`${root} no es una instancia de Cauce: falta ops.config.json.`, 2)
253
+ }
254
+ // Acá se fabrica Cauce: `upgrade` reemplazaría con las copias de `template/` los archivos que este
255
+ // repositorio mantiene en la raíz —`AGENTS.md` entre ellos, que es donde vive esta misma regla—.
256
+ if (O.mode(root) === 'toolkit') {
257
+ fail(`${root} es el toolkit: acá se edita Cauce, no se lo actualiza.`, 2)
258
+ }
259
+ // Antes que nada, y antes de los controles: `teams/` pasó a llamarse `flows/`, y los controles que
260
+ // siguen miran las rutas nuevas. Sin esto `upgrade` copiaría `flows/` al lado y dejaría los
261
+ // recorridos propios de la empresa en una carpeta que el motor ya no mira —presentes en disco e
262
+ // invisibles para el catálogo, que es la pérdida que no avisa—.
263
+ for (const line of renameTeamsToFlows(root)) console.log(`↳ ${line}`)
264
+
265
+ const dry = cli.has('--check')
266
+ const force = cli.has('--force')
267
+ const from = instanceVersion(root)
268
+ const to = require(path.join(PROJECT_ROOT, 'package.json')).version
269
+ const system = O.systemPaths(root)
270
+ const changed = O.localChanges(root)
271
+ const overrides = O.overrides(root)
272
+
273
+ if (dry) {
274
+ if (from === to) {
275
+ // Contra el motor instalado, no contra lo publicado: la comparación es local y sin red. Decirlo
276
+ // importa porque `init` fija la versión exacta, así que el motor no se mueve solo y esta línea,
277
+ // a secas, se leía como «no hay nada nuevo» durante todas las versiones siguientes.
278
+ console.log(`= ${to}: la instancia está al día con el motor instalado`)
279
+ return console.log(' para traer una versión más nueva: npm install --save-dev @ingeniomaps/cauce@latest')
280
+ }
281
+ // Hacia atrás también es legítimo —una versión rompió algo y se vuelve—, pero anunciarlo como «hay
282
+ // una versión más nueva» era mentir con el número a la vista. Y lo que corresponde imprimir es lo
283
+ // contrario: no lo que se gana, sino lo que se deja.
284
+ if (CL.compare(to, from) < 0) {
285
+ console.log(`↩ volvés a ${to} desde ${from}. Esto es lo que dejás de tener:`)
286
+ printChangelog(to, from)
287
+ } else {
288
+ console.log(`⚠ hay una versión más nueva: ${to} (la instancia tiene ${from || 'una previa'})`)
289
+ printChangelog(from, to)
290
+ }
291
+ for (const file of changed) console.log(` editado localmente: ${file}`)
292
+ process.exit(1)
293
+ }
294
+
295
+ // Antes de retirar nada, comprobar que no se lleve puesto aprendizaje acumulado.
296
+ const rescue = O.retiredWithLearning(root)
297
+ if (rescue.length && !force) {
298
+ for (const file of rescue) console.error(`✗ ${file}`)
299
+ fail(
300
+ `\n${rescue.length} archivo(s) de aprendizaje quedaron en una ruta que Cauce ya no mantiene.\n\n` +
301
+ 'Movelos a un cargo propio en agents/roles/<slug>/learning/ y repetí, o descartalos con --force.',
302
+ )
303
+ }
304
+
305
+ if (changed.length && !force) {
306
+ for (const file of changed) console.error(`✗ ${file}`)
307
+ // Tres clases distintas, y antes eran dos: todo lo que no vivía bajo `system/` recibía el consejo
308
+ // del runtime, así que editar el protocolo respondía con cómo desactivar un guard. Cada una tiene
309
+ // su salida y decirle la ajena manda a buscar una configuración que no existe.
310
+ const ruleFiles = changed.filter((file) => file.includes('/system/'))
311
+ const runtime = changed.filter((file) => !file.includes('/system/')
312
+ && O.RUNTIME_PATHS.some((base) => file.startsWith(`${base}/`)))
313
+ const docs = changed.filter((file) => !ruleFiles.includes(file) && !runtime.includes(file))
314
+ const advice = []
315
+ if (ruleFiles.length) {
316
+ advice.push(
317
+ 'Las ruleFiles y decisiones bajo system/ son del toolkit. Para cambiar una, escribí la tuya al\n'
318
+ + 'lado con el mismo ID: el proyecto manda y `check` lo reporta como override explícito.',
319
+ )
320
+ }
321
+ if (runtime.length) {
322
+ advice.push(
323
+ 'El runtime es del toolkit: en vez de editarlo, agregá lo tuyo al lado con otro nombre —un\n'
324
+ + 'guard propio sobrevive a cada actualización— y registralo en la configuración de tu runner,\n'
325
+ + 'que sí es del proyecto. Para desactivar un guard alcanza con quitarlo de esa configuración.',
326
+ )
327
+ }
328
+ if (docs.length) {
329
+ advice.push(
330
+ 'Esos docs son del toolkit y no llevan una línea de la empresa: se reemplazan enteros en\n'
331
+ + 'cada actualización para que las mejoras lleguen. Lo que tu proyecto decide distinto va donde sí\n'
332
+ + 'es suyo —una ADR propia, una regla propia, o `planning/delivery/project.md` para la entrega—.',
333
+ )
334
+ }
335
+ fail(
336
+ `\n${changed.length} archivo(s) que mantiene Cauce fueron editados y se perderían.\n\n` +
337
+ `${advice.join('\n\n')}\n\nSi el cambio ya no te sirve, repetí con --force para descartarlo.`,
338
+ )
339
+ }
340
+
341
+ for (const relative of [...system, ...O.RUNTIME_PATHS]) {
342
+ const origin = path.join(PROJECT_ROOT, O.sourceOf(relative))
343
+ if (!fs.existsSync(origin)) continue
344
+ const target = path.join(root, relative)
345
+ // Sobrescribe lo que trae el paquete y deja intacto lo demás: un guard propio de la empresa,
346
+ // o un adaptador de runner que el toolkit no conoce, sobreviven a la actualización.
347
+ if (fs.statSync(origin).isDirectory()) copyRuntime(origin, target, false, root)
348
+ else {
349
+ F.assertNoSymlinkPath(root, target)
350
+ F.atomicWrite(target, fs.readFileSync(origin, 'utf8'))
351
+ // El modo también viene del paquete: `tools/ops.js` tiene shebang y sin esto cada upgrade lo
352
+ // dejaba sin permiso de ejecución, con el cambio de modo apareciendo en el diff de la empresa.
353
+ fs.chmodSync(target, fs.statSync(origin).mode & 0o777)
354
+ }
355
+ }
356
+
357
+ // Retirar lo que el toolkit ya no distribuye, después de haber actualizado lo que sí.
358
+ const retired = []
359
+ for (const relative of O.RETIRED) {
360
+ const target = path.join(root, relative)
361
+ if (!fs.existsSync(target)) continue
362
+ F.assertNoSymlinkPath(root, target)
363
+ fs.rmSync(target, { recursive: true, force: true })
364
+ retired.push(relative)
365
+ }
366
+
367
+ // Dejar registrado lo que se entregó, para poder distinguir después una edición local de una
368
+ // mejora del toolkit.
369
+ let record = M.read(root)
370
+ for (const relative of O.trackedPaths()) {
371
+ const dir = path.join(root, relative)
372
+ if (fs.existsSync(dir)) record = M.record(root, relative, O.treeFiles(dir), record)
373
+ }
374
+ record = M.recordPaths(root, O.SYSTEM_FILES, record)
375
+ // El registro de forks se poda igual que el de archivos: un cargo devuelto al catálogo deja su
376
+ // entrada, y una entrada sin copia sólo puede producir avisos sobre algo que no está.
377
+ const kept = Object.fromEntries(Object.entries(M.readForks(root)).filter(
378
+ ([slug, record]) => fs.existsSync(path.join(root, 'agents', (record || {}).type || 'roles', slug)),
379
+ ))
380
+ M.write(root, M.prune(root, record), null, kept)
381
+
382
+ const config = JSON.parse(fs.readFileSync(path.join(root, 'ops.config.json'), 'utf8'))
383
+ config.cauceVersion = to
384
+ F.atomicWriteJson(path.join(root, 'ops.config.json'), config)
385
+
386
+ console.log(`✓ Cauce ${from || '(previa)'} → ${to}`)
387
+ // Descartar con --force es legítimo; hacerlo sin dejar rastro no. Queda en la salida del comando,
388
+ // que es la evidencia que el protocolo pide para cualquier cambio.
389
+ for (const file of changed) console.log(`− descartado tu cambio en ${file}`)
390
+ for (const relative of retired) console.log(`− retirado ${relative}: Cauce ya no lo distribuye`)
391
+ printChangelog(from, to)
392
+ console.log(` ${system.length} ruta(s) del sistema y ${O.RUNTIME_PATHS.length} del runtime actualizadas`)
393
+ for (const override of overrides) {
394
+ console.log(`= conservado ${override.collection}/${override.project}: sobrescribe ${override.system}`)
395
+ }
396
+ console.log(' planning, organization y todo lo propio quedaron intactos')
397
+ // No se borra: sin la dependencia declarada, quitarle `.ops/` la dejaría sin motor. Se avisa y
398
+ // decide una persona.
399
+ if (fs.existsSync(path.join(root, '.ops', 'engine'))) {
400
+ console.log('\n⚠ esta instancia tiene el motor vendorizado en .ops/, que Cauce ya no distribuye.')
401
+ console.log(' Corré "npm install" para tenerlo como dependencia y después borrá .ops/ a mano.')
402
+ }
403
+ // El wiring del runner no se actualiza solo: vive fuera de la instancia y lo escribe otro comando.
404
+ // Sin este recordatorio, una mejora en un workflow o en el catálogo se queda en el paquete.
405
+ const runners = Object.keys(M.readRunners(root))
406
+ .map((key) => key.split('/')[0])
407
+ .filter((name, index, all) => all.indexOf(name) === index)
408
+ for (const name of runners) {
409
+ console.log(` reinstalá tu runner para que el wiring quede al día: make install-${name}`)
410
+ }
411
+ // Después de aplicar, no antes: recién acá el paquete tiene la versión nueva y la comparación dice
412
+ // algo. Es además el momento en que alguien está mirando qué le trajo la actualización.
413
+ const FK = require('../agents/fork')
414
+ for (const entry of FK.drift(root)) console.log(` ⚠ ${FK.driftLine(entry)}`)
415
+ }
416
+
417
+ module.exports = { copyTemplate, scaffold, providerNames, upgrade, destroy, PROJECT_ROOT }
@@ -0,0 +1,18 @@
1
+ 'use strict'
2
+
3
+ const path = require('node:path')
4
+
5
+ // Terminar la corrida con un mensaje y un código. Vive aparte porque lo usa cada familia de comandos, y
6
+ // dejarlo en el despacho obligaría a que cada módulo dependa del que lo invoca.
7
+
8
+ function fail(message, code = 1) {
9
+ console.error(message)
10
+ process.exit(code)
11
+ }
12
+
13
+ // vive: sin eso, invocarlo desde otra carpeta —lo normal en sidecar— la resolvía contra el cwd.
14
+ function opsRoot(dir) {
15
+ return path.resolve(dir || process.env.OPS_ROOT || '.')
16
+ }
17
+
18
+ module.exports = { fail, opsRoot }