@zaip-ai/cli 3.3.0 → 3.5.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 (288) hide show
  1. package/dist/services/adapters.d.ts +1 -1
  2. package/dist/services/adapters.d.ts.map +1 -1
  3. package/dist/services/adapters.js +4 -3
  4. package/dist/services/adapters.js.map +1 -1
  5. package/dist/services/agent-catalog-upgrade.d.ts +3 -0
  6. package/dist/services/agent-catalog-upgrade.d.ts.map +1 -0
  7. package/dist/services/agent-catalog-upgrade.js +35 -0
  8. package/dist/services/agent-catalog-upgrade.js.map +1 -0
  9. package/dist/services/install-agents-template.d.ts.map +1 -1
  10. package/dist/services/install-agents-template.js +22 -22
  11. package/dist/services/install-agents-template.js.map +1 -1
  12. package/dist/services/install-template-policy.d.ts +3 -0
  13. package/dist/services/install-template-policy.d.ts.map +1 -0
  14. package/dist/services/install-template-policy.js +21 -0
  15. package/dist/services/install-template-policy.js.map +1 -0
  16. package/dist/services/logger.test.js +12 -2
  17. package/dist/services/logger.test.js.map +1 -1
  18. package/dist/services/sqlite-bootstrap.d.ts +1 -0
  19. package/dist/services/sqlite-bootstrap.d.ts.map +1 -1
  20. package/dist/services/sqlite-bootstrap.js +10 -1
  21. package/dist/services/sqlite-bootstrap.js.map +1 -1
  22. package/package.json +2 -2
  23. package/templates/.agents/config/agents/discovery.json +1 -1
  24. package/templates/.agents/dashboard/.zaip-managed.json +286 -126
  25. package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-BBFDrn64.js → CostCalculationGuidePage-C5NgEcVh.js} +1 -1
  26. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-Cd-qo9w7.js → DashboardHelpDialog-CCMVnkkI.js} +1 -1
  27. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-J7L5m8lk.js → PricingSettingsDialog-CGYcJ5EB.js} +1 -1
  28. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-B9GWkEyN.css → ProjectSettingsPage-CQMhvzvJ.css} +1 -1
  29. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-D46WWIKr.js +3 -0
  30. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-BzVtGLWS.js → TraceabilityWorkspace-BKBpJyLh.js} +1 -1
  31. package/templates/.agents/dashboard/apps/frontend/dist/assets/{cost-monitor-PoJA2PI1.css → cost-monitor-BsMfGfQi.css} +1 -1
  32. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-j3aUYH5G.js +68 -0
  33. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-CWzf_RiP.js → icons-vendor-x8xxL9yW.js} +1 -1
  34. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Bas2TVju.js +2 -0
  35. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-CxrG_wRI.css +1 -0
  36. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CtHdbZk3.js → react-vendor-CNOXIJHN.js} +1 -1
  37. package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-BKrDH2TR.js → traceability-CcpbpT1s.js} +1 -1
  38. package/templates/.agents/dashboard/apps/frontend/dist/index.html +7 -7
  39. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  40. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +12 -1
  41. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsCard.tsx +5 -0
  42. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsField.tsx +21 -0
  43. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +12 -1
  44. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +16 -28
  45. package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +25 -4
  46. package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.test.tsx +51 -0
  47. package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.tsx +39 -0
  48. package/templates/.agents/dashboard/apps/frontend/src/app-work-board-options.ts +41 -0
  49. package/templates/.agents/dashboard/apps/frontend/src/dashboard-runtime-status.ts +25 -0
  50. package/templates/.agents/dashboard/apps/frontend/src/project-settings-copy.ts +13 -4
  51. package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +25 -1
  52. package/templates/.agents/dashboard/apps/frontend/src/project-settings-workspace.css +28 -0
  53. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +39 -0
  54. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +1 -1
  55. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +5 -1
  56. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.test.ts +140 -0
  57. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +28 -41
  58. package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.ts +38 -0
  59. package/templates/.agents/dashboard/apps/frontend/src/workspace-status.css +20 -0
  60. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  61. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +25 -3
  62. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +17 -19
  63. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +13 -167
  64. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +2 -9
  65. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +8 -8
  66. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +29 -52
  67. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.test.ts +1 -1
  68. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +2 -2
  69. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +4 -27
  70. package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +2 -2
  71. package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +4 -3
  72. package/templates/.agents/dashboard/modules/cost-monitor/src/react/agent-model-presentation.test.ts +26 -0
  73. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-embedded.css +7 -0
  74. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-loaders.ts +173 -0
  75. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-props.ts +47 -0
  76. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +1 -7
  77. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-page-range.ts +3 -9
  78. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +44 -83
  79. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +11 -111
  80. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +47 -181
  81. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +63 -91
  82. package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-monitor-unavailable.test.ts +55 -0
  83. package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-summary-duration.test.ts +189 -0
  84. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  85. package/templates/.agents/dashboard/modules/operations/src/react/OperationsEntityFilters.tsx +82 -0
  86. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +22 -31
  87. package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.test.tsx +13 -1
  88. package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.tsx +16 -3
  89. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +11 -27
  90. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +44 -193
  91. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportColumns.ts +186 -0
  92. package/templates/.agents/dashboard/modules/operations/src/react/export/excel-agent-participations.test.ts +28 -0
  93. package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +2 -1
  94. package/templates/.agents/dashboard/modules/operations/src/react/operations-export-duration.ts +13 -0
  95. package/templates/.agents/dashboard/modules/operations/src/react/operations-filter-panel.css +4 -0
  96. package/templates/.agents/dashboard/modules/operations/src/react/use-operation-filter-feedback.ts +18 -0
  97. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +11 -0
  98. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +10 -2
  99. package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +1 -1
  100. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  101. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  102. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  103. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  104. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +395 -341
  105. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +346 -294
  106. package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
  107. package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +2 -1
  108. package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +42 -8
  109. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +395 -341
  110. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.test.ts +95 -0
  111. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +102 -12
  112. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +2 -3
  113. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +1 -1
  114. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +75 -1
  115. package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +10 -0
  116. package/templates/.agents/dashboard/packages/local-runtime/src/server-lifecycle-diagnostics.ts +50 -0
  117. package/templates/.agents/dashboard/packages/local-runtime/src/server-macro-population.test.ts +165 -0
  118. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-page-filters.ts +65 -0
  119. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +111 -0
  120. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +53 -63
  121. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +19 -5
  122. package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.ts +11 -2
  123. package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +16 -9
  124. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +46 -2
  125. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +10 -2
  126. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +4 -3
  127. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +43 -1
  128. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +46 -11
  129. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-filter-matrix.test.ts +188 -0
  130. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.test.ts +85 -0
  131. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.ts +147 -0
  132. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +64 -54
  133. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-macro-classification.test.ts +172 -0
  134. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +1 -1
  135. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +2 -1
  136. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.test.ts +7 -7
  137. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +2 -1
  138. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +10 -1
  139. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-pricing-provenance.test.ts +39 -0
  140. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-agent-dimension.ts +18 -82
  141. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-cached-cost-page.ts +169 -0
  142. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-developer.ts +205 -0
  143. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +13 -4
  144. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +22 -23
  145. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-financial.ts +42 -209
  146. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-model-dimension.ts +18 -4
  147. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-provider-dimension.ts +9 -2
  148. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +76 -83
  149. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +25 -161
  150. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +20 -47
  151. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +2 -2
  152. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +16 -16
  153. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +1 -1
  154. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +47 -22
  155. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +3 -2
  156. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +11 -0
  157. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-rebuild-result.ts +15 -0
  158. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +4 -4
  159. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +15 -56
  160. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-macro-classification.ts +48 -0
  161. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-summary-cursor.ts +15 -0
  162. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-token-active-allocation.ts +46 -0
  163. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-work-stages.ts +60 -0
  164. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +5 -1
  165. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-claims.test.mjs +7 -1
  166. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +17 -2
  167. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.mjs +65 -0
  168. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.test.mjs +72 -0
  169. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +32 -9
  170. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +39 -45
  171. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +5 -2
  172. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  173. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  174. package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +1 -18
  175. package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.spec.ts +20 -0
  176. package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.ts +20 -0
  177. package/templates/.agents/design/.zaip-managed.json +105 -69
  178. package/templates/.agents/design/apps/catalog/dist/assets/index-0W0Gj_Gs.css +1 -0
  179. package/templates/.agents/design/apps/catalog/dist/assets/index-32GZO95T.js +72 -0
  180. package/templates/.agents/design/apps/catalog/dist/assets/{index-D_lfqoyx.js → index-BP8IxOxt.js} +3 -3
  181. package/templates/.agents/design/apps/catalog/dist/assets/index-D1JaPXfV.css +1 -0
  182. package/templates/.agents/design/apps/catalog/dist/assets/index-D2miO4-O.js +72 -0
  183. package/templates/.agents/design/apps/catalog/dist/assets/{index-BOjCcUaU.js → index-QJsgr9Ht.js} +3 -3
  184. package/templates/.agents/design/apps/catalog/dist/assets/{index-CqtYXZfV.js → index-mvD5mwcC.js} +3 -3
  185. package/templates/.agents/design/apps/catalog/dist/index.html +2 -2
  186. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-BJ8b4xZr.js +1 -0
  187. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-Cm-yJJz_.js → Color-6AOWCN3U-CQLHzznn.js} +1 -1
  188. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-kxWwSKin.js +146 -0
  189. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFilters.stories-Chm_dXV7.js +9 -0
  190. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFiltersSpecimen-9CaCbGIZ.js +1 -0
  191. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-ED52wFjY.js +1 -0
  192. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-Belk4jRr.js → DocsRenderer-JROSPFPF-BcLgM80v.js} +4 -4
  193. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Primitives-DV6Bpudf.js +1 -0
  194. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-DoPvjkS1.js → WithTooltip-7X4HQR7L-BKNiAz_E.js} +1 -1
  195. package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatus.stories-BL19HGOo.js +17 -0
  196. package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatusSpecimen-DQnSS6s9.js +1 -0
  197. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-B1itKXEN.js → chunk-DRQKCCAG-DZBcXL-p.js} +1 -1
  198. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-C-Eb5SPY.js → chunk-W22LQPXL-CF3y2mfo.js} +1 -1
  199. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-DnyKLwhj.js → components-BVjxMRGq.js} +5 -5
  200. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-Do9sjqiW.js +1 -0
  201. package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-0W0Gj_Gs.css +1 -0
  202. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-DcXBsFPz.js → iframe-CTWGZcEe.js} +4 -4
  203. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-CRM89QRf.js → react-18-B9_a4mHb.js} +1 -1
  204. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-NrUxok8K.js +1 -0
  205. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-B03jQGTF.js → syntaxhighlighter-YFXUGROL-F_p8E2xc.js} +1 -1
  206. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-4ZyufAga.js → theming-fbSD9ZLF.js} +1 -1
  207. package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +2 -2
  208. package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
  209. package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/a11y-2/manager-bundle.js +3 -3
  210. package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +3 -3
  211. package/templates/.agents/design/apps/catalog/package.json +1 -1
  212. package/templates/.agents/design/apps/catalog/src/components/DashboardFiltersSpecimen.tsx +61 -0
  213. package/templates/.agents/design/apps/catalog/src/components/Primitives.tsx +24 -0
  214. package/templates/.agents/design/apps/catalog/src/components/StackVersionFieldSpecimen.tsx +70 -0
  215. package/templates/.agents/design/apps/catalog/src/components/WorkspaceStatusSpecimen.tsx +42 -0
  216. package/templates/.agents/design/apps/catalog/src/design-contract.test.ts +27 -13
  217. package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +52 -0
  218. package/templates/.agents/design/apps/catalog/src/pages/DesignSystemPage.tsx +15 -1
  219. package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +32 -0
  220. package/templates/.agents/design/apps/catalog/src/stories/DashboardFilters.stories.tsx +7 -0
  221. package/templates/.agents/design/apps/catalog/src/stories/WorkspaceStatus.stories.tsx +12 -0
  222. package/templates/.agents/design/apps/catalog/src/styles/components.css +84 -3
  223. package/templates/.agents/design/apps/catalog/src/styles/stack-version-field.css +17 -0
  224. package/templates/.agents/design/apps/catalog/src/styles.css +2 -0
  225. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  226. package/templates/.agents/design/tokens.json +32 -0
  227. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  228. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  229. package/templates/.agents/requirements/comparative-audit.md +1 -1
  230. package/templates/.agents/requirements/context-engine.md +1 -1
  231. package/templates/.agents/requirements/cost-observability.md +1 -1
  232. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  233. package/templates/.agents/requirements/data-export.md +1 -1
  234. package/templates/.agents/requirements/design-system.md +1 -1
  235. package/templates/.agents/requirements/execution-engine.md +1 -1
  236. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  237. package/templates/.agents/requirements/model-orchestration.md +1 -1
  238. package/templates/.agents/requirements/public-distribution.md +9 -3
  239. package/templates/.agents/requirements/software-architecture.md +1 -1
  240. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  241. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  242. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  243. package/templates/.agents/rules/autonomy-decision.md +1 -0
  244. package/templates/.agents/rules/workflow.md +2 -2
  245. package/templates/.agents/runtime/VERSION +1 -1
  246. package/templates/.agents/runtime/bin/zaip.mjs +27 -26
  247. package/templates/.agents/runtime/checksums.sha256 +5 -5
  248. package/templates/.agents/runtime/manifest.json +1 -1
  249. package/templates/.agents/runtime/provenance.json +4 -4
  250. package/templates/.agents/runtime/sbom.cdx.json +1 -1
  251. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +13 -0
  252. package/templates/.agents/skills/zaip-skill-execution/references/autonomous-continuation.md +17 -0
  253. package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +2 -2
  254. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +9 -6
  255. package/templates/.agents/skills/zaip-skill-github-deploy/agents/openai.yaml +1 -1
  256. package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +11 -9
  257. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +2 -2
  258. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs +1 -2
  259. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs +9 -1
  260. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +23 -0
  261. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.mjs +2 -6
  262. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.test.mjs +15 -1
  263. package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +4 -0
  264. package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +4 -0
  265. package/templates/.agents/skills/zaip-skill-prd/SKILL.md +3 -3
  266. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +11 -8
  267. package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +13 -12
  268. package/templates/.agents/skills/zaip-skill-setup/SKILL.md +17 -2
  269. package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +1 -1
  270. package/templates/.agents/skills/zaip-skill-spec/SKILL.md +2 -2
  271. package/templates/.agents/zaip-aios/VERSION +1 -1
  272. package/templates/template-manifest.json +445 -245
  273. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BpsAFy0g.js +0 -3
  274. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor--iPcnZdx.js +0 -68
  275. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cmlx8OYH.css +0 -1
  276. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DfdlGa7c.js +0 -2
  277. package/templates/.agents/design/apps/catalog/dist/assets/index-BEmIE7WE.css +0 -1
  278. package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +0 -72
  279. package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +0 -72
  280. package/templates/.agents/design/apps/catalog/dist/assets/index-CqqYWY2f.js +0 -9
  281. package/templates/.agents/design/apps/catalog/dist/assets/index-D9pj7Jlf.js +0 -9
  282. package/templates/.agents/design/apps/catalog/dist/assets/index-i_PO2k9R.js +0 -9
  283. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js +0 -1
  284. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js +0 -137
  285. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js +0 -1
  286. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js +0 -1
  287. package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-BEmIE7WE.css +0 -1
  288. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-C3tkVMIp.js +0 -1
