@zaip-ai/cli 1.3.0 → 1.3.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 (258) hide show
  1. package/README.md +1 -1
  2. package/dist/services/agent-adapters.js +1 -1
  3. package/dist/services/agent-adapters.js.map +1 -1
  4. package/dist/services/agent-adapters.test.js +2 -1
  5. package/dist/services/agent-adapters.test.js.map +1 -1
  6. package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
  7. package/dist/services/codex-pre-tool-hook-template.js +89 -7
  8. package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
  9. package/dist/services/codex-rules.d.ts +1 -1
  10. package/dist/services/codex-rules.d.ts.map +1 -1
  11. package/dist/services/codex-rules.js +7 -0
  12. package/dist/services/codex-rules.js.map +1 -1
  13. package/dist/services/install-agents-template.d.ts.map +1 -1
  14. package/dist/services/install-agents-template.js +1 -0
  15. package/dist/services/install-agents-template.js.map +1 -1
  16. package/dist/services/runtime-template.test.js +31 -7
  17. package/dist/services/runtime-template.test.js.map +1 -1
  18. package/dist/services/template-manifest.d.ts.map +1 -1
  19. package/dist/services/template-manifest.js +7 -3
  20. package/dist/services/template-manifest.js.map +1 -1
  21. package/package.json +1 -1
  22. package/templates/.agents/config/agents/catalog.yaml +7 -7
  23. package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +2 -2
  24. package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +2 -2
  25. package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +8 -8
  26. package/templates/.agents/dashboard/.zaip-managed.json +373 -205
  27. package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-DxR_pgSV.js → CostCalculationGuidePage-ovxurkIk.js} +1 -1
  28. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-4jZLTWE_.js → DashboardHelpDialog-BgVgrfhQ.js} +240 -86
  29. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-CKcsqb-r.js → PricingSettingsDialog-vSvvOHQp.js} +1 -1
  30. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-DmmJD2Th.js → ProjectSettingsPage-zH758vfs.js} +1 -1
  31. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-DLn-Mz2M.js +1 -0
  32. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-CaKwQP43.css → TraceabilityWorkspace-DvvavDLY.css} +1 -1
  33. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-DKwP1stV.js +68 -0
  34. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-PoJA2PI1.css +1 -0
  35. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-C0fj2uU9.js → icons-vendor-B_lDDHn1.js} +1 -1
  36. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-B31GMG5O.css +1 -0
  37. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-CZQlsLV9.js +2 -0
  38. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-BEsJ-FYH.js → react-vendor-B3TJrD4O.js} +1 -1
  39. package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-B6y6Gw12.js → traceability-7f1j5wx3.js} +1 -1
  40. package/templates/.agents/dashboard/apps/frontend/dist/index.html +7 -7
  41. package/templates/.agents/dashboard/apps/frontend/playwright.dom.config.ts +32 -0
  42. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +132 -245
  43. package/templates/.agents/dashboard/apps/frontend/src/AppOverlays.tsx +0 -21
  44. package/templates/.agents/dashboard/apps/frontend/src/DashboardAlternateContent.tsx +9 -0
  45. package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.dom.e2e.ts +56 -0
  46. package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.test.ts +18 -1
  47. package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.tsx +75 -8
  48. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +25 -1
  49. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +7 -9
  50. package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +4 -4
  51. package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +1 -1
  52. package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +7 -0
  53. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +20 -8
  54. package/templates/.agents/dashboard/apps/frontend/src/sqlite-page-export.test.ts +32 -0
  55. package/templates/.agents/dashboard/apps/frontend/src/sqlite-page-export.ts +21 -0
  56. package/templates/.agents/dashboard/apps/frontend/src/styles.css +19 -0
  57. package/templates/.agents/dashboard/apps/frontend/src/traceability-task-pagination.test.ts +32 -0
  58. package/templates/.agents/dashboard/apps/frontend/src/traceability-task-pagination.ts +36 -0
  59. package/templates/.agents/dashboard/apps/frontend/src/traceability-workspace.css +6 -2
  60. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +48 -0
  61. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +31 -27
  62. package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.ts +7 -1
  63. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-list-page.test.ts +163 -0
  64. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-list-page.ts +136 -0
  65. package/templates/.agents/dashboard/apps/frontend/src/use-operations-detail-export.ts +76 -0
  66. package/templates/.agents/dashboard/apps/frontend/src/work-list-load-dedup.test.ts +23 -0
  67. package/templates/.agents/dashboard/apps/frontend/src/work-list-load-dedup.ts +27 -0
  68. package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.test.ts +38 -14
  69. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostDeveloperAttributionPanel.tsx +60 -0
  70. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostDeveloperAttributionTable.tsx +191 -0
  71. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.loading.test.ts +14 -0
  72. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.run-page.test.ts +18 -0
  73. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +18 -3
  74. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +8 -2
  75. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorLoadErrors.tsx +35 -0
  76. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +47 -1
  77. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +50 -58
  78. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.test.ts +132 -0
  79. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.tsx +70 -0
  80. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +128 -138
  81. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +17 -67
  82. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-copy.ts +2 -0
  83. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-views.ts +3 -1
  84. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-page-range.ts +35 -0
  85. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-compact-cost-page.ts +16 -4
  86. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.test.ts +37 -2
  87. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +44 -8
  88. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-run-page.ts +6 -1
  89. package/templates/.agents/dashboard/modules/operations/src/contracts.ts +20 -3
  90. package/templates/.agents/dashboard/modules/operations/src/react/DeveloperAttributionPanel.test.ts +54 -0
  91. package/templates/.agents/dashboard/modules/operations/src/react/DeveloperAttributionPanel.tsx +247 -0
  92. package/templates/.agents/dashboard/modules/operations/src/react/OperationsMainContent.tsx +39 -13
  93. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +107 -2
  94. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.macro-metrics.test.ts +55 -0
  95. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +20 -28
  96. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +162 -165
  97. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewTopPanel.tsx +127 -0
  98. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +13 -46
  99. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +3 -0
  100. package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.test.tsx +43 -0
  101. package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.tsx +181 -0
  102. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +4 -2
  103. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +13 -0
  104. package/templates/.agents/dashboard/modules/operations/src/react/developer-identities.test.ts +18 -0
  105. package/templates/.agents/dashboard/modules/operations/src/react/developer-identities.ts +30 -0
  106. package/templates/.agents/dashboard/modules/operations/src/react/execution-metrics.ts +1 -0
  107. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +8 -0
  108. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +3 -0
  109. package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +14 -5
  110. package/templates/.agents/dashboard/modules/operations/src/react/index.ts +1 -0
  111. package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +4 -3
  112. package/templates/.agents/dashboard/modules/operations/src/react/operations-date-filters.css +1 -1
  113. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +21 -11
  114. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.css +4 -0
  115. package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +8 -1
  116. package/templates/.agents/dashboard/modules/operations/src/react/operations-view-order.test.ts +1 -0
  117. package/templates/.agents/dashboard/modules/operations/src/react/period-summary.ts +1 -0
  118. package/templates/.agents/dashboard/modules/operations/src/server/metric-coverage.ts +1 -0
  119. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +527 -335
  120. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +501 -309
  121. package/templates/.agents/dashboard/packages/local-runtime/gitignore.template +2 -0
  122. package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +3 -1
  123. package/templates/.agents/dashboard/packages/local-runtime/scripts/test-sqlite-read-model.mjs +3 -3
  124. package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +25 -15
  125. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +527 -335
  126. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +34 -0
  127. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.ts +15 -8
  128. package/templates/.agents/dashboard/packages/local-runtime/src/server-classification-page.test.ts +87 -0
  129. package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.test.ts +44 -0
  130. package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.ts +125 -0
  131. package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-refresh.test.ts +66 -0
  132. package/templates/.agents/dashboard/packages/local-runtime/src/server-request-authority.test.ts +61 -0
  133. package/templates/.agents/dashboard/packages/local-runtime/src/server-request-authority.ts +18 -0
  134. package/templates/.agents/dashboard/packages/local-runtime/src/server-run-projections.test.ts +42 -0
  135. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.ts +97 -0
  136. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +3 -1
  137. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.ts +91 -0
  138. package/templates/.agents/dashboard/packages/local-runtime/src/server.test-fixtures.ts +36 -0
  139. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +98 -123
  140. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +111 -135
  141. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-artifact-counts.ts +28 -0
  142. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-agent-page.test.ts +63 -0
  143. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-agent-page.ts +109 -0
  144. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-aggregates.ts +497 -0
  145. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-fast-page-parity.test-support.ts +65 -0
  146. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-page.test.ts +176 -0
  147. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-page.ts +119 -0
  148. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-projection.ts +41 -0
  149. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-invocation-page.test.ts +16 -0
  150. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-invocation-page.ts +29 -0
  151. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +355 -0
  152. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-persistence.ts +121 -0
  153. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-timing.ts +27 -0
  154. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +15 -0
  155. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.test.ts +223 -0
  156. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +304 -0
  157. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-cache.test-support.ts +23 -0
  158. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-first-fold-types.ts +89 -0
  159. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider-fixture.ts +227 -0
  160. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +691 -0
  161. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.ts +81 -0
  162. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +440 -863
  163. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +1120 -1086
  164. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-cache.ts +129 -0
  165. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-install.test.ts +26 -0
  166. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-install.ts +28 -0
  167. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-seed.test.ts +116 -0
  168. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +146 -0
  169. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.test.mjs +165 -0
  170. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-refresh.mjs +140 -0
  171. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +188 -299
  172. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +51 -70
  173. package/templates/.agents/dashboard/packages/windows-launcher/Program.cs +5 -2
  174. package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +4 -1
  175. package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-loading.spec.ts +142 -0
  176. package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-pagination.spec.ts +232 -0
  177. package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +743 -0
  178. package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +183 -210
  179. package/templates/.agents/dashboard/zaip-dashboard-windows.exe +0 -0
  180. package/templates/.agents/requirements/autonomous-assurance.md +6 -6
  181. package/templates/.agents/requirements/comparative-audit.md +1 -1
  182. package/templates/.agents/requirements/context-engine.md +1 -1
  183. package/templates/.agents/requirements/cost-observability.md +1 -1
  184. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  185. package/templates/.agents/requirements/data-export.md +1 -1
  186. package/templates/.agents/requirements/design-system.md +1 -1
  187. package/templates/.agents/requirements/execution-engine.md +3 -3
  188. package/templates/.agents/requirements/kanban-dashboard.md +10 -2
  189. package/templates/.agents/requirements/model-orchestration.md +1 -1
  190. package/templates/.agents/requirements/public-distribution.md +1 -1
  191. package/templates/.agents/requirements/software-architecture.md +1 -1
  192. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  193. package/templates/.agents/requirements/work-lifecycle.md +4 -4
  194. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  195. package/templates/.agents/rules/dashboard-ui-consistency.md +14 -0
  196. package/templates/.agents/rules/frontend-lite.md +4 -4
  197. package/templates/.agents/rules/run-lifecycle-closure.md +4 -4
  198. package/templates/.agents/runtime/bin/zaip.mjs +1137 -1037
  199. package/templates/.agents/runtime/checksums.sha256 +2 -2
  200. package/templates/.agents/runtime/provenance.json +2 -2
  201. package/templates/.agents/skills/criar-pasta-obsidian/scripts/generate-obsidian-vault.test.mjs +20 -16
  202. package/templates/.agents/skills/zaip-skill-agent-catalog/SKILL.md +22 -0
  203. package/templates/.agents/skills/zaip-skill-agent-catalog/agents/openai.yaml +4 -0
  204. package/templates/.agents/skills/zaip-skill-author-skills/SKILL.md +3 -2
  205. package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +49 -0
  206. package/templates/.agents/skills/zaip-skill-author-skills/scripts/author-skill-scripts.test.mjs +27 -0
  207. package/templates/.agents/skills/zaip-skill-author-skills/scripts/run-skill-tests.mjs +37 -0
  208. package/templates/.agents/skills/zaip-skill-backend/SKILL.md +1 -0
  209. package/templates/.agents/skills/zaip-skill-change/SKILL.md +1 -1
  210. package/templates/.agents/skills/zaip-skill-change/references/observable-evidence.md +83 -0
  211. package/templates/.agents/skills/zaip-skill-dashboard-diagnostics/SKILL.md +22 -0
  212. package/templates/.agents/skills/zaip-skill-dashboard-diagnostics/agents/openai.yaml +4 -0
  213. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +1 -1
  214. package/templates/.agents/skills/zaip-skill-frontend/SKILL.md +4 -3
  215. package/templates/.agents/skills/zaip-skill-frontend/agents/openai.yaml +2 -2
  216. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +10 -10
  217. package/templates/.agents/skills/zaip-skill-lifecycle-closure/SKILL.md +27 -0
  218. package/templates/.agents/skills/zaip-skill-lifecycle-closure/agents/openai.yaml +4 -0
  219. package/templates/.agents/skills/zaip-skill-prd/SKILL.md +4 -0
  220. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +72 -22
  221. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-explicit-recovery.mjs +223 -0
  222. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +42 -1
  223. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +101 -0
  224. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.test.mjs +53 -0
  225. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +20 -0
  226. package/templates/.agents/skills/zaip-skill-release-qualification/agents/openai.yaml +4 -0
  227. package/templates/.agents/skills/zaip-skill-review/SKILL.md +5 -0
  228. package/templates/.agents/skills/zaip-skill-rules/SKILL.md +1 -1
  229. package/templates/.agents/skills/zaip-skill-spec/SKILL.md +4 -0
  230. package/templates/.agents/skills/zaip-skill-sqlite-read-model/SKILL.md +22 -90
  231. package/templates/.agents/zaip-aios/INDEX.md +57 -32
  232. package/templates/.agents/zaip-aios/README.md +22 -12
  233. package/templates/.agents/zaip-aios/guides/02-requirements.md +5 -0
  234. package/templates/.agents/zaip-aios/guides/06-execucao.md +13 -4
  235. package/templates/.agents/zaip-aios/guides/07-revisao-e-validacao.md +7 -0
  236. package/templates/.agents/zaip-aios/guides/10-seguranca.md +23 -0
  237. package/templates/.agents/zaip-aios/guides/11-observabilidade-e-custos.md +6 -6
  238. package/templates/.agents/zaip-aios/guides/13-boas-praticas.md +3 -0
  239. package/templates/.agents/zaip-aios/guides/16-lifecycle-e-reconciliacao.md +12 -3
  240. package/templates/.agents/zaip-aios/guides/17-como-o-custo-e-calculado.md +5 -5
  241. package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +23 -0
  242. package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +44 -8
  243. package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +8 -14
  244. package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +5 -0
  245. package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +6 -6
  246. package/templates/.agents/zaip-aios/guides/24-calculo-de-custos-openai.md +8 -8
  247. package/templates/.agents/zaip-aios/guides/25-fontes-de-precos-openai.md +3 -2
  248. package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +77 -10
  249. package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +8 -3
  250. package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +5 -0
  251. package/templates/template-manifest.json +555 -170
  252. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BwtitWa_.js +0 -1
  253. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-BZ5WdaMN.css +0 -1
  254. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-N5Csr0RP.js +0 -68
  255. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-C4aIB1PV.js +0 -2
  256. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DK_enB5Z.css +0 -1
  257. package/templates/.agents/dashboard/apps/frontend/src/use-idle-cost-prefetch.ts +0 -45
  258. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs.metafile.json +0 -7333
