@zaip-ai/cli 4.6.0 → 4.8.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 (123) hide show
  1. package/dist/commands/init.js +1 -1
  2. package/dist/commands/init.js.map +1 -1
  3. package/dist/services/adapters.d.ts +1 -1
  4. package/dist/services/adapters.d.ts.map +1 -1
  5. package/dist/services/adapters.js +3 -3
  6. package/dist/services/adapters.js.map +1 -1
  7. package/dist/services/codex-config-overlay.d.ts.map +1 -1
  8. package/dist/services/codex-config-overlay.js +27 -10
  9. package/dist/services/codex-config-overlay.js.map +1 -1
  10. package/dist/services/codex-hook-activation.d.ts.map +1 -1
  11. package/dist/services/codex-hook-activation.js +12 -0
  12. package/dist/services/codex-hook-activation.js.map +1 -1
  13. package/dist/services/codex-pre-tool-hook-template.js +1 -1
  14. package/dist/services/codex-pre-tool-hook-template.test.js +37 -1
  15. package/dist/services/codex-pre-tool-hook-template.test.js.map +1 -1
  16. package/dist/services/global-codex-config-migration-rollback.test.d.ts +2 -0
  17. package/dist/services/global-codex-config-migration-rollback.test.d.ts.map +1 -0
  18. package/dist/services/global-codex-config-migration-rollback.test.js +88 -0
  19. package/dist/services/global-codex-config-migration-rollback.test.js.map +1 -0
  20. package/dist/services/global-codex-config-migration.test.js +69 -82
  21. package/dist/services/global-codex-config-migration.test.js.map +1 -1
  22. package/dist/services/global-codex-config-transaction.test.js +5 -1
  23. package/dist/services/global-codex-config-transaction.test.js.map +1 -1
  24. package/dist/services/global-codex-config.d.ts.map +1 -1
  25. package/dist/services/global-codex-config.js +34 -54
  26. package/dist/services/global-codex-config.js.map +1 -1
  27. package/dist/services/global-codex-config.test.js +3 -1
  28. package/dist/services/global-codex-config.test.js.map +1 -1
  29. package/dist/services/global-codex-toml.d.ts +9 -0
  30. package/dist/services/global-codex-toml.d.ts.map +1 -0
  31. package/dist/services/global-codex-toml.js +53 -0
  32. package/dist/services/global-codex-toml.js.map +1 -0
  33. package/dist/services/hook-readiness.d.ts.map +1 -1
  34. package/dist/services/hook-readiness.js.map +1 -1
  35. package/dist/services/install-agents-template.js +2 -2
  36. package/dist/services/install-agents-template.js.map +1 -1
  37. package/dist/services/logger.d.ts +1 -1
  38. package/dist/services/logger.d.ts.map +1 -1
  39. package/dist/services/logger.js +1 -1
  40. package/dist/services/logger.js.map +1 -1
  41. package/dist/services/logger.test.js +11 -5
  42. package/dist/services/logger.test.js.map +1 -1
  43. package/dist/services/runtime-template-integrity.test.d.ts +2 -0
  44. package/dist/services/runtime-template-integrity.test.d.ts.map +1 -0
  45. package/dist/services/runtime-template-integrity.test.js +26 -0
  46. package/dist/services/runtime-template-integrity.test.js.map +1 -0
  47. package/dist/services/runtime-template-test-support.d.ts.map +1 -1
  48. package/dist/services/runtime-template-test-support.js.map +1 -1
  49. package/dist/services/runtime-template.test.js +18 -21
  50. package/dist/services/runtime-template.test.js.map +1 -1
  51. package/package.json +1 -1
  52. package/templates/.agents/config/agents/discovery.json +1 -1
  53. package/templates/.agents/dashboard/.zaip-managed.json +62 -46
  54. package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-BRtiPijr.js → CostCalculationGuidePage-BW7Vy1cp.js} +1 -1
  55. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-BR4ZeYpE.js → DashboardHelpDialog-BN8KQPrr.js} +2 -2
  56. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-Dr4QDFmn.js → PricingSettingsDialog-Prcs-ydy.js} +1 -1
  57. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BG0N5dw_.js → ProjectSettingsPage-HqGUImIG.js} +1 -1
  58. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-BvoM-YQ0.js → TraceabilityWorkspace-CNpmQMO4.js} +1 -1
  59. package/templates/.agents/dashboard/apps/frontend/dist/assets/{cost-monitor-fTQhSL85.js → cost-monitor-Co2Jiuzh.js} +2 -2
  60. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-Bc6vux5t.js → icons-vendor-DOhy6D2-.js} +1 -1
  61. package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-BMfzKaAR.js → index-DX65Ufuu.js} +2 -2
  62. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-DNJQFov3.js → react-vendor-CkPC-yMz.js} +1 -1
  63. package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-B7tjIB7W.js → traceability-BEdGoIDm.js} +1 -1
  64. package/templates/.agents/dashboard/apps/frontend/dist/index.html +5 -5
  65. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  66. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  67. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  68. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.macro-metrics.test.ts +8 -2
  69. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +6 -6
  70. package/templates/.agents/dashboard/modules/operations/src/react/overview-duration-hint.ts +12 -0
  71. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  72. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  73. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  74. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  75. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +238 -171
  76. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +227 -160
  77. package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
  78. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +240 -173
  79. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-elapsed.ts +107 -0
  80. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +41 -54
  81. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +7 -7
  82. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +5 -5
  83. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +4 -4
  84. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +3 -1
  85. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +9 -7
  86. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +10 -8
  87. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-spec-root-elapsed-view.ts +61 -0
  88. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-spec-root-elapsed.test.ts +210 -0
  89. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  90. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  91. package/templates/.agents/design/.zaip-managed.json +3 -3
  92. package/templates/.agents/design/apps/catalog/package.json +1 -1
  93. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  94. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  95. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  96. package/templates/.agents/requirements/comparative-audit.md +1 -1
  97. package/templates/.agents/requirements/context-engine.md +1 -1
  98. package/templates/.agents/requirements/cost-observability.md +1 -1
  99. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  100. package/templates/.agents/requirements/data-export.md +1 -1
  101. package/templates/.agents/requirements/design-system.md +1 -1
  102. package/templates/.agents/requirements/execution-engine.md +1 -1
  103. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  104. package/templates/.agents/requirements/model-orchestration.md +1 -1
  105. package/templates/.agents/requirements/public-distribution.md +11 -9
  106. package/templates/.agents/requirements/software-architecture.md +1 -1
  107. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  108. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  109. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  110. package/templates/.agents/runtime/VERSION +1 -1
  111. package/templates/.agents/runtime/bin/zaip.mjs +22 -11
  112. package/templates/.agents/runtime/checksums.sha256 +5 -5
  113. package/templates/.agents/runtime/manifest.json +1 -1
  114. package/templates/.agents/runtime/provenance.json +4 -4
  115. package/templates/.agents/runtime/sbom.cdx.json +1 -1
  116. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +2 -0
  117. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract.mjs +16 -3
  118. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract.test.mjs +29 -0
  119. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +2 -0
  120. package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +9 -0
  121. package/templates/.agents/zaip-aios/VERSION +1 -1
  122. package/templates/.agents/zaip-aios/guides/14-troubleshooting.md +1 -1
  123. package/templates/template-manifest.json +99 -83
