arkgate 4.8.11 → 4.8.14

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 (93) hide show
  1. package/CHANGELOG.md +125 -2
  2. package/README.md +39 -46
  3. package/SECURITY.md +5 -3
  4. package/bin/ark-check-runtime.mjs +11 -9
  5. package/bin/lib/agent-projection-formatters.mjs +2 -0
  6. package/bin/lib/agent-skills-package.mjs +63 -8
  7. package/bin/lib/analysis-engine.mjs +4 -4
  8. package/bin/lib/architecture-scan.mjs +8 -2
  9. package/bin/lib/ark-order-doctor.mjs +160 -0
  10. package/bin/lib/ark-order-report.mjs +65 -0
  11. package/bin/lib/ark-order-sensors.mjs +1 -1
  12. package/bin/lib/ci-and-commands.mjs +7 -2
  13. package/bin/lib/design-smells.mjs +21 -1
  14. package/bin/lib/diagnostic-catalog.mjs +4 -4
  15. package/bin/lib/doctor-advisories.mjs +99 -18
  16. package/bin/lib/doctor-human.mjs +4 -11
  17. package/bin/lib/doctor-plan.mjs +4 -3
  18. package/bin/lib/extra-merge-teeth.mjs +32 -4
  19. package/bin/lib/first-run-help.mjs +11 -2
  20. package/bin/lib/gate-files.mjs +40 -3
  21. package/bin/lib/html-report-advisories.mjs +2 -0
  22. package/bin/lib/html-report-depth.mjs +8 -18
  23. package/bin/lib/html-report.mjs +16 -0
  24. package/bin/lib/install-migrate.mjs +23 -0
  25. package/bin/lib/mcp-hook-payload.mjs +1 -1
  26. package/bin/lib/product-copy.mjs +4 -0
  27. package/bin/lib/remediation.mjs +7 -7
  28. package/bin/lib/resolved-candidate-facts.mjs +144 -36
  29. package/bin/lib/rules-under-contract.mjs +14 -0
  30. package/bin/lib/scan-files.mjs +39 -0
  31. package/bin/lib/start-preview.mjs +4 -0
  32. package/bin/lib/status-command.mjs +28 -0
  33. package/bin/lib/status-manifest.mjs +23 -0
  34. package/bin/lib/upgrade-whats-new.mjs +3 -3
  35. package/bin/lib/violations.mjs +40 -1
  36. package/dist/{diagnosticCatalog-DiflIock.d.ts → diagnosticCatalog-DVx_2RmF.d.ts} +1 -1
  37. package/dist/eslint/index.cjs +4 -4
  38. package/dist/eslint/index.js +4 -4
  39. package/dist/index.cjs +31 -31
  40. package/dist/index.d.ts +129 -15
  41. package/dist/index.js +31 -31
  42. package/dist/nestjs/index.cjs +1 -1
  43. package/dist/nestjs/index.js +1 -1
  44. package/dist/runtime/index.cjs +15 -15
  45. package/dist/runtime/index.d.ts +1 -1
  46. package/dist/runtime/index.js +15 -15
  47. package/docs/README.md +11 -8
  48. package/docs/agent-guide.md +30 -13
  49. package/docs/ai-gates.md +3 -1
  50. package/docs/arkorder.md +35 -10
  51. package/docs/configuration.md +7 -6
  52. package/docs/develop.md +3 -1
  53. package/docs/diagnostics.md +7 -7
  54. package/docs/enthusiast/README.md +6 -1
  55. package/docs/enthusiast/how-to-gallery-starter.md +2 -1
  56. package/docs/package-surface.md +8 -5
  57. package/docs/product-voice.md +40 -13
  58. package/docs/threat-model.md +2 -2
  59. package/docs/typescript-support.md +3 -3
  60. package/docs/use.md +18 -11
  61. package/package.json +1 -1
  62. package/schemas/ark.status-manifest.schema.json +47 -0
  63. package/server.json +2 -2
  64. package/templates/agent-skills/README.md +7 -4
  65. package/templates/agent-skills/ark-adopt/SKILL.md +9 -5
  66. package/templates/agent-skills/ark-architect/SKILL.md +5 -18
  67. package/templates/agent-skills/ark-autopilot/SKILL.md +8 -4
  68. package/templates/agent-skills/ark-contract/SKILL.md +9 -20
  69. package/templates/agent-skills/ark-coverage/SKILL.md +12 -8
  70. package/templates/agent-skills/ark-explain/SKILL.md +7 -3
  71. package/templates/agent-skills/ark-explore/SKILL.md +25 -4
  72. package/templates/agent-skills/ark-fix/SKILL.md +15 -20
  73. package/templates/agent-skills/ark-loop/SKILL.md +14 -20
  74. package/templates/agent-skills/ark-order/SKILL.md +200 -0
  75. package/templates/agent-skills/ark-place/SKILL.md +11 -8
  76. package/templates/agent-skills/ark-runtime/SKILL.md +17 -4
  77. package/templates/agent-skills/ark-think/SKILL.md +24 -126
  78. package/templates/agent-skills/ark-upgrade/SKILL.md +13 -2
  79. package/templates/skills/ark-adopt.md +9 -5
  80. package/templates/skills/ark-architect.md +5 -18
  81. package/templates/skills/ark-autopilot.md +8 -4
  82. package/templates/skills/ark-contract.md +9 -20
  83. package/templates/skills/ark-coverage.md +12 -8
  84. package/templates/skills/ark-explain.md +7 -3
  85. package/templates/skills/ark-explore.md +25 -4
  86. package/templates/skills/ark-fix.md +15 -20
  87. package/templates/skills/ark-loop.md +14 -20
  88. package/templates/skills/ark-order.md +200 -0
  89. package/templates/skills/ark-place.md +11 -8
  90. package/templates/skills/ark-runtime.md +17 -4
  91. package/templates/skills/ark-think.md +24 -126
  92. package/templates/skills/ark-upgrade.md +13 -2
  93. package/templates/tests/ark-adoption-gaps.test.ts +5 -4
