arkgate 3.0.1 → 3.0.2

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.
package/CHANGELOG.md CHANGED
@@ -4,7 +4,15 @@ All notable changes to ArkGate (`arkgate`; formerly `ark-runtime-kernel`) are do
4
4
 
5
5
  ## Unreleased
6
6
 
7
- No changes are scheduled after 3.0.1.
7
+ No changes are scheduled after 3.0.2.
8
+
9
+ ## 3.0.2 — 2026-07-13
10
+
11
+ ### Documentation
12
+
13
+ - Sync consumer-facing agent docs with 3.0.1 design-depth skills: `designFitness` /
14
+ `patternBets`, extraction cards, dual-plan B honesty in agent-guide, AI gates, and the
15
+ autopilot demo. Release note status for 3.0.1 marked published.
8
16
 
9
17
  ## 3.0.1 — 2026-07-13
10
18
 
package/dist/index.cjs CHANGED
@@ -50,7 +50,7 @@ __export(gate_exports, {
50
50
  module.exports = __toCommonJS(gate_exports);
51
51
 
52
52
  // src/version.ts
53
- var version = "3.0.1";
53
+ var version = "3.0.2";
54
54
 
55
55
  // src/domain/adapterContract.ts
56
56
  var ARK_ANALYSIS_RESULT_SCHEMA_VERSION = "1.0";
package/dist/index.d.cts CHANGED
@@ -2,7 +2,7 @@ import { a as ArkConfigRule, b as ArkConfigLayer, A as ArkConfig, c as ArkConfig
2
2
  export { d as ARK_CONFIG_SCHEMA, e as ARK_CONFIG_SCHEMA_VERSION, l as loadArkConfigContract, p as parseArkConfigJson } from './configContract-BxSIwVRo.cjs';
3
3
 
4
4
  /** ArkGate library version — single source of truth. */
5
- declare const version = "3.0.1";
5
+ declare const version = "3.0.2";
6
6
 
7
7
  /** Versioned public result contract shared by every ArkGate enforcement adapter. */
8
8
  declare const ARK_ANALYSIS_RESULT_SCHEMA_VERSION: "1.0";
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { a as ArkConfigRule, b as ArkConfigLayer, A as ArkConfig, c as ArkConfig
2
2
  export { d as ARK_CONFIG_SCHEMA, e as ARK_CONFIG_SCHEMA_VERSION, l as loadArkConfigContract, p as parseArkConfigJson } from './configContract-BxSIwVRo.js';
3
3
 
4
4
  /** ArkGate library version — single source of truth. */
5
- declare const version = "3.0.1";
5
+ declare const version = "3.0.2";
6
6
 
7
7
  /** Versioned public result contract shared by every ArkGate enforcement adapter. */
8
8
  declare const ARK_ANALYSIS_RESULT_SCHEMA_VERSION: "1.0";
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var version = "3.0.1";
2
+ var version = "3.0.2";
3
3
 
4
4
  // src/domain/adapterContract.ts
5
5
  var ARK_ANALYSIS_RESULT_SCHEMA_VERSION = "1.0";
@@ -79,12 +79,27 @@ as unresolved decisions, and restores the integration with `ark start --tools <h
79
79
  (no apply). `/ark-coverage` = Ark **fitness** only (governed/gates). `/ark-think` = one decision
80
80
  (2–3 options). `/ark-adopt` = brownfield Align/Stabilize + seed Shape B. `/ark-autopilot` =
81
81
  explore then apply A + propose/apply-with-ok B. `/ark-loop` = plan A only. Empty plan A is not
82
- “architecture healthy” if design-weak residual remains.
82
+ “architecture healthy” if design-weak residual remains. Full routing table: full-install
83
+ `AGENTS.md` / [README skill table](../README.md#other-skills-only-when-you-need-them).
84
+
85
+ **Design fitness (3.0.1+):** after edges are clean, doctor can still report **ENFORCE · design-weak**.
86
+
87
+ ```bash
88
+ npx ark-check --doctor --json # doctor.designFitness + doctor.designSmells[]
89
+ npx ark-check --plan --json # plan.goal.designWeak + plan.patternBets[] (never mechanical-safe)
90
+ ```
91
+
92
+ Smell ids (stable): `io-under-application`, `handler-in-persistence`, `god-module`,
93
+ `domain-logic-in-ui`, `facade-sql-in-routes`, `mixed-pattern-cluster`, `soft-contract`.
94
+ Each has `evidence[]` paths. Plan **B** bets include `pilot`, `successSignal`, `killSwitch`,
95
+ and **`neverMechanicalSafe: true`** — loop/autoPatch must ignore them. For judgment I/O moves
96
+ use **extraction cards** ([brownfield-adoption.md](brownfield-adoption.md) §6). Multi-PR residual
97
+ may optionally be persisted as a short Shape plan under the repo; not a gate requirement.
83
98
 
84
99
  **Full-skill agent co-pilot:** after explicitly installing the `/ark-*` pack, use
85
100
  `/ark-autopilot` (explore-first, dual plan A remediation + B pattern bets). Recon without
86
101
  applying: `/ark-explore`. The default compact router uses MCP/CLI directly. Never treat empty
87
- `--plan` as “architecture healthy” without the explore pass.
102
+ `--plan` steps as “architecture healthy” when `designWeak` / non-empty `patternBets` remain.
88
103
 
89
104
  `ark init --archetype <id>` maps playbook ids to named presets (`hexagonal`, `layered`,
90
105
  `feature-sliced`, `monorepo`). With `--yes` and no archetype, Ark auto-selects from
package/docs/ai-gates.md CHANGED
@@ -50,6 +50,13 @@ you pass `--force`, so review and commit only the templates that match your proj
50
50
  `autoPatch` flags), the supported profile for the active host, and the evidence actually found.
51
51
  Supported capability and installed guarantee are deliberately separate.
52
52
 
53
+ **Design fitness (3.0.1+):** the same doctor JSON may include `doctor.designFitness` and
54
+ `doctor.designSmells[]` (path evidence). Edge-clean `operatingMode: enforce` can still set
55
+ `designFitness.designWeak: true` (**ENFORCE · design-weak**). That is Shape residual, not a
56
+ write-path failure. Companion plan JSON: `plan.patternBets[]` with `neverMechanicalSafe: true`
57
+ — never treat as write-boundary `autoPatch` / mechanical-safe. See
58
+ [package-surface.md](package-surface.md) and [brownfield-adoption.md](brownfield-adoption.md) §6.
59
+
53
60
  If your project uses Codex or Grok, treat MCP registration as part of the default
54
61
  setup, not an optional extra. Ark works best when the agent can read `ark://manifest`
55
62
  before it writes code; that is the fast path to avoiding architecture drift during
@@ -35,17 +35,22 @@ the layer globs so day-one **governed%** is real (not a false-green empty contra
35
35
  ### 2. See the plan yourself (optional)
36
36
 
37
37
  ```bash
38
- npx ark-check --plan # human view (includes Governed: N%)
39
- npx ark-check --plan --json # { ok, plan: { goal, counts, steps } }
38
+ npx ark-check --plan # human view (includes Governed: N%; pattern bets when design-weak)
39
+ npx ark-check --plan --json # { ok, plan: { goal, counts, steps, patternBets?, designSmells? } }
40
+ npx ark-check --doctor --json # designFitness / designSmells when residual is design-weak
40
41
  ```
41
42
 
42
- Each step is tagged `mechanical-safe` / `judgment` / `deferred` with a `confidence`,
43
+ Each **A** step is tagged `mechanical-safe` / `judgment` / `deferred` with a `confidence`,
43
44
  `rationale`, and often `remediationKind`. Auto-safe kinds: type-only type move, pure-type **file**
44
45
  relocate, `import type` of pure-type modules, and named type-export imports from mixed modules
45
46
  (`import-type-of-type-exports`). `goal.met` is true only when
46
47
  there are no active violations **and** governed coverage is meaningful — so a clean plan that
47
48
  checks almost nothing is not "done."
48
49
 
50
+ When edges are clean but design residual remains, JSON also sets `goal.designWeak` and
51
+ `patternBets[]` (each with `neverMechanicalSafe: true`). Those are **B** (Shape) bets — not
52
+ auto-applied. Extraction cards: [brownfield-adoption.md](../brownfield-adoption.md) §6.
53
+
49
54
  ### 3. Carry the plan out — the autopilot
50
55
 
51
56
  In your agent, run:
@@ -54,10 +59,12 @@ In your agent, run:
54
59
  /ark-autopilot
55
60
  ```
56
61
 
57
- It runs the whole flow (newbie tier): confirms the plan, hands off to `/ark-loop` to apply the
58
- `mechanical-safe` steps one at a time — **validating each with `ark-check` and rolling back any
59
- regression** — proposes each `judgment` step for a yes/no, loops until `goal.met`, and reports
60
- what was auto-applied vs proposed vs deferred. Nothing lands until you review the diff.
62
+ It runs the whole flow (newbie tier): **explore first** (map + dual plan), hands off to
63
+ `/ark-loop` for plan **A** `mechanical-safe` steps one at a time — **validating each with
64
+ `ark-check` and rolling back any regression** — proposes each A `judgment` and each B
65
+ pattern/Shape bet for a yes/no, and reports what was auto-applied vs proposed vs deferred.
66
+ Nothing lands until you review the diff. Empty A with open B is **not** “architecture healthy
67
+ finished.”
61
68
 
62
69
  Expert entry: skip the autopilot and use the pieces — `ark init` / `/ark-contract` to shape the
63
70
  contract, `ark-check --plan` for the work, `/ark-fix` for targeted fixes, `ark-check
@@ -21,7 +21,7 @@ This document is the consumer contract for **what is stable** vs **what is exper
21
21
  | **`ark.config.json`** | Layer globs, rules, include/exclude, forbiddenGlobals, intent prefixes, `peerIsolation`, `dynamicImportAllowlist`, `safety` thresholds | Versioned by `schemaVersion`; unknown fields fail closed and migrations preserve the previous supported major. |
22
22
  | **`arkgate/schema/analysis-result`** | Public CLI/MCP/hook diagnostic envelope (`schemaVersion`, `valid`, `diagnostics`) | Versioned JSON Schema; committed v1 compatibility fixture protects rule, severity, location, and evidence fields. |
23
23
  | **Config JSON Schema** | `arkgate/schema` or `arkgate/schema/ark.config.schema.json` | Stable package resource subpaths for editor completion and contract tooling. |
24
- | **Agent skills** | `/ark-*` templates installed by `--install-agent-gates` | Skill *names* and “default flow” are stable; internal skill prose may evolve (e.g. explore dual-plan seed, day-zero origin order). |
24
+ | **Agent skills** | `/ark-*` templates installed by `--install-agent-gates` | Skill *names* and “default flow” are stable; internal skill prose may evolve (e.g. When/not when, explore Shape dual-plan seed, extraction cards, day-zero origin order). |
25
25
  | **ESLint subpath** | `arkgate/eslint` | Config-driven layer/import rules; loads consumer `ark.config.json`. |
26
26
  | **GitHub Action** | `pedroknigge/arkgate` (see `action.yml`) | The `uses:` tag/SHA selects the checker source; `version` remains an optional exact npm compatibility override. |
27
27
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkgate",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "ArkGate — architecture co-pilot for AI TypeScript (write gate, CI gate, plan/loop)",
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": "3.0.1",
9
+ "version": "3.0.2",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "arkgate",
14
- "version": "3.0.1",
14
+ "version": "3.0.2",
15
15
  "runtimeHint": "npx",
16
16
  "transport": {
17
17
  "type": "stdio"