arkgate 4.8.16 → 4.8.18

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 (46) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +10 -7
  3. package/bin/ark-check-runtime.mjs +5 -1
  4. package/bin/ark-mcp-runtime.mjs +14 -7
  5. package/bin/ark-shared.mjs +10 -4
  6. package/bin/ark.mjs +6 -0
  7. package/bin/lib/adr-path.mjs +116 -0
  8. package/bin/lib/adr-presence.mjs +3 -2
  9. package/bin/lib/agent-gates.mjs +2 -0
  10. package/bin/lib/analysis-engine.mjs +6 -6
  11. package/bin/lib/doctor-human.mjs +2 -2
  12. package/bin/lib/doctor-next-actions.mjs +117 -17
  13. package/bin/lib/first-run-help.mjs +6 -2
  14. package/bin/lib/html-report.mjs +1 -1
  15. package/bin/lib/policy-delta-io.mjs +19 -10
  16. package/bin/lib/presets.mjs +15 -21
  17. package/bin/lib/skill-install.mjs +42 -4
  18. package/bin/lib/start-preview.mjs +75 -3
  19. package/dist/{diagnosticCatalog-KWvGLI1U.d.ts → diagnosticCatalog-BNxKdcN4.d.ts} +7 -1
  20. package/dist/index.cjs +9 -9
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.js +11 -11
  23. package/dist/nestjs/index.cjs +1 -1
  24. package/dist/nestjs/index.js +1 -1
  25. package/dist/runtime/index.cjs +6 -6
  26. package/dist/runtime/index.d.ts +1 -1
  27. package/dist/runtime/index.js +6 -6
  28. package/docs/README.md +2 -2
  29. package/docs/agent-guide.md +9 -2
  30. package/docs/ai-gates.md +4 -0
  31. package/docs/configuration.md +6 -3
  32. package/docs/enthusiast/how-to-agent-gates.md +3 -1
  33. package/docs/enthusiast/how-to-pick-shape.md +1 -1
  34. package/docs/package-surface.md +1 -1
  35. package/docs/use.md +9 -4
  36. package/package.json +1 -1
  37. package/server.json +2 -2
  38. package/templates/agent-skills/README.md +1 -1
  39. package/templates/agent-skills/ark-adopt/SKILL.md +8 -5
  40. package/templates/agent-skills/ark-explain/SKILL.md +3 -0
  41. package/templates/agent-skills/ark-explore/SKILL.md +3 -1
  42. package/templates/agent-skills/ark-upgrade/SKILL.md +1 -0
  43. package/templates/skills/ark-adopt.md +8 -5
  44. package/templates/skills/ark-explain.md +3 -0
  45. package/templates/skills/ark-explore.md +3 -1
  46. package/templates/skills/ark-upgrade.md +1 -0
package/docs/README.md CHANGED
@@ -73,8 +73,8 @@ These are **not** the day-to-day product path. They stay in the repo for evidenc
73
73
  | Field adoption kit (scaffolding, not closed) | [field/](field/) |
74
74
  | Runtime hardening (experimental) | [production-hardening.md](production-hardening.md) |
75
75
 
76
- Prepared: [CHANGELOG](../CHANGELOG.md) (`arkgate@4.8.16`; not published until `publish-npm` for `v4.8.16`).
77
- Current published: [releases/4.8.11.md](releases/4.8.11.md) (`arkgate@4.8.11` on npm `latest`; does not close `K01`).
76
+ Current published: [CHANGELOG](../CHANGELOG.md) (`arkgate@4.8.18` on npm `latest`; does not close `K01`).
77
+ Prior published: [releases/4.8.11.md](releases/4.8.11.md) (`arkgate@4.8.11`).
78
78
  Prior published: [releases/4.8.10.md](releases/4.8.10.md) (`arkgate@4.8.10`).
79
79
  Prior published: [releases/4.8.9.md](releases/4.8.9.md) (`arkgate@4.8.9`).