@@ -1,11 +1,11 @@
1
1
  b146bd0c7c60b1ab43c4f71e0b1d2262c6df6da6f7053a0425f834ccb77a6b48 LICENSE
2
2
  bc02cba77e8d51e5c580f43668863dc868eda66f1ff663bfaa49fcf3ca16320e THIRD_PARTY_NOTICES.md
3
- 5eee6c0c5c6901f5e523f0a434bca4106e1ff7136deb451f982b0bb1a7b13716 VERSION
4
- 4db3d63944b2c9f28019e705e4f125f6bcceb877e3efa5954cc7555a99b73536 bin/zaip.mjs
5
- dd2a7c216fd2c9d4f33164ae850af05db51b0b3ff885ddf03760d00fc1dcd491 manifest.json
3
+ 76120c1f2c4311c2154c22a6b58e00e411e0ebe76afae0daf608d9196c61f114 VERSION
4
+ cbff3ad8c72113f0dc488435be4fc09422dc7917dff2aeb00916aa1d1a1a9015 bin/zaip.mjs
5
+ a88665505d09788febe6df78f48803e84a6869dc14dcb84af6369c029ea95c96 manifest.json
6
6
  7f89219d7c567c82a51679ad136d84364bded7ac659492537e125d33b1d58a7a migrations/001-layout-v1.json
7
7
  5f8c48b286d0b44d8fbb57a9a5d009a8a500439aa3148d750b8f193f72995c9f migrations/002-layout-v2.json
8
8
  2d738247131a923ea6e3a32d0d1d6de763866fd96a8a8dc75d127a343809b0aa pnpm-lock.sha256
