@zaip-ai/cli 1.4.3 → 2.2.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 (190) hide show
  1. package/README.md +33 -14
  2. package/dist/services/adapter-hook-sources.d.ts +1 -0
  3. package/dist/services/adapter-hook-sources.d.ts.map +1 -1
  4. package/dist/services/adapter-hook-sources.js +1 -0
  5. package/dist/services/adapter-hook-sources.js.map +1 -1
  6. package/dist/services/adapters.d.ts +1 -1
  7. package/dist/services/adapters.d.ts.map +1 -1
  8. package/dist/services/adapters.js +20 -16
  9. package/dist/services/adapters.js.map +1 -1
  10. package/dist/services/agent-adapters.d.ts +97 -34
  11. package/dist/services/agent-adapters.d.ts.map +1 -1
  12. package/dist/services/agent-adapters.js +279 -54
  13. package/dist/services/agent-adapters.js.map +1 -1
  14. package/dist/services/agent-adapters.test.js +13 -7
  15. package/dist/services/agent-adapters.test.js.map +1 -1
  16. package/dist/services/codex-conversation-lifecycle-hook.d.ts +2 -0
  17. package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -0
  18. package/dist/services/codex-conversation-lifecycle-hook.js +29 -0
  19. package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -0
  20. package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
  21. package/dist/services/codex-pre-tool-hook-template.js +173 -0
  22. package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
  23. package/dist/services/codex-subagent-hook-template.d.ts +1 -1
  24. package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
  25. package/dist/services/codex-subagent-hook-template.js +1 -1
  26. package/dist/services/doctor.js +2 -2
  27. package/dist/services/install-agents-template.d.ts.map +1 -1
  28. package/dist/services/install-agents-template.js +117 -5
  29. package/dist/services/install-agents-template.js.map +1 -1
  30. package/dist/services/logger.js +1 -1
  31. package/dist/services/logger.js.map +1 -1
  32. package/dist/services/logger.test.js +2 -2
  33. package/dist/services/runtime-template.test.js +9 -1
  34. package/dist/services/runtime-template.test.js.map +1 -1
  35. package/dist/services/stack-git.d.ts +3 -0
  36. package/dist/services/stack-git.d.ts.map +1 -1
  37. package/dist/services/stack-git.js +24 -3
  38. package/dist/services/stack-git.js.map +1 -1
  39. package/dist/services/template-manifest.d.ts.map +1 -1
  40. package/dist/services/template-manifest.js +3 -1
  41. package/dist/services/template-manifest.js.map +1 -1
  42. package/dist/services/transactional-files.d.ts +2 -1
  43. package/dist/services/transactional-files.d.ts.map +1 -1
  44. package/dist/services/transactional-files.js +8 -3
  45. package/dist/services/transactional-files.js.map +1 -1
  46. package/package.json +2 -2
  47. package/templates/.agents/README-ENG.md +735 -0
  48. package/templates/.agents/README.md +49 -43
  49. package/templates/.agents/architecture/hostinger-cloudflare-terraform.md +90 -0
  50. package/templates/.agents/config/agents/catalog.yaml +18 -18
  51. package/templates/.agents/config/autonomous-cloud-inputs.json +41 -0
  52. package/templates/.agents/config/clients/codex/agents/zaip-agent-analyst.toml +3 -6
  53. package/templates/.agents/config/clients/codex/agents/zaip-agent-auditor.toml +3 -6
  54. package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +3 -6
  55. package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +6 -8
  56. package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +3 -6
  57. package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +3 -6
  58. package/templates/.agents/config/clients/codex/agents/zaip-agent-data-analyst.toml +5 -7
  59. package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +3 -6
  60. package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +3 -6
  61. package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +3 -6
  62. package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +6 -8
  63. package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +3 -6
  64. package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +6 -8
  65. package/templates/.agents/config/clients/codex/agents/zaip-agent-integrator.toml +3 -6
  66. package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +6 -8
  67. package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +4 -5
  68. package/templates/.agents/config/clients/codex/agents/zaip-agent-refactoring-specialist.toml +3 -6
  69. package/templates/.agents/config/clients/codex/agents/zaip-agent-reviewer.toml +3 -6
  70. package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +6 -8
  71. package/templates/.agents/config/clients/codex/agents/zaip-agent-security-auditor.toml +3 -6
  72. package/templates/.agents/config/clients/codex/agents/zaip-agent-task-executor.toml +3 -6
  73. package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +3 -6
  74. package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +3 -6
  75. package/templates/.agents/config/pricing/models.json +53 -33
  76. package/templates/.agents/dashboard/.zaip-managed.json +64 -44
  77. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-oZVlf-l5.js → DashboardHelpDialog-DaSllaJp.js} +118 -16
  78. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-BYjVOHI_.js → TraceabilityWorkspace-BCvZFMEf.js} +1 -1
  79. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-_MEktQNM.js +2 -0
  80. package/templates/.agents/dashboard/apps/frontend/dist/index.html +2 -2
  81. package/templates/.agents/dashboard/apps/frontend/index.html +1 -1
  82. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  83. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +28 -9
  84. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +27 -0
  85. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +13 -29
  86. package/templates/.agents/dashboard/apps/frontend/src/dashboard-identity.test.ts +43 -0
  87. package/templates/.agents/dashboard/apps/frontend/src/dashboard-identity.ts +32 -0
  88. package/templates/.agents/dashboard/apps/frontend/src/dashboard-project-overview.ts +28 -0
  89. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +2 -2
  90. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  91. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  92. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  93. package/templates/.agents/dashboard/modules/traceability/src/contracts.ts +1 -1
  94. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  95. package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
  96. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  97. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  98. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +206 -206
  99. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +169 -169
  100. package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
  101. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +206 -206
  102. package/templates/.agents/dashboard/packages/local-runtime/src/server-identity.test.ts +42 -0
  103. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +41 -0
  104. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +1 -0
  105. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +2 -2
  106. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.ts +6 -3
  107. package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +1 -1
  108. package/templates/.agents/dashboard/packages/local-runtime/src/server.test-fixtures.ts +1 -1
  109. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +1 -13
  110. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +11 -3
  111. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-refresh.test.ts +55 -0
  112. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +9 -6
  113. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.test.ts +22 -0
  114. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.ts +10 -8
  115. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +68 -2
  116. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +39 -10
  117. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-seed.test.ts +47 -42
  118. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  119. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  120. package/templates/.agents/design/.zaip-managed.json +41 -41
  121. package/templates/.agents/design/apps/catalog/package.json +1 -1
  122. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  123. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  124. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  125. package/templates/.agents/requirements/comparative-audit.md +1 -1
  126. package/templates/.agents/requirements/context-engine.md +1 -1
  127. package/templates/.agents/requirements/cost-observability.md +1 -1
  128. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  129. package/templates/.agents/requirements/data-export.md +1 -1
  130. package/templates/.agents/requirements/design-system.md +1 -1
  131. package/templates/.agents/requirements/execution-engine.md +1 -1
  132. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  133. package/templates/.agents/requirements/model-orchestration.md +15 -5
  134. package/templates/.agents/requirements/public-distribution.md +3 -3
  135. package/templates/.agents/requirements/software-architecture.md +1 -1
  136. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  137. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  138. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  139. package/templates/.agents/rules/astra-diagnostic.md +20 -0
  140. package/templates/.agents/rules/core.md +9 -14
  141. package/templates/.agents/rules/meta-mcp.md +1 -0
  142. package/templates/.agents/rules/run-lifecycle-closure.md +1 -1
  143. package/templates/.agents/rules/specialist-routing.md +3 -1
  144. package/templates/.agents/runtime/VERSION +1 -1
  145. package/templates/.agents/runtime/bin/zaip.mjs +95 -61
  146. package/templates/.agents/runtime/checksums.sha256 +6 -6
  147. package/templates/.agents/runtime/manifest.json +1 -1
  148. package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
  149. package/templates/.agents/runtime/provenance.json +5 -5
  150. package/templates/.agents/runtime/sbom.cdx.json +1 -1
  151. package/templates/.agents/skills/zaip-aios/SKILL.md +4 -2
  152. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +2 -0
  153. package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +17 -0
  154. package/templates/.agents/skills/zaip-skill-general-operations/SKILL.md +6 -7
  155. package/templates/.agents/skills/zaip-skill-general-operations/references/extended-workflow.md +7 -0
  156. package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +5 -0
  157. package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/SKILL.md +54 -0
  158. package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/agents/openai.yaml +4 -0
  159. package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/assets/.env.example +9 -0
  160. package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/references/operational-procedure.md +137 -0
  161. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +7 -19
  162. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/references/extended-workflow.md +21 -0
  163. package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +7 -14
  164. package/templates/.agents/skills/zaip-skill-marketing/references/extended-workflow.md +16 -0
  165. package/templates/.agents/skills/zaip-skill-meta-ads-setup/SKILL.md +2 -0
  166. package/templates/.agents/skills/zaip-skill-meta-token-onboarding/SKILL.md +17 -0
  167. package/templates/.agents/skills/zaip-skill-meta-token-onboarding/agents/openai.yaml +4 -0
  168. package/templates/.agents/skills/zaip-skill-meta-token-onboarding/references/onboarding-manual.md +96 -0
  169. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +4 -0
  170. package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +8 -18
  171. package/templates/.agents/skills/zaip-skill-sales-methodology/references/extended-workflow.md +20 -0
  172. package/templates/.agents/skills/zaip-skill-setup/SKILL.md +4 -1
  173. package/templates/.agents/skills/zaip-skill-text-encoding/SKILL.md +1 -1
  174. package/templates/.agents/zaip-aios/INDEX.md +1 -1
  175. package/templates/.agents/zaip-aios/README.md +6 -0
  176. package/templates/.agents/zaip-aios/VERSION +1 -1
  177. package/templates/.agents/zaip-aios/guides/08-contexto-e-tokens.md +19 -3
  178. package/templates/.agents/zaip-aios/guides/12-instalacao-e-upgrade.md +37 -7
  179. package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +14 -1
  180. package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +32 -3
  181. package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +21 -0
  182. package/templates/infra/terraform/terraform.tfvars.example +2 -1
  183. package/templates/template-manifest.json +234 -150
  184. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-ZJFXmK7m.js +0 -2
  185. /package/templates/.agents/{data → records}/changes/.gitkeep +0 -0
  186. /package/templates/.agents/{data → records}/executions/.gitkeep +0 -0
  187. /package/templates/.agents/{data → records}/prds/.gitkeep +0 -0
  188. /package/templates/.agents/{data → records}/runs/.gitkeep +0 -0
  189. /package/templates/.agents/{data → records}/specs/.gitkeep +0 -0
  190. /package/templates/.agents/{data → records}/tasks/.gitkeep +0 -0