@@ -1,11 +1,11 @@
1
1
  b146bd0c7c60b1ab43c4f71e0b1d2262c6df6da6f7053a0425f834ccb77a6b48 LICENSE
2
2
  bc02cba77e8d51e5c580f43668863dc868eda66f1ff663bfaa49fcf3ca16320e THIRD_PARTY_NOTICES.md
3
- 656cd3a27fe3b73475a1fc9becaf4a4d06d25b482904d8dab14429787a23657d VERSION
4
- 1b9ca0345ddf81e610cf6c3daa4a7e47bd3cf91a8c8736ced553d75d4b36bacf bin/zaip.mjs
5
- 8ef65e53d200e13b2ef54a75a7157f83ca8d0255b66441c54a14e740a6b7428f manifest.json
3
+ 4938ef88cd76dd7f6297a3d1d0c57af9c8e420e9359e778f3fc3725a8781af0a VERSION
4
+ 20260ddb4f0a306d1ef52bb67b0ad4eb5e6edbdf0af0c1db5e6084b101b15490 bin/zaip.mjs
5
+ 78f229de87d67490a9bbec827e21be6c3c01a19cc1ad26af9bca781e6a0f559b manifest.json
6
6
  7f89219d7c567c82a51679ad136d84364bded7ac659492537e125d33b1d58a7a migrations/001-layout-v1.json