80
80
  Prior: [releases/4.8.6.md](releases/4.8.6.md) · [releases/4.8.5.md](releases/4.8.5.md) · [releases/4.8.4.md](releases/4.8.4.md) · [releases/4.8.3.md](releases/4.8.3.md) · [releases/4.8.2.md](releases/4.8.2.md) · [releases/4.8.1.md](releases/4.8.1.md) · [4.8.0](releases/4.8.0.md) · [4.7.6](releases/4.7.6.md) · [4.7.5](releases/4.7.5.md) · [4.7.4](releases/4.7.4.md) · [4.7.3](releases/4.7.3.md) · [4.7.2](releases/4.7.2.md) · [4.7.1](releases/4.7.1.md) · [4.7.0](releases/4.7.0.md) · [4.6.7](releases/4.6.7.md) · [4.6.6](releases/4.6.6.md) · [4.6.5](releases/4.6.5.md) · [4.6.4](releases/4.6.4.md) · [4.6.3](releases/4.6.3.md) · [4.6.2](releases/4.6.2.md) · [4.6.1](releases/4.6.1.md) · [4.6.0](releases/4.6.0.md).
@@ -55,6 +55,11 @@ feature work. Full `/ark-*` skills are **expert depth** and label residual **`[L
55
55
  npx ark-check --install-agent-gates --skills-only --force
56
56
  ```
57
57
 
58
+ After the pin moves, a teammate who already has `arkgate` installed can keep a
59
+ **stale** `.agents/skills` catalog (version stamp or content hash behind the
60
+ package). Doctor and a plain `ark-check` warn. Primary next action is that
61
+ same skills-only refresh — not `/ark-adopt` and not a full gate rewrite.
62
+
58
63
  ### Write-path honesty
59
64
 
60
65
  Claude/Grok/Antigravity/Cursor can hard-block listed PreToolUse / preToolUse ops when installed
@@ -282,7 +287,8 @@ npx ark-check --recommend --json
282
287
  `--recommend` does not require `ark.config.json`. It exits `0` and prints a progressive
283
288
  adoption plan: archetype id, preset, `confidence`, `runnerUp`, `why` (shape signals),
284
289
  structured positive/negative `evidence`, discovered `signals.packageUnits`,
285
- `adoptInOrder.phase1`, `firstCommand` (`ark start --apply --archetype …`), and `checkCommand`.
290
+ `adoptInOrder.phase1`, `firstCommand` (`ark start --apply --archetype …` on a
291
+ thin tree; `ark-check --init` on a mature tree), and `checkCommand`.
286
292
  When the top two shapes are close or projected governed coverage is below 90%, JSON sets
287
293
  `requiresConfirmation: true` and explains why in `confirmationReasons`.
288
294
 
@@ -891,6 +897,7 @@ Filter: **Contener · Guiar · Ordenar** — contain the write, guide the next s
891
897
 
892
898
  ```bash
893
899
  # Ark — expert skill pack (preferred when you also want gates)
900
+ # Same command refreshes a stale catalog after the package moved (doctor warns).
894
901
  npx ark-check --install-agent-gates --skills-only --force
895
902
 
896
903
  # Ecosystem — from installed package or a git checkout
@@ -1347,7 +1354,7 @@ The server exposes these thirteen tools. Every tool accepts the additive
1347
1354
  | `ark_manifest` | No non-project args: return the machine-readable architecture contract with an authoritative binding after the identity handshake. |
1348
1355
  | `validate_code` | `{ source, layer?, filePath? }`: validate one snippet; infer the layer from `filePath` when possible; return an error result when invalid. |
1349
1356
  | `ark_check` | `{ strict?, baseline? }`: run the full project architecture check. `verdict` separates `identity`, `completeness`, `graph`, `coverage`, `gates`, and `overallOk`; no individual green fact substitutes for the combined verdict. |
1350
- | `ark_policy_delta` | `{ baseConfig, candidateConfig?, acknowledgement? }`: classify a complete contract transition; never edits the contract. |
1357
+ | `ark_policy_delta` | `{ baseConfig, candidateConfig?, acknowledgement? }`: classify a complete contract transition; never edits the contract. Weakening / new layer / new allow edge needs `adrPath` on the acknowledgement. |
1351
1358
  | `ark_coverage` | No args: report per-layer counts, every unclassified file, unmatched layers, and missing rule edges. |
1352
1359
  | `ark_place` | `{ filePath?, description? }`: resolve or propose a governed home and return its import/global constraints. |
1353
1360
  | `ark_prepare_write` | `{ source, filePath?, description?, layer? }`: compose placement and snippet validation, with hashes and a mechanical-safe patch when available. |
package/docs/ai-gates.md CHANGED
@@ -512,6 +512,10 @@ lag the installed package. Temp/upgrade `--root` never mutates default user home
512
512
  sessions treat a stale Claude home as urgent because Cursor loads `~/.claude/skills`.
513
513
  Antigravity sessions treat a stale `~/.gemini/config/skills` catalog as urgent.
514
514
 
515
+ Project `.agents/skills` can also lag after a teammate `npm install`s a new pin without
516
+ `ark upgrade`. Doctor and `ark-check` warn (content identity + `arkVersion`). Next action
517
+ is skills-only refresh — not a full re-adopt.
518
+
515
519
  ```bash
