arkgate 4.8.4 → 4.8.5

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 (44) hide show
  1. package/CHANGELOG.md +38 -2
  2. package/README.md +8 -5
  3. package/bin/lib/agent-homes.mjs +41 -6
  4. package/bin/lib/analysis-engine.mjs +8 -8
  5. package/bin/lib/ark-order-invariants.mjs +37 -0
  6. package/bin/lib/ark-order-sensors.mjs +4 -0
  7. package/bin/lib/check-args.mjs +2 -0
  8. package/bin/lib/diagnostic-catalog.mjs +3 -0
  9. package/bin/lib/first-run-help.mjs +4 -4
  10. package/bin/lib/remediation.mjs +10 -1
  11. package/bin/lib/skill-catalog-apply.mjs +18 -1
  12. package/bin/lib/skill-install.mjs +4 -3
  13. package/bin/lib/upgrade-whats-new.mjs +1 -1
  14. package/dist/{diagnosticCatalog-DgTs0abp.d.ts → diagnosticCatalog-DMO30svh.d.ts} +1 -1
  15. package/dist/eslint/index.cjs +5 -5
  16. package/dist/eslint/index.js +5 -5
  17. package/dist/index.cjs +22 -22
  18. package/dist/index.d.ts +5 -3
  19. package/dist/index.js +15 -15
  20. package/dist/nestjs/index.cjs +1 -1
  21. package/dist/nestjs/index.d.ts +1 -1
  22. package/dist/nestjs/index.js +1 -1
  23. package/dist/order/index.cjs +1 -1
  24. package/dist/order/index.d.ts +11 -2
  25. package/dist/order/index.js +1 -1
  26. package/dist/runtime/index.cjs +15 -15
  27. package/dist/runtime/index.d.ts +27 -4
  28. package/dist/runtime/index.js +15 -15
  29. package/dist/{types-D95drJ3_.d.ts → types-CzE6LMaW.d.ts} +1 -1
  30. package/docs/README.md +5 -4
  31. package/docs/agent-guide.md +4 -4
  32. package/docs/ai-gates.md +13 -2
  33. package/docs/arkorder.md +210 -0
  34. package/docs/configuration.md +11 -4
  35. package/docs/develop.md +3 -2
  36. package/docs/diagnostics.md +27 -0
  37. package/docs/enthusiast/how-to-agent-gates.md +1 -1
  38. package/docs/package-surface.md +5 -3
  39. package/docs/use.md +1 -1
  40. package/package.json +2 -1
  41. package/server.json +2 -2
  42. package/templates/agent-skills/README.md +1 -1
  43. package/templates/agent-skills/ark-upgrade/SKILL.md +1 -1
  44. package/templates/skills/ark-upgrade.md +1 -1
package/CHANGELOG.md CHANGED
@@ -3,9 +3,45 @@
3
3
  All notable changes to ArkGate (`arkgate`; formerly `ark-runtime-kernel`) are documented here or
4
4
  in the immutable pre-2.0 archive linked below.
5
5
 
6
+ ## 4.8.5 — 2026-08-31
7
+
8
+ **Patch** over **4.8.4**. Phase **XP** (ArkOrder × ArkRun) plus Antigravity skill
9
+ refresh. ArkOrder is a **library plus sensors, not a service** — that sentence
10
+ now has a canonical page. The runtime half (shadow / replay / compare) is
11
+ ArkRun and in-memory. **No required config migration.** Does not close `K01` /
12
+ `Z09`.
13
+
14
+ **Status: prepared** (not yet on npm `latest`).
15
+
16
+ ### Added
17
+ - **`docs/arkorder.md`:** named APIs adopters were redesigning (`createOrderPlane`,
18
+ `IngestEscalate`, `Projector`, `maxXiKeys`, `ProposeResult`, `XiSchema`,
19
+ `xiKeys`, four verbs). Ships in the npm tarball. [ADR 0033](docs/adr/0033-arkorder-runtime-half-is-arkrun.md):
20
+ shadow/replay/provenance belong to ArkRun.
21
+ - **Information budget** (`createOrderPlane({ informationBudget })`, not a
22
+ config key) — a scale may not observe a denied kind
23
+ (`ARKORDER_INFORMATION_BUDGET`).
24
+ - **σ freshness, never ξ** — `createOrderPlane({ sigmaMaxAgeMs })` /
25
+ `σ.freshUntil`; age falls back to `release.releasedAt` when σ has no
26
+ timestamp. ξ keys named ttl/freshUntil/maxAge fail
27
+ (`ARKORDER_XI_TTL`, `ARKORDER_STALE_SIGMA`).
28
+ - **`IngestEscalate.target`** including `human`.
29
+ - **ArkRun** `shadowInformationPackage` / `compareInformationPackages` /
30
+ `replayInformationPackages` — in-memory, not a bus, not durable.
31
+ - **`--antigravity-home`:** monotonic install into `$ANTIGRAVITY_HOME/skills`
32
+ (default `~/.gemini/config/skills`). `--agent-homes` includes it. Unlike
33
+ Claude/Grok homes, this catalog is the machine floor for every workspace.
34
+
35
+ ### Changed
36
+ - Extra activation is one shape (`mode` + `managedLayers`). Roots stay distinct:
37
+ `arkOrder.planeRoots` vs `arkRun.kernelRoots` (`compositionRoots` alias).
38
+ `ark-check --sensors` lists both extras in one table.
39
+ - Default `--install-agent-gates` host set includes `antigravity` when nothing
40
+ is detected.
41
+
6
42
  ## 4.8.4 — 2026-08-30