7
7
  5f8c48b286d0b44d8fbb57a9a5d009a8a500439aa3148d750b8f193f72995c9f migrations/002-layout-v2.json
8
8
  33c98d5dc506bba4b8b3ca612706d9eb05ef13d9e03c33a4f9e65ca7804be9d1 pnpm-lock.sha256
9
- 4e899971412e69503e536252c32c3dbc7dbdd7bc2f27c5ff0197a29d3b73f5f4 provenance.json
10
- 44e836088ebfb3d5a8c7ba26379ec5804f66fca31729bcf4f742f76f235ed198 sbom.cdx.json
9
+ d7459fa9108cc5cf7974c46daba9b02d1fa36a6f059c0eefcc8a5ce6ba2a4184 provenance.json
10
+ 5dcd790db0a223a246bc742f6b96bb13e7f93be9495267b0f49de603f770d80f 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": "4.6.0",
4
+ "version": "4.8.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": "4.6.0",
5
+ "version": "4.8.0",
6
6
  "source_origin": "zaip-aios:local-build",
7
7
  "lockfile_sha256": "03d08e5bbb198d74014ea4a806fcdeb350db23ec2bf0c2886a2265066555d418",
8
- "sbom_sha256": "44e836088ebfb3d5a8c7ba26379ec5804f66fca31729bcf4f742f76f235ed198",
9
- "runtime_sha256": "69f4abae0878976691b791b4de9e5e1e5dedfa465417cf17a52c27cb4c62f33f",
10
- "statement_sha256": "baa0bc2195c9c65c50bd8d857d9fa8ee05785467e49fce2718e3e2e811b3a903"
8
+ "sbom_sha256": "5dcd790db0a223a246bc742f6b96bb13e7f93be9495267b0f49de603f770d80f",
9
+ "runtime_sha256": "adb2086da9e7f21c2f9041c50a60ab5f9780e38bc7b51f7f7f3d7b00c07adddf",
10
+ "statement_sha256": "5b480f8fb89b356e35dd20faa6cdff0304e276856bad0049f1466d22ddb538ac"
11
11
  }
@@ -6,7 +6,7 @@
6
6
  "component": {
7
7
  "type": "application",
8
8
  "name": "zaip-aios",
9
- "version": "4.6.0"
9
+ "version": "4.8.0"
10
10
  }
11
11
  },