@@ -1,11 +1,11 @@
1
1
  b146bd0c7c60b1ab43c4f71e0b1d2262c6df6da6f7053a0425f834ccb77a6b48 LICENSE
2
2
  bc02cba77e8d51e5c580f43668863dc868eda66f1ff663bfaa49fcf3ca16320e THIRD_PARTY_NOTICES.md
3
3
  64d23f858ef51b0f996e4966d4e27c0371b437e2d2787890b1f7ad22d4ec5663 VERSION
4
- 3cb891a0e356e49966a39b890124354209a6f535620c0b7577eb006aad31f924 bin/zaip.mjs
4
+ 1e9e3713401dbc4f58f4411a3ff426fe1527c911afe6156a38f9dec18a89f85a bin/zaip.mjs
5
5
  bed6ab1fda844209edc628c2a675021ad6acb9a2f7ecb7ae017b5a916712da24 manifest.json
6
6
  7f89219d7c567c82a51679ad136d84364bded7ac659492537e125d33b1d58a7a migrations/001-layout-v1.json
7
7
  5f8c48b286d0b44d8fbb57a9a5d009a8a500439aa3148d750b8f193f72995c9f migrations/002-layout-v2.json
8
8
  182a587dca8080f732cb387dbdeff4c12034a4a116efe35b4cd3c1c0a21ad10b pnpm-lock.sha256