@@ -176,10 +176,10 @@ The release compatibility workflow packs the candidate first, then tests clean c
176
176
  - **npm / pnpm / Yarn**;
177
177
  - project TypeScript **5.9.3 / 6.0.3 / 7.0.2**.
178
178
 
179
- That is **36** installed-artifact cells on the **full matrix** path (`push` to `main`, PR labels
180
- `full-matrix` / `release`, or release-prep branch names such as `feat/4.1*`). Ordinary PRs run a
179
+ That is **36** installed-artifact cells on the **full matrix** path (`push` to `main`, or an
180
+ explicit `full-matrix` label). Ordinary PRs run a
181
181
  **slim** packed smoke: **one** cell (Node 20 + npm) that still exercises TS 5/6/7 in-process.
182
- See [CONTRIBUTING.md — CI profiles](../CONTRIBUTING.md#ci-profiles-pr-slim-vs-full-matrix).
182
+ See [CONTRIBUTING.md — CI](../CONTRIBUTING.md#ci-this-repo).
183
183
 
184
184
  Each cell verifies that the project's `tsc` stays on the requested project compiler and that
185
185
  ArkGate resolves its fallback as exact 6.0.3 when the project API is unusable. Reports record
package/docs/use.md CHANGED
@@ -11,10 +11,12 @@ AI can build fast—and make a mess just as fast.
11
11
 
12
12
  Keep the product easy to understand, change, and trust.
13
13
 
14
- ArkGate stops bad shortcuts. ArkRules protects how each part should behave. ArkRun keeps work moving. ArkOrder protects the few big choices that should not change by accident.
14
+ Contain what the AI may write, and in what shape. Guide you with proven patterns and one next step. Order leftover mess toward a clean tree, a little at a time.
15
15
 
16
16
  Safer changes, fewer surprises, and extra protection only when you choose it.
17
17
 
18
+ That is **Contener · Guiar · Ordenar**.
19
+
18
20
  For **anyone** shipping TypeScript with an AI coding agent.
19
21
 
20
22
  ---
@@ -24,7 +26,7 @@ For **anyone** shipping TypeScript with an AI coding agent.
24
26
  ```bash
25
27
  npm install -D arkgate typescript
26
28
  npx arkgate start # preview what will change
27
- npx arkgate start --apply # install compact config + host router + CI plan
29
+ npx arkgate start --apply # install compact config + host router + CI; merge write-path gates into existing AGENTS.md / .mcp.json
28
30
  npx arkgate-check --doctor # status — one next step
29
31
  npx arkgate-check --doctor --all # full details
30
32
  ```
@@ -56,11 +58,10 @@ In those cases a boundary linter or editor rules may be enough; see [README —
56
58
 
57
59
  ### Why it exists
58
60
 
59
- AI coding agents write code at unprecedented speeds, but they tend to take the shortest path to solve a problem. If an agent needs data in a Domain layer, it might directly import a database adapter. Left unchecked, this creates spaghetti code and technical debt at light speed.
60
-
61
- Traditional linters catch these architectural violations in CI *after* the agent has finished its work, breaking the flow and requiring manual intervention.
62
-
63
- ArkGate solves this by shifting the check to the exact moment of writing. By intercepting file writes, it ensures that if the agent writes a bad import, the write doesn't land. The agent gets immediate feedback and can self-correct before the code even touches your disk.
61
+ AI takes the shortest path. Contain the write so a bad import never lands. Guide
62
+ the next step so a non-expert is not stuck. Order leftover mess toward a clean
63
+ tree, one small refactor at a time. Traditional linters catch this only after
64
+ the agent finished; ArkGate checks at write time and again on the PR.
64
65
 
65
66
  ---
66
67
 
@@ -86,10 +87,10 @@ The config only binds when the write doesn’t land and CI is required.
86
87
 
87
88
  | | Plain English | Default |
88
89
  |--|---------------|---------|
89
- | **ArkGate** (layers) | Import rules. The write doesn’t land. The PR fails. | Always — this is the product |
90
- | **ArkRules** | Optional policies *inside* a layer. | Off until you turn it on (start may ship advisory templates) |
91
- | **ArkRun** | Optional experimental runtime (`arkgate/runtime`) | Off. In-memory. Not Postgres. |
92
- | **ArkOrder** | Stops the agent rewriting the few slow product decisions as CRUD (`arkgate/order`). Library + sensors, [not a service](arkorder.md). Valve: `proposeRelease` then `apply`; `refreshSigma`; ingest residual; capacity pack; `ReleaseStore`; ArkRun `decisionTape`. ArkOrder freezes the pattern through a valve. ArkRun is how the residual travels. | Off. Name `xiKeys` (plan / protocol, not `projectId`). Derive recomputable statuses; invoices and seats still flow. In-memory. Not durable. |
90
+ | **ArkGate** (layers) | **Contener** — import rules. The write doesn’t land. The PR fails. | Always — this is the product |
91
+ | **ArkRules** | **Contener** — optional policies *inside* a layer. | Off until you turn it on (start may ship advisory templates) |
92
+ | **ArkRun** | **Guiar** — optional experimental runtime (`arkgate/runtime`) | Off. In-memory. Not Postgres. |
93
+ | **ArkOrder** | **Ordenar** extra the few big choices (billing plan, not seat counts). Library + sensors, [not a service](arkorder.md). | Off. Same npm package (`arkgate/order`). Name the few choices (`xiKeys`). Invoices and seats still flow. In-memory. Not durable. |
93
94
 
94
95
  Start always gives you **layers**. Compact starters do **not** turn on ArkRun or
95
96
  ArkOrder. No extras is fine — only ArkGate runs. Leftovers are labeled
@@ -97,6 +98,11 @@ ArkOrder. No extras is fine — only ArkGate runs. Leftovers are labeled
97
98
  imports ≠ elegant design. Green imports also ≠ a frozen billing plan. ArkRun ≠
98
99
  durable stores. ArkOrder does not replace ArkRun.
99
100
 
101
+ Want to see the freeze and valve? The billing gallery lives on GitHub, not in
102
+ the npm tarball:
103
+ [examples/arkorder-billing](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing).
104
+ First freeze is `release()`. Later plan change is `proposeRelease` then `apply`.
105
+
100
106
  ### New modules vs config edits
101
107
 
102
108
  **Happy path:** put a new module under an existing layer directory/glob (`layers[].patterns`). Usually
@@ -229,6 +235,7 @@ Empty plan A is **not** “architecture finished.”
229
235
  - Plain-language track: [enthusiast/](enthusiast/README.md)
230
236
  - First project tutorial: [enthusiast/tutorial-first-project.md](enthusiast/tutorial-first-project.md)
231
237
  - Demos: [demos/](demos/)
238
+ - ArkOrder proof (first freeze, then valve): [billing gallery](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing) (GitHub, not in the npm tarball)
232
239
 
233
240
  ---
234
241
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkgate",
3
- "version": "4.8.11",
3
+ "version": "4.8.14",
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",
@@ -390,6 +390,53 @@
390
390
  ]
391
391
  }
392
392
  }