516
520
  npx arkgate-check --install-agent-gates --skills-only --agent-homes --force
517
521
  ```
@@ -457,12 +457,15 @@ JSON artifact passed with `--policy-ack`:
457
457
  "basePolicyHash": "fnv1a-...",
458
458
  "candidatePolicyHash": "fnv1a-...",
459
459
  "findingIds": ["weakening:$.dynamicImportAllowlist:added"],
460
- "reason": "Temporary loader while the static registry is migrated."
460
+ "reason": "Temporary loader while the static registry is migrated.",
461
+ "adrPath": "docs/adr/0001-temporary-loader.md"
461
462
  }
462
463
  ```
463
464
 
464
- The acknowledgement must list every blocking finding exactly. It is not a permanent allowlist:
465
- changing either contract changes its hash and invalidates the acknowledgement.
465
+ The acknowledgement must list every blocking finding exactly and name a short
466
+ decision note as `adrPath` (under `docs/adr/` or `docs/decisions/`). A reason
467
+ alone is not enough. It is not a permanent allowlist: changing either contract
468
+ changes its hash and invalidates the acknowledgement.
466
469
 
467
470
  ## Team parliament (law vs feature)
468
471
 
@@ -52,7 +52,9 @@ unclassified source files therefore remain red.
52
52
  If gates are required and the tree has no short decision note yet (`docs/adr/` or
53
53
  `docs/decisions/`), `--require-gates` and doctor point at that path. Soft hint —
54
54
  not a fail, and silent when `--require-gates` is off. Not every change needs a
55
- note; use one when you loosen a rule or add a real gate.
55
+ note; use one when you loosen a rule or add a real gate. When `--policy-ack`
56
+ is required (weaken, new layer, or new allow edge), put that note's path on
57
+ the acknowledgement as `adrPath`.
56
58
 
57
59
  Doctor JSON includes `writePath.mode` plus `enforcementLadder`: support, installation, observed
58
60
  evidence, covered operations, bypassability, and CI honesty. MCP registration stays advisory.