7
43
 
8
- **Status: pending publish** (see `docs/releases/4.8.4.md`).
44
+ **Status: published** (on npm `latest`; see `docs/releases/4.8.4.md`).
9
45
 
10
46
  **Patch** over **4.8.3**. Invariant coverage stops hiding its own limits: the scan budget and the
11
47
  test globs are config, every discarded file is counted in the diagnostic, and coverage stops
@@ -249,7 +285,7 @@ repo paths living in strings, comments and docstrings that a rename left behind.
249
285
 
250
286
  **Patch** over **4.8.2**. Persistence writes in a use-case skip the aggregate (`writes-via-aggregate`). ArkOrder **`xiKeys`** names the slow product decisions; a managed-layer Prisma/pg write of those keys is `ARKORDER_XI_FIELD_WRITE`. Dead sensors (`too-many-params`, `ingest-writes-xi`) now emit. No new skill names. Does not close `K01` / `Z09`. **No required config migration.**
251
287
 
252
- **Status: published** (on npm `latest`; see `docs/releases/4.8.3.md`).
288
+ **Status: published** (see `docs/releases/4.8.3.md`).
253
289
 
254
290
  ### Added
255
291
  - **`writes-via-aggregate`:** tier-1 structure sensor (ADR 0032). Direct evidence = persistence driver import **and** a write token (`.insert` / `.create` / `INSERT INTO` / …). Default advisory; promotable. Absence of the rule is silent.
package/README.md CHANGED
@@ -29,7 +29,7 @@ Works with Cursor, Claude, Codex, and Grok.
29
29
 
30
30
  </div>
31
31
 
32
- > **ArkGate 4.8.4** is the current tree; **4.8.3** is on npm `latest`. Write. Check. Ship. Adopted = required GitHub
32
+ > **ArkGate 4.8.4** is on npm `latest`. Write. Check. Ship. Adopted = required GitHub
33
33
  > status running `arkgate-check --strict-merge`, or an explicit `advisory-only` stance.
34
34
  > Status is compact (`arkgate-check --doctor`; `--all` for Details). Optional **ArkRun**
35
35
  > (`arkgate/runtime`) is an in-memory runtime — not Postgres. Optional **ArkOrder**
@@ -238,8 +238,8 @@ npx arkgate-check --path-drift --base-ref origin/main # stale paths in strings
238
238
  npx arkgate-check --sensors # which sensors can EVER be enforced, and which of your rules can be promoted
239
239
  npx arkgate-check --promote # what enforcing each advisory rule would cost, from one run
240
240
  npx arkgate-check --strict-merge # CI / required status
241
- npx arkgate-check --install-agent-gates --tools claude,cursor,codex,grok
242
- # optional: refresh shared home skills (Claude/Grok/Codex; never downgrades)
241
+ npx arkgate-check --install-agent-gates --tools claude,cursor,codex,grok,antigravity
242
+ # optional: refresh shared home skills (Claude/Grok/Antigravity/Codex; never downgrades)
243
243
  # npx arkgate-check --install-agent-gates --skills-only --agent-homes --force