393
+ },
394
+ "arkOrder": {
395
+ "type": "object",
396
+ "description": "ArkOrder extra residual (notAScore). present/mode from config; residual is a finding-id count (null = unknown, not green). extraMergeTeeth is honesty, never a score.",
397
+ "additionalProperties": false,
398
+ "required": [
399
+ "notAScore",
400
+ "present",
401
+ "mode",
402
+ "extraMergeTeeth",
403
+ "residual"
404
+ ],
405
+ "properties": {
406
+ "notAScore": {
407
+ "const": true
408
+ },
409
+ "present": {
410
+ "type": "boolean"
411
+ },
412
+ "mode": {
413
+ "anyOf": [
414
+ {
415
+ "enum": [
416
+ "advisory",
417
+ "enforced"
418
+ ]
419
+ },
420
+ {
421
+ "type": "null"
422
+ }
423
+ ]
424
+ },
425
+ "extraMergeTeeth": {
426
+ "type": "boolean"
427
+ },
428
+ "residual": {
429
+ "anyOf": [
430
+ {
431
+ "type": "integer",
432
+ "minimum": 0
433
+ },
434
+ {
435
+ "type": "null"
436
+ }
437
+ ]
438
+ }
439
+ }
393
440
  }
394
441
  }
395
442
  }
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.11",
9
+ "version": "4.8.14",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "arkgate",
14
- "version": "4.8.11",
14
+ "version": "4.8.14",
15
15
  "runtimeHint": "npx",