@@ -26,7 +26,7 @@ Run **`/ark-adopt`** on a greenfield or early-adoption repo (leftover `/ark-arch
26
26
  | `adoptInOrder.phase1` | Folders to create first |
27
27
  | `analogy` | Plain-language mental model |
28
28
  | `antiPatterns` | What Ark will block later |
29
- | `firstCommand` | Usually `ark start --apply --archetype <id>` |
29
+ | `firstCommand` | Thin tree: `ark start --apply --archetype <id>`. Mature: `ark-check --init` |
30
30
 
31
31
  Framework names appear only as secondary `toolHints` in JSON — never as the archetype label.
32
32
 
@@ -75,7 +75,7 @@ hardening guide remains repository-hosted rather than duplicated in the gate tar
75
75
  | **Package pin dual-truth (4.0)** | doctor JSON `packageVersionTruth`; upgrade JSON/human note when pin behind CLI | Additive, advisory. Surfaces after `upgrade --no-install` when managed CLI is ahead of package.json. |
76
76
  | **Managed upgrade self-service honesty (4.5 / DF05)** | `ark upgrade [--json]` → `selfService` (+ human “Self-service honesty” lines) | Additive, advisory. Answers without a maintainer: write-path activation labels per selected host (`hard`\|`advisory`\|`unavailable`) and customized content-identity preserve (`customizedPaths` / `customizedContentPreserved`). Soft hosts never hard; upgrade never invents `hardWriteActive` from disk alone. Always `notAScore: true`. Not a gate input; not part of `planDigest`. |
77
77
  | **Product honesty readiness split (4.1.1)** | doctor JSON `productHonesty` | Additive. `unfinished` / `headline` / `primaryNextAction` / `reasonIds` remain; EH adds `contractReadiness` (`ready`\|`partial`\|`not-ready`), `localWriteBoundary` (`advisory`\|`hard`\|`unverified`\|`unknown`), `architectureReasonIds`, `environmentResidualIds` / `environmentResiduals`. Soft-write hosts stay in evidence without alone forcing global **Not finished**. `notAScore: true` always. |
78
- | **Policy transition analysis (3.1.0)** | `analyzePolicyDelta(...)`; MCP `ark_policy_delta`; CLI `--policy-base` / `--policy-base-ref` / `--policy-ack`; check JSON `policyDelta` | Additive schema `1.0`. Classifications and finding ids are deterministic. Weakening/judgment requires an acknowledgement bound to both policy hashes and the exact blocking finding set. |
78
+ | **Policy transition analysis (3.1.0)** | `analyzePolicyDelta(...)`; MCP `ark_policy_delta`; CLI `--policy-base` / `--policy-base-ref` / `--policy-ack`; check JSON `policyDelta` | Additive schema `1.0`. Classifications and finding ids are deterministic. Weakening/judgment requires an acknowledgement bound to both policy hashes and the exact blocking finding set. A new layer or new allow edge is `judgment-required`. On the CLI/MCP policy-ack plane, `adrPath` must name a short note under `docs/adr/` or `docs/decisions/` (`policyDelta.adrNote`). Domain hash match stays I/O-free. |
79
79
  | **Team parliament (law vs feature)** | Optional `stewards` on `ark.config.json` (GitHub handle or email); CLI `--local` / `--changed` / `--against` / `--base` / `--contract-diff` / `--contract-session` / `--persona` / `--author`; check JSON `teamParliament`; `ark status --vs`; write-gate mixed-batch deny | Additive. Law files must not mix with product source. Loosen / baseline-grow are steward-only when `stewards` is set. `--against` ratchets vs the base-ref baseline. `--changed` scans touched sources plus their import closure. `--local` (or `ARK_CHECK_LOCAL=1`) is the same cheap path and stays per `--root`; it cannot combine with `--strict-merge`. Check JSON may add `local`, `scope: "changed"`, `analysisRoot`. `stewards`, `layers[].description`, `layers[].trustBoundary`, and `layers[].owners` are excluded from policy hash. `requireLayerOwners` stays in the hash. Identity is handle or email, not git `user.name`. No org plane. |
80
80
  | **Atomic change preflight (3.1.0)** | `preflightChange(...)`; CLI `ark preflight --changes <file> --json`; MCP `ark_prepare_change` | Additive schema `1.0`. One complete governed production-source `{path,content}` / `{path,delete:true}` batch; read-only; returns operation, content/tree/policy/compiler fingerprints and stable graph findings. MCP availability alone is advisory. |
81
81
  | **Architecture change map (3.1.0)** | `arkgate/schema/change-map` or `arkgate/schema/ark.change-map.schema.json`; CLI `ark preflight --change-map <file>`; MCP `ark_prepare_change.changeMap` | Optional strict schema `1.0`. Canonical planned paths + operations + resolved Ark layers + dependencies between planned files. Preflight returns `changeMapHash`; absence is normal and adds no project file. Structural intent only, never behavioral completion. |
package/docs/use.md CHANGED
@@ -34,9 +34,12 @@ npx --package=arkgate arkgate-check --doctor --all # full details
34
34
  `arkgate-check` is a command in the `arkgate` package, not its own npm package. After a local install, `npx arkgate-check --doctor` also works.
35
35
 
36
36
  `start --apply` refuses when projected governed coverage is below 50% or
37
- shape confidence is weak (below 0.6 with coverage under 80%). That lock is
38
- deliberate. Lock the shape with `--archetype <id>`, `--preset <name>`, or
39
- `--force`, or inspect ranked shapes with `npx arkgate-check --recommend`.
37
+ shape confidence is weak (below 0.6 with coverage under 80%), or when the
38
+ planned write is too big for compact start (more than 8 gate files or 32 KB).
39
+ That lock is deliberate. Coverage/shape: lock with `--archetype <id>`,
40
+ `--preset <name>`, or `--force`. Size: `--force` does not unlock. Next:
41
+ `npx arkgate-check --init`. Or inspect ranked shapes with
42
+ `npx arkgate-check --recommend`.
40
43
 
41
44
  Then keep working with your agent. Stuck? Run `--doctor` and do action **#1**. Compact first; `--all` for details.
42
45
 
@@ -151,7 +154,9 @@ That is **Shape** work (plan B) — suggested, never auto-applied as silent magi
151
154
  `--contract-session` (stewards own loosen / baseline-grow). Checkout honesty:
152
155
  `npx arkgate status --vs origin/dev`.
153
156
 
154
- Install skills only when you want that guided path:
157
+ Install skills only when you want that guided path. After a package bump, a
158
+ teammate who already has Ark installed can keep **old skills**. Doctor warns;
159
+ refresh the catalog only — do not re-adopt or rewrite `ark.config.json`:
155
160
 
156
161
  ```bash
157
162
  npx arkgate-check --install-agent-gates --skills-only --force
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkgate",
3
- "version": "4.8.16",
3
+ "version": "4.8.18",
4
4
  "description": "When the agent writes a bad import, the write doesn’t land. The same check fails the pull request.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/pedroknigge/arkgate",
7
7
  "source": "github"
8
8
  },