9
- ae1f182c93254b1bda1b2a12e1090aad3fac1689c5883f77b5d8ba4b1e01e3e6 provenance.json
9
+ d2563419aaec124d758f6ff97619ec362eb2b8fd6ea43e0bc50eafe0fbebf97e provenance.json
10
10
  b64130fccf5d6a3a0b33a15efb1ebf1ba8969342da26f4e77d410ed66af60b82 sbom.cdx.json
11
11
  b3ffedf9e146be802a15b4009f33e031dec3071ca1525e12c67606fd964a3067 schemas/contracts.schema.json
@@ -6,6 +6,6 @@
6
6
  "source_origin": "zaip-aios:local-build",
7
7
  "lockfile_sha256": "382ebb27a2a951eb61280171c27116233762370d9093ab516caef216475ba4fc",
8
8
  "sbom_sha256": "b64130fccf5d6a3a0b33a15efb1ebf1ba8969342da26f4e77d410ed66af60b82",
9
- "runtime_sha256": "097962b10b6ab9bd0c5370602a941510628bef3427e0828f1852a1c0762a5d9a",
10
- "statement_sha256": "9ff655cc70b2ca1c19a3f6eea93294bb7f0004bc92503c00830d057e118c0dd0"
9
+ "runtime_sha256": "bbcdb68da07ece9966046e2d6ce1b54c5218d1318074c65e2de966b8280c02a4",
10
+ "statement_sha256": "391a666ed4dbc4ce18b481773a40a338bb3298e0bd503e75a0bfc4dea30f6e9c"
11
11
  }
@@ -1,9 +1,18 @@
1
1
  import assert from "node:assert/strict";
2
2
  import { spawnSync } from "node:child_process";
3
- import { mkdir, mkdtemp, readFile, writeFile } from "node:fs/promises";
3
+ import { access, mkdir, mkdtemp, readFile, writeFile } from "node:fs/promises";
4
4
  import { tmpdir } from "node:os";
5
5
  import { resolve } from "node:path";
6
6
 
7
+ async function exists(path) {
8
+ try {
9
+ await access(path);
10
+ return true;
11
+ } catch {
12
+ return false;
13
+ }
14
+ }
15
+
7
16
  const root = await mkdtemp(resolve(tmpdir(), "zaip-obsidian-test-"));
8
17
  const records = resolve(root, ".agents/records/lifecycle");
9
18
  await mkdir(records, { recursive: true });