16
16
  "transport": {
17
17
  "type": "stdio"
@@ -4,13 +4,15 @@
4
4
  > Author skill bodies in `templates/skills/<name>.md`, then run
5
5
  > `npm run generate:agent-skills`. Drift: `npm run check:agent-skills`.
6
6
 
7
- This directory is the **Agent Skills–compatible** packaging of the same **13**
8
- `/ark-*` skills shipped as flat templates for Ark install. **No new skill names.**
7
+ This directory is the **Agent Skills–compatible** packaging of the same
8
+ closed `/ark-*` catalog shipped as flat templates for Ark install.
9
+ **Closed catalog** (`ARK_SKILL_NAMES`) — first-class doors plus one-release
10
+ redirect stubs. Add a name only with a live ROADMAP item.
9
11
 
10
- Package version when last generated context: **arkgate@4.8.9**
12
+ Package version when last generated context: **arkgate@4.8.14**
11
13
  Schema: agent-skills package contract `1.0`
12
14
 
13
- ## Skills (frozen catalog)
15
+ ## Skills (closed catalog)
14
16
 
15
17
  - `ark-adopt`
16
18
  - `ark-architect`
@@ -21,6 +23,7 @@ Schema: agent-skills package contract `1.0`
21
23
  - `ark-explore`
22
24
  - `ark-fix`
23
25
  - `ark-loop`
26
+ - `ark-order`
24
27
  - `ark-place`
25
28
  - `ark-runtime`
26
29
  - `ark-think`
@@ -5,6 +5,10 @@ description: Session 0 — write the rules file (ark.config.json) to match the r
5
5
 
6
6
  # /ark-adopt — Mark the path (session 0)
7
7
 
8
+ **Contener · Guiar · Ordenar.** In plain words: contain the write, guide the next
9
+ step, order leftover mess. This door is **Contener**: write the path so the tree
10
+ has honest houses. Skills never enforce — CLI / hooks / CI do.
11
+
8
12
  **When:** empty tree, or the rules file does not match the real folders (session 0).
9
13
  **Not when:** a single new file (`/ark-place`) or leftover design after the path is honest (`/ark-explore` then `/ark-autopilot`).
10
14
 
@@ -111,7 +115,7 @@ Do **not** invent captions. Do not invent `/ark-describe`.
111
115
  | Mine loose business rules into Domain / advisory ArkRules | Apply leftover design after the path is honest → `/ark-autopilot` |
112
116
  | Freeze **real** debt after the config is honest | User said map only |
113
117
  | Turn **advisory** ArkRun on (`arkRun` extra, schema `1.2+`; **`kernelRoots` preferred**) | Evaluate / wire a hand-rolled bus → `/ark-runtime`; new kernel-managed file → `/ark-place` |
114
- | Turn **advisory** ArkOrder on (`arkOrder` extra, schema `1.3+`, `planeRoots`) | New plane-root file after extra is on → `/ark-place`; grind skip clusters → `/ark-autopilot` |
118
+ | Turn **advisory** ArkOrder on (`arkOrder` extra, schema `1.3+`, `planeRoots`) | Wire one plane candidate after extra is on → `/ark-order`; new plane-root file → `/ark-place`; grind skip clusters → `/ark-autopilot` |
115
119
 
116
120
  ## Dual engine (mandatory)
117
121
 
@@ -149,7 +153,7 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
149
153
  4. Editing `arkrules/*` or promoting modes is **this skill** (session 0) or **`/ark-autopilot`** later; never invent `mechanical-safe`.
150
154
  5. CLI helpers: `ark-check --rules-inventory --json`, doctor JSON `rulesUnderContract`, sensors emit `ARKRULE_*` / `INVARIANT_UNCOVERED` with `evidence.arkruleId`.
151
155
  6. Absence of `arkRun` is **valid**. Write it only when the user wants the extra. Skills never enforce.
152
- 7. Absence of `arkOrder` is **valid**. Write it only when the user wants the extra. Do not invent `/ark-order`. Skills never enforce.
156
+ 7. Absence of `arkOrder` is **valid**. Write it only when the user wants the extra. After the extra is honest: handoff **`/ark-order`** to wire one candidate. Skills never enforce.
153
157
 
154
158
 
155
159
  ### Adopt + ArkRules
@@ -191,9 +195,9 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
191
195
  - A use-case that `prisma.*.update({ plan })` while `plan` is in `xiKeys` is **[ArkOrder]** `ARKORDER_XI_FIELD_WRITE`. Invoices and seats still flow through `ingest`.
192
196
 
193
197
  - Do **not** put `arkOrder` on the compact starter / `ark start` scaffold. Domain stays plane-free. Import `createOrderPlane` from `arkgate/order` (same npm package).
194
- - Absence is valid and **silent** — never force the extra. Do not invent `/ark-order`.
198
+ - Absence is valid and **silent** — never force the extra.
195
199
  - Demoting enforced → advisory or deleting the extra is policy-delta **weakening**.
196
- - After the extra is honest: handoff `/ark-place` for new plane-root files; grind skip via `/ark-autopilot`. Skills never enforce.
200
+ - After the extra is honest: handoff **`/ark-order`** to wire one candidate, `/ark-place` for new plane-root files; grind skip via `/ark-autopilot`. Skills never enforce.
197
201
 
198
202
  ## Subagent fan-out (optional, host-dependent)
199
203
 
@@ -301,7 +305,7 @@ proposals applied or deferred, **phase**, **top Shape / design-weak opportunitie
301
305
  - Force runtime kernel over existing Nest/DI.
302
306
  - Put `arkRun` or `arkOrder` on the compact starter / `ark start` scaffold.
303
307
  - Claim in-memory kernel stores are production durability.
304
- - Invent `/ark-run` or `/ark-order`.
308
+ - Invent `/ark-run`. Use `/ark-order` after this door turns the extra on.
305
309
  - Invent `layers[].description` filler or a `/ark-describe` skill.
306
310
  - Claim Enforce while governed% is low, cores empty with I/O in Application, or core bags ungoverned.
307
311
  - End adopt with only “baseline written” when design-weak residual is visible in files you opened.
@@ -5,13 +5,8 @@ description: Shortcut to /ark-adopt for a new tree. Deprecated as a first-class
5
5
 
6
6
  # /ark-architect — Shortcut to /ark-adopt
7
7
 
8
- **Not a first-run door.** This leftover name is a shortcut. Session 0 is **`/ark-adopt`**.
9
- Do that job now. Do not send the user to `/ark-contract` or `/ark-fix`.
10
-
11
- ## Autonomy contract
12
-
13
- Invoking this skill **is** the approval to mark the path. Write `ark.config.json` and
14
- phase-1 dirs in this turn. Then `ark-check`.
8
+ **Not a first-class door.** One-release redirect. Session 0 is **`/ark-adopt`**.
9
+ Do that job now. Contener · Guiar · Ordenar this leftover name is not a star.
15
10
 
16
11
  ## When / not when
17
12
 
@@ -40,25 +35,17 @@ restart/retargeting is required. `ark://manifest` never satisfies this preflight
40
35
 
41
36
  Then call **`ark_recommend`** with the same bound `project` envelope (or `ark-check --recommend`).
42
37
 
43
- ## Dual plane — layers + extras (mandatory, except /ark-runtime)
44
-
45
- Label findings **`[Layer]`** vs **`[ArkRules]`** vs **`[ArkRun]`** vs **`[ArkOrder]`**. Absence of extras is valid and silent. Session-0 extras (advisory `arkRun` / advisory `arkOrder`) live on **`/ark-adopt`**. When ArkOrder is on: first freeze `release()`, later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb | escalate_up | hold`; capacity pack as data; in-memory `ReleaseStore`; ArkRun `decisionTape`. Do not invent `/ark-run` or `/ark-order`. Skills never enforce.
46
-
47
38
  ## Subagent fan-out (optional, host-dependent)
48
39
 
49
40
  If the host supports **parallel subagents**, fan out read-only scouts; otherwise
50
41
  **fall back to sequential**. Never weaken the gate.
51
42
 
52
- ## Related onboarding
53
-
54
- - **Greenfield:** this shortcut → **`/ark-adopt`** + `ark-check --recommend` / `ark start`.
55
- - **Brownfield:** `/ark-adopt` — do not force a starter preset.
56
-
57
43
  ## Steps
58
44
 
59
45
  1. Bind MCP (`ark_identity` then `ark_recommend`) or run `ark-check --recommend`.
60
- 2. Execute **`/ark-adopt`** autonomy: write the config, dirs, optional advisory ArkRules, optional advisory ArkRun / ArkOrder when asked, gates.
61
- 3. `ark-check --strict-config`. Handoff `/ark-place` for new files.
46
+ 2. Execute **`/ark-adopt`** now (write the path, optional advisory extras).
47
+ 3. New file → `/ark-place`. Map `/ark-explore`. Apply `/ark-autopilot`.
48
+ Wire ArkRun → `/ark-runtime`. Wire ArkOrder → `/ark-order`.
62
49
 
63
50
  ## Completion contract (skill incomplete if missing)
64
51
 
@@ -5,6 +5,10 @@ description: Fix illegal imports and one leftover-design refactor. CLI is a sens
5
5
 
6
6
  # /ark-autopilot — Apply the path
7
7
 
8
+ **Contener · Guiar · Ordenar.** In plain words: contain the write, guide the next
9
+ step, order leftover mess. This door is **Guiar**: apply leftover design and illegal
10
+ imports, one small change at a time. Skills never enforce — CLI / hooks / CI do.
11
+
8
12
  **When:** the user wants architecture cleaned end-to-end, or leftover design after a map.
9
13
  **Not when:** map only (`/ark-explore`), session 0 / config lying (`/ark-adopt`), or one new file (`/ark-place`).
10
14
 
@@ -60,7 +64,7 @@ patterns are **out-of-scope** lenses — say so; do not invent Ark enforcement f
60
64
  | Brownfield or greenfield with apply | Session 0 / config lying → `/ark-adopt` first, then return |
61
65
  | User wants A + B planned and **applied** | New file only → `/ark-place` |
62
66
  | **Apply** leftover design (one Shape refactor) | User said map only |
63
- | Extra skip cluster (`ARKRUN_*` / `ARKORDER_*`) after extra is on | Extra off → `/ark-adopt` (advisory); evaluate one bus → `/ark-runtime` |
67
+ | Extra skip cluster (`ARKRUN_*` / `ARKORDER_*`) after extra is on | Extra off → `/ark-adopt` (advisory); evaluate one bus → `/ark-runtime`; evaluate one order-plane candidate → `/ark-order` |
64
68
  | Spaghetti under ENFORCE: Shape work (invoke = apply one pilot) | — |
65
69
 
66
70
  **Post-green door:** `/ark-explore` shape-focus → dual-plan B, **then this skill applies one
@@ -128,7 +132,7 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
128
132
  3. Absence of `arkRules` is **valid** — do not force ArkRules unless the user wants them or residual inventory clearly wants a pilot.
129
133
  4. Editing `arkrules/*` or promoting modes and fixing structure sensors is **this skill** (judgment, never invent `mechanical-safe`).
130
134
  5. CLI helpers: `ark-check --rules-inventory --json`, doctor JSON `rulesUnderContract`, sensors emit `ARKRULE_*` / `INVARIANT_UNCOVERED` with `evidence.arkruleId`.
131
- 6. Absence of extras is **valid**. Extra skip clusters grind **here** after the extra is on. Do not invent `/ark-run` or `/ark-order`. Skills never enforce.
135
+ 6. Absence of extras is **valid**. Extra skip clusters grind **here** after the extra is on. Evaluate one bus `/ark-runtime`; evaluate one order-plane candidate → `/ark-order`. Do not invent `/ark-run`. Skills never enforce.
132
136
 
133
137
 
134
138
  ### Autopilot + ArkRules
@@ -148,7 +152,7 @@ When `arkRun` is present:
148
152
  ### Autopilot + ArkOrder
149
153
  When `arkOrder` is present:
150
154
  - Grind skip clusters with judgment: `ARKORDER_MISSING_PLANE` / `ARKORDER_KERNEL_IN_DOMAIN` / `ARKORDER_GENERIC_UPDATE` / `ARKORDER_TOO_MANY_PARAMS` / `ARKORDER_INGEST_WRITES_XI` / `ARKORDER_XI_FIELD_WRITE` / `ARKORDER_UNVALVED_RELEASE`. First freeze with `release()`; later ξ change is `proposeRelease` then `apply`. `refreshSigma`; ingest residual `absorb | escalate_up | hold` + `reasonCode`; capacity pack; `createMemoryReleaseStore`; `ingestTravelAction`; ArkRun `decisionTape`. Never `update`/`patch`/`set`. Name `xiKeys`; do not persist those keys from a use-case. Do not “fix” a derived status by adding it to `xiKeys`; that institutionalizes the skip, so derive it on read or fold it from ingest. Doctor / status `arkOrder` is `notAScore`.
151
- - Extra off → `/ark-adopt` (advisory). Do not invent `/ark-order`.
155
+ - Extra off → `/ark-adopt` (advisory). Wire one candidate `/ark-order`.
152
156
  - Skills never enforce.
153
157
 
154
158
  ## Subagent fan-out (optional, host-dependent)
@@ -266,7 +270,7 @@ Status lights from doctor — not settings you choose. Rank residual honestly:
266
270
  - Claim ENFORCE / “done” when doctor reports `contract-false-green-io-under-application` (adopt first).
267
271
  - Claim “done” solely because plan A is empty while explore/B residual remains unlisted.
268
272
  - Replace host Nest/DI with the runtime kernel unasked.
269
- - Invent `/ark-run` or `/ark-order`.
273
+ - Invent `/ark-run`. Use `/ark-order` to wire one plane candidate.
270
274
  - Auto-apply pattern (B) bets as if they were mechanical-safe.
271
275
  - Create origin only after a long cleanup (freezes a polished “before” that never was).
272
276
 
@@ -5,21 +5,18 @@ description: Shortcut — edit the rules file or extra rules. Use /ark-adopt or
5
5
 
6
6
  # /ark-contract — Shortcut to adopt / autopilot
7
7
 
8
- **Not a first-run door.** This leftover name is a shortcut. Writing `ark.config.json` is
8
+ **Not a first-class door.** One-release redirect. Writing `ark.config.json` is
9
9
  **`/ark-adopt`** at session 0 and **`/ark-autopilot`** afterward. Do that job now.
10
-
11
- ## Autonomy contract
12
-
13
- Invoking this leftover name **is** the approval to write an honest config. Do not
14
- preview-only. Never weaken the architecture config.
10
+ Contener · Guiar · Ordenar — this leftover name is not a star.
15
11
 
16
12
  ## When / not when
17
13
 
18
14
  | Use this leftover name when… | Prefer instead |
19
15
  |------------------------------|----------------|
20
- | Layers / include / ArkRules / **ArkRun extra** / **ArkOrder extra** need an edit | **`/ark-adopt`** (path, first `arkRun` / first `arkOrder`) or **`/ark-autopilot`** (tighten) |
16
+ | Layers / include / ArkRules / first extra need an edit | **`/ark-adopt`** (path, first `arkRun` / first `arkOrder`) or **`/ark-autopilot`** (tighten) |
21
17
  | False-green / concentrated edge | **`/ark-adopt`** — write the honest config |
22
- | Kernel extra / one kernel candidate | **`/ark-runtime`** — leftover name; wires `arkgate/runtime`, not a second package |
18
+ | One kernel candidate | **`/ark-runtime`** |
19
+ | One order-plane candidate | **`/ark-order`** |
23
20
 
24
21
  ## Dual engine (mandatory)
25
22
 
@@ -39,14 +36,6 @@ retain `projectIdentity.projectId`, then pass both `expectedRoot` and `expectedP
39
36
  uncertain, do not consume MCP analysis: use the workspace-local CLI and report that MCP
40
37
  restart/retargeting is required. `ark://manifest` never satisfies this preflight.
41
38
 
42
- ## Dual plane — layers + extras (mandatory, except /ark-runtime)
43
-
44
- Label findings **`[Layer]`** vs **`[ArkRules]`** vs **`[ArkRun]`** vs **`[ArkOrder]`**. Absence of extras is valid and silent. First-time extra is **`/ark-adopt`** (advisory). Wire one kernel candidate with **`/ark-runtime`**. New kernel-managed / plane-root file with **`/ark-place`**. Grind skip clusters with **`/ark-autopilot`**. Do not invent `/ark-run` or `/ark-order`. Skills never enforce.
45
-
46
- Application / Features may declare advisory **`writes-via-aggregate`**: a use-case that imports a persistence driver and calls `.insert` / `.create` / `INSERT INTO` is the skip. Persistence adapters stay the write edge. Do not add `Externals/` or `admission.ts` as contract law.
47
-
48
- When `arkOrder` is on, name **`xiKeys`** (3–5 slow product decisions). Membership ids and recomputable statuses are not keys: derive a status on read or fold it from ingest instead. A use-case that persists those keys is `ARKORDER_XI_FIELD_WRITE`. First freeze is `release()`; later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb | escalate_up | hold` + `reasonCode`; capacity pack as data; in-memory `ReleaseStore`; ArkRun `decisionTape`. The billing gallery lives on GitHub, not in the npm tarball: [examples/arkorder-billing](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing). Rename the three keys. The check remains silent on semantic entailment.
49
-
50
39
  ## Subagent fan-out (optional, host-dependent)
51
40
 
52
41
  If the host supports **parallel subagents**, fan out read-only scouts; otherwise
@@ -59,9 +48,9 @@ If the host supports **parallel subagents**, fan out read-only scouts; otherwise
59
48
 
60
49
  ## Steps
61
50
 
62
- 1. If the path is missing or lying → execute **`/ark-adopt`** (including first advisory `arkRun` / first advisory `arkOrder`).
63
- 2. If the path is honest and you are tightening rules or extras (`arkRun` / `arkOrder`) → execute **`/ark-autopilot`**.
64
- 3. One kernel candidate (extra already on) → **`/ark-runtime`**. `ark-check --strict-config`.
51
+ 1. Path missing or lying → execute **`/ark-adopt`** (including first advisory `arkRun` / first advisory `arkOrder`).
52
+ 2. Path honest and tightening → execute **`/ark-autopilot`**.
53
+ 3. One kernel candidate → **`/ark-runtime`**. One order-plane candidate → **`/ark-order`**.
65
54
 
66
55
  ## Completion contract (skill incomplete if missing)
67
56
 
@@ -73,5 +62,5 @@ Skill incomplete if missing any field below.
73
62
  - **Result:** one-line outcome
74
63
  - **Planes:** one-line split of residual **[Layer]** vs **[ArkRules]** vs **[ArkRun]** vs **[ArkOrder]** (or `n/a` if unused)
75
64
  - **Compass:** top residual lenses | `n/a`
76
- - **Handoff:** `/ark-adopt` / `/ark-autopilot` / `none`
65
+ - **Handoff:** `/ark-adopt` / `/ark-autopilot` / `/ark-order` / `none`
77
66
  - **Incomplete?** `no` | `yes — <what is missing>`
@@ -5,9 +5,13 @@ description: How much of the tree the rules file covers. CLI is a sensor; read t
5
5
 
6
6
  # /ark-coverage — Ark adoption fitness (not full recon)
7
7
 
8
+ **Contener · Guiar · Ordenar.** In plain words: contain the write, guide the next
9
+ step, order leftover mess. This door is **Guiar**: adoption fitness numbers, not a full map.
10
+ Skills never enforce — CLI / hooks / CI do.
11
+
8
12
  **Not a first-run door.** Fitness numbers only (governed files, gates, baseline).
9
13
  Session 0 → **`/ark-adopt`**. Leftover design → **`/ark-explore`**. Apply → **`/ark-autopilot`**.
10
- Do not send the user to leftover `/ark-contract` or `/ark-fix`.
14
+ Wire ArkRun **`/ark-runtime`**. Wire ArkOrder **`/ark-order`**.
11
15
 
12
16
  You audit **how this repo uses ArkGate** (coverage, gates, baseline, host write path) and
13
17
  what adoption gaps remain. Work autonomously. End with a ranked fitness report.
@@ -41,7 +45,7 @@ patterns are **out-of-scope** lenses — say so; do not invent Ark enforcement f
41
45
  | “How adopted is Ark?” governed%, gates, baseline, skills stale | Full product map / what-next architecture → `/ark-explore` |
42
46
  | Capability gaps (CI, write path, ESLint, optional layers) | Apply fixes end-to-end → `/ark-autopilot` |
43
47
  | Ranked *adoption* opportunities (install, ratchet, contract classify) | Spaghetti pattern plan / golden pattern → `/ark-explore` dual-plan seed |
44
- | Quick honesty before a release checklist | One design trade-off → `/ark-think` |
48
+ | Quick honesty before a release checklist | One design trade-off → `/ark-explore` (one decision, 2–3 options) |
45
49
 
46
50
  ## Dual engine (mandatory)
47
51
 
@@ -90,10 +94,10 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
90
94
  1. Prefix each finding or next step with **`[Layer]`** or **`[ArkRules]`** or **`[ArkRun]`** or **`[ArkOrder]`** (or a table with those headers).
91
95
  2. Never call an import-edge violation an “invariant” or an aggregate sensor a “layer deny.”
92
96
  3. Absence of `arkRules` is **valid** — do not force ArkRules unless the user wants them or residual inventory clearly wants a pilot.
93
- 4. Editing `arkrules/*` or promoting modes is **`/ark-adopt`** / leftover **`/ark-contract`**; fixing code under a structure sensor is leftover **`/ark-fix`** / **`/ark-loop`** or **`/ark-autopilot`** (judgment, never invent mechanical-safe).
97
+ 4. Editing `arkrules/*` or promoting modes is **`/ark-adopt`**; fixing code under a structure sensor is **`/ark-autopilot`** (judgment, never invent mechanical-safe).
94
98
  5. CLI helpers: `ark-check --rules-inventory --json`, doctor JSON `rulesUnderContract`, sensors emit `ARKRULE_*` / `INVARIANT_UNCOVERED` with `evidence.arkruleId`.
95
99
  5b. Invariant coverage is a **text match, never an execution**: a file walk plus the invariant id in a `describe`/`it` title. Never report `INVARIANT_UNCOVERED: 0` as “the tests pass” or “the tests run” — ArkGate does not run tests and reads no runner config. When the project declares `coverage.coverageRoots`, a covering test found outside them raises the advisory `INVARIANT_COVERAGE_OUTSIDE_ROOTS`; without that declaration ArkGate makes no claim about where tests run.
96
- 6. Extras silent when off. Doctor `arkRun` is `notAScore`. Do not force extras. Do not invent `/ark-run` or `/ark-order`.
100
+ 6. Extras silent when off. Doctor `arkRun` / `arkOrder` is `notAScore`. Do not force extras. Wire one kernel candidate via `/ark-runtime`; one order-plane candidate via `/ark-order`. Do not invent `/ark-run`.
97
101
 
98
102
 
99
103
  ### Coverage + ArkRules
@@ -143,10 +147,10 @@ because governed% is 100% and plan is empty.
143
147
 
144
148
  ## Related onboarding
145
149
 
146
- - **Greenfield:** low governed% → `/ark-architect` or `ark-check --recommend`.
150
+ - **Greenfield:** low governed% → `/ark-adopt` or `ark-check --recommend`.
147
151
  - **Brownfield:** `/ark-adopt` for action; this skill for fitness metrics.
148
152
  - **Pattern / spaghetti residual:** `/ark-explore` dual-plan seed / shape-focus.
149
- - **Business rules loose:** note in table; mining action → `/ark-adopt` or `/ark-contract`.
153
+ - **Business rules loose:** note in table; mining action → `/ark-adopt`.
150
154
 
151
155
  ## Checklist (sensor + light code)
152
156
 
@@ -159,8 +163,8 @@ because governed% is 100% and plan is empty.
159
163
  7. **Governed%** + unclassified + `suggestions` from `--coverage --json`.
160
164
  8. Concentrated edges in check `summary` → contract smell, not N freezes.
161
165
  9. `layersWithoutRules` + empty cores with I/O under Application (false-green).
162
- On false-green: **STOP — do not continue this skill as complete.** **STOP — false-green: invoke /ark-adopt or /ark-contract before claiming ENFORCE.** Do not claim goal.met / ENFORCE from type-only cleanup while doctor reports `contract-false-green-io-under-application`.
163
- On one-edge wall: **STOP — do not continue this skill as complete.** **STOP — concentrated edge: invoke /ark-contract with source evidence** (do not freeze a wrong contract or grind N freezes).
166
+ On false-green: **STOP — do not continue this skill as complete.** **STOP — false-green: invoke /ark-adopt before claiming ENFORCE.** Do not claim goal.met / ENFORCE from type-only cleanup while doctor reports `contract-false-green-io-under-application`.
167
+ On one-edge wall: **STOP — do not continue this skill as complete.** **STOP — concentrated edge: invoke /ark-adopt with source evidence** (do not freeze a wrong contract or grind N freezes).
164
168
  10. Runtime kernel / Nest only if deps prove it — never force-fit.
165
169
 
166
170
  ## Output format
@@ -5,9 +5,13 @@ description: Explain the rules file in plain language and generate the HTML repo
5
5
 
6
6
  # /ark-explain — Understand this project's architecture
7
7
 
8
+ **Contener · Guiar · Ordenar.** In plain words: contain the write, guide the next
9
+ step, order leftover mess. This door is **Guiar**: teach the path in plain language.
10
+ Skills never enforce — CLI / hooks / CI do.
11
+
8
12
  **Not a first-run door.** Teach / HTML tour only. Session 0 → **`/ark-adopt`**.
9
13
  Map → **`/ark-explore`**. Apply → **`/ark-autopilot`**.
10
- Do not send the user to leftover `/ark-contract` or `/ark-fix`.
14
+ Wire ArkRun **`/ark-runtime`**. Wire ArkOrder **`/ark-order`**.
11
15
 
12
16
  The user wants to understand the architecture, a specific rule, or why the gate blocked them.
13
17
 
@@ -76,7 +80,7 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
76
80
  3. Absence of `arkRules` is **valid** — do not force ArkRules unless the user wants them or residual inventory clearly wants a pilot.
77
81
  4. Editing `arkrules/*` or applying structure fixes is **`/ark-adopt`** / **`/ark-autopilot`** (never invent `mechanical-safe`).
78
82
  5. CLI helpers: `ark-check --rules-inventory --json`, doctor JSON `rulesUnderContract`, sensors emit `ARKRULE_*` / `INVARIANT_UNCOVERED` with `evidence.arkruleId`.
79
- 6. Extras silent when off. Doctor `arkRun` is `notAScore`. Do not force extras. Do not invent `/ark-run` or `/ark-order`.
83
+ 6. Extras silent when off. Doctor `arkRun` / `arkOrder` is `notAScore`. Do not force extras. Wire one kernel candidate via `/ark-runtime`; one order-plane candidate via `/ark-order`. Do not invent `/ark-run`.
80
84
 
81
85
 
82
86
  ### Explain + ArkRules
@@ -217,7 +221,7 @@ when residual signals remain.
217
221
 
218
222
  ## Related
219
223
 
220
- - Onboarding: `/ark-adopt` (or leftover `/ark-architect`), `ark-check --recommend`, `docs/enthusiast/README.md`
224
+ - Onboarding: `/ark-adopt`, `ark-check --recommend`, `docs/enthusiast/README.md`
221
225
  - Brownfield: `/ark-adopt`, `docs/brownfield-adoption.md`
222
226
  - Autopilot: `/ark-autopilot` after the user understands the contract
223
227
 
@@ -5,7 +5,12 @@ description: Map import rules and leftover design. No apply. CLI is a sensor; yo
5
5
 
6
6
  # /ark-explore — Recon the real project (map only)
7
7
 
8
- **When:** you need a map, or leftover design work remains after imports look green.
8
+ **Contener · Guiar · Ordenar.** In plain words: contain the write, guide the next
9
+ step, order leftover mess. This door is **Guiar**: map leftover design so you can
10
+ order a messy tree. Do not apply. Skills never enforce — CLI / hooks / CI do.
11
+
12
+ **When:** you need a map, leftover design work remains after imports look green, or
13
+ one bounded decision needs 2–3 enforceable options.
9
14
  **Not when:** the user wants edits applied (`/ark-autopilot`) or session 0 (`/ark-adopt`).
10
15
 
11
16
  ## Steps
@@ -102,7 +107,8 @@ If the consumer tree has a **domain glossary**, prefer its terms for layer/slice
102
107
  | Map / “what next?” / residual after ENFORCE | User wants edits applied → `/ark-autopilot` |
103
108
  | **Primary post-green door:** messy / leftover design work / “clarify for AI” | Skill-shopping coverage or think for the same leftover work |
104
109
  | Spaghetti brownfield: patterns concurrent, design-weak under green check | Only “governed% + gates installed?” numbers → `/ark-coverage` |
105
- | Dual-plan **seed** (A remediation + B pattern bets) without applying | One design trade-off between 2–3 options already mapped → `/ark-think` |
110
+ | Dual-plan **seed** (A remediation + B pattern bets) without applying | Apply the chosen option `/ark-autopilot`; new file → `/ark-place` |
111
+ | One bounded decision: 2–3 enforceable options (folded from leftover `/ark-think`) | Full apply → `/ark-autopilot`; extra off → `/ark-adopt`; one kernel candidate → `/ark-runtime`; one order-plane candidate → `/ark-order` |
106
112
  | Path-correct vs design-correct honesty | Plain-language tour / HTML report → `/ark-explain` |
107
113
 
108
114
  **Post-green single path:** when doctor `postGreenPath` / ENFORCE · leftover design work is active, **this skill
@@ -174,7 +180,7 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
174
180
  3. Absence of `arkRules` is **valid** — do not force ArkRules unless the user wants them or residual inventory clearly wants a pilot.
175
181
  4. Editing `arkrules/*` or applying structure fixes is **`/ark-adopt`** / **`/ark-autopilot`** — explore does not write (never invent `mechanical-safe`).
176
182
  5. CLI helpers: `ark-check --rules-inventory --json`, doctor JSON `rulesUnderContract`, sensors emit `ARKRULE_*` / `INVARIANT_UNCOVERED` with `evidence.arkruleId`.
177
- 6. Never write `arkRun` or `arkOrder` from this skill. When extras are present, label residual **`[ArkRun]`** / **`[ArkOrder]`**. Do not invent `/ark-run` or `/ark-order`.
183
+ 6. Never write `arkRun` or `arkOrder` from this skill. When extras are present, label residual **`[ArkRun]`** / **`[ArkOrder]`**. Wire one kernel candidate via `/ark-runtime`; one order-plane candidate via `/ark-order`. Do not invent `/ark-run`.
178
184
 
179
185
 
180
186
  ### Explore + ArkRules
@@ -186,7 +192,22 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
186
192
  ### Explore + extras
187
193
  - Map extras when present; never write `arkRun` / `arkOrder`. Extra off → residual `n/a` / silent.
188
194
  - When `arkOrder` is on, name the valve: first freeze `release()`; later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb | escalate_up | hold` + `reasonCode`; capacity pack as data; in-memory `ReleaseStore` (`createMemoryReleaseStore`); thin travel `ingestTravelAction`. ArkRun residual may include information package `decisionTape` `{ xiHash, event, residual }`.
189
- - Field path may name the ArkOrder gallery on GitHub (`https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing`; not in the npm tarball — map only). First extra write is `/ark-adopt`; grind is `/ark-autopilot`.
195
+ - Field path may name the ArkOrder gallery on GitHub (`https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing`; not in the npm tarball — map only). First extra write is `/ark-adopt`; wire one candidate is `/ark-order`; grind is `/ark-autopilot`.
196
+
197
+ ## One decision (2–3 options)
198
+
199
+ When the job is **one** bounded import-rule or ArkRules choice (not a full map), stay here.
200
+ Leftover `/ark-think` redirects here. Do not invent a third door.
201
+
202
+ 1. Open ≥5 source files on the decision surface. Name paths.
203
+ 2. Propose **2–3 options** that stay enforceable today. Label each by lens impact
204
+ (what residual improves / what stays out-of-scope). Always `notAScore`.
205
+ 3. Recommend one option + why it is enforceable. Pilot + kill-switch if the choice
206
+ adds a layer or wall.
207
+ 4. Hand off: apply → `/ark-autopilot`; new file → `/ark-place`; extra off → `/ark-adopt`;
208
+ one kernel candidate → `/ark-runtime`; one order-plane candidate → `/ark-order`.
209
+
210
+ Never weaken `ark.config.json` to pass. Never silent judgment auto-apply.
190
211
 
191
212
  ## Output mode (pick one — do not invent a fourth)
192
213