9
- "version": "4.8.16",
9
+ "version": "4.8.18",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "arkgate",
14
- "version": "4.8.16",
14
+ "version": "4.8.18",
15
15
  "runtimeHint": "npx",
16
16
  "transport": {
17
17
  "type": "stdio"
@@ -9,7 +9,7 @@ closed `/ark-*` catalog shipped as flat templates for Ark install.
9
9
  **Closed catalog** (`ARK_SKILL_NAMES`) — first-class doors plus one-release
10
10
  redirect stubs. Add a name only with a live ROADMAP item.
11
11
 
12
- Package version when last generated context: **arkgate@4.8.16**
12
+ Package version when last generated context: **arkgate@4.8.18**
13
13
  Schema: agent-skills package contract `1.0`
14
14
 
15
15
  ## Skills (closed catalog)
@@ -168,8 +168,10 @@ When gates are required (`--require-gates` / `--strict-merge` / required merge
168
168
  status) and there is no short decision-note home yet, doctor may ask for one
169
169
  under `docs/adr/` or `docs/decisions/`. Write a note when you loosen a rule or
170
170
  add a real gate — not on every file. Absence is silent unless that demand is
171
- on. The hint does not fail the check. Do **not** invent `/ark-adr`. Policy
172
- weaken still uses `--policy-ack`; this is only a place to write the why.
171
+ on. The home hint does not fail the check. Do **not** invent `/ark-adr`.
172
+ When `--policy-ack` is required (weaken, new layer, or new allow edge), put
173
+ that note's path on the acknowledgement as `adrPath`. A free-floating reason
174
+ is not enough on the policy-ack plane.
173
175
 
174
176
  ## States and transitions (process)
175
177
 
@@ -300,9 +302,10 @@ feature dirs, plan clusters), you **may** dispatch **subagents**:
300
302
  - **Brownfield:** this skill — match config to reality; do not force a starter preset.
301
303
  - **Deep map only:** `/ark-explore`.
302
304
  - **Default path:** `ark start` → **`/ark-adopt`** → `/ark-place` / `/ark-autopilot`.
303
- `start --apply` may refuse (coverage below 50% or weak shape) that lock is
304
- deliberate. Lock the shape with `--archetype`, `--preset`, or `--force`, or
305
- inspect ranked shapes with `ark-check --recommend`.
305
+ `start --apply` may refuse (coverage below 50%, weak shape, or too big for
306
+ compact start) that lock is deliberate. Coverage/shape: `--archetype`,
307
+ `--preset`, or `--force`. Size: `--force` does not unlock; next
308
+ `arkgate-check --init`. Or inspect ranked shapes with `ark-check --recommend`.
306
309
 