244
244
  # optional: same 13 skills via Agent Skills ecosystem (no new names)
245
245
  # npx skills add ./node_modules/arkgate/templates/agent-skills
@@ -287,7 +287,8 @@ In-memory. Not durable. Does not replace ArkRun.
287
287
 
288
288
  Copy [examples/arkorder-billing/](examples/arkorder-billing/) and rename the
289
289
  three keys. Compact starters leave it off. Details:
290
- [configuration](docs/configuration.md) · [package surface](docs/package-surface.md).
290
+ [ArkOrder](docs/arkorder.md) · [configuration](docs/configuration.md) ·
291
+ [package surface](docs/package-surface.md).
291
292
 
292
293
  ---
293
294
 
@@ -303,7 +304,9 @@ three keys. Compact starters leave it off. Details:
303
304
  | Config · package surface · TS | [configuration](docs/configuration.md) · [package-surface](docs/package-surface.md) · [typescript-support](docs/typescript-support.md) |
304
305
  | Brownfield | [docs/brownfield-adoption.md](docs/brownfield-adoption.md) |
305
306
  | Security | [SECURITY.md](SECURITY.md) |
306
- | Current published (4.8.3 on npm `latest`) | [docs/releases/4.8.3.md](docs/releases/4.8.3.md) · [CHANGELOG](CHANGELOG.md) |
307
+ | Current tree (4.8.5 prepared) | [docs/releases/4.8.5.md](docs/releases/4.8.5.md) · [CHANGELOG](CHANGELOG.md) |
308
+ | Current published (4.8.4 on npm `latest`) | [docs/releases/4.8.4.md](docs/releases/4.8.4.md) |
309
+ | Prior published (4.8.3) | [docs/releases/4.8.3.md](docs/releases/4.8.3.md) |
307
310
  | Prior published (4.8.2) | [docs/releases/4.8.2.md](docs/releases/4.8.2.md) |
308
311
  | Prior published (4.8.1) | [docs/releases/4.8.1.md](docs/releases/4.8.1.md) |
309
312
  | Prior published (4.8.0) | [docs/releases/4.8.0.md](docs/releases/4.8.0.md) |
@@ -1,6 +1,8 @@
1
1
  /**
2
- * Shared agent home skill catalogs (Claude / Grok), Codex-parity monotonic install.
3
- * Repo catalogs stay per-project; these homes are the machine floor (never downgrade).
2
+ * Shared agent home skill catalogs (Claude / Grok / Antigravity), Codex-parity
3
+ * monotonic install. Repo catalogs stay per-project; these homes are the
4
+ * machine floor (never downgrade). Antigravity's official global catalog is
5
+ * `~/.gemini/config/skills` — not pruned when a project `.agents/skills` exists.
4
6
  */
5
7
  import fs from 'node:fs';
6
8
  import os from 'node:os';
@@ -23,7 +25,7 @@ import {
23
25
  skillInstallLine,
24
26
  } from './skill-write.mjs';
25
27
 
26
- /** @typedef {'claude'|'grok'} AgentHomeHost */
28
+ /** @typedef {'claude'|'grok'|'antigravity'} AgentHomeHost */
27
29
 