@@ -1,4 +1,4 @@
1
- import { copyFile, mkdir, mkdtemp, readdir, rm, writeFile } from "node:fs/promises";
1
+ import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
2
2
  import { tmpdir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { DatabaseSync } from "node:sqlite";
@@ -17,24 +17,53 @@ afterEach(async () => {
17
17
  });
18
18
 
19
19
  describe("SQLite snapshot seed publication", () => {
20
+ it("rebuilds schema-73 parser state from unchanged current data", async () => {
21
+ const root = await mkdtemp(join(tmpdir(), "zaip-schema-74-parser-"));
22
+ roots.push(root);
23
+ const task = join(root, ".agents", "data", "tasks", "TASK-CURRENT.md");
24
+ await mkdir(join(root, ".agents", "config"), { recursive: true });
25
+ await mkdir(join(root, ".agents", "data", "tasks"), { recursive: true });
26
+ await writeFile(join(root, ".agents", "config", "project.yaml"), "zaip:\n enabled: true\n");
27
+ await writeFile(
28
+ task,
29
+ "---\nid: TASK-CURRENT\ntitle: Current parser record\nstatus: executing\ncreated_at: 2026-09-05T12:00:00.000Z\n---\n",
30
+ );
31
+ const first = await rebuildSqliteReadModel(root);
32
+ const before = await readFile(task, "utf8");
33
+ const stale = new DatabaseSync(first.path);
34
+ try {
35
+ stale.exec(
36
+ "UPDATE zaip_aios_activities SET payload_json=json_set(payload_json, '$.value', '73') WHERE payload_type='metadata' AND json_extract(payload_json, '$.key')='schema_version'; UPDATE zaip_aios_activities SET payload_json='[]' WHERE payload_type='parsed_source';",
37
+ );
38
+ } finally {
39
+ stale.close();
40
+ }
41
+
42
+ await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
43
+ expect(await readFile(task, "utf8")).toBe(before);
44
+ const served = new SqliteReadModelFileSystem(root);
45
+ try {
46
+ expect(served.canonicalWorkPage("task", { from: null, to: null }, 0, 10)).toMatchObject({
47
+ rows: [expect.objectContaining({ id: "TASK-CURRENT", title: "Current parser record" })],
48
+ });
49
+ } finally {
50
+ served.close();
51
+ }
52
+ });
53
+
20
54
  it.each([
21
55
  "old-schema",
22
56
  "missing-index",
23
- ])("rebuilds incompatible %s generations and stale seeds", async (damage) => {
57
+ ])("rebuilds incompatible %s launcher-selected generations", async (damage) => {
24
58
  const root = await mkdtemp(join(tmpdir(), "zaip-snapshot-index-upgrade-"));
25
59
  roots.push(root);
26
60
  await mkdir(join(root, ".agents", "config"), { recursive: true });
27
61
  await writeFile(join(root, ".agents", "config", "project.yaml"), "zaip:\n enabled: true\n");
28
62
  const destination = join(root, ".local", "dashboard-sqlite", "read-model.sqlite");
29
- const cacheDirectory = join(root, ".local", "dashboard-sqlite", "cache");
30
63
  vi.stubEnv("ZAIP_SQLITE_DB_PATH", destination);
31
- vi.stubEnv("ZAIP_SQLITE_CACHE_DIR", cacheDirectory);
32
- vi.stubEnv("ZAIP_SQLITE_PREFER_LAST_VALID_SEED", "1");
33
64
  try {
34
65
  await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
35
- const seedName = (await readdir(cacheDirectory)).find((name) => name.endsWith(".sqlite"));
36
- if (seedName === undefined) throw new Error("Expected the rebuilt seed");
37
- for (const path of [destination, join(cacheDirectory, seedName)]) {
66
+ for (const path of [destination]) {
38
67
  const database = new DatabaseSync(path);
39
68
  try {
40
69
  if (damage === "missing-index")
@@ -49,14 +78,14 @@ describe("SQLite snapshot seed publication", () => {
49
78
  }
50
79
  await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
51
80
  expect(() => validateSqliteReadModelSchema(destination)).not.toThrow();
52
- await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "stale_seed" });
81
+ await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "generation" });
53
82
  expect(() => validateSqliteReadModelSchema(destination)).not.toThrow();
54
83
  } finally {
55
84
  vi.unstubAllEnvs();
56
85
  }
57
86
  });
58
87
 
59
- it("skips a newer incomplete seed and materializes the prior complete cache", async () => {
88
+ it("rebuilds the launcher-selected database without using a hidden seed cache", async () => {
60
89
  const root = await mkdtemp(join(tmpdir(), "zaip-snapshot-seed-"));
61
90
  roots.push(root);
62
91
  const task = join(root, ".agents", "records", "tasks", "task.md");
@@ -65,17 +94,6 @@ describe("SQLite snapshot seed publication", () => {
65
94
  await writeFile(join(root, ".agents", "config", "project.yaml"), "zaip:\n enabled: true\n");
66
95
  await writeFile(task, "# original\n");
67
96
  await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
68
- const cacheDirectory = join(root, ".local", "dashboard-sqlite", "cache");
69
- const completeName = (await readdir(cacheDirectory)).find((name) => name.endsWith(".sqlite"));
70
- expect(completeName).toBeDefined();
71
- if (completeName === undefined) throw new Error("Expected a complete SQLite seed");
72
- const incomplete = join(cacheDirectory, "v67-ff5-incomplete-newest.sqlite");
73
- await copyFile(join(cacheDirectory, completeName), incomplete);
74
- const incompleteDatabase = new DatabaseSync(incomplete);
75
- incompleteDatabase
76
- .prepare("DELETE FROM zaip_aios_activities WHERE payload_type='first_fold_all_time_cache'")
77
- .run();
78
- incompleteDatabase.close();
79
97
  await writeFile(task, "# changed canonically\n");
80
98
  const previousPath = process.env.ZAIP_SQLITE_DB_PATH;
81
99
  const previousSeed = process.env.ZAIP_SQLITE_PREFER_LAST_VALID_SEED;
@@ -83,7 +101,7 @@ describe("SQLite snapshot seed publication", () => {
83
101
  process.env.ZAIP_SQLITE_DB_PATH = join(root, ".local", "dashboard-sqlite", "next.sqlite");
84
102
  process.env.ZAIP_SQLITE_PREFER_LAST_VALID_SEED = "1";
85
103
  await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({
86
- cache: "stale_seed",
104
+ cache: "rebuilt",
87
105
  files: 2,
88
106
  });
89
107
  const served = new SqliteReadModelFileSystem(root);
@@ -101,7 +119,7 @@ describe("SQLite snapshot seed publication", () => {
101
119
  }
102
120
  });
103
121
 
104
- it("uses a compatible stale seed before source inventory when launcher policy requests it", async () => {
122
+ it("rebuilds current canonical data before source inventory is declared current", async () => {
105
123
  const root = await mkdtemp(join(tmpdir(), "zaip-snapshot-seed-early-"));
106
124
  roots.push(root);
107
125
  await mkdir(join(root, ".agents", "records", "tasks"), { recursive: true });
@@ -119,11 +137,9 @@ describe("SQLite snapshot seed publication", () => {
119
137
  process.env.ZAIP_SQLITE_PREFER_LAST_VALID_SEED = "1";
120
138
  process.env.ZAIP_DASHBOARD_LAUNCH_PROGRESS = "1";
121
139
  await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({
122
- cache: "stale_seed",
123
- fingerprint_ms: 0,
140
+ cache: "rebuilt",
124
141
  });
125
- expect(stderr.mock.calls.join("\n")).toContain('"phase":"stale_seed_ready"');
126
- expect(stderr.mock.calls.join("\n")).not.toContain('"phase":"source_fingerprint_started"');
142
+ expect(stderr.mock.calls.join("\n")).toContain('"phase":"source_fingerprint_started"');
127
143
  } finally {
128
144
  stderr.mockRestore();
129
145
  if (previousPath === undefined) delete process.env.ZAIP_SQLITE_DB_PATH;
@@ -146,16 +162,8 @@ describe("SQLite snapshot seed publication", () => {
146
162
  "---\nid: TASK-SEED-POPULATION\ntitle: Seed population\nstatus: ready\nrisk: standard\ncreated_at: 2026-08-01T12:00:00.000Z\n---\n# Seed population\n",
147
163
  );
148
164
  await rebuildSqliteReadModel(root);
149
- const seed = join(
150
- root,
151
- ".local",
152
- "dashboard-sqlite",
153
- "cache",
154
- (await readdir(join(root, ".local", "dashboard-sqlite", "cache"))).find((name) =>
155
- name.endsWith(".sqlite"),
156
- ) ?? "missing.sqlite",
157
- );
158
- const database = new DatabaseSync(seed);
165
+ const built = await rebuildSqliteReadModel(root);
166
+ const database = new DatabaseSync(built.path);
159
167
  try {
160
168
  database
161
169
  .prepare(
@@ -179,11 +187,8 @@ describe("SQLite snapshot seed publication", () => {
179
187
  "---\nid: TASK-SEED-HISTORICAL\ntitle: Historical seed task\nstatus: ready\nrisk: standard\ncreated_at: 2026-07-01T12:00:00.000Z\n---\n# Historical seed task\n",
180
188
  );
181
189
  await rebuildSqliteReadModel(root);
182
- const cacheDirectory = join(root, ".local", "dashboard-sqlite", "cache");
183
- const seedName = (await readdir(cacheDirectory)).find((name) => name.endsWith(".sqlite"));
184
- expect(seedName).toBeDefined();
185
- if (seedName === undefined) throw new Error("Expected a complete SQLite seed");
186
- const database = new DatabaseSync(join(cacheDirectory, seedName), { readOnly: true });
190
+ const built = await rebuildSqliteReadModel(root);
191
+ const database = new DatabaseSync(built.path, { readOnly: true });
187
192
  try {
188
193
  expect(hasRequiredFirstFoldPayloads(database)).toBe(true);
189
194
  } finally {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaip-ai/dashboard-ui",
3
- "version": "1.3.0",
3
+ "version": "2.2.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaip-ai/dashboard-e2e",
3
- "version": "1.3.0",
3
+ "version": "2.2.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,7 +1,15 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "1.3.0",
3
+ "version": "2.2.0",
4
4
  "files": [
5
+ {
6
+ "path": "DESIGN.md",
7
+ "sha256": "9970e5040403dfe41b86651128b691ddb3ee6f5e9909cebfacf0a614555cb7f6"
8
+ },
9
+ {
10
+ "path": "README.md",
11
+ "sha256": "7efaff80b0a1add169646dc250b84d5b3a42378c57f6e891bab51ac2bb0e4b50"
12
+ },
5
13
  {
6
14
  "path": "apps/catalog/.storybook/main.ts",
7
15
  "sha256": "d3b2540af9898ed7cf4e360a553bc9c84b0270150fe9114b23bbfb07cc527c1b"
@@ -30,14 +38,34 @@
30
38
  "path": "apps/catalog/dist/logo_novo_azul.png",
31
39
  "sha256": "bb6043bda9fc53a111aaea4d6a004559b9ce8a3569691c060d217a7c6aafa0ae"
32
40
  },
33
- {
34
- "path": "apps/catalog/dist/storybook/assets/axe-Bk3eEgJf.js",
35
- "sha256": "7859f7599f0e67573826ead33b5670064e35a6b44d09b5da87c8bfc758f2b2ea"
36
- },
37
41
  {
38
42
  "path": "apps/catalog/dist/storybook/assets/CatalogShell-BWY-80s4.js",
39
43
  "sha256": "84d451e4102b3f22bb5ad5862f7c1639929f12a1b972ec390076b49381814e0c"
40
44
  },
45
+ {
46
+ "path": "apps/catalog/dist/storybook/assets/Color-6AOWCN3U-B-kAgAjB.js",
47
+ "sha256": "0e3ac0b9820668e73414175d055967f9d49bb2e7d826cdbd4aa6cd7fd384a713"
48
+ },
49
+ {
50
+ "path": "apps/catalog/dist/storybook/assets/Components.stories-Be2mDUQj.js",
51
+ "sha256": "2981c30e093c3a23616f465a6afc1bc287732692af998d608593598a731c97c4"
52
+ },
53
+ {
54
+ "path": "apps/catalog/dist/storybook/assets/DesignSystem.stories-DRx9blDs.js",
55
+ "sha256": "3471400ec1a7cf9cce8f1e58068f91ebe416d34aea4be99a2431aeb0dba776a2"
56
+ },
57
+ {
58
+ "path": "apps/catalog/dist/storybook/assets/DocsRenderer-JROSPFPF-BVN7xHtv.js",
59
+ "sha256": "162d64f939550ce9e9582f15e3befbb7a8d5fdcc502410ed88262994d6cb82ce"
60
+ },
61
+ {
62
+ "path": "apps/catalog/dist/storybook/assets/WithTooltip-7X4HQR7L-CDHtKYkz.js",
63
+ "sha256": "9be8ec095a76bf6993527027d4fd16ed5a97340c31de0bf86d1658840989aabe"
64
+ },
65
+ {
66
+ "path": "apps/catalog/dist/storybook/assets/axe-Bk3eEgJf.js",
67
+ "sha256": "7859f7599f0e67573826ead33b5670064e35a6b44d09b5da87c8bfc758f2b2ea"
68
+ },
41
69
  {
42
70
  "path": "apps/catalog/dist/storybook/assets/chunk-242VQQM5-DB2JSNUA.js",
43
71
  "sha256": "99518b5bd7da5186fe889de049274f734939938a15b2a6ff4fd72b09b89ddf3b"
@@ -54,26 +82,10 @@
54
82
  "path": "apps/catalog/dist/storybook/assets/chunk-W22LQPXL-B4m5uloN.js",
55
83
  "sha256": "8c45d2277c1a1c93f0bdc62c0122c515babacff466bb79538c95c1f885e76a1b"
56
84
  },
57
- {
58
- "path": "apps/catalog/dist/storybook/assets/Color-6AOWCN3U-B-kAgAjB.js",
59
- "sha256": "0e3ac0b9820668e73414175d055967f9d49bb2e7d826cdbd4aa6cd7fd384a713"
60
- },
61
85
  {
62
86
  "path": "apps/catalog/dist/storybook/assets/components-CN8YyTUg.js",
63
87
  "sha256": "2793aa528869e3947d41591db2023524f8d81578f713214e9acac02f743d22e7"
64
88
  },
65
- {
66
- "path": "apps/catalog/dist/storybook/assets/Components.stories-Be2mDUQj.js",
67
- "sha256": "2981c30e093c3a23616f465a6afc1bc287732692af998d608593598a731c97c4"
68
- },
69
- {
70
- "path": "apps/catalog/dist/storybook/assets/DesignSystem.stories-DRx9blDs.js",
71
- "sha256": "3471400ec1a7cf9cce8f1e58068f91ebe416d34aea4be99a2431aeb0dba776a2"
72
- },
73
- {
74
- "path": "apps/catalog/dist/storybook/assets/DocsRenderer-JROSPFPF-BVN7xHtv.js",
75
- "sha256": "162d64f939550ce9e9582f15e3befbb7a8d5fdcc502410ed88262994d6cb82ce"
76
- },
77
89
  {
78
90
  "path": "apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-EwuTh8Zk.js",
79
91
  "sha256": "73f231544e7f0272b6ac45ec3a665c69b6fc2073afa243915c1d09e119c18aa7"
@@ -114,10 +126,6 @@
114
126
  "path": "apps/catalog/dist/storybook/assets/theming-DS_ue2sb.js",
115
127
  "sha256": "deba2831ca2a9bae10430a9388d4c1cb3b83d0824f2e55f3ffce97bf51818cf2"
116
128
  },
117
- {
118
- "path": "apps/catalog/dist/storybook/assets/WithTooltip-7X4HQR7L-CDHtKYkz.js",
119
- "sha256": "9be8ec095a76bf6993527027d4fd16ed5a97340c31de0bf86d1658840989aabe"
120
- },
121
129
  {
122
130
  "path": "apps/catalog/dist/storybook/favicon-wrapper.svg",
123
131
  "sha256": "5311f921255509431fc978cd04fd497ae54c46cfd97b3578dc53d7f652667a71"
@@ -220,7 +228,7 @@
220
228
  },
221
229
  {
222
230
  "path": "apps/catalog/package.json",
223
- "sha256": "e9ffdce8dcc8ed1fed3888add953e7e789261307b8d037a6001d98a38f644279"
231
+ "sha256": "44766720319e51f1a60ddce76263e081a109e7d01d5ce63b01c20f82200d0abb"
224
232
  },
225
233
  {
226
234
  "path": "apps/catalog/public/logo_novo_azul.png",
@@ -234,6 +242,10 @@
234
242
  "path": "apps/catalog/src/components/CatalogShell.tsx",
235
243
  "sha256": "9c1c20501aabf476bde54b453fe826efe31a0b3d484a0a050c898bf45f343096"
236
244
  },
245
+ {
246
+ "path": "apps/catalog/src/components/Primitives.tsx",
247
+ "sha256": "68d65caaa90818b7e942db30cd2fd6f68912e63b974c940ce694b93fa1bdc5ce"
248
+ },
237
249
  {
238
250
  "path": "apps/catalog/src/components/dialog-focus.test.ts",
239
251
  "sha256": "b62a5209b8554a4500ff241fb3d0cb67bff4ff751b8eddbda2dfd17dd9b6beed"
@@ -242,10 +254,6 @@
242
254
  "path": "apps/catalog/src/components/dialog-focus.ts",
243
255
  "sha256": "de72b418a3e8f08da924477014503581a8fd257c73fac85fdfbd883ad49de483"
244
256
  },
245
- {
246
- "path": "apps/catalog/src/components/Primitives.tsx",
247
- "sha256": "68d65caaa90818b7e942db30cd2fd6f68912e63b974c940ce694b93fa1bdc5ce"
248
- },
249
257
  {
250
258
  "path": "apps/catalog/src/design-contract.test.ts",
251
259
  "sha256": "e1854f467f0f98c418daf44a723e0d095df2af2917f51858c67afef708ad776e"
@@ -298,13 +306,9 @@
298
306
  "path": "apps/catalog/vitest.config.ts",
299
307
  "sha256": "552604801fdfc82b1b6bc1bebad3310738fa4f2e391a494e2bd10a2181196770"
300
308
  },
301
- {
302
- "path": "DESIGN.md",
303
- "sha256": "9970e5040403dfe41b86651128b691ddb3ee6f5e9909cebfacf0a614555cb7f6"
304
- },
305
309
  {
306
310
  "path": "packages/local-runtime/package.json",
307
- "sha256": "73bbd424a00481ca49bd3265183e0b505cc313484459d0701361a987f2b89057"
311
+ "sha256": "4584315601e42ab39805a047ad2073fc3ef51fb030fee1aa7aafb60942d0bba2"
308
312
  },
309
313
  {
310
314
  "path": "packages/local-runtime/runtime.mjs",
@@ -318,17 +322,13 @@
318
322
  "path": "packages/local-runtime/start-design.mjs",
319
323
  "sha256": "7623422e49c35c5584bf7579465ef7c159a72eb40427308585176bb0064a9e7a"
320
324
  },
321
- {
322
- "path": "packages/windows-launcher/build-design-launcher.ps1",
323
- "sha256": "c4ec3926aafae3a2f0122e756f2a0ec301a1eaac8563cae591d0ae6353fbbbff"
324
- },
325
325
  {
326
326
  "path": "packages/windows-launcher/Program.cs",
327
327
  "sha256": "a52e7837a2c81e49fb9f39fc9ad550b791ceac73ee27c5980f2f4f9c4dd7bf22"
328
328
  },
329
329
  {
330
- "path": "README.md",
331
- "sha256": "7efaff80b0a1add169646dc250b84d5b3a42378c57f6e891bab51ac2bb0e4b50"
330
+ "path": "packages/windows-launcher/build-design-launcher.ps1",
331
+ "sha256": "c4ec3926aafae3a2f0122e756f2a0ec301a1eaac8563cae591d0ae6353fbbbff"
332
332
  },
333
333
  {
334
334
  "path": "tokens.json",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaip-ai/design-catalog",
3
- "version": "1.3.0",
3
+ "version": "2.2.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaip-ai/design-local-runtime",
3
- "version": "1.3.0",
3
+ "version": "2.2.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -6,7 +6,7 @@ title: Garantia adaptativa e execução autônoma
6
6
  status: active
7
7
  version: 3
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Garantia adaptativa e execução autônoma
@@ -6,7 +6,7 @@ title: Autonomia delimitada para Cloudflare e Hostinger
6
6
  status: proposed
7
7
  version: 1
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Cloudflare e Hostinger (proposta de requisito)
@@ -6,7 +6,7 @@ title: Auditoria comparativa e plano de evolução
6
6
  status: active
7
7
  version: 1
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Auditoria comparativa e plano de evolução
@@ -6,7 +6,7 @@ title: Contexto mínimo, seguro e navegável
6
6
  status: active
7
7
  version: 8
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Context engine
@@ -6,7 +6,7 @@ title: Tokens, custos e cobertura
6
6
  status: active
7
7
  version: 10
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Cost observability
@@ -6,7 +6,7 @@ title: Inicialização e hidratação confiável do dashboard
6
6
  status: active
7
7
  version: 1
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Inicialização e hidratação confiável do dashboard
@@ -6,7 +6,7 @@ title: Exportação contextual de dados para Excel
6
6
  status: proposed
7
7
  version: 2
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Exportação contextual de dados
@@ -6,7 +6,7 @@ title: Contrato visual e catálogo executável
6
6
  status: active
7
7
  version: 3
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Design system
@@ -6,7 +6,7 @@ title: Preparação, materialização e DAG
6
6
  status: active
7
7
  version: 11
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Execution engine
@@ -6,7 +6,7 @@ title: Projeções operacionais e analíticas
6
6
  status: active
7
7
  version: 14
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Kanban and dashboard
@@ -4,9 +4,9 @@ id: REQUIREMENTS-MODEL-ORCHESTRATION
4
4
  area: model-orchestration
5
5
  title: Seleção automática e observável de modelo e effort
6
6
  status: active
7
- version: 7
7
+ version: 8
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Orquestração de modelos
@@ -16,7 +16,7 @@ source_release: "1.4.3"
16
16
  O projeto deve poder habilitar seleção automática de modelo, effort e velocidade sem alterar o comportamento dos modos existentes.
17
17
 
18
18
  - `AC-MODEL-001-01`: o schema aceita `model_orchestration.mode: auto` além de `manual` e `off`; ausência do bloco e os dois modos existentes mantêm o comportamento anterior em testes de compatibilidade.
19
- - `AC-MODEL-001-02`: o modo `auto` exige `default_model: gpt-5.6-terra`, `default_effort: medium`, `default_velocity: standard`, allowlist contendo exatamente `gpt-5.6-luna`, `gpt-5.6-terra` e `gpt-5.6-sol`, efforts automáticos restritos a `low|medium|high|xhigh` e teto automático `xhigh`.
19
+ - `AC-MODEL-001-02`: o modo `auto` exige `default_model: gpt-5.6-terra`, `default_effort: medium`, `default_velocity: standard` e allowlist única com o trio obrigatório `gpt-5.6-luna`, `gpt-5.6-terra`, `gpt-5.6-sol`; `gpt-6-astra` é o quarto modelo opcional. Efforts automáticos são `low|medium|high|xhigh`, com teto geral `xhigh` e teto específico Astra `high`.
20
20
  - `AC-MODEL-001-03`: setup, migration, adapters e templates preservam `manual` como default de projetos novos e existentes; `auto` só é ativado por configuração explícita do projeto e passa em `zaip doctor`.
21
21
  - `AC-MODEL-001-04`: o modo `auto` exige `automatic_sources: [spec, prd]`; `task` não é uma origem automática válida, preservando a seleção manual do host para Tasks avulsas.
22
22
 
@@ -24,10 +24,10 @@ O projeto deve poder habilitar seleção automática de modelo, effort e velocid
24
24
 
25
25
  Cada Invocação de Agente deve resolver uma configuração única a partir do agente do catálogo, dos metadados estruturados da Task e da fase, sem depender de instrução em linguagem natural.
26
26
 
27
- - `AC-MODEL-002-01`: o resolvedor aplica a precedência `runtime_defaults explícito da Execution -> runtime explícito da Task -> política automática -> defaults do projeto`, retornando modelo, effort, velocidade, origem, versão da política e ao menos um motivo enumerado.
27
+ - `AC-MODEL-002-01`: o resolvedor aplica a precedência `runtime_defaults explícito da Execution -> runtime explícito da Task -> política automática -> defaults do projeto`, retornando modelo, effort, velocidade, origem, versão da política e ao menos um motivo enumerado. A precedência nunca contorna os limites Astra: diagnóstico difícil evidenciado, somente high, reserva pré-dispatch de até três diagnósticos por Task e handback validado para executor, conforme REQ-MODEL-006.
28
28
  - `AC-MODEL-002-02`: Tasks novas de PRD/SPEC persistem `model_profile` calculado de `model_signals` reais com fase-base, complexidade, transversalidade, ambiguidade, rework, custo, boundedness, volume, gatilhos `xhigh` e sinais de risco. A classificação `task-risk-v1` deriva `lite|standard|critical` e motivos enumerados; declaração conflitante é rejeitada, enquanto PreparedPlans históricos sem perfil continuam legíveis. A política considera o perfil persistido, a fase e o agente reais da chamada e restrições de capacidade; risco governa assurance e não força sozinho modelo ou effort superior.
29
29
  - `AC-MODEL-002-03`: a política inicial usa Luna para trabalho simples, delimitado ou de alto volume, Terra como baseline de implementação e teste e Sol para planejamento, revisão ou reparo ambíguo/transversal; `xhigh` só é elegível para planejamento, replanejamento, auditoria ou rework estrutural delimitado quando as quatro condições e ao menos dois gatilhos observáveis do guia forem satisfeitos.
30
- - `AC-MODEL-002-04`: `ultra`, `max`, effort desconhecido e modelo fora da allowlist são rejeitados antes da chamada com erro tipado, sem fallback silencioso; `xhigh` é aceito quando vier de override explícito válido ou da política elegível.
30
+ - `AC-MODEL-002-04`: `ultra`, `max`, effort desconhecido e modelo fora da allowlist são rejeitados antes da chamada com erro tipado, sem fallback silencioso; `xhigh` é aceito quando vier de override explícito válido ou da política elegível, sempre excluindo Astra.
31
31
  - `AC-MODEL-002-05`: a Invocação do Orquestrador usa a identidade visível `zaip-agent-orchestrator`; cada Execução ZAIP delega por capacidade a ao menos um executor do catálogo, conversas podem usar `zaip-agent-analyst`, e a última Invocação Delegada usa `zaip-agent-finalizer`.
32
32
 
33
33
  ## REQ-MODEL-003 — Configuração imutável por Agent Run
@@ -56,3 +56,13 @@ O modo automático deve ser ativado com evals, rollback e documentação que dis
56
56
  - `AC-MODEL-005-01`: uma suíte determinística cobre ao menos seleção lite, baseline Terra, planejamento Sol, risco crítico mecânico, rework estrutural, `xhigh` elegível, `xhigh` inelegível, `ultra` rejeitado, velocidade diferente de `standard` rejeitada, override explícito e capacidade incompatível.
57
57
  - `AC-MODEL-005-02`: o rollout compara sucesso por Acceptance Criteria, aprovação na primeira revisão, repair cycles, tokens, latência e custo por Task aprovada; regressão de qualidade bloqueia a ativação ampla mesmo quando houver economia.
58
58
  - `AC-MODEL-005-03`: o guia, adapters, templates e configuração distribuída descrevem os mesmos defaults e permitem rollback para `manual` sem migração destrutiva de Runs já registrados.
59
+
60
+ ## REQ-MODEL-006 — Diagnóstico Astra limitado e econômico
61
+
62
+ Astra orienta a solução de problemas difíceis; a implementação permanece nos executores existentes.
63
+
64
+ - `AC-MODEL-006-01`: a rota exige complexidade alta ou ambiguidade alta e evidência de tentativa executora falha por hipótese/raciocínio, ou impacto material crítico evidenciado com diagnóstico difícil. Risco isolado, tarefa simples, departamento, volume, rótulos e falhas de ambiente/ferramenta não ativam Astra.
65
+ - `AC-MODEL-006-02`: a invocação diagnóstica usa identidade catalogada, high, contexto novo, zero ferramentas e nenhum resume; Astra como executor/reviewer/finalizer e efforts superiores são rejeitados antes da chamada. Entrada serializada limitada a 48000 bytes, orçamento de saída até 8000 tokens e timeout até 180 segundos; provider usage e limites declarados permanecem distintos.
66
+ - `AC-MODEL-006-03`: reserva persistente e atômica antes de cada dispatch limita três diagnósticos por Task estável, inclusive retomada, nova Execution e concorrência. Replay não autoriza novo dispatch; eventos de usage não consomem nem restauram quota.
67
+ - `AC-MODEL-006-04`: handback estruturado traz findings, prova, causa/hipótese, rota corrigida, escopo, executor não Astra e teste. A próxima tentativa executa a correção com Luna/Terra/Sol; outro diagnóstico exige evidência nova e progresso de hipótese/rota. Sem progresso ou com quota esgotada, devolve rota útil ou bloqueia explicitamente.
68
+ - `AC-MODEL-006-05`: a expansão Astra é condicional e não aumenta o kernel sempre carregado nem prompts de especialistas comerciais. Política automática continua restrita a SPEC/PRD, sem alterar seleção manual do host. Evals negativos e positivos, quota e integração real do coordenador são verificados antes da entrega.
@@ -4,9 +4,9 @@ id: REQUIREMENTS-PUBLIC-DISTRIBUTION
4
4
  area: public-distribution
5
5
  title: Distribuição pública e ativação
6
6
  status: active
7
- version: 3
7
+ version: 4
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Distribuição pública e ativação
@@ -15,7 +15,7 @@ source_release: "1.4.3"
15
15
 
16
16
  O pacote público deve entregar, verificar e reparar o mesmo runtime de lifecycle referenciado pelo guidance instalado, sem depender do checkout mantenedor nem criar autoridade implícita.
17
17
 
18
- - `AC-DIST-001-01`: o `.tgz` exato de `@zaip-ai/cli` e `create-zaip-aios` instala `.agents/runtime/bin/zaip.mjs` e seus metadados de supply chain; no workspace vazio, `doctor`, `status`, `conversation start`, `disable` e `enable` terminam com sucesso.
18
+ - `AC-DIST-001-01`: o `.tgz` exato de `@zaip-ai/cli` instala `.agents/runtime/bin/zaip.mjs` e seus metadados de supply chain; no workspace vazio, `doctor`, `status`, `conversation start`, `disable` e `enable` terminam com sucesso.
19
19
  - `AC-DIST-001-02`: `zaip.enabled` é a única chave gravada; a matriz canônica/legada `true|false|ausente` preserva compatibilidade, normaliza a próxima escrita e rejeita valores contraditórios antes de mutar o workspace.
20
20
  - `AC-DIST-001-03`: `template:sync` e `template:audit` cobrem `.agents`, incluindo `.agents/runtime`, recalculam o digest agregado, rejeitam path traversal, symlink, duplicata, descendente de arquivo allowlisted e checksum divergente.
21
21
  - `AC-DIST-001-04`: geração de runtime e manifest ocorre como uma única substituição recuperável; falhas injetadas antes e depois da troca preservam byte a byte o runtime e o manifest anteriores, e reinstalação autorizada restaura arquivo ausente.
@@ -6,7 +6,7 @@ title: Layout modular e limites de código-fonte
6
6
  status: active
7
7
  version: 5
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Software architecture
@@ -6,7 +6,7 @@ title: Melhorias estratégicas de custo, qualidade e resiliência
6
6
  status: active
7
7
  version: 1
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Melhorias estratégicas de custo, qualidade e resiliência
@@ -6,7 +6,7 @@ title: Ciclo de vida do trabalho
6
6
  status: active
7
7
  version: 24
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Work lifecycle
@@ -6,7 +6,7 @@ title: Evidências, custo por Task e autonomia por SPEC
6
6
  status: active
7
7
  version: 1
8
8
  source_change: null
9
- source_release: "1.4.3"
9
+ source_release: "2.2.0"
10
10
  ---
11
11
 
12
12
  # Evidências, custo por Task e autonomia por SPEC
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: RULE-ASTRA-DIAGNOSTIC
3
+ load: manual
4
+ priority: high
5
+ max_context_tokens: 650
6
+ requires:
7
+ - RULE-CORE
8
+ ---
9
+
10
+ # Astra para diagnóstico difícil
11
+
12
+ Carregue somente ao avaliar uma escalada Astra. Luna/Terra executam trabalho comum; Sol continua responsável pela faixa difícil. Marketing, Sales, Growth, Ops, título, palavras como “crítico”, volume ou número de arquivos não justificam Astra.
13
+
14
+ - Entrada: origem automática autorizada, dificuldade estruturada (complexidade alta ou ambiguidade alta) e evidência de uma tentativa executora que falhou por hipótese/raciocínio. Exceção preventiva: impacto material crítico comprovado e diagnóstico difícil comprovado. Erros de ambiente, credenciais, ferramentas, sintaxe ou falta de evidência não autorizam a escalada.
15
+ - Astra é uma invocação diagnóstica do orquestrador, somente `high` e `standard`. Nunca executor, reviewer rotineiro ou finalizer; nunca `xhigh`, `max` ou `ultra`, inclusive via override.
16
+ - Prefira um diagnóstico. Reserve atomicamente antes do dispatch; máximo três invocações por Task estável, somando Runs, Executions e retomadas. Não reinicie a quota, crie Task artificial nem repita invocation_id para contornar o teto. “Ciclo” é diagnóstico governado, não evento de uso ou chamada interna.
17
+ - Receba contexto novo e compacto: falha, prova, tentativa anterior, restrições e critérios de aceite. Sem histórico integral, resume, ferramentas, filhos ou escrita. Envelope: até 48000 bytes de entrada serializada, orçamento de 8000 tokens de saída, timeout de 180 segundos. Bytes não são tokens; reporte consumo apenas quando observado.
18
+ - Devolva JSON com findings, evidências, causa/hipótese, rota corrigida, escopo, executor Luna/Terra/Sol e teste de validação. O executor realiza o reparo e verifica o resultado na tentativa seguinte. Não prometa solução na segunda tentativa.
19
+ - Outro diagnóstico exige evidência nova e mudança verificável de hipótese/rota. Pare antes do teto se não houver progresso; não alterne Astra/Sol repetindo o mesmo plano. Ao esgotar três, devolva uma rota executável ou bloqueie com a evidência/decisão faltante.
20
+ - O runtime deve validar elegibilidade, quota, isolamento e handback. Configuração incompatível bloqueia o diagnóstico; não converta Astra em executor. A preferência manual do host em conversa/Task avulsa permanece fora do controle automático.