307
310
  ## Anti-wrapper rule (mandatory)
308
311
 
@@ -198,6 +198,9 @@ when residual signals remain.
198
198
  unverified/non-authoritative.
199
199
  2. **If asked generally** ("explain the architecture"), produce a guided tour:
200
200
  - Operating mode + governed% (honest: low coverage means green checks almost nothing).
201
+ - Dual-match: exact Domain file listings under another layer glob are
202
+ intentional. Trust doctor #1. Glob-repair #1 names this tree's overlapping
203
+ roots, not a canned `api/**`.
201
204
  - Each major layer: name, purpose, one real file from this repo, file count if known.
202
205
  - Dependency direction in one short diagram (ASCII is fine).
203
206
  - Enforcement points that are actually on: write gate, CI, ESLint, baseline.
@@ -24,7 +24,9 @@ one bounded decision needs 2–3 enforceable options.
24
24
  - Doctor #1: if ENFORCE + empty plan A and gates are already installed → **Shape** (`/ark-explore` then `/ark-autopilot`). Do not say install-agent-gates.
25
25
  - When `--require-gates` / adopted-strict is on and doctor JSON has `adrPresence`,
26
26
  the next step is a short note under `docs/adr/` (or `docs/decisions/`). Soft.
27
- Not every change. Off when require-gates is off. No `/ark-adr`.
27
+ Not every change. Off when require-gates is off. No `/ark-adr`. When
28
+ `policyDelta` needs `--policy-ack` (weaken, new layer, or new allow edge),
29
+ the ack must name that note as `adrPath` — a reason alone is not enough.
28
30
  - When doctor JSON has `statesTransitions` or `statusTransitionCatalog`, the
29
31
  next step is a short states → transitions table (or one link) on the domain
30
32
  doc already in play. Use catalog names when present. Soft. Silent when that
@@ -98,6 +98,7 @@ Never invent gate verdicts from these suggestions. Missing residual is honest em
98
98
  | Conflicted managed assets | Still need `--accept-conflicts`. Never silent overwrite of true edits. |
99
99
  | Multiple checkouts / monorepo packages | One `expectedRoot` per project; upgrade **each** pin; restart MCP after bump; prefer project-local CLI until identity matched **and** process version aligns. |
100
100
  | Stale `~/.claude/skills`, `~/.grok/skills`, or `~/.gemini/config/skills` | Shared homes should be the newest ArkGate on the machine (additive; never downgrade). Refresh: `--install-agent-gates --skills-only --agent-homes --force`. Project skills may lag with the pin. Antigravity’s global catalog still refreshes when the project `.agents/skills` already exists. |
101
+ | Package moved; teammate still has old `/ark-*` skills | Doctor and `ark-check` warn. Refresh **skills only** (no re-adopt, no layers rewrite): `--install-agent-gates --skills-only --force`. |
101
102
  | Active host not in `--tools` / manifest | Preview `hostSelection` notes it and suggests `--tools` expansion. |
102
103
 
103
104
  **Post-apply:** read `postUpgradeChecks` (advisory). Confirm pin↔CLI, run doctor (compass + deepModuleCoach),
@@ -168,8 +168,10 @@ When gates are required (`--require-gates` / `--strict-merge` / required merge
168
168
  status) and there is no short decision-note home yet, doctor may ask for one
169
169
  under `docs/adr/` or `docs/decisions/`. Write a note when you loosen a rule or
170
170
  add a real gate — not on every file. Absence is silent unless that demand is
171
- on. The hint does not fail the check. Do **not** invent `/ark-adr`. Policy
172
- weaken still uses `--policy-ack`; this is only a place to write the why.
171
+ on. The home hint does not fail the check. Do **not** invent `/ark-adr`.
172
+ When `--policy-ack` is required (weaken, new layer, or new allow edge), put
173
+ that note's path on the acknowledgement as `adrPath`. A free-floating reason
174
+ is not enough on the policy-ack plane.
173
175
 