28
30
  const HOSTS = {
29
31
  claude: {
@@ -40,6 +42,14 @@ const HOSTS = {
40
42
  defaultDirName: '.grok',
41
43
  flag: '--grok-home',
42
44
  },
45
+ antigravity: {
46
+ id: 'antigravity',
47
+ label: 'Antigravity',
48
+ envKey: 'ANTIGRAVITY_HOME',
49
+ // Official global catalog is ~/.gemini/config/skills (docs/skills).
50
+ defaultDirName: path.join('.gemini', 'config'),
51
+ flag: '--antigravity-home',
52
+ },
43
53
  };
44
54
 
45
55
  export function agentHomeHostIds() {
@@ -62,6 +72,18 @@ export function grokSkillsDir(env = process.env, homeDir = os.homedir()) {
62
72
  return path.join(grokHomeDir(env, homeDir), 'skills');
63
73
  }
64
74
 
75
+ export function antigravityHomeDir(env = process.env, homeDir = os.homedir()) {
76
+ return resolveHomeDir(HOSTS.antigravity, env, homeDir);
77
+ }
78
+
79
+ export function antigravitySkillsDir(env = process.env, homeDir = os.homedir()) {
80
+ return path.join(antigravityHomeDir(env, homeDir), 'skills');
81
+ }
82
+
83
+ export function usesDefaultAntigravityHome(env = process.env, homeDir = os.homedir()) {
84
+ return usesDefaultHome(HOSTS.antigravity, env, homeDir);
85
+ }
86
+
65
87
  export function usesDefaultClaudeHome(env = process.env, homeDir = os.homedir()) {
66
88
  return usesDefaultHome(HOSTS.claude, env, homeDir);
67
89
  }
@@ -85,7 +107,8 @@ function usesDefaultHome(spec, env, homeDir) {
85
107
  }
86
108
 
87
109
  function skillsDirFor(host, env = process.env) {
88
- return host === 'grok' ? grokSkillsDir(env) : claudeSkillsDir(env);
110
+ const spec = HOSTS[host];
111
+ return path.join(resolveHomeDir(spec, env), 'skills');
89
112
  }
90
113
 
91
114
  function readHomeCatalogFloor(skillsDir) {
@@ -124,7 +147,7 @@ function homeInPlay(parity, catalogState) {
124
147
  }
125
148
 
126
149
  /**
127
- * Detect Claude/Grok user-home ark-* catalogs that lag this package.
150
+ * Detect Claude/Grok/Antigravity user-home ark-* catalogs that lag this package.
128
151
  * Absent homes are not debt. Stamp-only body-match is not content-behind
129
152
  * (assessSkillCatalogParity already treats identity match as current).
130
153
  *
@@ -199,11 +222,13 @@ export function detectAgentHomeGaps(root, env = process.env) {
199
222
  /**
200
223
  * Claude home is loaded by Claude Code and often by Cursor. Treat both as in-session.
201
224
  * Grok home is urgent only on a Grok session (or when ARK_ACTIVE_HOST=grok).
225
+ * Antigravity global catalog is urgent on an Antigravity session (agy / ANTIGRAVITY).
202
226
  */
203
227
  export function agentHomeConcernIsActive(host, env = process.env) {
204
228
  const active = detectActiveAgentHost(env);
205
229
  if (host === 'claude') return active === 'claude' || active === 'cursor' || !active;
206
230
  if (host === 'grok') return active === 'grok' || !active;
231
+ if (host === 'antigravity') return active === 'antigravity' || !active;
207
232
  return true;
208
233
  }
209
234
 
@@ -223,6 +248,7 @@ export function agentHomeRefreshCommand(root, gap) {
223
248
  * force?: boolean,
224
249
  * claudeHome?: boolean,
225
250
  * grokHome?: boolean,
251
+ * antigravityHome?: boolean,
226
252
  * agentHomes?: boolean,
227
253
  * json?: boolean,
228
254
  * env?: NodeJS.ProcessEnv,
@@ -233,13 +259,22 @@ export function installRequestedAgentHomes(args) {
233
259
  const env = args.env ?? process.env;
234
260
  const wantClaude = Boolean(args.claudeHome || args.agentHomes);
235
261
  const wantGrok = Boolean(args.grokHome || args.agentHomes);
236
- if (!wantClaude && !wantGrok) return [];
262
+ const wantAntigravity = Boolean(args.antigravityHome || args.agentHomes);
263
+ if (!wantClaude && !wantGrok && !wantAntigravity) return [];
237
264
  const skills = args.skills ?? skillTemplates();
238
265
  const version = args.version ?? arkPackageVersion();
239
266
  const installed = [];
240
267
  const targets = [
241
268
  wantClaude ? { host: 'claude', spec: HOSTS.claude, dir: claudeSkillsDir(env), usesDefault: usesDefaultClaudeHome(env) } : null,
242
269
  wantGrok ? { host: 'grok', spec: HOSTS.grok, dir: grokSkillsDir(env), usesDefault: usesDefaultGrokHome(env) } : null,
270
+ wantAntigravity
271
+ ? {
272
+ host: 'antigravity',
273
+ spec: HOSTS.antigravity,
274
+ dir: antigravitySkillsDir(env),
275
+ usesDefault: usesDefaultAntigravityHome(env),
276
+ }
277
+ : null,
243
278
  ].filter(Boolean);
244
279
 
245
280
  for (const target of targets) {