9
- dd21d399e85ec0791965450a32fa13af51e71e17b86cc7ee11e8ce8072868c32 provenance.json
10
- cc111be184be67dd46cb46fb3f8fe75b192e33f3114d8c6c9cc0639a841962cf sbom.cdx.json
9
+ 1a4556299d5ac62fe6e010a166697b772309543d2aefdb55c2f161dfc4e58016 provenance.json
10
+ 043030cee5e42466be7b771992b6a83d390babdfecdcc69f0babc329ac8a0def sbom.cdx.json
11
11
  b3ffedf9e146be802a15b4009f33e031dec3071ca1525e12c67606fd964a3067 schemas/contracts.schema.json
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "name": "zaip-aios",
4
- "version": "3.3.0",
4
+ "version": "3.5.0",
5
5
  "node": ">=22",
6
6
  "files": [
7
7
  "LICENSE",
@@ -2,10 +2,10 @@
2
2
  "schema_version": 1,
3
3
  "statement_type": "self_reported_build_integrity",
4
4
  "authenticity": "unverified",
5
- "version": "3.3.0",
5
+ "version": "3.5.0",
6
6
  "source_origin": "zaip-aios:local-build",
7
7
  "lockfile_sha256": "f8557f3600849eb880b8f245b63b80fed9a3e9addf2c5f2c6d492547af900219",
8
- "sbom_sha256": "cc111be184be67dd46cb46fb3f8fe75b192e33f3114d8c6c9cc0639a841962cf",
9
- "runtime_sha256": "3925086e5b413bca4e23fc2f7bda7298ab11e28cb803b65e67492d1ef7a66f10",
10
- "statement_sha256": "bb71d94b1a0092923e1480b2bced65a01ee0875f24740349155ad9bbff058039"
8
+ "sbom_sha256": "043030cee5e42466be7b771992b6a83d390babdfecdcc69f0babc329ac8a0def",
9
+ "runtime_sha256": "85e40f8049e1bd81b58ea491c44ea76471432a86c866a5820d15ce8e0a34a0ae",
10
+ "statement_sha256": "bf42821431565815e19d8f6f66f3a2450078322b38739ac707efbbb5c87e9ae9"
11
11
  }
@@ -6,7 +6,7 @@
6
6
  "component": {
7
7
  "type": "application",
8
8
  "name": "zaip-aios",
9
- "version": "3.3.0"
9
+ "version": "3.5.0"
10
10
  }
11
11
  },