@@ -111,22 +120,17 @@ for (const [kind, folder] of [
111
120
  assert.match(css, new RegExp(`data-path="${folder}"`));
112
121
  assert.match(index, new RegExp(`zaip-kind-${kind}`));
113
122
  }
114
- assert.equal(
115
- await readFile(
116
- resolve(
117
- process.cwd(),
118
- ".agents/skills/criar-pasta-obsidian/scripts/generate-obsidian-vault.mjs",
119
- ),
120
- "utf8",
121
- ),
122
- await readFile(
123
- resolve(
124
- process.cwd(),
125
- "public-cli/packages/cli/templates/.agents/skills/criar-pasta-obsidian/scripts/generate-obsidian-vault.mjs",
126
- ),
127
- "utf8",
128
- ),
123
+ const sourceScript = resolve(
124
+ process.cwd(),
125
+ ".agents/skills/criar-pasta-obsidian/scripts/generate-obsidian-vault.mjs",
129
126
  );
127
+ const templateScript = resolve(
128
+ process.cwd(),
129
+ "public-cli/packages/cli/templates/.agents/skills/criar-pasta-obsidian/scripts/generate-obsidian-vault.mjs",
130
+ );
131
+ if ((await exists(sourceScript)) && (await exists(templateScript))) {
132
+ assert.equal(await readFile(sourceScript, "utf8"), await readFile(templateScript, "utf8"));
133
+ }
130
134
  assert.match(await readFile(resolve(vault, "PRDs/PRD-1.md"), "utf8"), /PRD summary/);
131
135
 
132
136
  const evidence = await readFile(resolve(vault, "Evidence/EVD-1.md"), "utf8");
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: zaip-skill-agent-catalog
3
+ description: Create or change ZAIP agent catalog entries, capabilities, scopes, eligibility, and skill bindings while preserving adapter and distribution parity.
4
+ ---
5
+
6
+ # Maintain the agent catalog
7
+
8
+ Use when an agent identity or its operational contract changes.
9
+
10
+ 1. Inventory the intended capability, least-privilege write scope, execution
11
+ eligibility, tools, model policy, and escalation boundary before editing.
12
+ 2. Use only cataloged `codex_name` and `codex_task_name` values. Do not add ad-hoc
13
+ identities, task labels, or a mandatory dependency on a non-distributed skill.
14
+ 3. Bind each delivery specialty to its matching local ZAIP skill and keep `change`
15
+ evidence support where delivery is allowed.
16
+ 4. Validate YAML, catalog-to-skill references, specialist routing, and generated
17
+ Codex/Claude adapters. Update framework lock and public template only for framework
18
+ source changes.
19
+ 5. Report routing behavior and compatibility impact. Catalog maintenance does not
20
+ authorize a delivery, deployment, or approval of the agent's own work.
21
+
22
+ For a new skill, use `$zaip-skill-author-skills` first.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "ZAIP Agent Catalog"
3
+ short_description: "Maintain agent roles, skills, scopes, and adapter parity."
4
+ default_prompt: "Use $zaip-skill-agent-catalog to create or update this ZAIP agent catalog entry and validate its skill, scope, routing, and adapter bindings."
@@ -15,7 +15,8 @@ description: Create and audit portable ZAIP skills, triggers, resources, and rel
15
15
  6. No frontmatter aceite somente `name` e `description`. A descrição deve dizer o que faz e quando dispara.
16
16
  7. Mantenha o corpo operacional e curto. Coloque schemas/exemplos extensos em `references/`, scripts determinísticos em `scripts/` e assets somente quando reutilizáveis.
17
17
  8. Gere metadata com nome legível, descrição curta específica e prompt que mencione `$nome-da-skill`; evite prompts genéricos.
18
- 9. Valide links relativos, encoding UTF-8, placeholders, tamanho, políticas de invocação, triggers sobrepostos e comandos citados.
19
- 10. No framework source, rode `pnpm sync:framework-lock`, validação, testes relevantes, sync do template público, build e parity; no consumer, rode somente validação da skill, `zaip doctor` e adapters aplicáveis.
18
+ 9. Rode `scripts/audit-skill-catalog.mjs` para validar referências do catálogo, bindings obrigatórios, comandos conhecidos e contratos técnicos que não podem ser duplicados em documentação; rode `scripts/run-skill-tests.mjs` para executar todos os testes de skills descobertos.
19
+ 10. Valide links relativos, encoding UTF-8, placeholders, tamanho, políticas de invocação, triggers sobrepostos e comandos citados.
20
+ 11. No framework source, rode `pnpm sync:framework-lock`, validação, testes relevantes, sync do template público, build e parity; no consumer, rode somente validação da skill, `zaip doctor` e adapters aplicáveis.
20
21
 
21
22
  Não copie paths pessoais, portas, credenciais, integrações específicas do projeto ou runners inexistentes para uma skill core.
@@ -0,0 +1,49 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { parseDocument } from "yaml";
4
+
5
+ const root = resolve(import.meta.dirname, "..", "..", "..", "..");
6
+ const skillsRoot = resolve(root, ".agents/skills");
7
+ const skillDirectories = (await readdir(skillsRoot, { withFileTypes: true }))
8
+ .filter((entry) => entry.isDirectory())
9
+ .map((entry) => entry.name);
10
+ const knownSkills = new Set(skillDirectories);
11
+ const errors = [];
12
+ const catalog = parseYaml(
13
+ await readFile(resolve(root, ".agents/config/agents/catalog.yaml"), "utf8"),
14
+ );
15
+
16
+ for (const agent of catalog.agents ?? []) {
17
+ for (const skill of agent.skills ?? []) {
18
+ if (!knownSkills.has(skill)) errors.push(`${agent.id}: references unavailable skill ${skill}`);
19
+ }
20
+ }
21
+ for (const [agentId, requiredSkill] of [
22
+ ["agent-frontend", "zaip-skill-frontend"],
23
+ ["agent-backend", "zaip-skill-backend"],
24
+ ["agent-designer", "zaip-skill-design-system"],
25
+ ]) {
26
+ const agent = (catalog.agents ?? []).find((entry) => entry.id === agentId);
27
+ if (!agent?.skills?.includes(requiredSkill))
28
+ errors.push(`${agentId}: must load ${requiredSkill}`);
29
+ }
30
+ const rulesSource = await readFile(resolve(skillsRoot, "zaip-skill-rules/SKILL.md"), "utf8");
31
+ if (/\bcontext validate\b/i.test(rulesSource))
32
+ errors.push("zaip-skill-rules: cites unavailable context validate command");
33
+ const sqliteSource = await readFile(
34
+ resolve(skillsRoot, "zaip-skill-sqlite-read-model/SKILL.md"),
35
+ "utf8",
36
+ );
37
+ if (/schema version \d+|schema \d+|requiredIndexCount|exactly these tables/i.test(sqliteSource))
38
+ errors.push("zaip-skill-sqlite-read-model: duplicates volatile runtime schema contract");
39
+
40
+ if (errors.length > 0) throw new Error(`Skill catalog audit failed:\n${errors.join("\n")}`);
41
+ process.stdout.write(
42
+ `Audited ${skillDirectories.length} skills and ${(catalog.agents ?? []).length} agents.\n`,
43
+ );
44
+
45
+ function parseYaml(source) {
46
+ const document = parseDocument(source, { strict: true, uniqueKeys: true });
47
+ if (document.errors.length > 0) throw new Error(document.errors.map(String).join("\n"));
48
+ return document.toJS();
49
+ }
@@ -0,0 +1,27 @@
1
+ import assert from "node:assert/strict";
2
+ import { execFile } from "node:child_process";
3
+ import { resolve } from "node:path";
4
+ import test from "node:test";
5
+ import { promisify } from "node:util";
6
+
7
+ const run = promisify(execFile);
8
+ const root = resolve(import.meta.dirname, "..", "..", "..", "..");
9
+ const scripts = resolve(root, ".agents/skills/zaip-skill-author-skills/scripts");
10
+
11
+ test("skill test discovery lists every checked-in skill test without executing recursively", async () => {
12
+ const { stdout } = await run(
13
+ process.execPath,
14
+ [resolve(scripts, "run-skill-tests.mjs"), "--list"],
15
+ { cwd: root },
16
+ );
17
+ assert.match(stdout, /author-skill-scripts\.test\.mjs/);
18
+ assert.match(stdout, /github-deploy-contract\.test\.mjs/);
19
+ assert.match(stdout, /refactor-scripts\.test\.mjs/);
20
+ });
21
+
22
+ test("skill catalog audit validates the checked-in catalog and technical contracts", async () => {
23
+ const { stdout } = await run(process.execPath, [resolve(scripts, "audit-skill-catalog.mjs")], {
24
+ cwd: root,
25
+ });
26
+ assert.match(stdout, /Audited \d+ skills and \d+ agents/);
27
+ });
@@ -0,0 +1,37 @@
1
+ import { spawn } from "node:child_process";
2
+ import { readdir } from "node:fs/promises";
3
+ import { resolve } from "node:path";
4
+
5
+ const skillsRoot = resolve(import.meta.dirname, "..", "..");
6
+ const tests = (await files(skillsRoot))
7
+ .filter((path) => /(?:^|[\\/])[^\\/]+\.(?:test|tests)\.(?:mjs|cjs|js)$/i.test(path))
8
+ .sort();
9
+
10
+ if (tests.length === 0) {
11
+ process.stdout.write("No ZAIP skill tests found.\n");
12
+ process.exit(0);
13
+ }
14
+
15
+ if (process.argv.includes("--list")) {
16
+ process.stdout.write(`${tests.join("\n")}\n`);
17
+ process.exit(0);
18
+ }
19
+
20
+ await new Promise((resolveRun, reject) => {
21
+ const child = spawn(process.execPath, ["--test", ...tests], { stdio: "inherit" });
22
+ child.once("error", reject);
23
+ child.once("exit", (code) =>
24
+ code === 0 ? resolveRun() : reject(new Error(`Skill tests failed (${code})`)),
25
+ );
26
+ });
27
+
28
+ async function files(directory) {
29
+ const entries = await readdir(directory, { withFileTypes: true });
30
+ const nested = await Promise.all(
31
+ entries.map(async (entry) => {
32
+ const path = resolve(directory, entry.name);
33
+ return entry.isDirectory() ? files(path) : entry.isFile() ? [path] : [];
34
+ }),
35
+ );
36
+ return nested.flat();
37
+ }
@@ -8,3 +8,4 @@ description: Implement backend APIs, persistence, and integration boundaries ins
8
8
  1. Confirmar contrato de entrada e saída, limites de persistência e dependências antes da alteração.
9
9
  2. Preservar a direção de dependências e manter detalhes de infraestrutura atrás da fronteira do módulo.
10
10
  3. Aplicar arquitetura e CQRS proporcionalmente ao contrato alterado: não introduzir camadas, migrações ou gates pesados quando a mudança local não os exige. Cobrir o comportamento alterado com testes focados e registrar incompatibilidades, migrações ou riscos de integração.
11
+ 4. Aplicar [o contrato de prova observável](../zaip-skill-change/references/observable-evidence.md): metadados para estrutura/migração, fluxo autorizado e registros específicos para persistência, logs correlacionados para correções e observação direta de API/fila/cache/integração. SQL não é obrigatório quando inaplicável. Correlacionar UI e backend quando o AC exigir o fluxo completo; registrar ambiente, versão, limitações e fallback finito sem expor dados sensíveis.
@@ -9,7 +9,7 @@ description: Maintain Change narrative, decisions, evidence, rollback, and resul
9
9
  2. Antes da primeira mutação, confirme que a Change existe e que sua origem é Task, SPEC ou PRD real.
10
10
  3. Mantenha `change.md` como narrativa viva: plano, implementação, decisões, evidências, evals, testes e resultado.
11
11
  4. Atualize em marcos relevantes, não a cada comando; derive a lista final de arquivos do Git diff.
12
- 5. Relacione cada evidência à Task e aos Acceptance Criteria que ela comprova.
12
+ 5. Relacione cada evidência à Task e aos Acceptance Criteria que ela comprova. Para planejar, registrar ou avaliar prova de entrega, leia [o contrato de prova observável](references/observable-evidence.md); concentre ali cenários, estados, fallbacks e validade, sem duplicar relatórios.
13
13
  6. Registre decisões curtas na seção principal; use `decisions/` ao lado da Change somente para decisões consequenciais que mereçam histórico próprio.
14
14
  7. Para risco `critical`, mantenha anexos de threat model, rollout e rollback; para riscos menores, prefira seções inline.
15
15
  8. Antes de concluir, elimine placeholders, registre desvios/rework, comprove todos os ACs e resuma o resultado observado.
@@ -0,0 +1,83 @@
1
+ # Prova observável por critério de aceite
2
+
3
+ Contrato operacional de `REQ-WORK-002`, compartilhado por execução, frontend, backend e revisão. Use para entregas novas ou verificações explicitamente retomadas; não reabra nem reclassifique entregas históricas.
4
+
5
+ ## Preparar a prova
6
+
7
+ Antes de implementar, identifique para cada AC o cenário discriminante, a expectativa, a modalidade necessária e o ambiente autorizado. Comece pelo cenário de maior risco quando isso permitir detectar uma direção errada cedo. Não exija uma bateria completa por captura nem use duração isolada como prova de falha.
8
+
9
+ Registre uma observação com vínculos Task/Change/Execution/Run/AC, procedimento ou cenário, expectativa, resultado observado, momento real da observação, ambiente, candidato efetivamente executado, locators e limitações. Dados indisponíveis permanecem explícitos; horário de registro não deve ser apresentado como horário de execução.
10
+
11
+ Uma observação é produzida uma vez e referenciada pela Validation/Evidence existente. Não duplique logs, screenshots ou relatórios. Uma mesma execução pode apoiar vários ACs, desde que seu resultado seja explicado para cada um. Quantidade, screenshot existente, banco com uma linha ou ausência de erro não comprovam o resultado solicitado isoladamente.
12
+
13
+ ## Escolher o procedimento pelo impacto
14
+
15
+ | Impacto do AC | Observação necessária |
16
+ | --- | --- |
17
+ | Visual | Captura real da aplicação atualizada, preferencialmente pelo navegador integrado disponível. Reproduza rota, aba, filtros, período e estado pedidos; registre URL, horário, viewport e versão carregada. Examine a imagem contra a expectativa e registre quem examinou e o resultado. Imagem gerada, render de teste, API e código não substituem essa prova. |
18
+ | Interação frontend | Execute a interação e confira o efeito. Persistência, dados, acessibilidade e desempenho exigem comprovação própria quando fazem parte do AC; screenshot é complementar. |
19
+ | Estrutura/migração | Compare metadados reais com o contrato: colunas, tipos, índices e restrições pertinentes. |
20
+ | Persistência | Execute o fluxo autorizado e consulte somente os registros necessários, incluindo valores, relacionamentos e ausências esperadas. |
21
+ | Correção de erro | Reproduza o cenário, examine logs disponíveis e correlacione o resultado com os logs posteriores. Ausência de prova anterior é limitação explícita, não um resultado inventado. |
22
+ | API/fila/cache/integração | Observe diretamente entrada, saída e efeito no componente. Não exija SQL quando ele não se aplica. |
23
+ | Fluxo entre frontend e backend | Relacione a ação da interface ao efeito correspondente por identificador de cenário, requisição, operação ou registro. Testes isolados continuam sendo provas de camada, não E2E automático. |
24
+
25
+ Não imponha produção se o AC admitir ambiente representativo. Se exigir produção, prova de outro ambiente permanece limitada. Para ambiente representativo ou dependências reais isoladas, declare as diferenças que podem afetar o resultado. Mocks e análise estática só confirmam as alegações que realmente exercitam.
26
+
27
+ ## Estados e aprovação
28
+
29
+ | Estado da observação | Consequência |
30
+ | --- | --- |
31
+ | `confirmed` | Prova suficiente para a alegação e ambiente declarados; pode complementar a aprovação, mas não substitui os gates existentes. |
32
+ | `limited` | Prova parcial; explicitar o que confirmou e o que falta. Não aprova a parcela sem comprovação. |
33
+ | `pending` | Verificação ainda não realizada ou indisponível. Informar motivo, ACs, tentativas, dependência e próximo procedimento. |
34
+ | `failed` | Resultado observado diverge da expectativa. Exige correção governada e nova prova; não trocar de ambiente só para obter verde. |
35
+ | `not_applicable` | Modalidade sem relação com o AC/escopo, com justificativa objetiva; não equivale a aprovar o AC. |
36
+
37
+ Falha de ferramenta é pendência, não reprovação do produto. Não registre `passed` para ausência de captura, timeout de ferramenta, mocks insuficientes ou N/A. Se faltar prova obrigatória, mantenha o aceite dependente pendente e encerre a tentativa como `blocked` quando necessário; preserve a implementação e prossiga apenas com trabalho independente. Não deixe uma Task em execução indefinida para ocultar o bloqueio.
38
+
39
+ ## Fallback finito
40
+
41
+ Para a mesma capacidade e condição bloqueadora, registre no máximo três tentativas: uma inicial, no máximo uma repetição após ação concreta de recuperação e no máximo uma alternativa já disponível e permitida. A repetição sem mudança observável não é autorizada. Uma alternativa não exige repetir antes um mecanismo sabidamente indisponível.
42
+
43
+ | Indisponibilidade | Alternativa e resultado |
44
+ | --- | --- |
45
+ | Navegador integrado | Após recuperação concreta e única repetição, tente uma captura real por outro mecanismo disponível e permitido; registre qual. Não instale ferramentas, altere permissões ou contorne controles. |
46
+ | Nenhuma captura possível | Registre “validação visual pendente por indisponibilidade da ferramenta”; preserve prova técnica sem chamá-la visual. |
47
+ | Banco/serviço/log | Uma alternativa representativa ou integração com dependências reais isoladas, dentro da autoridade existente. Se a equivalência não satisfizer o AC original, registre prova limitada e pendência restante. |
48
+ | Somente mocks/estática | Registre alcance limitado para alegações de funcionamento real; não transforme falta de acesso em N/A. |
49
+ | Limite atingido | Registre dependência, procedimento de retomada e ACs afetados; não entre em loop nem repita pedidos de confirmação. |
50
+
51
+ ACs que compartilham a mesma falha de ferramenta compartilham o diagnóstico e não multiplicam tentativas. Trocar de Run não zera esse histórico. Verificação longa ainda em progresso não é uma nova tentativa nem deve ser interrompida só pelo relógio; use os limites operacionais existentes.
52
+
53
+ ## Proteção e retomada
54
+
55
+ Use somente ambientes autorizados, dados mínimos e locators sanitizados. Remova credenciais, tokens, parâmetros sensíveis de URLs, dados pessoais desnecessários e segredos dos materiais antes do registro. Não execute escritas em produção para obter prova sem autoridade específica. Hash identifica conteúdo, não demonstra autenticidade da observação.
56
+
57
+ Reavalie validade quando mudarem candidato executável, schema, configuração, permissões, flags, dependências, dados relevantes, período, viewport, cenário ou AC. Não infira ambiente equivalente apenas do commit. Preserve observações antigas como histórico e registre o delta, sem reescrever horários ou autoria.
58
+
59
+ O recorte atual não autoriza reuso aprovador entre Runs, nova rota de retomada nem dispensa revisão/finalização. `task resume` e `execution run --recheck-blocked-state` conservam seus contratos; a rechecagem autônoma exige candidato novo e não reinicia orçamento. Se apenas uma ferramenta voltou com candidato igual, registre a pendência resolvida na tentativa autorizada e mantenha os vínculos exigidos; não finja que uma prova antiga foi executada de novo.
60
+
61
+ ## Limite de automação
62
+
63
+ A política define o que o executor e o revisor devem comprovar. O registro CLI valida estrutura e vínculos; ele não executa o comando declarado, não examina pixels e não consulta banco automaticamente. Observações referenciadas por uma aprovação devem ser confirmadas e compatíveis; observação isolada não aprova. Históricos V2 sem observações permanecem legíveis e não são promovidos retroativamente a prova visual ou de produção.
64
+
65
+ ## Registrar sem duplicar a prova
66
+
67
+ `validation observe` aceita um objeto JSON `EvidenceObservationV1` diretamente em `--observation`, com limite de 256 KiB UTF-8 (o shell pode impor limite menor). A CLI não abre arquivos de entrada; `--observation-file` não é suportado. Essa escolha evita introduzir uma nova superfície de leitura de arquivos/reparse points nesta fatia. O comando grava exclusivamente um novo `artifacts/observations/OBS-*.md` na Change vinculada, sem alterar o estado da Task ou criar Validation aprovada. IDs e vínculos devem existir; exemplos abaixo são placeholders, não resultados executados.
68
+
69
+ ```text
70
+ zaip validation observe --observation '<objeto JSON sanitizado com os campos abaixo>' --json
71
+ zaip validation record --id TEST-CENARIO --task TASK-ID --acceptance AC-ID --command "procedimento realmente executado" --outcome passed --locators caminho/relatorio --run RUN-ID --commit SHA --executed-at ISO --asserted-outcome "resultado observado para o AC" --json
72
+ zaip evidence record --id EVD-CENARIO --task TASK-ID --summary "alcance comprovado" --outcome passed --run RUN-ID --validation TEST-CENARIO --observations OBS-CENARIO --json
73
+ ```
74
+
75
+ O JSON usa `schema_version: 1`, `id`, `task_id`, `change_id`, `execution_id`, `run_id`, `acceptance_ids`, `proof_kind`, `state`, `scenario`, `expected`, `observed`, `observed_at`, `examiner_id`, `commit_sha`, `candidate_version`, `environment`, `visual`, `correlation_ids`, `locators`, `limitations`, `not_applicable_reason`, `pending_reason`, `dependency`, `resume_plan` e `attempts`. Consulte o schema e os exemplos testados em `packages/specs/src/assurance/artifacts.ts` e `assurance-contract.test.ts`; não invente campos V2. A versão candidata identifica o artefato efetivamente observado; o SHA Git continua sendo o vínculo exigido pelo assurance.
76
+
77
+ `environment` descreve classe, identificador e versão. Estado `confirmed` exige versões observadas do candidato e do ambiente; sem elas, registre limitação/pendência, não um valor presumido. Integração confirmada exige `correlation_ids` do cenário; API ou persistência isoladas não exigem correlação artificial. Prova visual confirmada também exige `visual.url`, `viewport` no formato `1366x768`, `captured_at`, `loaded_version` igual a `candidate_version` e `examination`. Use URL base sem credenciais, query ou fragmento; registre filtros e estado relevantes no cenário sanitizado, nunca tokens de acesso. Preencha indisponibilidade com `null` nos campos permitidos, sem atribuir uma observação inexistente a produção.
78
+
79
+ `validation record` também admite `failed` e `not_applicable` (este exige `--reason`); esses registros não alimentam Evidence aprovada. Informe `--executed-at` e `--asserted-outcome` nas novas entregas. A omissão desses campos conserva o comportamento legado e não demonstra que a CLI executou um teste naquele horário. Pendência de ferramenta usa `validation observe`, não `failed` de produto.
80
+
81
+ `evidence record --observations` e a leitura de assurance conferem estado confirmado, identidade do arquivo e os vínculos de Task/Change/Execution/Run/AC/candidato. A lista de ACs da observação pode ser um subconjunto da Evidence: uma observação não comprova implicitamente os demais ACs. Observações sem referência ficam como histórico e não contam para aprovação. A seleção e suficiência de todas as modalidades obrigatórias continuam sendo responsabilidades do executor/revisor; este recorte não implementa detecção automática de obrigação visual, invalidação global por ambiente ou contador de tentativas entre Runs.
82
+
83
+ A compatibilidade preserva o formato V2 e a leitura histórica, não a aplicação deste contrato por clientes antigos. Não use um downgrade da CLI para qualificar observações novas nem interprete um `passed` legado como certificação deste contrato.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: zaip-skill-dashboard-diagnostics
3
+ description: Diagnose a served ZAIP dashboard incident across launcher, SQLite snapshot, API, UI preset, and browser evidence; use for stale, slow, or inconsistent dashboard behavior.
4
+ ---
5
+
6
+ # Diagnose a served dashboard
7
+
8
+ Use for a reported dashboard regression, not for generic database rebuilding.
9
+
10
+ 1. Capture the affected route, tab, filter/preset, expected value, and time range.
11
+ Validate that exact path rather than a generic health response.
12
+ 2. Identify the launcher-owned process and runtime generation without terminating
13
+ another task's healthy session. Check health, served artifact, API payload, and
14
+ SQLite snapshot as distinct evidence layers.
15
+ 3. Rebuild or compare the disposable read model only when source/snapshot drift is
16
+ evidenced. Use `$zaip-skill-sqlite-read-model` for that operation.
17
+ 4. Compare displayed metrics with factual telemetry/read-model facts, explaining
18
+ rounding and unavailable values. Do not invent missing work or duration.
19
+ 5. Measure the served launcher/runtime flow for performance. A source-only query or a
20
+ failed browser setup is not browser proof.
21
+ 6. If code changes are requested, use the appropriate delivery skill; diagnostics do
22
+ not authorize a mutation or lifecycle closure.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "ZAIP Dashboard Diagnostics"
3
+ short_description: "Trace served dashboard failures with layered evidence."
4
+ default_prompt: "Use $zaip-skill-dashboard-diagnostics to diagnose this ZAIP dashboard regression using the exact affected tab, preset, API, snapshot, and browser evidence."
@@ -12,7 +12,7 @@ Use esta skill somente quando o usuário pedir execução. `prepare` não autori
12
12
  3. A partir da tentativa explícita de `execute`, classifique uso como `execution`; inicie Execution, Changes, Tasks elegíveis e Runs com atribuição ao nível de entrada (`task`, `spec` ou `prd`). Ausência de diff não retroage a fase: registre `changed_files` vazio e o resultado real.
13
13
  4. Execute a ordem topológica. Paralelize apenas Tasks independentes cujos arquivos, módulos, migrations, ambientes e recursos não conflitem.
14
14
  5. Antes de integrar agentes paralelos, compare diffs, testes e efeitos; reconcilie o resultado no workspace canônico.
15
- 6. Registre decisões humanas/IA, uso por fase, evidências por AC, testes, evals e arquivos alterados.
15
+ 6. Registre decisões humanas/IA, uso por fase, evidências por AC, testes, evals e arquivos alterados. Antes de implementar, aplique [o contrato de prova observável](../zaip-skill-change/references/observable-evidence.md): cenário, expectativa, ambiente autorizado, prova necessária e fallback finito. Falta de prova obrigatória impede aceite, não trabalho independente.
16
16
  7. Para toda Task com mutação, produza um commit canônico isolado antes de `completed`, com provider efetivo exclusivamente `CODEX` ou `CLAUDE` e sem `AUTO`. Linhagem evidenciada usa `[CODEX|CLAUDE] [P:XXXX] [S:XXXX] [T:XXXX] <título da Task>` com blocos disponíveis; Task sem PRD/SPEC usa `[CODEX|CLAUDE] [Task-first:XXXX] <título da Task>`. Limite o assunto a 96 caracteres sem cortar palavras, preserve IDs completos disponíveis nos trailers `ZAIP-PRD`, `ZAIP-SPEC`, `ZAIP-Task`, `ZAIP-Change`, `ZAIP-Execution` e `ZAIP-Agent`, e não combine Tasks no mesmo commit. Commit funcional sem Task só é permitido na exceção explícita de deploy particionado e usa `[CODEX] <título funcional>` sem `ZAIP-Task`.
17
17
  8. Respeite a política do plano: use `zaip verify --changed --risk <risk>` no modo `scoped`; reserve `pnpm verify` para `full`, risco critical ou gate final exigido.
18
18
  9. Em cada `run usage`, leia `budget.context_refresh_required` e `budget.checkpoint_required`. O runtime grava o checkpoint sanitizado em `.local/checkpoints/`; quando sinalizado, reconstrua contexto somente de IDs ativos, diff e findings, descarte outputs brutos antigos e continue apenas com autoridade.
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: zaip-skill-frontend
3
- description: Implement accessible frontend experiences and component integration inside apps/frontend. Use for declared frontend delivery that consumes the central design contract without changing it.
3
+ description: Implement accessible frontend experiences in apps/frontend and dashboard React surfaces, without changing runtime or SQLite.
4
4
  ---
5
5
 
6
6
  # Entregar frontend
7
7
 
8
- 1. Confirmar que o escopo está em `apps/frontend/**`; encaminhar tokens, componentes centrais e `DESIGN.md` para o agente de design.
8
+ 1. Confirmar `apps/frontend/**` ou dashboard React (`.agents/dashboard/apps/frontend/**`, `.agents/dashboard/modules/**/src/react/**`); nunca autoriza runtime, SQLite ou server.
9
9
  2. Ler o contrato visual aplicável antes de alterar componentes e preservar acessibilidade, semântica e estados de carregamento/erro.
10
- 3. Validar a interação afetada com teste focado, typecheck ou build proporcional e relatar as evidências do critério de aceite.
10
+ 3. Aplicar [o contrato de prova observável](../zaip-skill-change/references/observable-evidence.md): definir cenário/expectativa por AC, executar a interação afetada e conferir seu efeito; teste, typecheck e build são proporcionais e não substituem comportamento observado.
11
+ 4. Se houver impacto visual, obter e examinar screenshot real da versão carregada no estado pedido. No dashboard, preservar render determinístico e verificação do bundle servido. Indisponibilidade segue o fallback finito: mantém o AC visual pendente, não invalida prova técnica independente nem autoriza aprovação integral.
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "ZAIP Frontend Delivery"
3
- short_description: "Implement accessible frontend inside declared product scope."
4
- default_prompt: "Use $zaip-skill-frontend to implement an accessible frontend change inside its declared scope."
3
+ short_description: "Implement accessible apps/frontend and dashboard React surfaces."
4
+ default_prompt: "Use $zaip-skill-frontend for apps/frontend or dashboard React; never runtime, SQLite, or server."
@@ -12,11 +12,11 @@ Treat deploy as Git-only publication. An explicit current-turn request to `deplo
12
12
  ## Authorization
13
13
 
14
14
  - Require an explicit deploy, push, publicar, publicação, GitHub publication, or failed-deploy repair request in the current turn.
15
- - The request authorizes the initial publication, reconciliation needed to publish the selected branch, commits covering all versionable pending changes in the selected worktree, and up to five repair cycles needed to make required local and remote GitHub checks pass.
15
+ - The request authorizes the initial publication, automatic reconciliation needed to publish the selected branch, commits covering all versionable pending changes in the selected worktree, and up to five repair cycles needed to make required local and remote GitHub checks pass. Do not stop merely because the worktree is dirty, history is behind/diverged, generated files are pending, or a local gate has a repairable failure.
16
16
  - Limit repairs to the intended repository state and the evidenced failure. Do not add unrelated features or broaden product scope.
17
17
  - Never force push, rewrite history, replace remotes, change credentials or Git/SSH configuration, bypass checks, or deploy to another service.
18
- - Do not create lifecycle artifacts for an explicit Git-only publication request. The deploy authorization permits staging the complete selected worktree with `git add -A` after secret, size, and ignore checks; it never authorizes changes outside that worktree.
19
- - Map a functional group to PRD/SPEC/Task only when evidence exists; otherwise use `[CODEX] <functional title>` without `ZAIP-Task`. Omit nonexistent lineage blocks and trailers. Broad staging is authorized only by the exact current-turn deploy request; force, destructive reset, history rewrite, and credential changes remain prohibited.
18
+ - Do not create lifecycle artifacts for an explicit Git-only publication request. The deploy authorization permits staging every inventoried versionable path in the selected worktree after secret, size, and ignore checks; it never authorizes changes outside that worktree.
19
+ - Map a functional group to PRD/SPEC/Task only when evidence exists; otherwise use `[CODEX] <functional title>` without `ZAIP-Task`. Omit nonexistent lineage blocks and trailers. Complete inventoried-path staging is authorized only by the exact current-turn deploy request; force, destructive reset, history rewrite, and credential changes remain prohibited.
20
20
 
21
21
  ## Mandatory authorization record
22
22
 
@@ -37,19 +37,19 @@ The conversation and terminal deploy report are the authority record for Git-onl
37
37
  2. Select exactly one publishing worktree. A clean worktree on another branch or a detached verification worktree does not join the deploy. The selected worktree is the complete publication scope.
38
38
  3. Report concurrent activity, but do not block solely because the selected worktree is dirty or contains mixed changes; the explicit “faça deploy” authorization includes those changes. Stop only for an unresolved index conflict, secret/oversize file, authentication failure, or destructive/rewrite requirement.
39
39
  4. Prunable or missing worktrees are reported but never pruned automatically. Dirty detached or temporary worktrees are never deleted, reset, stashed or copied into the publishing worktree implicitly.
40
- 5. Fetch once and compute ahead/behind for the publishing branch. If it is behind or diverged, reconcile only the selected branch under this deploy authorization.
40
+ 5. Fetch once and compute ahead/behind for the publishing branch. If it is behind or diverged, automatically reconcile only the selected branch under this deploy authorization and continue; divergence is not a blocker by itself.
41
41
  6. Before reconciliation, create a recoverable branch reference and preserve tracked plus untracked changes in a named stash. Verify both references before proceeding. Use `rebase` unless the user explicitly selected `merge`.
42
- 7. Apply the bounded reconciliation without force. Restore with `git stash apply`, retain the stash until publication succeeds, and resolve generated aggregate conflicts by regenerating them from canonical sources.
43
- 8. After restoration, prove that no unmerged paths remain, re-inventory the diff, and only then begin functional partitioning.
42
+ 7. Apply the bounded reconciliation without force. Restore with `git stash apply`, retain the stash until publication succeeds, and resolve generated aggregate conflicts by regenerating them from canonical sources. For ordinary textual conflicts, combine both sides when safe; use the selected worktree's intended version only when the diff and commit history establish that it supersedes the remote version.
43
+ 8. After restoration, prove that no unmerged paths remain, re-inventory the diff, and only then begin functional partitioning. Continue automatically through recoverable conflicts and pending repairs; stop only for a genuine terminal blocker defined below.
44
44
 
45
45
  ## Repair-loop integrity
46
46
 
47
47
  - A publication cycle is: run deploy preflight, inventory the intended pending diff, synchronize, create any required functional commits with explicit pathspecs, push, and verify the remote hash. When no intended pending diff exists, publish already-formed commits. Run only gates required or evidenced by repository Rules, the active Change, or failed remote CI.
48
- - Inventory the complete pending diff, run the safety gates, then stage the selected worktree with `git add -A` and commit it. Do not require functional partitioning for this explicit broad-deploy mode.
48
+ - Inventory the complete pending diff, run the safety gates, then stage the reviewed inventory with `git add -- <explicit-pathspecs>` and commit it. Generate pathspecs from the reviewed tracked and untracked inventory; do not use `git add -A`, broad globs, or paths outside the selected worktree. Do not require functional partitioning for this explicit broad-deploy mode.
49
49
  - Run each diagnostic, gate, fetch, stage, commit, push, and hash verification at most once per cycle.
50
50
  - Start a new cycle only after a repository change or new remote evidence. Never repeat an unchanged failing command hoping for a different result.
51
51
  - Continue until all required checks pass or a terminal blocker occurs. Stop after five repair cycles, or when the same root cause remains after two repairs.
52
- - Treat authentication, unavailable credentials, unauthorized branch divergence, secret exposure, destructive changes, GitHub outages, and ambiguous scope expansion as terminal blockers.
52
+ - Treat authentication, unavailable credentials, unresolved conflicts after bounded repair, secret exposure, destructive changes, GitHub outages, and ambiguous scope expansion as terminal blockers. Ordinary branch divergence, dirty state, untracked versionable files, generated projections, lint/format failures, and other repairable pending work are not blockers: repair them within the selected worktree and continue under the same authorization.
53
53
 
54
54
  ## Prove folder-scoped SSH first
55
55
 
@@ -71,11 +71,11 @@ Run preflight once at the start of the authorized deployment. On failure, stop.
71
71
  - Turbo cache hits are valid only when the active work did not originate from a failed remote CI gate.
72
72
  - When repairing failed CI, reproduce the exact failed gate once per repair cycle with Turbo cache bypassed when applicable.
73
73
  4. If a local gate fails, capture the exact failing command and error, make the smallest authorized repair, update lifecycle evidence, and start the next cycle without asking for another deploy authorization.
74
- 5. After all required local gates pass, stage the complete selected worktree with `git add -A`. If a file is secret, oversized, ignored by policy, or outside the selected worktree, exclude it and report the reason; otherwise include it.
74
+ 5. After all required local gates pass, stage each reviewed selected-worktree path with `git add -- <explicit-pathspecs>`. If a file is secret, oversized, ignored by policy, or outside the selected worktree, exclude it and report the reason; otherwise include it.
75
75
 
76
76
  ## Synchronize and publish each cycle
77
77
 
78
- Fetch the selected remote and current branch once per publication cycle, without SSH overrides. Compute ahead/behind against the fetched ref. When local is behind or diverged, apply the recorded bounded reconciliation strategy; stop if it cannot be completed safely. Never reset or force.
78
+ Fetch the selected remote and current branch once per publication cycle, without SSH overrides. Compute ahead/behind against the fetched ref. When local is behind or diverged, apply the recorded bounded reconciliation strategy and continue after successful verification; stop only if it cannot be completed safely within the bounded repair cycles. Never reset or force.
79
79
 
80
80
  Commits created during Task execution use `[CODEX|CLAUDE] [P:XXXX] [S:XXXX] [T:XXXX] <Task title>`: the effective executing-agent prefix followed by compact lineage.
81
81
 
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: zaip-skill-lifecycle-closure
3
+ description: Diagnose and safely reconcile ZAIP delivery closure when a Task, Change, Execution, or Run is stuck, missing evidence, or receives a late finalizer.
4
+ ---
5
+
6
+ # Close ZAIP lifecycle safely
7
+
8
+ Use for a named Task, Change, Execution, or Run that failed to converge. Start from
9
+ the supplied ID and canonical record; never scan ordinary history to guess a target.
10
+
11
+ 1. Separate read-only diagnosis from repair. Inspect terminal states, typed Evidence,
12
+ finalization barrier, observed sub-runs, and lifecycle mutation-lock ownership.
13
+ 2. Preserve fast-path execution evidence. A technical test, a finished Run, or a late
14
+ finalizer alone does not close delivery: missing eligible executor, finalizer, or
15
+ typed Evidence remains `blocked`.
16
+ 3. For a late finalizer, reconcile its exact root and `agent_path`; do not replace it
17
+ with a shared-session scan. Release lifecycle mutation locking before any
18
+ usage-attribution reconciliation to avoid capture deadlocks.
19
+ 4. Before a mutating recovery, confirm the installed CLI supports the command and
20
+ require explicit authorization. Reconciliation must be idempotent, scoped to the
21
+ named active root, and must not create agents or fabricate telemetry.
22
+ 5. Persist observed evidence before terminal Task, Change, and Execution state; refresh
23
+ manifests before the root Run outcome. Report technical success and formal closure
24
+ separately.
25
+
26
+ Use `$zaip-skill-reconcile-telemetry` only for missing observed usage after lifecycle
27
+ identity is correct; it is not a substitute for closure.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "ZAIP Lifecycle Closure"
3
+ short_description: "Diagnose and reconcile stuck delivery lifecycle closure."
4
+ default_prompt: "Use $zaip-skill-lifecycle-closure to diagnose a named ZAIP Task, Change, Execution, or Run that is stuck or missing finalization evidence."
@@ -58,3 +58,7 @@ Durante essa etapa, a Execution universal `interaction` e sua Run raiz continuam
58
58
  1. Antes de entregar um PRD, construa a matriz parental completa de ACs e outcomes e produza pelo menos três validações e três Evidences próprias.
59
59
  2. As modalidades mínimas são cross-SPEC E2E, spec review e quality review por autor/Run independente, todas no commit final esperado.
60
60
  3. Cada outcome possui Evidence explícita. SPECs e Tasks aprovadas são pré-condições, não substitutos para a prova de integração e de resultado no nível do PRD.
61
+
62
+ # Referência visual condicional
63
+
64
+ Quando a PRD citar UI ou referência visual, registre rota/aba, família de componente, colunas/linhas/paginação, estados e responsividade como invariantes observáveis, sem prometer prova visual inexistente.