174
176
  ## States and transitions (process)
175
177
 
@@ -300,9 +302,10 @@ feature dirs, plan clusters), you **may** dispatch **subagents**:
300
302
  - **Brownfield:** this skill — match config to reality; do not force a starter preset.
301
303
  - **Deep map only:** `/ark-explore`.
302
304
  - **Default path:** `ark start` → **`/ark-adopt`** → `/ark-place` / `/ark-autopilot`.
303
- `start --apply` may refuse (coverage below 50% or weak shape) that lock is
304
- deliberate. Lock the shape with `--archetype`, `--preset`, or `--force`, or
305
- inspect ranked shapes with `ark-check --recommend`.
305
+ `start --apply` may refuse (coverage below 50%, weak shape, or too big for
306
+ compact start) that lock is deliberate. Coverage/shape: `--archetype`,
307
+ `--preset`, or `--force`. Size: `--force` does not unlock; next
308
+ `arkgate-check --init`. Or inspect ranked shapes with `ark-check --recommend`.
306
309
 
307
310
  ## Anti-wrapper rule (mandatory)
308
311
 
@@ -198,6 +198,9 @@ when residual signals remain.
198
198
  unverified/non-authoritative.
199
199
  2. **If asked generally** ("explain the architecture"), produce a guided tour:
200
200
  - Operating mode + governed% (honest: low coverage means green checks almost nothing).
201
+ - Dual-match: exact Domain file listings under another layer glob are
202
+ intentional. Trust doctor #1. Glob-repair #1 names this tree's overlapping
203
+ roots, not a canned `api/**`.
201
204
  - Each major layer: name, purpose, one real file from this repo, file count if known.
202
205
  - Dependency direction in one short diagram (ASCII is fine).
203
206
  - Enforcement points that are actually on: write gate, CI, ESLint, baseline.
@@ -24,7 +24,9 @@ one bounded decision needs 2–3 enforceable options.
24
24
  - Doctor #1: if ENFORCE + empty plan A and gates are already installed → **Shape** (`/ark-explore` then `/ark-autopilot`). Do not say install-agent-gates.
25
25
  - When `--require-gates` / adopted-strict is on and doctor JSON has `adrPresence`,
26
26
  the next step is a short note under `docs/adr/` (or `docs/decisions/`). Soft.
27
- Not every change. Off when require-gates is off. No `/ark-adr`.
27
+ Not every change. Off when require-gates is off. No `/ark-adr`. When
28
+ `policyDelta` needs `--policy-ack` (weaken, new layer, or new allow edge),
29
+ the ack must name that note as `adrPath` — a reason alone is not enough.
28
30
  - When doctor JSON has `statesTransitions` or `statusTransitionCatalog`, the
29
31
  next step is a short states → transitions table (or one link) on the domain
30
32
  doc already in play. Use catalog names when present. Soft. Silent when that
@@ -98,6 +98,7 @@ Never invent gate verdicts from these suggestions. Missing residual is honest em
98
98
  | Conflicted managed assets | Still need `--accept-conflicts`. Never silent overwrite of true edits. |
99
99
  | Multiple checkouts / monorepo packages | One `expectedRoot` per project; upgrade **each** pin; restart MCP after bump; prefer project-local CLI until identity matched **and** process version aligns. |
100
100
  | Stale `~/.claude/skills`, `~/.grok/skills`, or `~/.gemini/config/skills` | Shared homes should be the newest ArkGate on the machine (additive; never downgrade). Refresh: `--install-agent-gates --skills-only --agent-homes --force`. Project skills may lag with the pin. Antigravity’s global catalog still refreshes when the project `.agents/skills` already exists. |
101
+ | Package moved; teammate still has old `/ark-*` skills | Doctor and `ark-check` warn. Refresh **skills only** (no re-adopt, no layers rewrite): `--install-agent-gates --skills-only --force`. |
101
102
  | Active host not in `--tools` / manifest | Preview `hostSelection` notes it and suggests `--tools` expansion. |
102
103
 
103
104
  **Post-apply:** read `postUpgradeChecks` (advisory). Confirm pin↔CLI, run doctor (compass + deepModuleCoach),