12
12
  "components": [
@@ -57,4 +57,6 @@ Give a brief chat result with the delivered mode, branch/SHA, Release link when
57
57
 
58
58
  For the verified framework builder, release delivery requires `.agents/config/release-cycle.json` frozen at the version being released, a clean candidate SHA, remote `main` as its ancestor, and no stale branch/worktree. Every owner SPEC DAG predecessor must be completed. The sole open exception is the critical release-only Task coordinator delegated from the owner SPEC/Execution/macro Run; its exact lineage, predecessor states and candidate records are authenticated at freeze, audit and advance. Other current-release Task/PRD/SPEC work blocks. `scripts/local-release-deploy.mjs` runs fixed local checks at the exact SHA without creating a remote candidate branch. It then pushes only `main` and waits for the exact successful `main` push run of `pre-main-candidate.yml` before publishing a Release. A critical framework commit follows the same branch-free sequence through `guarded-commits.mjs`. Failed local checks block the push; failed or unavailable remote CI blocks Release publication and requires repair on `main`.
59
59
 
60
+ When the same authorized direct Task root implements the product repair and release, the explicit integrated coordinator mode in `$zaip-skill-release-qualification` can freeze while that Task and Run are active. It keeps the clean exact-SHA, only-main, no-other-work, independent validation and publication gates. Record this selection in the frozen cycle; it does not create a second Task or client turn.
61
+
60
62
  After a published release, use `node scripts/release-cycle-gate.mjs advance --repository ROOT --from N.N --to NEXT --sha CANDIDATE --ci-run-id RUN_ID` while the release coordinator remains active. This checks remote main, tag, published Release, exact successful CI, local branch/worktree cleanup and owner lineage before recording the transition. Bind Evidence to that immutable candidate, close Task and SPEC, then make one metadata-only closure commit. `node scripts/local-release-deploy.mjs push-closure --repository ROOT --expected-repository zaip-ai/zaip-aios --branch main --version N.N --published-sha CANDIDATE --closure-sha CLOSURE --expected-remote-sha CANDIDATE --metadata-paths-file REVIEWED_JSON` verifies tag, public Release, npm, the candidate's recorded exact CI run, one descendant metadata commit, exact remote main and only-main before pushing; it waits for CI on the closure SHA. The reviewed JSON is an array of exact changed metadata paths, including causal telemetry when present. `--metadata-paths EXACT,PATHS` is available for a short list. Do not retag or treat local lifecycle closure as remotely published. It does not prove provider deployment. Future drafts can remain in `draft`; executable future work cannot.
@@ -87,13 +87,25 @@ export function requestedDeployment(request) {
87
87
  const releaseDirective = /\bpreciso que crie (?:uma |a )?nova versao\s+v?\d+\.\d+\b/.test(
88
88
  withoutCourtesy,
89
89
  );
90
+ const proceedToVersion =
91
+ /^(?:pode\s+)?(?:seguir|continue|avancar)\s+para\s+(?:a\s+)?v\d+\.\d+\b/.test(withoutCourtesy);
92
+ const finalAdjustmentsToPublish =
93
+ /^(?:ativei\s+(?:o\s+hook|os\s+hooks)[, ]+)?(?:faca|realize|execute)\s+(?:as\s+validacoes\s+finais(?:\s+e\s+os\s+ajustes\s+necessarios)?|os\s+ajustes\s+necessarios)\s+(?:pra|para)\s+publicar\s+(?:a\s+)?v\d+\.\d+\b/.test(
94
+ withoutCourtesy,
95
+ );
96
+ const waitsForAuthorization =
97
+ /\b(?:quando|se|apos|depois)\b[^?]*\b(?:autorizar|aprovar|confirmar|autorizacao|aprovacao|confirmacao)\b/.test(
98
+ text,
99
+ );
90
100
  const direct =
91
101
  /^(?:(?:pode|podemos)\s+)?(?:(?:faca|fazer|faz|realize|execute|do)\s+)?(?:deploy|dpeloy|depoly|push|commit|publique|publicar|publish|envie|release|prepare|preparar)\b/.test(
92
102
  withoutCourtesy,
93
103
  ) ||
94
104
  sequencedDirect ||
95
- releaseDirective;
96
- if (!direct || /\?/.test(text))
105
+ releaseDirective ||
106
+ proceedToVersion ||
107
+ finalAdjustmentsToPublish;
108
+ if (!direct || /\?/.test(text) || waitsForAuthorization)
97
109
  return { authorized: false, reason: "not-a-direct-deployment-request" };
98
110
  const noRelease =
99
111
  /\b(?:sem|nao)\s+(?:(?:quero|criar|fazer|publicar|publique|crie|faca)\s+)?(?:(?:um|uma|o|a|novo|nova)\s+)*(?:release|nova versao|proxima versao|versao)\b/.test(
@@ -108,7 +120,8 @@ export function requestedDeployment(request) {
108
120
  `\\b(?:deploy|dpeloy|depoly|publique|publicar|publish|release|prepare|preparar)\\s+(?:com\\s+)?${releaseTarget}\\b`,
109
121
  ).test(text) ||
110
122
  /^release\b/.test(withoutCourtesy) ||
111
- releaseDirective;
123
+ releaseDirective ||
124
+ proceedToVersion;
112
125
  const nonPublication = text.replace(
113
126
  /\bnao\s+(?:publique|publicar)\s+(?:(?:um|uma|o|a|novo|nova)\s+)*release\b/g,
114
127
  "",
@@ -51,6 +51,7 @@ test("fixed defaults, explicit intent and preparation: Portuguese/English decisi
51
51
  ["publish new release", "release", "publish"],
52
52
  ["deploy next version", "release", "publish"],
53
53
  ["faça deploy v4.6", "release", "publish"],
54
+ ["pode seguir para v4.7, mas garanta que o dashboard esteja correto", "release", "publish"],
54
55
  ["prepare a próxima versão", "release", "prepare"],
55
56
  ["faça deploy release sem publicar", "release", "prepare"],
56
57
  ["faça deploy e explique quando devo pedir release", null, "publish"],
@@ -97,6 +98,34 @@ test("discussion, quoted history, negation and questions never authorize publica
97
98
  );
98
99
  assert.throws(() => resolveDeployment(input("faça deploy release v4.6 e v4.7")), /versions/);
99
100
  assert.equal(resolveDeployment(input("faça deploy v4.6")).version, "4.6");
101
+ assert.equal(resolveDeployment(input("pode seguir para v4.7", builder)).version, "4.7");
102
+ assert.equal(resolveDeployment(input("pode seguir para v4.7?", builder)).mode, "none");
103
+ });
104
+
105
+ test("final adjustments with an explicit publication goal preserve the actual human request", () => {
106
+ for (const request of [
107
+ "ativei o hook faça as validações finais e os ajustes necessários pra publicar v4.8",
108
+ "faça os ajustes necessários para publicar v4.8",
109
+ ]) {
110
+ const plan = resolveDeployment(input(request, builder));
111
+ assert.equal(plan.mode, "release");
112
+ assert.equal(plan.phase, "publish");
113
+ assert.equal(plan.version, "4.8");
114
+ }
115
+ for (const request of [
116
+ "explique os ajustes necessários para publicar v4.8",
117
+ "não faça os ajustes necessários para publicar v4.8",
118
+ "faça os ajustes necessários para publicar v4.8?",
119
+ "faça os ajustes necessários para publicar v4.8 quando eu autorizar",
120
+ "o usuário disse 'faça os ajustes necessários para publicar v4.8'",
121
+ ]) {
122
+ assert.equal(resolveDeployment(input(request, builder)).mode, "none", request);
123
+ }
124
+ const prepare = resolveDeployment(
125
+ input("faça os ajustes necessários para publicar v4.8, mas não publique ainda", builder),
126
+ );
127
+ assert.equal(prepare.phase, "prepare");
128
+ assert.equal(prepare.npm_publication, false);
100
129
  });
101
130
  test("preferences are project-owned; one-shot overrides, scope and invalid config are explicit", () => {
102
131
  const preference = { ...DEFAULT_POLICY, default_mode: "release" };
@@ -45,6 +45,8 @@ Recover under the frozen Task autonomy profile: balanced permits 10 executions t
45
45
 
46
46
  The framework release cut uses `node scripts/release-cycle-gate.mjs freeze --repository ROOT --version N.N --release-task TASK-ID --release-run RUN-ID`. The exceptional coordinator is the critical, release-only Task at the end of the owner SPEC's exact Execution DAG. Every predecessor Task must be completed; only the release Task may still execute. Its delegated Task orchestrator Run must be active under that SPEC's active macro Run. `audit` and `advance` recheck predecessor status and authenticate the same Task, Run, SPEC, Execution and committed candidate records; only the release Task and owner SPEC are exempt from the open-work gate. Unrelated work remains blocked. The candidate commits the frozen cycle before qualification. The deploy helper checks its exact SHA, pushes only `main`, and requires successful CI on that SHA before publication.
47
47
 
48
+ For an authorized Task-first request that combines a product fix and its release in one direct Task root, use the explicit `--integrated-task` freeze option with that Task and active root Run. The Task must be critical, target the current release, own the release-cycle config scope and have a delivery Execution bound to its Change. `audit` and `advance` authenticate its committed Task and Run start, while all other current-release work, secondary worktrees and remote branches still block. This route avoids creating a second root Run or asking the user for a new turn solely to publish already authorized work. Do not use it for a delegated SPEC release Task or as a general waiver for release checks.
49
+
48
50
  For the one-time 4.5→4.6 recovery, `adopt-published` requires the published 4.5 tag to be an ancestor of remote `main`, remote `main` to be an ancestor of clean local `main`, and observed stable GitHub Release/npm integrity. Pass the exact owner `--owner-spec`, `--owner-execution`, `--owner-run`, planned `--release-task` and active delegated Task orchestrator `--actor-run`. That actor must own the release Task's unique direct predecessor; all earlier DAG Tasks must be completed. Only the actor Task, planned release Task and owner SPEC are exempt from the open-work gate. After review/Evidence and a clean metadata checkpoint, perform adoption while that predecessor Task and its actor Run are still active. Then use `spec retarget-release SPEC --from 4.5 --to 4.6 --run DELEGATED_TASK_RUN` with the same actor Run. Close the predecessor Task through Gui only after retarget; start the release Task afterward. The revision records adoption SHA and actor Run, and the release Task's missing target resolves through its owner SPEC. Do not edit records directly to retarget.
49
51
 
50
52
  After exact Release, npm and candidate CI are observed, `advance --from N.N --to NEXT --sha CANDIDATE --ci-run-id ID` opens the next cycle while the coordinator remains active. Bind Task/SPEC Evidence to the immutable published candidate before Gui, then close Task and parent SPEC. Make one reviewed metadata-only closure commit; push that exact local main SHA through `scripts/local-release-deploy.mjs push-closure` with published SHA, expected remote SHA and the exact metadata path inventory. The tag remains on the published candidate. Confirm CI on the new main SHA; local closure alone is not complete publication. This contract does not prove provider deployment.
@@ -147,6 +147,15 @@ reviewed UTF-8 sources at these fixed repository-local, ignored paths:
147
147
  .local/release-notes-v4.6.inventory.json
148
148
  ```
149
149
 
150
+ For subsequent minor releases, use the same reviewed-input procedure with version-bound names:
151
+ `.local/deploy-request-vNN.txt`, `.local/release-notes-vN.N.md`, and
152
+ `.local/release-notes-vN.N.inventory.json`; the private policy is
153
+ `policy-vN.N-essential.json` and the candidate is `vN.N-essential-<sha8>-<YYYYMMDD>`.
154
+ The stage helpers validate the explicit current version, prior minor tag, signed receipt,
155
+ human release intent and full candidate inventory. A direct instruction such as
156
+ “pode seguir para v4.7” authorizes that exact next version only when the request resolver
157
+ classifies it as a publication request. The prior v4.6 names remain valid only for v4.6.
158
+
150
159
  The notes require semantic review of the full v4.5-to-candidate Git range; the inventory
151
160
  maps every changed file to the reviewed category bullets. The validator can check
152
161
  structure and coverage, while the agent must check whether the claims are accurate.
@@ -1 +1 @@
1
- 4.6
1
+ 4.8
@@ -49,7 +49,7 @@ com o hook ativo e compare o motivo, a sessão e o turno da nova execução.
49
49
  | Executor nativo bloqueado por correlação | Conferir sessão do pai + turno do filho, além da sessão nativa do filho. Registrar somente vínculo comprovado; não usar a Task global mais recente. |
50
50
  | Busca textual por `AC-...`, `Remove-Item` ou `;` | Diferenciar argumento literal de comando executável. Leituras literais não viram mutação por palavras na pesquisa; redirecionamentos e composição destrutiva continuam protegidos. |
51
51
  | Git com separadores | Um separador dentro de argumento entre aspas é texto. Separadores fora das aspas continuam exigindo chamadas Git separadas. |
52
- | Hook repetido em Usuário e Projeto | O instalador só retira registro global reconhecidamente ZAIP após verificar os hooks canônicos do projeto; preserva terceiros e mantém fallback quando não houver confirmação. |
52
+ | Hook repetido em Usuário e Projeto | O instalador retira registros globais reconhecidamente ZAIP com backup somente depois de verificar os hooks do projeto, preserva hooks de terceiros e mantém os hooks ZAIP em `.codex/config.toml` e `.codex/hooks/` do projeto. Se a verificação local falhar, preserva o hook global legado e informa o bloqueio. Se a migração não reconhecer um hook antigo, revise apenas esse registro; não instale fallback global. |
53
53
 
54
54
  O vínculo local do executor é conferido contra os escopos e o estado da Task
55
55
  canônica. Ele não permite que o filho edite seus próprios bindings ou registros