12
12
  "components": [
@@ -11,6 +11,19 @@ Carregue [a governança de execução e delegação](references/runtime-governan
11
11
 
12
12
  Use esta skill somente quando o usuário pedir execução. `prepare` não autoriza mutação nem promoção para `ready`; quando a execução foi pedida explicitamente, prepare o PRD/SPEC ainda em `draft`, se necessário, e então execute sem exigir outra confirmação intermediária.
13
13
 
14
+ ## Continuidade do pedido de execução
15
+
16
+ “Execute esta SPEC/este PRD” autoriza finalizar a preparação necessária, materializar, ativar e executar toda a DAG selecionada até verificação e finalização. Essa autorização permanece durante a preparação e o rework necessário dentro do mesmo escopo; um sucessor canônico preserva o vínculo e a autorização existente. Pedido somente de planejamento ou de `ready` continua sem autorizar implementação.
17
+
18
+ - Não encerre após criar/validar plano, sucessor, DAG ou Execution ativa. Não peça “continue execução” nem outra confirmação só porque a preparação consumiu tempo ou contexto; faça checkpoint/refresh e prossiga.
19
+ - `spec execute`/`prd execute` ativam o macro e retornam `continuation.required`; isso é handoff obrigatório, não prova de implementação. Em runtime gerenciado, acione `execution run EXEC`; na colaboração nativa Codex, siga a seção de DAG nativa abaixo. Use somente um caminho de dispatch, com a mesma Execution e atribuição válida.
20
+ - Depois de cada Task, execute as próximas elegíveis; ao terminar a DAG, realize os gates parentais e Gui. Só encerre com resultado observado ou impedimento concreto após recuperação permitida. Ramos independentes continuam somente quando a política de falha da DAG permitir.
21
+ - Falta real de autoridade, informação essencial, capacidade do host ou gates continua sendo bloqueio. Informe a causa e a condição de retomada; não invente sucesso, nova autorização, identidade ou ancestralidade para continuar.
22
+
23
+ Antes de encerrar com trabalho pendente ou responder a uma falha, aplique [continuidade automática e parada justificada](references/autonomous-continuation.md). O perfil congelado e seu ledger decidem recuperação; reparação elegível usa a autorização existente, sem pedir outro turno.
24
+
25
+ ## Passos de execução
26
+
14
27
  1. Carregue o PreparedPlan e valide hash, origem, Requirements/AC, DAG, write scopes e estado atual. Antes de selecionar executor, carregue as Rules aplicáveis; para decisão comercial, use `$RULE-SPECIALIST-ROUTING` como fonte única da matriz de roteamento. Ao construir ou diagnosticar o plano externo, leia [o contrato compacto](references/prepared-plan.md).
15
28
  2. Materialize idempotentemente Change, Tasks e Execution antes da primeira alteração do produto.
16
29
  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.
@@ -0,0 +1,17 @@
1
+ # Continuidade automática e parada justificada
2
+
3
+ O desenvolvimento autorizado continua automaticamente. Antes de terminar um turno com trabalho pendente, o orquestrador aplica esta sequência:
4
+
5
+ 1. Consulte o estado real, a autorização vigente, a política da DAG e o perfil congelado da Task. Use o ledger persistente existente; na ausência de autonomy-v1, respeite os limites legados. Configuração nova não renova tentativas antigas; valores desconhecidos não significam zero ou ilimitado.
6
+ 2. Havendo trabalho elegível, implemente, valide e continue as próximas Tasks. Agente ativo, lease ocupado, checkpoint de contexto e transição de fase exigem espera ou refresh, não uma mensagem “continue execução”. Não duplique invocações pendentes.
7
+ 3. Falha recuperável dentro do escopo aciona diagnóstico, retry operacional, reparação ou replanejamento permitido pelo perfil, sem nova confirmação. Registre cada tentativa e reserve o orçamento antes do dispatch. Os comandos explícitos de resume/rework são operações canônicas que o agente executa com a autorização já vigente; não significam exigir outro pedido humano.
8
+ 4. Pare quando houver cancelamento humano, impedimento de autoridade/segurança, dependência ou capacidade essencial indisponível após recuperação permitida, falha impeditiva ou esgotamento real da política. Nunca contorne esses motivos, apague contadores, aumente perfil, reabra completed/cancelled ou invente prova. Perfil Persistente não remove esses limites, embora não tenha teto numérico de tentativas.
9
+ 5. Respeite failure_policy: continue_independent permite ramos elegíveis independentes; stop_on_terminal_failure impede novo dispatch enquanto o motivo terminal permanecer. Nenhuma política autoriza executar dependentes sem aceite da dependência.
10
+ 6. Após a última Task, avance para gates parentais e finalização. A resposta terminal deve ser conclusão comprovada ou parada justificada; quantidade de trabalho, duração e tamanho de contexto não são falhas do produto.
11
+
12
+ ## Saídas e papéis
13
+
14
+ - Em progresso, informe o resultado observado e a próxima ação que está executando. Não termine com “envie continue”, “posso prosseguir?” ou “aguardo autorização” quando a autorização e a recuperação aplicável já existem.
15
+ - Em parada real, informe Task/Execution afetada, motivo comprovado, perfil e consumo observado quando disponíveis, recuperação tentada, condição objetiva de retomada e a única ação humana necessária, se houver. Não sugira uma nova tentativa que ultrapasse o perfil.
16
+ - Executor termina sua unidade e devolve evidências ao orquestrador; reviewer/finalizer devolvem sua decisão e não implementam nem criam filhos. O término de um filho não autoriza o orquestrador a abandonar a entrega.
17
+ - Stop do host é sinal de término físico, não autorização para fabricar dispatch, reabrir registros ou aprovar trabalho. Preserve recibos, idempotência e a proteção contra loops do hook. Continuidade é realizada pela invocação viva ou pelo coordenador autorizado.
@@ -1,7 +1,7 @@
1
1
  # Ciclo de correção e bloqueio
2
2
 
3
- Carregue esta referência somente antes de uma nova correção. Falha operacional transitória, cuja recuperação é esperada, recebe retry limitado; impedimento essencial deixa a Task `blocked`; falha lógica exige correção localizada ou repair/rework explícito.
3
+ Carregue esta referência somente antes de uma nova correção. Falha operacional transitória, cuja recuperação é esperada, recebe retry limitado; impedimento essencial deixa a Task `blocked`; falha lógica exige correção localizada ou comando canônico de repair/rework dentro da autorização vigente. Operação explícita não exige nova autorização humana quando escopo, perfil e ledger permitem recuperação automática.
4
4
 
5
5
  Registre nos findings, Change ou Run existentes somente resultados observáveis: falha, tentativa e resultado, aprendizado ou hipótese nova, e próxima ação e teste discriminante; não registre raciocínio privado. Se a mesma falha reaparecer após uma correção, revise a hipótese antes de editar novamente. Evidência pode refutá-la mesmo quando o teste não passa. Diff, ID cosmético ou mera ausência de erro não demonstram avanço.
6
6
 
7
- Preserve escopo e critérios de aceite; evite melhorias opcionais e valide primeiro a hipótese específica, repetindo validação ampla somente por mudança relevante ou gate exigido. Respeite os limites e contadores existentes, sem criar paralelos; um replanejamento não os reinicia nem cria identidades novas para ganhar tentativas. Sem rota fundada, ou quando o limite aplicável se esgota, marque `blocked` com a condição objetiva de retomada no lifecycle. Astra só é usado onde a política atual permite; Task avulsa preserva modelo e effort selecionados pelo host.
7
+ Preserve escopo e critérios de aceite; evite melhorias opcionais e valide primeiro a hipótese específica, repetindo validação ampla somente por mudança relevante ou gate exigido. Respeite os limites e contadores existentes, sem criar paralelos; um replanejamento não os reinicia nem cria identidades novas para ganhar tentativas. Esgotada a recuperação, use `failed` somente para impedimento técnico comprovado; falta de acesso, prova, autoridade ou conclusão segura usa `blocked`, com a condição objetiva de retomada. Não peça “continue execução” para repetir uma tentativa vedada. Antes de uma parada, aplique [o contrato de continuidade](autonomous-continuation.md). Astra só é usado onde a política atual permite; Task avulsa preserva modelo e effort selecionados pelo host.
@@ -13,6 +13,7 @@ Read [the deployment workflow](references/deployment-workflow.md) for the detail
13
13
 
14
14
  - The exact command “faça deploy” authorizes commits covering all versionable pending changes in the selected worktree, followed by push and Release, after secret, size and ignore checks. The selected worktree is the complete publication scope; other worktrees remain outside it.
15
15
  - Resolve dirty state, untracked files, generated projections, branch divergence and repairable local/remote failures automatically within that scope. Limit repairs to the evidenced cause, with up to five repair cycles; stop when the same root cause remains after two repairs.
16
+ - Treat the selected worktree's local branch, recovery branch or detached state as the source candidate only. The configured deploy branch is the remote target; a mismatch between source and target is not a blocker and never requires checking out the target locally.
16
17
  - Stop only for an unresolved index conflict after bounded repair, secrets, files at or above GitHub's 100 MB limit, unavailable authentication/authority, external outage, destructive requirement, or ambiguous scope expansion.
17
18
  - Never force push, rewrite history, replace remotes, change credentials or Git/SSH configuration, bypass checks, or deploy to another service.
18
19
  - Git-only publication of existing commits needs no artificial Task. Product edits or new product commits require real Task ownership; materialize missing authorized work before editing. Records/local-only snapshots are exempt.
@@ -24,9 +25,9 @@ Before the first Git mutation, retain sanitized authority in progress and the te
24
25
  ## Prepare the selected worktree
25
26
 
26
27
  1. Inspect Git status, pending paths and diff summary. Review every inventoried versionable file for secrets, size and ignore policy.
27
- 2. Read `.agents/config/project.yaml`. Resolve the explicit frontend/backend scope from `deploy.frontend.branch` or `deploy.backend.branch`; configured `main` is permitted. `deploy.database.branch` must remain literal `beta`. The legacy `deploy.branch` fallback remains non-production.
28
- 3. Prove folder-scoped SSH using `scripts/preflight.mjs --repository . --remote origin --scope frontend` (or the actual authorized scope). Run at most once per cycle; recheck only after an evidenced repair or changed target. Require SSH origin, configured key, Git identity and successful `ls-remote`; no process overrides or credential/config edits.
29
- 4. Fetch once per cycle and compute ahead/behind. Before reconciliation, create a recoverable branch reference and preserve tracked plus untracked changes in a named stash. Use bounded rebase by default. Restore with `git stash apply`; verify preservation, retain the stash until success, and combine conflicts from observed intent. Never reset or force.
28
+ 2. Read `.agents/config/project.yaml`. Resolve the explicit frontend/backend target from `deploy.frontend.branch` or `deploy.backend.branch`; configured `main` is permitted. `deploy.database.branch` must remain literal `beta`. The legacy `deploy.branch` fallback remains non-production. Record the local source branch or detached state separately from this target.
29
+ 3. Prove folder-scoped SSH using `scripts/preflight.mjs --repository . --remote origin --scope frontend` (or the actual authorized scope). Run at most once per cycle; recheck only after an evidenced repair or changed target. Require SSH origin, configured key, Git identity and successful `ls-remote`; no process overrides or credential/config edits. Preflight accepts a named recovery branch or detached source and returns it separately from the configured target.
30
+ 4. Fetch once per cycle and compute ahead/behind between the source candidate and configured remote target. Before reconciliation, create and verify a recoverable branch reference, including for detached HEAD, and preserve tracked plus untracked changes in a named stash. Use bounded rebase by default without switching to the target branch. Restore with `git stash apply`; verify preservation, retain the stash until success, and combine conflicts from observed intent. Never reset or force.
30
31
  5. Re-inventory after reconciliation. Stage the reviewed paths with `git add -- <explicit-pathspecs>`; never use `git add -A`, `git add -u`, broad globs or ignored files. Explicit deploy permits the whole inventoried selected worktree, without mandatory functional partitioning.
31
32
  6. Run required or evidenced gates only. Reuse unchanged valid evidence; bypass Turbo cache for the failed remote gate when repairing CI. A failed gate starts a new cycle only after a concrete repair or new remote evidence.
32
33
 
@@ -42,15 +43,17 @@ Every product commit requires causal Task/Change/Execution records and matching
42
43
 
43
44
  1. Compose `$zaip-skill-release-qualification` and follow [local preparation](../zaip-skill-release-qualification/references/local-preparation.md). Synchronize and commit before preparing the clean exact SHA. Failed or stale evidence is not qualification.
44
45
  2. Resolve the previous Release, next canonical version and package identity using [release identity](references/release-identity.md). For the framework, `vN.N` maps to package `N.N.0`; only GitHub Actions publishes `@zaip-ai/cli` to npm.
45
- 3. For `zaip-ai/zaip-aios`, use `scripts/local-release-deploy.mjs`. It prepares/verifies, pushes the exact SHA to configured `main`, uploads verified assets to a draft, then publishes the Release. Enable the thin publisher only after explicit rollout authority, public trust enrollment and signed full local qualification. It validates published assets and runs one read-only installation smoke before npm; no private-draft pilot or write token is needed. GitHub Release publication and npm completion remain separate.
46
+ 3. For `zaip-ai/zaip-aios`, use `scripts/local-release-deploy.mjs`. It prepares/verifies, pushes the exact SHA to configured `main`, uploads verified assets to a draft, then publishes the Release. Enable the thin publisher only after explicit rollout authority, public trust enrollment and signed local qualification. It validates published assets and runs one read-only installation smoke before npm; no private-draft pilot or write token is needed. GitHub Release publication and npm completion remain separate.
46
47
  4. Consumers use `scripts/consumer-release-preparation.mjs guarded-push` with their own policy and explicit branch, SHA and trusted receipt. They have no framework npm/TGZ requirement. See the preparation guide for bootstrap and guarded commands.
47
- 5. Immediately before delivery, reread the configured target; if changed, restart preparation. Helpers bind the exact candidate to `HEAD:refs/heads/<configured branch>` (or its equivalent immutable-SHA refspec); do not bypass them with a manual push.
48
+ 5. Immediately before delivery, reread the configured target; if changed, restart preparation. Helpers bind the exact candidate to `HEAD:refs/heads/<configured branch>` (or its equivalent immutable-SHA refspec) independently of the local source branch; do not bypass them with a manual push.
48
49
  6. After qualification, a missing Release is normal. Unless explicitly push-only, automatically create the draft for that SHA or resume a verified draft for the same SHA. Verify an already-published exact Release as a no-op; an API/authentication error never proves absence. Refuse conflicting tags/assets without overwrite.
49
50
  7. Review complete categorized UTF-8 notes and their exact-range inventory under [release notes](references/release-notes.md). Never use `--generate-notes` as the Release body. Validate the notes, publish with the reviewed notes file, and compare the published body byte-for-byte on readback. Preserve a configured human-only review policy where applicable.
50
51
 
51
52
  ## Proportional validation
52
53
 
53
- Guarded local framework delivery requires a valid `full-v2` receipt with the mandatory full gate.
54
+ Guarded local framework delivery requires a valid `essential-v3` receipt for the exact candidate.
55
+ It runs the fixed essential integrity, build/type, package and clean-consumer doctor/SQLite/API
56
+ smoke checks. Dashboard-per-tab and XLSX certification are reserved for explicit `--profile full`.
54
57
  Without explicit thin-path activation, the default GitHub publisher separately requires the legacy workflow's
55
58
  exact-candidate qualification receipt after its full gate and TGZ matrix.
56
59
  Rapid impact checks have no test-count ceiling and cannot substitute for release evidence.
@@ -1,6 +1,6 @@
1
1
  interface:
2
2
  display_name: "ZAIP GitHub Deploy"
3
3
  short_description: "Publicacao GitHub explicita, Git-only e verificavel"
4
- default_prompt: "Use $zaip-skill-github-deploy para pedidos explicitos de deploy, push, publicar ou publicacao GitHub; quando o usuario disser 'faca deploy', trate o worktree selecionado inteiro como escopo autorizado, incluindo arquivos novos, apos os gates de segredos, tamanho, conflitos e SSH; publique via SSH da pasta sem force push nem reescrita de historico."
4
+ default_prompt: "Use $zaip-skill-github-deploy para pedidos explicitos de deploy, push, publicar ou publicacao GitHub; quando o usuario disser 'faca deploy', trate o worktree selecionado inteiro como escopo autorizado, incluindo arquivos novos, apos os gates de segredos, tamanho, conflitos e SSH; trate a branch local ou detached como origem e a branch configurada como alvo remoto, publicando por refspec explicito via SSH da pasta sem force push nem reescrita de historico."
5
5
  policy:
6
6
  allow_implicit_invocation: true
@@ -30,12 +30,12 @@ For publication of existing commits, the conversation and terminal deploy report
30
30
  ## Multiple worktrees and divergent history
31
31
 
32
32
  1. Resolve the selected publishing worktree and inspect its `git status --porcelain`; use `git worktree list --porcelain` only to detect a path collision, never to scan every worktree.
33
- 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.
34
- 3. Report a detected path collision, 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.
35
- 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.
36
- 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.
33
+ 2. Select exactly one publishing worktree. Its named branch, recovery branch or detached HEAD is the source candidate; `deploy.<scope>.branch` is the remote target. A different local branch or detached source does not join another worktree and is not a blocker. The selected worktree is the complete publication scope.
34
+ 3. Report a detected path collision, but do not block solely because the selected worktree is dirty, detached, on a recovery branch 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.
35
+ 4. Prunable or missing worktrees are reported but never pruned automatically. Unselected dirty detached or temporary worktrees are never deleted, reset, stashed or copied into the publishing worktree implicitly.
36
+ 5. Fetch once and compute ahead/behind between the source candidate and the configured remote target. If it is behind or diverged, automatically reconcile only the selected source under this deploy authorization and continue; divergence is not a blocker by itself.
37
37
  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`.
38
- 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.
38
+ 7. Apply the bounded reconciliation without force and without checking out the configured target branch locally. 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.
39
39
  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.
40
40
 
41
41
  ## Repair-loop integrity
@@ -49,7 +49,7 @@ For publication of existing commits, the conversation and terminal deploy report
49
49
 
50
50
  ## Prove folder-scoped SSH first
51
51
 
52
- From the repository root, read `.agents/config/project.yaml` immediately before deployment. `deploy.frontend.branch` and `deploy.backend.branch` are persistent authorization and may be `main`; pass their explicit `--scope`. `deploy.database.branch` is literal `beta`, never falls back to `main`, and requires `--scope database`. The internal `--scope framework` and a legacy preflight without `--scope` use `deploy.branch`, which must remain non-production. A malformed config is a terminal preflight failure. Preflight never creates, renames, or switches a branch.
52
+ From the repository root, read `.agents/config/project.yaml` immediately before deployment. `deploy.frontend.branch` and `deploy.backend.branch` are persistent authorization and may be `main`; pass their explicit `--scope`. `deploy.database.branch` is literal `beta`, never falls back to `main`, and requires `--scope database`. The internal `--scope framework` and a legacy preflight without `--scope` use `deploy.branch`, which must remain non-production. A malformed config is a terminal preflight failure. Preflight reports the local source branch or detached state separately, treats the configured branch only as the remote target, and never creates, renames or switches a branch.
53
53
 
54
54
  For a database migration request, the database worktree may push only `HEAD:refs/heads/request/<id>` to open its PR against `beta`. That route never targets `main`, never applies SQL, and does not provision a beta branch or Supabase resource.
55
55
 
@@ -70,9 +70,11 @@ Run preflight once at the start of the authorized deployment. Classify a failure
70
70
 
71
71
  ## Validation budget
72
72
 
73
- Guarded local framework preparation requires `full-v2` and its mandatory full gate.
73
+ Guarded local framework preparation requires the signed `essential-v3` receipt. It excludes
74
+ dashboard-tab and XLSX certification; select `--profile full` explicitly when that extended
75
+ coverage is required.
74
76
  The default legacy GitHub publisher accepts its separate exact-candidate qualification
75
- receipt only after the remote full gate and TGZ matrix. Explicit administrator activation after signed full local qualification switches the
77
+ receipt only after the remote full gate and TGZ matrix. Explicit administrator activation after signed local qualification switches the
76
78
  publisher to the verified local receipt. One read-only install smoke then gates npm;
77
79
  no private-draft pilot is required. Activation is never implicit.
78
80
  Follow [local preparation](../../zaip-skill-release-qualification/references/local-preparation.md)
@@ -103,7 +105,7 @@ For a consumer repository, bootstrap its own Ed25519 trust store and define `con
103
105
 
104
106
  ## Synchronize and publish each cycle
105
107
 
106
- Fetch the selected remote and configured branch once per publication cycle, without SSH overrides. Compute ahead/behind against `<selected remote>/<configured branch>`. 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.
108
+ Fetch the selected remote and configured target branch once per publication cycle, without SSH overrides. Compute ahead/behind from the selected source candidate against `<selected remote>/<configured branch>`. When the source is behind or diverged, apply the recorded bounded reconciliation strategy in place and continue after successful verification; do not switch to the target branch merely to satisfy publication. Stop only if reconciliation cannot be completed safely within the bounded repair cycles. Never reset or force.
107
109
 
108
110
  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.
109
111
 
@@ -34,10 +34,10 @@ current head `sha` and matching `npm_channel`. This extended path qualifies sour
34
34
  and the runtime matrix; it does not publish npm or create a Release.
35
35
 
36
36
  With explicitly enabled `ZAIP_LOCAL_RELEASE_ENABLED=true`, guarded delivery uses
37
- the signed local `full-v2` receipt and enrolled public trust. It does not require a
37
+ the signed local `essential-v3` receipt and enrolled public trust. It does not require a
38
38
  legacy `qualify-cli.yml` receipt or a private-draft pilot. GitHub verifies the
39
39
  published assets and runs one read-only exact-TGZ installation/doctor smoke before
40
- the separate npm publication job. Source tests and full qualification remain local.
40
+ the separate npm publication job. Extended full qualification remains an explicit local option.
41
41
 
42
42
  Only when the reduced path is disabled does the legacy publisher require
43
43
  `github-readiness.mjs` with `--workflow-path .github/workflows/qualify-cli.yml`
@@ -185,8 +185,7 @@ export async function prepare(input) {
185
185
  fail("SHA and GitHub version vN.N are required");
186
186
  const repository = resolve(input.repository),
187
187
  branch = await configuredBranch(repository, input.scope ?? "frontend");
188
- if (branch !== input.branch || git(repository, ["branch", "--show-current"]) !== branch)
189
- fail("checked out branch does not match configured branch");
188
+ if (branch !== input.branch) fail("requested target branch does not match configured branch");
190
189
  const policyDigest = await hash(input.policy),
191
190
  before = identity(repository, input.sha),
192
191
  required = policyFor(await json(input.policy), input);
@@ -46,7 +46,7 @@ test("resolves only the selected application scope from nested deploy configurat
46
46
  }
47
47
  });
48
48
 
49
- test("GitHub-only guard binds parsed config, policy, receipt expiry and fixed refspec", async () => {
49
+ test("GitHub-only guard binds target config and fixed refspec independently of source branch", async () => {
50
50
  const root = await mkdtemp(join(tmpdir(), "zaip-consumer-"));
51
51
  try {
52
52
  const repo = join(root, "repo");
@@ -96,6 +96,10 @@ test("GitHub-only guard binds parsed config, policy, receipt expiry and fixed re
96
96
  }),
97
97
  );
98
98
  await bootstrap({ trustStore: trust, publicKey: pub, keyId: "consumer" });
99
+ git(repo, "checkout", "-qb", "codex/recovery");
100
+ const recoveryPrepared = await prepare(input);
101
+ await verifyPreparation({ ...input, receipt: recoveryPrepared.receiptPath });
102
+ git(repo, "checkout", "--detach", sha);
99
103
  const prepared = await prepare(input);
100
104
  await verifyPreparation({ ...input, receipt: prepared.receiptPath });
101
105
  const calls = [];
@@ -105,6 +109,10 @@ test("GitHub-only guard binds parsed config, policy, receipt expiry and fixed re
105
109
  ["preflight", "push"],
106
110
  );
107
111
  assert.equal(calls[1].refspec, sha + ":refs/heads/main");
112
+ await assert.rejects(
113
+ () => prepare({ ...input, branch: "beta" }),
114
+ /requested target branch does not match configured branch/,
115
+ );
108
116
  await assert.rejects(
109
117
  () => prepare({ ...input, commands: [{ command: "node", args: ["-e", "process.exit(2)"] }] }),
110
118
  /differ/,
@@ -1,10 +1,30 @@
1
1
  import assert from "node:assert/strict";
2
+ import { createHash } from "node:crypto";
2
3
  import { readFile } from "node:fs/promises";
3
4
  import { resolve } from "node:path";
4
5
  import test from "node:test";
5
6
 
6
7
  const root = resolve(import.meta.dirname, "..", "..", "..");
7
8
  const skillRoot = resolve(root, "skills", "zaip-skill-github-deploy");
9
+ const managedDeployFiles = [
10
+ "rules/workflow.md",
11
+ "skills/zaip-skill-github-deploy/SKILL.md",
12
+ "skills/zaip-skill-github-deploy/agents/openai.yaml",
13
+ "skills/zaip-skill-github-deploy/references/deployment-workflow.md",
14
+ "skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs",
15
+ "skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs",
16
+ "skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs",
17
+ "skills/zaip-skill-github-deploy/scripts/preflight.mjs",
18
+ "skills/zaip-skill-github-deploy/scripts/preflight.test.mjs",
19
+ ];
20
+
21
+ test("framework lock matches the deploy guidance and executable contract", async () => {
22
+ const lock = await readFile(resolve(root, "config", "framework.lock.yaml"), "utf8");
23
+ for (const path of managedDeployFiles) {
24
+ const digest = createHash("sha256").update(await readFile(resolve(root, path))).digest("hex");
25
+ assert.ok(lock.includes(` .agents/${path}: ${digest}\n`), `${path} lock hash is stale`);
26
+ }
27
+ });
8
28
 
9
29
  test("explicit Git publication verbs select the guarded deploy skill", async () => {
10
30
  const [skill, openai, core] = await Promise.all([
@@ -49,7 +69,10 @@ test("deploy permission and reconciliation remain explicit and recoverable", asy
49
69
  assert.match(skill, /recoverable branch reference/);
50
70
  assert.match(skill, /preserve tracked plus untracked changes in a named stash/);
51
71
  assert.match(skill, /Restore with `git stash apply`/);
72
+ assert.match(skill, /local branch, recovery branch or detached state as the source candidate/);
73
+ assert.match(skill, /configured deploy branch is the remote target/);
52
74
  assert.match(openai, /worktree selecionado inteiro como escopo autorizado/);
75
+ assert.match(openai, /branch local ou detached como origem/);
53
76
  });
54
77
 
55
78
  test("workflow retains the explicit publication routing contract", async () => {
@@ -31,12 +31,7 @@ try {
31
31
  );
32
32
  process.exit(0);
33
33
  }
34
- const checkedOutBranch = git(repository, ["branch", "--show-current"]).trim();
35
- if (checkedOutBranch === "") fail("detached HEAD is not deployable");
36
- if (checkedOutBranch !== configuredBranch)
37
- fail(
38
- `checked out branch ${checkedOutBranch} does not match validation deploy.branch ${configuredBranch}; switch or create the configured validation branch manually before publishing`,
39
- );
34
+ const checkedOutBranch = git(repository, ["branch", "--show-current"]).trim() || null;
40
35
 
41
36
  for (const variable of ["GIT_SSH", "GIT_SSH_COMMAND"]) {
42
37
  if (process.env[variable]?.trim()) fail(`${variable} overrides folder-scoped Git SSH config`);
@@ -90,6 +85,7 @@ try {
90
85
  configured_branch: configuredBranch,
91
86
  production_branch: deployment.productionBranch,
92
87
  checked_out_branch: checkedOutBranch,
88
+ source_detached: checkedOutBranch === null,
93
89
  caller_branch: options.branch,
94
90
  upstream: upstream || null,
95
91
  remote: {
@@ -23,6 +23,8 @@ test("standalone consumer resolves fresh project targets without node_modules",
23
23
  windowsHide: true,
24
24
  env: { ...process.env, NODE_PATH: "" },
25
25
  });
26
+ const git = (...args) =>
27
+ spawnSync("git", args, { cwd: root, encoding: "utf8", windowsHide: true });
26
28
  const target = () => {
27
29
  const result = run("--resolve-branch");
28
30
  assert.equal(result.status, 0, result.stderr);
@@ -90,7 +92,19 @@ test("standalone consumer resolves fresh project targets without node_modules",
90
92
  assert.match(run("--resolve-branch").stderr, /non-empty|unsupported keys|malformed/);
91
93
  }
92
94
  config("deploy: { branch: staging, production_branch: production }\n");
93
- assert.match(run().stderr, /checked out branch codex\/working does not match/);
95
+ const recoveryBranch = run();
96
+ assert.notEqual(recoveryBranch.status, 0);
97
+ assert.doesNotMatch(recoveryBranch.stderr, /checked out branch|detached HEAD/i);
98
+ assert.match(recoveryBranch.stderr, /No such remote|remote get-url|push URL|core\.sshCommand/i);
99
+ assert.equal(git("config", "user.email", "x@y.invalid").status, 0);
100
+ assert.equal(git("config", "user.name", "x").status, 0);
101
+ assert.equal(git("add", ".").status, 0);
102
+ assert.equal(git("commit", "--quiet", "-m", "fixture").status, 0);
103
+ assert.equal(git("checkout", "--detach", "HEAD").status, 0);
104
+ const detached = run();
105
+ assert.notEqual(detached.status, 0);
106
+ assert.doesNotMatch(detached.stderr, /checked out branch|detached HEAD/i);
107
+ assert.match(detached.stderr, /No such remote|remote get-url|push URL|core\.sshCommand/i);
94
108
  for (const branch of [
95
109
  "bad..branch",
96
110
  "bad.lock/child",
@@ -33,6 +33,10 @@ Use apenas comandos canônicos ZAIP. Não edite status diretamente no frontmatte
33
33
  - `desenvolva|melhore|aprimore` sempre cria refinamento ou rework e nunca executa automaticamente. Preserve snapshots e tentativas; depois do novo plano, exija nova promoção.
34
34
  - PRD `cancelled` é imutável. Use `prd rework <ID-CANCELADO>` para criar sucessor `draft` com tag `rework` e vínculo `rework_of_prd_id`; nunca reabra ou reescreva o cancelado.
35
35
 
36
+ ## Continuidade após execute
37
+
38
+ Após ativar, siga imediatamente o contrato de continuidade de `$zaip-skill-execution`: execute as Tasks elegíveis e os gates parentais no mesmo fluxo. A resposta `continuation.required` da CLI indica trabalho pendente; ativação e materialização não comprovam implementação. Não solicite “continue execução” nem encerre por ter consumido o turno preparando o plano. Preserve bloqueios reais, escopo e autoridade.
39
+
36
40
  ## Verificar
37
41
 
38
42
  Na continuação de um PRD preparado, reutilize a Execution de `plan_ref`/PreparedPlan. Para `blocked` ou `paused`, inspecione a causa e use a retomada canônica autorizada antes da captura; não repita `prd execute` contra um macro já materializado. `conversation start --intent continue --prd ID --execution EXEC` deve resolver a mesma Execution e fase `execution`, rejeitando divergências antes de escrever. Para colaboração nativa Codex, siga a seção de DAG nativa da skill de execução; `native-next` prepara envelopes e não substitui o spawn/capture observado nem os gates de entrega.
@@ -32,6 +32,10 @@ Use apenas comandos canônicos ZAIP. Não edite status diretamente no frontmatte
32
32
  - `implemente` em `draft` finaliza o plano sem executar; em `ready` autoriza `execute`; em `active` continua; em `blocked|failed` usa resume/rework.
33
33
  - `desenvolva|melhore|aprimore` sempre cria refinamento ou rework, preserva snapshots/tentativas e nunca executa automaticamente.
34
34
 
35
+ ## Continuidade após execute
36
+
37
+ Após ativar, siga imediatamente o contrato de continuidade de `$zaip-skill-execution`: execute as Tasks elegíveis e os gates parentais no mesmo fluxo. A resposta `continuation.required` da CLI indica trabalho pendente; ativação e materialização não comprovam implementação. Não solicite “continue execução” nem encerre por ter consumido o turno preparando o plano. Preserve bloqueios reais, escopo e autoridade.
38
+
35
39
  ## Verificar
36
40
 
37
41
  1. Leia novamente a SPEC após o comando.
@@ -46,13 +46,13 @@ Durante essa etapa, a Execution universal `interaction` e sua Run raiz continuam
46
46
  1. Bloqueie PRD sem SPEC, SPEC de outro PRD, referência quebrada, AC vago, DAG cíclica, dependência entre SPECs ou write scopes concorrentes.
47
47
  2. Construa uma DAG por SPEC; dependências nunca atravessam SPECs. Mantenha integração e outcomes como gates parentais do PRD.
48
48
  3. Gere e valide o PreparedPlan conforme [o contrato compacto](../zaip-skill-execution/references/prepared-plan.md), persista-o e pré-aloque IDs sem materializar trabalho executável nem mudar `draft` para `ready`. Um pedido explícito posterior de `prd ready` materializa, na mesma operação idempotente, a DAG selecionada em Execution, Changes e Tasks `planned`, sem iniciar a execução.
49
- 4. Após `prepare`, mostre que o PRD continua em Definição e pare; não encadeie `prd ready` ou `prd execute` sem a solicitação explícita correspondente.
49
+ 4. Após `prepare`, pare em Definição somente quando o pedido se limitar a planejamento. Se o usuário já pediu execução, essa autorização cobre a preparação necessária: prossiga imediatamente com $zaip-skill-execution, sem nova confirmação.
50
50
 
51
51
  ## Handoff e analyze
52
52
 
53
- Ao receber “execute esse PRD” em outro turno, reutilize o ID canônico e delegue à skill de execução a captura inicial como continuação desse PRD. Não repita o intake `conversation --definition prd,spec` da autoria anterior e não recrie o pacote. Se o documento citado existir apenas como rascunho local, informe essa diferença: a existência de um arquivo de planejamento não comprova PRD canônico nem Run de delivery.
53
+ Ao receber “execute esse PRD”, inclusive no mesmo turno da preparação, reutilize o ID canônico e delegue à skill de execução a captura inicial como continuação desse PRD. Não repita o intake `conversation --definition prd,spec` da autoria anterior e não recrie o pacote. Se o documento citado existir apenas como rascunho local, informe essa diferença: a existência de um arquivo de planejamento não comprova PRD canônico nem Run de delivery.
54
54
 
55
- 1. Pare em Definição após `prepare`. Somente após pedido explícito de promoção, use `$zaip-skill-move-prd`: `prd ready` deixa PRD/SPECs selecionadas em `ready` e materializa a DAG sem executá-la; cada Task materializada `planned` e nunca iniciada aparece em Pronto para Executar, mesmo vinculada a SPEC. Somente após pedido explícito de execução, delegue a persistência da continuação, ativação e orquestração para `$zaip-skill-execution`.
55
+ 1. Pare em Definição após `prepare` somente sem autorização de execução vigente. Somente após pedido explícito de promoção, use `$zaip-skill-move-prd`: `prd ready` deixa PRD/SPECs selecionadas em `ready` e materializa a DAG sem executá-la; cada Task materializada `planned` e nunca iniciada aparece em Pronto para Executar, mesmo vinculada a SPEC. Somente após pedido explícito de execução, delegue a persistência da continuação, ativação e orquestração para `$zaip-skill-execution`.
56
56
  2. Na análise, mostre visão macro por PRD: SPECs, Tasks, Executions, Runs, outcomes, AC/evidência, retrabalho, tokens e custo por fase/total.
57
57
 
58
58
  ## Assurance de outcomes
@@ -21,7 +21,7 @@ their configured branch (default `beta`) and no framework npm requirements.
21
21
  The deployment skill must call the guarded helper, which prepares and verifies before sending.
22
22
  A changed candidate or invalid evidence requires new qualification.
23
23
  Full source qualification runs locally. Extended GitHub qualification is manual;
24
- the reduced publisher requires enrolled public trust and signed full local qualification.
24
+ the reduced publisher requires enrolled public trust and signed local qualification.
25
25
 
26
26
  The only public npm package is `@zaip-ai/cli`; the installation entry point is
27
27
  `npx @zaip-ai/cli@latest init`. Verify that release automation, manifests, and
@@ -29,19 +29,22 @@ registry checks target only this package before qualifying the next publication.
29
29
 
30
30
  ## Proportional validation
31
31
 
32
- Local framework preparation receipts require `full-v2`, including the mandatory `pnpm qualify:full`
33
- gate. The default legacy GitHub path retains its own qualification receipt after the full gate
34
- and exact-TGZ matrix; it does not use the local receipt format. Neither path accepts rapid-only
35
- evidence. A rapid check is diagnostic preparation, not release certification. Select rapid tests
36
- by impact without a count ceiling; a deadline must fail visibly, never truncate coverage.
32
+ Local framework preparation defaults to signed `essential-v3`: deterministic source, lock,
33
+ build/type checks, package/SBOM/TGZ integrity, dependency audit and one clean installed-consumer
34
+ doctor/SQLite/API smoke. It deliberately does not certify every dashboard tab or XLSX export.
35
+ Use `--profile full` only for an explicit extended `full-v2` qualification; it retains
36
+ `pnpm qualify:full`, browser and XLSX coverage. The profile, fixed gate list and artifact digests
37
+ are signed, so an old `full-v2` or rapid receipt cannot satisfy the new default by accident.
38
+ The default legacy GitHub path retains its separate full receipt and exact-TGZ matrix. Rapid
39
+ checks remain diagnostics, never release receipts; timeouts fail visibly.
37
40
  Follow [local preparation](references/local-preparation.md) for budgets, exact-candidate
38
41
  evidence and cache validity. A failed or timed-out gate emits no success receipt.
39
42
  Report local qualification, runtime matrix, GitHub and publication outcomes separately.
40
43
 
41
44
  ## Guarded local qualification and single remote smoke
42
45
 
43
- An administrator explicitly enables `ZAIP_LOCAL_RELEASE_ENABLED=true` after full local
44
- qualification and public trust enrollment. The guarded helper publishes the exact signed
46
+ An administrator explicitly enables `ZAIP_LOCAL_RELEASE_ENABLED=true` after signed essential
47
+ local qualification and public trust enrollment. The guarded helper publishes the exact signed
45
48
  GitHub Release assets. The read-only verifier validates receipt, policy, SHA and TGZ,
46
49
  then runs one Linux installation/doctor smoke before the isolated npm job receives
47
50
  publication credentials. No private-draft pilot or contents-write token is required.
@@ -13,18 +13,19 @@ to tag `vN.N` and package version `N.N.0`.
13
13
  ```text
14
14
  node scripts/local-release-preparation.mjs keygen --output-dir <new-key-directory>
15
15
  node scripts/local-release-preparation.mjs bootstrap --trust-store <trust-directory> --public-key <public-key.pem> --key-id maintainer --channels latest
16
- node scripts/local-release-preparation.mjs prepare --repository <absolute-repository> --expected-repository zaip-ai/zaip-aios --sha <40-character-sha> --output-dir <candidate-artifacts> --policy <policy.json> --private-key <private-key.pem> --key-id maintainer --channel latest --version <N.N> --expires-at <future-ISO-within-seven-days> --trust-store <trust-directory>
16
+ node scripts/local-release-preparation.mjs prepare --repository <absolute-repository> --expected-repository zaip-ai/zaip-aios --sha <40-character-sha> --output-dir <candidate-artifacts> --policy <policy.json> --private-key <private-key.pem> --key-id maintainer --channel latest --version <N.N> --expires-at <future-ISO-within-seven-days> --trust-store <trust-directory> --profile essential
17
17
  ```
18
18
 
19
19
  The framework policy is an administrator-reviewed file whose bytes must match the protected
20
20
  GitHub policy. Gates are fixed in the versioned helper, not supplied by the caller. Preparation
21
- fails at the first failed gate. It validates source size before dependency installation; then runs
22
- the `full-v2` profile: static integrity checks, dependency audit, package validation,
23
- mandatory `pnpm qualify:full` and exact-TGZ consumer identity. Preparation commands share
24
- a 60-minute deadline, with process-tree termination and cleanup after expiry. A failure
25
- never produces a successful receipt. Full qualification includes coverage, skill tests,
26
- cleanroom/rollback and Dashboard E2E; these gates are not optional for a release receipt.
27
- Former rapid-only receipts are invalid for this policy and require requalification.
21
+ fails at the first failed gate. The default `essential-v3` profile validates source size, locks,
22
+ build/type integrity, package/SBOM/TGZ binding, dependency audit and one clean installed-consumer
23
+ doctor/SQLite/API smoke. It does not run browser navigation across every dashboard tab or XLSX
24
+ exports. `--profile full` explicitly selects `full-v2`, which also runs the full source suite,
25
+ browser and XLSX qualification. Essential preparation has a 15-minute deadline; full preparation
26
+ has a 60-minute deadline. Both use process-tree
27
+ termination and cleanup after expiry. A failure never produces a successful receipt. Receipts bind
28
+ the selected profile and its fixed gate list, so former receipts require requalification.
28
29
  Successful preparation emits receipt, manifest, SBOM and TGZ.
29
30
 
30
31
  The separate rapid preparation helper has an eight-minute deadline and emits no signed
@@ -41,7 +42,7 @@ is refused. Choose a new output path after repair instead of deleting or overwri
41
42
  For an authorized release, call this command with the same arguments and paths:
42
43
 
43
44
  ```text
44
- node scripts/local-release-deploy.mjs --repository <absolute-repository> --expected-repository zaip-ai/zaip-aios --sha <40-character-sha> --branch main --output-dir <candidate-artifacts> --policy <policy.json> --private-key <private-key.pem> --key-id maintainer --channel latest --version <N.N> --expires-at <future-ISO-within-seven-days> --trust-store <trust-directory> --notes-file <reviewed-notes.md> --inventory-file <release-inventory.json> --from <previous-release-tag>
45
+ node scripts/local-release-deploy.mjs --repository <absolute-repository> --expected-repository zaip-ai/zaip-aios --sha <40-character-sha> --branch main --output-dir <candidate-artifacts> --policy <policy.json> --private-key <private-key.pem> --key-id maintainer --channel latest --version <N.N> --expires-at <future-ISO-within-seven-days> --trust-store <trust-directory> --notes-file <reviewed-notes.md> --inventory-file <release-inventory.json> --from <previous-release-tag> --profile essential
45
46
  ```
46
47
 
47
48
  `--dry-run` prepares and verifies without sending. The live command verifies again around
@@ -86,7 +87,7 @@ verified SHA. This flow does not require a TGZ, npm version, npm channel or npm
86
87
 
87
88
  ## Activate the reduced GitHub path
88
89
 
89
- After explicit rollout authority, complete signed full-v2 local preparation and enroll
90
+ After explicit rollout authority, complete signed essential-v3 local preparation and enroll
90
91
  only the reviewed public key, exact policy and key ID. Then explicitly enable
91
92
  `ZAIP_LOCAL_RELEASE_ENABLED=true` and use guarded delivery. The GitHub Release is published
92
93
  with its four signed assets before Actions validates them; the verifier needs only
@@ -99,8 +100,8 @@ The registry digest and channel are always verified by the isolated publisher.
99
100
  The default legacy publisher validates `qualification-receipt.json` from the successful
100
101
  GitHub qualification run, bound to candidate SHA, run/attempt, channel and exact TGZ. That
101
102
  workflow requires the full gate and runtime matrix before issuing its receipt. This is a
102
- separate accepted remote policy, not a `full-v2` local receipt or a rapid-only exemption.
103
- The guarded local helper still requires `full-v2` even while legacy remote checks are enabled.
103
+ separate accepted remote policy, not an `essential-v3` local receipt or a rapid-only exemption.
104
+ The guarded local helper requires `essential-v3` even while legacy remote checks are enabled.
104
105
 
105
106
  An administrator enrolls the public key, exact policy bytes and key ID in protected repository
106
107
  variables `ZAIP_LOCAL_RELEASE_TRUSTED_PUBLIC_KEY_B64`, `ZAIP_LOCAL_RELEASE_POLICY_B64` and
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: zaip-skill-setup
3
- description: Install ZAIP-AIOS and format the final chat response after init, including installations started before this skill was available.
3
+ description: Install or update ZAIP-AIOS and format the final chat response after init, including installations started before this skill was available.
4
4
  ---
5
5
 
6
6
  # Instalar ZAIP-AIOS
@@ -12,11 +12,26 @@ Para Supabase, a instalação nunca cria branch, preview ou custo hospedado. O f
12
12
  Use somente o pacote público `@zaip-ai/cli`: `npx @zaip-ai/cli@latest init`.
13
13
  Para escolher o perfil, acrescente `--profile full|dev-lite|lite` ao comando `init`.
14
14
 
15
+ ## Atualização solicitada
16
+
17
+ Pedido simples de “update”, “atualize o ZAIP” ou equivalente em projeto instalado usa, por padrão,
18
+ `npx --yes @zaip-ai/cli@latest init --force --yes --profile full` (Windows: `npx.cmd`).
19
+ O pedido autoriza a reinstalação com backup automático e a instalação das dependências e
20
+ pré-requisitos do perfil completo, sem nova confirmação ou dry-run obrigatório. Versão, perfil,
21
+ dry-run ou restrições explícitas prevalecem. O primeiro `--yes` aceita baixar a CLI; o segundo
22
+ confirma o force. Preserve as proteções transacionais e de ownership do instalador.
23
+ Se houver falha, diagnostique o erro concreto; não apague arquivos para contorná-la.
24
+ Valide pelo resultado do init e `doctor --json` do runtime instalado, sem auditar abas do
25
+ Dashboard ou exportações XLSX. Informe versão, backup, dependências e pendências observadas.
26
+ Esse fluxo instala dependências ausentes e preserva as já instaladas; não executa `npm update`.
27
+
28
+ ## Instalação inicial
29
+
15
30
  For the isolated SQLite dashboard, also discover and use `$zaip-skill-sqlite-read-model`.
16
31
  Create the disposable dashboard database only from canonical `.agents/records` and
17
32
  `.agents/config` sources.
18
33
 
19
- 1. Se o `init` acabou de concluir neste turno, vá diretamente ao modelo obrigatório de resposta abaixo; não reinstale nem inicie configuração. Para uma nova instalação, confirme que o usuário quer instalar ZAIP-AIOS em um workspace que ainda não o possui. Se já houver `.agents/config/project.yaml`, não reinstale: encaminhe configuração, personalização, primeiros passos ou edição para `$zaip-skill-config`.
34
+ 1. Se o `init` acabou de concluir neste turno, vá diretamente ao modelo obrigatório de resposta abaixo; não reinstale nem inicie configuração. Para uma nova instalação, use o pedido explícito de instalação como autorização. Se já houver `.agents/config/project.yaml` e o pedido for atualização, aplique o fluxo acima; encaminhe configuração, personalização ou primeiros passos para `$zaip-skill-config`.
20
35
  2. Faça dry-run e detecte apenas conflitos que impeçam a instalação inicial, como checksum, ownership ou arquivos do usuário que seriam sobrescritos.
21
36
  3. Verifique Node.js 22+; instale a versão LTS com `winget` somente quando o usuário tiver autorizado a instalação automática do pré-requisito.
22
37
  4. Instale e valide o conteúdo do release: `config/project.yaml`, `config/framework.lock.yaml`, Rules core, Requirements e skills gerenciados pelo manifest, raízes V3 de `records` e, quando distribuído, o dashboard frontend-only em `.agents/dashboard`. Preserve arquivos e Rules locais do projeto.
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "ZAIP Setup"
3
- short_description: "Install ZAIP-AIOS and format the installation reply."
3
+ short_description: "Install or update ZAIP-AIOS and report the result."
4
4
  default_prompt: "Use $zaip-skill-setup to install ZAIP-AIOS or format the final reply after init with Markdown bullets, the installed-version npm link and the final setup question."