arkgate 4.7.1 → 4.7.3
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 +38 -1
- package/README.md +43 -34
- package/bin/lib/agent-projection.mjs +1 -1
- package/bin/lib/ci-and-commands.mjs +3 -3
- package/bin/lib/enforcement-honesty.mjs +1 -1
- package/bin/lib/first-run-help.mjs +3 -3
- package/bin/lib/html-report-depth.mjs +1 -1
- package/bin/lib/html-report.mjs +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/docs/README.md +9 -5
- package/docs/agent-guide.md +6 -5
- package/docs/ai-gates.md +3 -2
- package/docs/develop.md +10 -6
- package/docs/enthusiast/README.md +11 -8
- package/docs/package-surface.md +6 -3
- package/docs/product-voice.md +151 -38
- package/docs/use.md +21 -14
- package/package.json +3 -4
- package/server.json +4 -4
- package/templates/agent-skills/README.md +1 -1
- package/templates/agent-skills/ark-adopt/SKILL.md +2 -2
- package/templates/agent-skills/ark-architect/SKILL.md +1 -1
- package/templates/agent-skills/ark-autopilot/SKILL.md +2 -2
- package/templates/agent-skills/ark-contract/SKILL.md +1 -1
- package/templates/agent-skills/ark-coverage/SKILL.md +1 -1
- package/templates/agent-skills/ark-explain/SKILL.md +1 -1
- package/templates/agent-skills/ark-explore/SKILL.md +1 -1
- package/templates/agent-skills/ark-fix/SKILL.md +1 -1
- package/templates/agent-skills/ark-loop/SKILL.md +1 -1
- package/templates/agent-skills/ark-place/SKILL.md +1 -1
- package/templates/agent-skills/ark-runtime/SKILL.md +1 -1
- package/templates/agent-skills/ark-think/SKILL.md +1 -1
- package/templates/agent-skills/ark-upgrade/SKILL.md +1 -1
- package/templates/skills/ark-adopt.md +2 -2
- package/templates/skills/ark-architect.md +1 -1
- package/templates/skills/ark-autopilot.md +2 -2
- package/templates/skills/ark-contract.md +1 -1
- package/templates/skills/ark-coverage.md +1 -1
- package/templates/skills/ark-explain.md +1 -1
- package/templates/skills/ark-explore.md +1 -1
- package/templates/skills/ark-fix.md +1 -1
- package/templates/skills/ark-loop.md +1 -1
- package/templates/skills/ark-place.md +1 -1
- package/templates/skills/ark-runtime.md +1 -1
- package/templates/skills/ark-think.md +1 -1
- package/templates/skills/ark-upgrade.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,13 +5,50 @@ in the immutable pre-2.0 archive linked below.
|
|
|
5
5
|
|
|
6
6
|
## Unreleased
|
|
7
7
|
|
|
8
|
+
## 4.7.3 — 2026-08-25
|
|
9
|
+
|
|
10
|
+
**Patch** over **4.7.2**. Remaining first-contact copy: README H1, below-fold headings,
|
|
11
|
+
product-voice lexicon, live site pages, and doctor HTML strings. Same deny.
|
|
12
|
+
**No required config migration.** Does not close Z09 / K01.
|
|
13
|
+
|
|
14
|
+
**Status: prepared** (not on npm `latest` until publish; see `docs/releases/4.7.3.md`).
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- **README H1** is the deny, not “Architecture Co-pilot”. Below the fold: two kinds of
|
|
19
|
+
rules (not “two planes”); required CI is the hard line (not “merge gate”).
|
|
20
|
+
- **Product voice** North star and lexicon prefer rules file / the write is rejected /
|
|
21
|
+
doctor. Allowlist wins.
|
|
22
|
+
- **npm keywords** drop `co-pilot` / `write-gate`.
|
|
23
|
+
- **Doctor HTML** strings drop co-pilot. ADR 0001 product title unchanged. Historical
|
|
24
|
+
4.6.2 three-beat line stays in that release note.
|
|
25
|
+
|
|
26
|
+
## 4.7.2 — 2026-08-25
|
|
27
|
+
|
|
28
|
+
**Patch** over **4.7.1**. Public copy uses ordinary software words: if the AI writes an
|
|
29
|
+
illegal import, the write is rejected; the same check fails the pull request. Not an API Gateway.
|
|
30
|
+
Not a folder linter. If the check is not required on the PR, the rules file is
|
|
31
|
+
just documentation. **No required config migration.** Does not close Z09 / K01.
|
|
32
|
+
|
|
33
|
+
**Status: published** (on npm `latest`; see `docs/releases/4.7.2.md`).
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- **First-contact wording (common language):** README, use/develop/docs hub/enthusiast,
|
|
38
|
+
agent-guide, ai-gates, package-surface openings, compact agent router, skill picker
|
|
39
|
+
`description` frontmatter, first-run CLI help, compact doctor strings, Action and MCP
|
|
40
|
+
descriptions, npm `description`, and the live product site lead with the deny. How:
|
|
41
|
+
one rules file, one check, one next step. Authority:
|
|
42
|
+
[product voice](docs/product-voice.md). ADR 0001 product title unchanged. Historical
|
|
43
|
+
4.6.2 three-beat line stays in that release note.
|
|
44
|
+
|
|
8
45
|
## 4.7.1 — 2026-08-25
|
|
9
46
|
|
|
10
47
|
**Patch** over **4.7.0**. One project skill catalog, visible package version in the
|
|
11
48
|
skill picker, no home duplicates, ArkRun routed through existing skill names.
|
|
12
49
|
**No required config migration.** Does not close Z09 / K01.
|
|
13
50
|
|
|
14
|
-
**Status:
|
|
51
|
+
**Status: published** (on npm `latest`; see `docs/releases/4.7.1.md`).
|
|
15
52
|
|
|
16
53
|
### Added
|
|
17
54
|
|
package/README.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
# ArkGate —
|
|
3
|
+
# ArkGate — illegal imports rejected at write and at merge
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**If the AI writes an illegal import, the write is rejected. The same check fails the pull request.**
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
Not an API Gateway. Not a folder linter. If the check is not required on the PR, the rules
|
|
8
|
+
file is just documentation.
|
|
9
|
+
|
|
10
|
+
**One rules file. One check. One next step.**
|
|
9
11
|
|
|
10
12
|
[](https://www.arkgate.online/)
|
|
11
13
|
[](https://github.com/pedroknigge/arkgate/actions/workflows/ci.yml)
|
|
@@ -16,11 +18,12 @@ and makes sure a “green” check means something real.
|
|
|
16
18
|
|
|
17
19
|
</div>
|
|
18
20
|
|
|
19
|
-
> **ArkGate 4.7.
|
|
21
|
+
> **ArkGate 4.7.3** (tree). npm `latest` remains **4.7.2** until this patch publishes.
|
|
22
|
+
> If the AI writes an illegal import, the write is rejected. Optional **ArkRun** extra on schema `1.2`.
|
|
20
23
|
> A tree is **adopted** only with a required GitHub status running `arkgate-check --strict-merge`,
|
|
21
24
|
> or `.ark/adoption-stance.json` `stance: "advisory-only"`. Doctor is compact (`--doctor --all`
|
|
22
|
-
> for Details). [4.7.
|
|
23
|
-
> [4.
|
|
25
|
+
> for Details). [4.7.3 notes](docs/releases/4.7.3.md) · [4.7.2](docs/releases/4.7.2.md) ·
|
|
26
|
+
> [4.7.1](docs/releases/4.7.1.md) · [Docs hub](docs/README.md) · [Product voice](docs/product-voice.md)
|
|
24
27
|
|
|
25
28
|
---
|
|
26
29
|
|
|
@@ -41,21 +44,20 @@ Full map: **[docs/README.md](docs/README.md)**
|
|
|
41
44
|
```bash
|
|
42
45
|
npm install -D arkgate typescript
|
|
43
46
|
npx arkgate start # preview files + commands
|
|
44
|
-
npx arkgate start --apply # compact
|
|
45
|
-
npx arkgate-check --doctor #
|
|
46
|
-
npx arkgate-check --doctor --all #
|
|
47
|
+
npx arkgate start --apply # compact config + host router + CI plan
|
|
48
|
+
npx arkgate-check --doctor # what's wrong, what to do first
|
|
49
|
+
npx arkgate-check --doctor --all # full details
|
|
47
50
|
```
|
|
48
51
|
|
|
49
|
-
That is the product.
|
|
50
|
-
JSON still carries improvement compass and coach (**not a score**). Compact human output does not.
|
|
52
|
+
That is the product. Stuck? Run `--doctor` and do action **#1**.
|
|
51
53
|
|
|
52
54
|
```text
|
|
53
|
-
start → doctor
|
|
54
|
-
|
|
55
|
+
start → doctor → new files in the right folder
|
|
56
|
+
↘ leftover mess: map, then one small refactor
|
|
55
57
|
```
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
`ark-check --changed --base origin/dev`.
|
|
59
|
+
Keep the rules file out of product PRs. Local check:
|
|
60
|
+
`ark-check --changed --base origin/dev`. Changing the rules themselves uses `--contract-session`.
|
|
59
61
|
|
|
60
62
|
Aliases `ark` / `ark-check` / `ark-mcp` still work. npm / pnpm / yarn. No install lifecycle scripts.
|
|
61
63
|
|
|
@@ -65,17 +67,19 @@ Aliases `ark` / `ark-check` / `ark-mcp` still work. npm / pnpm / yarn. No instal
|
|
|
65
67
|
|
|
66
68
|
## What it is
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
Import rules for TypeScript, enforced twice: the editor hook rejects the write, and a
|
|
71
|
+
**required** CI check rejects the pull request. `ark.config.json` is the rules file those
|
|
72
|
+
checks read.
|
|
69
73
|
|
|
70
74
|
| When | Tool |
|
|
71
75
|
|------|------|
|
|
72
|
-
| **While the AI writes** |
|
|
76
|
+
| **While the AI writes** | The write is rejected on supported hosts; warning only elsewhere |
|
|
73
77
|
| **Before merge** | `arkgate-check` as a **required** CI status |
|
|
74
78
|
|
|
75
|
-
### Two
|
|
79
|
+
### Two kinds of rules (4.0)
|
|
76
80
|
|
|
77
|
-
|
|
|
78
|
-
|
|
81
|
+
| Kind | What it guards | Config |
|
|
82
|
+
|------|----------------|--------|
|
|
79
83
|
| **Layers** (always) | Who may import whom — imports, placement, purity, isolation | `ark.config.json` layers + rules |
|
|
80
84
|
| **ArkRules** (opt-in; structure rules inside a layer) | Habits *inside* a layer — structure sensors + domain invariants as data | `arkRules` → `arkrules/<Layer>.json` |
|
|
81
85
|
| **ArkRun** (opt-in extra) | Kernel usage + complete declarations | `arkRun` on schema `1.2` |
|
|
@@ -83,7 +87,9 @@ A machine-readable architecture file (`ark.config.json`) plus enforcement:
|
|
|
83
87
|
Absence of ArkRules or ArkRun changes no inter-layer verdict. Label residual **`[Layer]`** vs **`[ArkRules]`**.
|
|
84
88
|
Details: [configuration](docs/configuration.md) · [use path](docs/use.md).
|
|
85
89
|
|
|
86
|
-
**Not** a web framework, ORM, or job runner. Optional
|
|
90
|
+
**Not** an API Gateway, a folder linter, a web framework, ORM, or job runner. Optional
|
|
91
|
+
**ArkRules** and **ArkRun** extras are off unless you turn them on. In-memory stores are
|
|
92
|
+
not production durability.
|
|
87
93
|
|
|
88
94
|
**Name note:** npm package `arkgate` — not affiliated with the separate Archgate CLI project.
|
|
89
95
|
|
|
@@ -91,8 +97,9 @@ Details: [configuration](docs/configuration.md) · [use path](docs/use.md).
|
|
|
91
97
|
|
|
92
98
|
ArkGate is overkill for small trees with **no AI agents** and **no multi-layer boundaries**, for
|
|
93
99
|
single-developer hobby CRUDs under no integration pressure, and for teams that will not maintain
|
|
94
|
-
`ark.config.json` or a **required** CI status running `arkgate-check --strict-merge`.
|
|
95
|
-
|
|
100
|
+
`ark.config.json` or a **required** CI status running `arkgate-check --strict-merge`. Without that
|
|
101
|
+
status the rules file is just documentation — stay with a boundary linter alone (see
|
|
102
|
+
[Why not only ESLint / Nx / cruiser?](#why-not-only-eslint--nx--cruiser)).
|
|
96
103
|
Anyone path: [docs/use.md — When not to adopt](docs/use.md#when-not-to-adopt). Limits of a green
|
|
97
104
|
check: [4.3.0 — What ArkGate is / isn't](docs/releases/4.3.0.md#what-arkgate-is--isnt).
|
|
98
105
|
|
|
@@ -105,7 +112,7 @@ check: [4.3.0 — What ArkGate is / isn't](docs/releases/4.3.0.md#what-arkgate-i
|
|
|
105
112
|
| **Suggest** | Thin / new tree | Finish `start` → doctor |
|
|
106
113
|
| **Adapt** | Not fully protected | Doctor action #1 |
|
|
107
114
|
| **Enforce** | Honest import edges, and no new UI business-rule files vs merge-base | Keep write path + CI |
|
|
108
|
-
| **Enforce · design
|
|
115
|
+
| **Enforce · leftover design work** | Edges clean; leftover design work remains | Shape residual — not “done” |
|
|
109
116
|
|
|
110
117
|
Details: [docs/use.md](docs/use.md).
|
|
111
118
|
|
|
@@ -132,22 +139,22 @@ filesystem writes, hosted or specialized opt-out paths, and human edits still re
|
|
|
132
139
|
This table describes the supported profile **after its files are installed and the host loads/trusts them**. A hard local boundary covers only the listed hook operations; alternate tools, direct filesystem writes, and human edits still rely on CI. MCP validation is advisory because the agent must call it. The CI check blocks a merge only when the repository makes that status required. Repair **envelopes** may be emitted without reinjection being guaranteed; silent auto-apply never happens. Run `arkgate-check --doctor` (or `ark-check --doctor`) for the evidence actually detected in the current repository.
|
|
133
140
|
<!-- arkgate-host-support:end -->
|
|
134
141
|
|
|
135
|
-
#### Why
|
|
142
|
+
#### Why required CI is the hard line
|
|
136
143
|
|
|
137
144
|
The split above is a deliberate trade-off, not a gap. ArkGate validates at the earliest boundary
|
|
138
145
|
each host offers and enforces at the earliest boundary a repository can make non-bypassable: the
|
|
139
146
|
required merge status. Hard hooks (Claude Code, Grok Build, Google Antigravity, Cursor, and
|
|
140
147
|
Codex’s complete local `apply_patch`) deny their listed write operations at write time; advisory
|
|
141
|
-
surfaces (MCP, rules, OpenCode plugins)
|
|
148
|
+
surfaces (MCP, rules, OpenCode plugins) warn the agent while it works. But any local boundary can
|
|
142
149
|
be routed around — another tool, a hosted/specialized path, a direct filesystem write, or a human
|
|
143
150
|
edit — so the only guarantee ArkGate claims for every path is the
|
|
144
151
|
`arkgate-check --strict-merge` check, and only when the repository makes that status required.
|
|
145
|
-
Local checks optimize feedback speed;
|
|
152
|
+
Local checks optimize feedback speed; required CI owns correctness.
|
|
146
153
|
|
|
147
|
-
A useful consequence: the
|
|
154
|
+
A useful consequence: the rules file doubles as a pressure sensor. Recurring violations or baseline
|
|
148
155
|
exceptions concentrated on one layer edge are evidence that the current design stopped fitting the
|
|
149
|
-
code — a reason to reshape the
|
|
150
|
-
the
|
|
156
|
+
code — a reason to reshape the rules deliberately (start with `/ark-explore`), never to weaken
|
|
157
|
+
the check.
|
|
151
158
|
|
|
152
159
|
Setup per host: [docs/ai-gates.md](docs/ai-gates.md) · Develop path: [docs/develop.md](docs/develop.md)
|
|
153
160
|
|
|
@@ -165,7 +172,7 @@ expectation.
|
|
|
165
172
|
|--|:---:|:---:|
|
|
166
173
|
| CI import rules | ✅ | ✅ |
|
|
167
174
|
| Hard-block AI writes on supported hosts | ✅ | ❌ |
|
|
168
|
-
| Project-bound
|
|
175
|
+
| Project-bound rules agents can read (`ark_manifest`) | ✅ | ❌ |
|
|
169
176
|
| Placement + preflight for multi-file changes | ✅ | ❌ |
|
|
170
177
|
| Honest governed % + dual plan (edges vs shape) | ✅ | ❌ |
|
|
171
178
|
| Opt-in intra-layer ArkRules (structure + invariants) | ✅ | ❌ |
|
|
@@ -227,7 +234,9 @@ for real systems. Details: [docs/production-hardening.md](docs/production-harden
|
|
|
227
234
|
| Config · package surface · TS | [configuration](docs/configuration.md) · [package-surface](docs/package-surface.md) · [typescript-support](docs/typescript-support.md) |
|
|
228
235
|
| Brownfield | [docs/brownfield-adoption.md](docs/brownfield-adoption.md) |
|
|
229
236
|
| Security | [SECURITY.md](SECURITY.md) |
|
|
230
|
-
| Current
|
|
237
|
+
| Current tree (4.7.3) | [docs/releases/4.7.3.md](docs/releases/4.7.3.md) · [CHANGELOG](CHANGELOG.md) |
|
|
238
|
+
| Current published (4.7.2 on npm `latest`) | [docs/releases/4.7.2.md](docs/releases/4.7.2.md) |
|
|
239
|
+
| Prior published (4.7.0) | [docs/releases/4.7.0.md](docs/releases/4.7.0.md) |
|
|
231
240
|
| Prior published (4.6.7) | [docs/releases/4.6.7.md](docs/releases/4.6.7.md) |
|
|
232
241
|
| Prior published (4.6.6) | [docs/releases/4.6.6.md](docs/releases/4.6.6.md) |
|
|
233
242
|
| Prior published (4.6.5) | [docs/releases/4.6.5.md](docs/releases/4.6.5.md) |
|
|
@@ -266,4 +275,4 @@ Full guide: [CONTRIBUTING.md](CONTRIBUTING.md) · queue: [ROADMAP.md](ROADMAP.md
|
|
|
266
275
|
**MCP:** [`io.github.pedroknigge/arkgate`](https://registry.modelcontextprotocol.io/)
|
|
267
276
|
Node ≥ 18 · **MIT**
|
|
268
277
|
|
|
269
|
-
**Ark doesn’t invent your product. It
|
|
278
|
+
**Ark doesn’t invent your product. It rejects the illegal write — and tells you when it isn’t really enforcing anything yet.**
|
|
@@ -148,7 +148,7 @@ export function buildAgentProjectionBody(facts) {
|
|
|
148
148
|
'',
|
|
149
149
|
];
|
|
150
150
|
if (profile === 'compact') {
|
|
151
|
-
lines.push('### Primary path', '', '1. Run doctor (`ark-check --doctor`) —
|
|
151
|
+
lines.push('### Primary path', '', '1. Run doctor (`ark-check --doctor`) — what is wrong and what to do first. Prefer the project-local CLI; do not wait on MCP “still connecting”.', '2. Name leftover work in plain language; never “done” on green imports alone while leftover design work remains.', '3. Identity handshake is optional when the CLI already resolved the project root. Call `ark_identity` only when using MCP evidence.', '4. Read the rules file with `ark_manifest` (same expectation) or the local `ark.config.json`. `ark://manifest` is compatibility-only / unverified.', '5. Place files inside configured layers; validate; run the check command above on violations — fix the import, do not weaken the rules file.', '6. Single door: illegal imports → fix; leftover design work → map then one small refactor with user OK.', '', '### Layers (summary)', '', formatAgentProjectionLayers(layers), '');
|
|
152
152
|
}
|
|
153
153
|
else {
|
|
154
154
|
lines.push('### Contract layers', '', formatAgentProjectionLayers(layers), '', 'When creating a **new** kind of code that no layer covers, update `ark.config.json` first (`/ark-adopt`), then place the file.', '', '### Diagnostic codes (short list)', '', formatAgentProjectionCatalogShortList(catalog, docsPath), '', '### Session truth', '', '- Machine snapshot: `ark status --json` (or MCP `ark_status`) — identity, activation honesty, last check, residual counts. **Not a score.**', '- Authoritative contract: local `ark.config.json` / CLI, or `ark_manifest` after a matched `ark_identity` handshake. Identity is optional when CLI already resolved the root.', '- Host docs: the same projection schema is merged into `AGENTS.md` and `CLAUDE.md` (`ark agents-md --write`).', '');
|
|
@@ -314,7 +314,7 @@ ${placementTable}`;
|
|
|
314
314
|
${projectionBlock}
|
|
315
315
|
## Default agent flow (if unsure, do only this)
|
|
316
316
|
|
|
317
|
-
1. Status anytime: \`${doctorCmd}\` —
|
|
317
|
+
1. Status anytime: \`${doctorCmd}\` — what's wrong and what to do first (not a mode picker).
|
|
318
318
|
2. If \`ark.config.json\` is missing: run \`${startCmd}\` once (preview), then \`${startCmd} --apply\`.
|
|
319
319
|
3. Guided end-to-end work (“make architecture sound”): **\`/ark-autopilot\`** — explore → dual plan A (edges) + B (shape) → write mechanical-safe and judgment; one Shape refactor. Day-zero origin is frozen by \`ark start\`/\`ark init\` (or adopt if missing) **before** agent docs.
|
|
320
320
|
4. After ordinary feature edits: run \`${checkCmd}\` (teams: \`ark-check --changed --base origin/dev\`). On violations → **\`/ark-autopilot\`** (or \`/ark-place\` for new files). **Do not edit** \`ark.config.json\` / \`.ark-baseline.json\` in a product PR — that is a steward \`--contract-session\`. If doctor shows **Stewards (advisory)**, ask who owns the law — do not invent \`stewards[]\`. Leftover names \`/ark-fix\` / \`/ark-loop\` / \`/ark-contract\` are shortcuts to those doors.
|
|
@@ -405,10 +405,10 @@ ${projectionBlock}
|
|
|
405
405
|
|
|
406
406
|
**Primary path (do this):**
|
|
407
407
|
|
|
408
|
-
1. Status anytime: \`${doctorCmd}\` —
|
|
408
|
+
1. Status anytime: \`${doctorCmd}\` — what's wrong and what to do first.
|
|
409
409
|
2. Read the **Improvement compass** section (not a score). Name residual lenses in plain language when present (SoC, DIP, domain, …). Out-of-scope lenses (performance, app security tooling, full resilience) stay honest — do not invent Ark enforcement for them.
|
|
410
410
|
3. CLI-first: if the local CLI already resolved this project root, do not wait on MCP “still connecting”. Identity handshake is optional in that case. When you do trust MCP evidence: call \`ark_identity\` with \`project.expectedRoot\` set to this project's exact absolute root, then reuse that root plus the returned \`projectIdentity.projectId\` on every Ark MCP call. A descendant path is authoritative only with that matching id. Missing tool, non-\`matched\` binding, or wrong root means this is not proven to be the right project: restart the host and use the local CLI meanwhile.
|
|
411
|
-
4. Day to day: call \`ark_manifest\` with the same project expectation (or skip if CLI already bound the root); place new files with \`ark_place\` (filePath required — fail-closed); validate after edits; run \`${checkCmd}\`. The \`ark://manifest\` resource is compatibility-only and always unverified. On a
|
|
411
|
+
4. Day to day: call \`ark_manifest\` with the same project expectation (or skip if CLI already bound the root); place new files with \`ark_place\` (filePath required — fail-closed); validate after edits; run \`${checkCmd}\`. The \`ark://manifest\` resource is compatibility-only and always unverified. On a deny, fix the illegal import — do not weaken \`ark.config.json\`.
|
|
412
412
|
5. If MCP is unavailable: inspect \`ark.config.json\` and run \`${checkCmd}\`. The host-readable projection is AGENTS.md and CLAUDE.md (same schema).
|
|
413
413
|
|
|
414
414
|
**Single door when residual remains:**
|
|
@@ -432,7 +432,7 @@ export function buildProductHonesty(input = {}) {
|
|
|
432
432
|
message:
|
|
433
433
|
operatingMode === 'adapt'
|
|
434
434
|
? 'Operating mode is ADAPT — not finished until whole-tree green, zero blocking, and zero design smells (contract and tree still disagree).'
|
|
435
|
-
: 'Operating mode is SUGGEST — not finished until whole-tree green, zero blocking, and zero design smells (
|
|
435
|
+
: 'Operating mode is SUGGEST — not finished until whole-tree green, zero blocking, and zero design smells (the rules file is not yet binding).',
|
|
436
436
|
});
|
|
437
437
|
}
|
|
438
438
|
}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
export function setupUsage() {
|
|
6
|
-
return `arkgate (alias ark) —
|
|
6
|
+
return `arkgate (alias ark) — Illegal import: write rejected. Same check fails the PR.
|
|
7
7
|
|
|
8
8
|
arkgate start preview (no writes)
|
|
9
9
|
arkgate start --apply write host + CI setup
|
|
10
|
-
arkgate-check --doctor
|
|
10
|
+
arkgate-check --doctor what's wrong, what to do first
|
|
11
11
|
|
|
12
12
|
Stuck? Run doctor. Do #1.
|
|
13
13
|
`;
|
|
@@ -27,7 +27,7 @@ Every flag: arkgate --help --all
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export function setupUsageAll() {
|
|
30
|
-
return `arkgate (alias ark) —
|
|
30
|
+
return `arkgate (alias ark) — Illegal import: write rejected. Same check fails the PR.
|
|
31
31
|
|
|
32
32
|
Usage:
|
|
33
33
|
arkgate start [--root <project>] [--tools <host>] [--require-write-hook <host>] [--install] [--apply] [--json]
|
|
@@ -228,7 +228,7 @@ export function buildReportDepthPayload(
|
|
|
228
228
|
export function writePathModeHint(mode) {
|
|
229
229
|
switch (String(mode || '')) {
|
|
230
230
|
case 'repair':
|
|
231
|
-
return 'Hard write hook with repair payload — best
|
|
231
|
+
return 'Hard write hook with repair payload — best write path for the active host.';
|
|
232
232
|
case 'reject-only':
|
|
233
233
|
return 'Hard write boundary without repair payload; edits can be blocked without guided re-entry.';
|
|
234
234
|
case 'mcp-only':
|
package/bin/lib/html-report.mjs
CHANGED
|
@@ -119,7 +119,7 @@ export function modeBadgeHint(mode) {
|
|
|
119
119
|
case 'suggest':
|
|
120
120
|
return 'Starter shape — expand layers and raise governed coverage as the codebase grows.';
|
|
121
121
|
default:
|
|
122
|
-
return 'Operating mode for
|
|
122
|
+
return 'Operating mode for doctor surfaces (suggest · adapt · enforce).';
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
|
|
@@ -1165,15 +1165,15 @@ export function renderHtmlReport({
|
|
|
1165
1165
|
<div class="section card" id="adoption">
|
|
1166
1166
|
<h2>Adoption</h2>
|
|
1167
1167
|
<p class="dim" style="margin:.15rem 0 .75rem;font-size:.88rem">
|
|
1168
|
-
|
|
1168
|
+
Host completeness — separate from the 0–100 fitness score above. Hosts, MCP health, origin snapshot, core optionality, baseline policy.
|
|
1169
1169
|
</p>
|
|
1170
1170
|
<div class="kpis" style="margin-bottom:.75rem">
|
|
1171
1171
|
${metricKpi(
|
|
1172
1172
|
adoptionView.gaps.length === 0 ? 'OK' : adoptionView.gaps.length,
|
|
1173
1173
|
adoptionView.gaps.length === 0 ? 'No adoption gaps' : 'Adoption gap(s)',
|
|
1174
1174
|
adoptionView.gaps.length === 0
|
|
1175
|
-
? 'Hosts, MCP argv, origin snapshot, and core optionality look complete for
|
|
1176
|
-
: 'Install or fix the listed gaps so agents get write
|
|
1175
|
+
? 'Hosts, MCP argv, origin snapshot, and core optionality look complete for agent use.'
|
|
1176
|
+
: 'Install or fix the listed gaps so agents get write hooks, MCP, and honest cores.'
|
|
1177
1177
|
)}
|
|
1178
1178
|
${metricKpi(
|
|
1179
1179
|
adoptionView.originReport.present ? 'yes' : 'no',
|