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.
- package/CHANGELOG.md +125 -2
- package/README.md +39 -46
- package/SECURITY.md +5 -3
- package/bin/ark-check-runtime.mjs +11 -9
- package/bin/lib/agent-projection-formatters.mjs +2 -0
- package/bin/lib/agent-skills-package.mjs +63 -8
- package/bin/lib/analysis-engine.mjs +4 -4
- package/bin/lib/architecture-scan.mjs +8 -2
- package/bin/lib/ark-order-doctor.mjs +160 -0
- package/bin/lib/ark-order-report.mjs +65 -0
- package/bin/lib/ark-order-sensors.mjs +1 -1
- package/bin/lib/ci-and-commands.mjs +7 -2
- package/bin/lib/design-smells.mjs +21 -1
- package/bin/lib/diagnostic-catalog.mjs +4 -4
- package/bin/lib/doctor-advisories.mjs +99 -18
- package/bin/lib/doctor-human.mjs +4 -11
- package/bin/lib/doctor-plan.mjs +4 -3
- package/bin/lib/extra-merge-teeth.mjs +32 -4
- package/bin/lib/first-run-help.mjs +11 -2
- package/bin/lib/gate-files.mjs +40 -3
- package/bin/lib/html-report-advisories.mjs +2 -0
- package/bin/lib/html-report-depth.mjs +8 -18
- package/bin/lib/html-report.mjs +16 -0
- package/bin/lib/install-migrate.mjs +23 -0
- package/bin/lib/mcp-hook-payload.mjs +1 -1
- package/bin/lib/product-copy.mjs +4 -0
- package/bin/lib/remediation.mjs +7 -7
- package/bin/lib/resolved-candidate-facts.mjs +144 -36
- package/bin/lib/rules-under-contract.mjs +14 -0
- package/bin/lib/scan-files.mjs +39 -0
- package/bin/lib/start-preview.mjs +4 -0
- package/bin/lib/status-command.mjs +28 -0
- package/bin/lib/status-manifest.mjs +23 -0
- package/bin/lib/upgrade-whats-new.mjs +3 -3
- package/bin/lib/violations.mjs +40 -1
- package/dist/{diagnosticCatalog-DiflIock.d.ts → diagnosticCatalog-DVx_2RmF.d.ts} +1 -1
- package/dist/eslint/index.cjs +4 -4
- package/dist/eslint/index.js +4 -4
- package/dist/index.cjs +31 -31
- package/dist/index.d.ts +129 -15
- package/dist/index.js +31 -31
- package/dist/nestjs/index.cjs +1 -1
- package/dist/nestjs/index.js +1 -1
- package/dist/runtime/index.cjs +15 -15
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +15 -15
- package/docs/README.md +11 -8
- package/docs/agent-guide.md +30 -13
- package/docs/ai-gates.md +3 -1
- package/docs/arkorder.md +35 -10
- package/docs/configuration.md +7 -6
- package/docs/develop.md +3 -1
- package/docs/diagnostics.md +7 -7
- package/docs/enthusiast/README.md +6 -1
- package/docs/enthusiast/how-to-gallery-starter.md +2 -1
- package/docs/package-surface.md +8 -5
- package/docs/product-voice.md +40 -13
- package/docs/threat-model.md +2 -2
- package/docs/typescript-support.md +3 -3
- package/docs/use.md +18 -11
- package/package.json +1 -1
- package/schemas/ark.status-manifest.schema.json +47 -0
- package/server.json +2 -2
- package/templates/agent-skills/README.md +7 -4
- package/templates/agent-skills/ark-adopt/SKILL.md +9 -5
- package/templates/agent-skills/ark-architect/SKILL.md +5 -18
- package/templates/agent-skills/ark-autopilot/SKILL.md +8 -4
- package/templates/agent-skills/ark-contract/SKILL.md +9 -20
- package/templates/agent-skills/ark-coverage/SKILL.md +12 -8
- package/templates/agent-skills/ark-explain/SKILL.md +7 -3
- package/templates/agent-skills/ark-explore/SKILL.md +25 -4
- package/templates/agent-skills/ark-fix/SKILL.md +15 -20
- package/templates/agent-skills/ark-loop/SKILL.md +14 -20
- package/templates/agent-skills/ark-order/SKILL.md +200 -0
- package/templates/agent-skills/ark-place/SKILL.md +11 -8
- package/templates/agent-skills/ark-runtime/SKILL.md +17 -4
- package/templates/agent-skills/ark-think/SKILL.md +24 -126
- package/templates/agent-skills/ark-upgrade/SKILL.md +13 -2
- package/templates/skills/ark-adopt.md +9 -5
- package/templates/skills/ark-architect.md +5 -18
- package/templates/skills/ark-autopilot.md +8 -4
- package/templates/skills/ark-contract.md +9 -20
- package/templates/skills/ark-coverage.md +12 -8
- package/templates/skills/ark-explain.md +7 -3
- package/templates/skills/ark-explore.md +25 -4
- package/templates/skills/ark-fix.md +15 -20
- package/templates/skills/ark-loop.md +14 -20
- package/templates/skills/ark-order.md +200 -0
- package/templates/skills/ark-place.md +11 -8
- package/templates/skills/ark-runtime.md +17 -4
- package/templates/skills/ark-think.md +24 -126
- package/templates/skills/ark-upgrade.md +13 -2
- package/templates/tests/ark-adoption-gaps.test.ts +5 -4
package/docs/README.md
CHANGED
|
@@ -10,10 +10,12 @@ AI can build fast—and make a mess just as fast.
|
|
|
10
10
|
|
|
11
11
|
Keep the product easy to understand, change, and trust.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
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.
|
|
14
14
|
|
|
15
15
|
Safer changes, fewer surprises, and extra protection only when you choose it.
|
|
16
16
|
|
|
17
|
+
That is **Contener · Guiar · Ordenar**.
|
|
18
|
+
|
|
17
19
|
Pick your path. Skip everything else.
|
|
18
20
|
|
|
19
21
|
| You are… | Start here |
|
|
@@ -34,7 +36,7 @@ Product site: [arkgate.online](https://www.arkgate.online/) · npm: [`arkgate`](
|
|
|
34
36
|
| [use.md](use.md) | One flow: install → doctor → day-to-day |
|
|
35
37
|
| [enthusiast/](enthusiast/README.md) | Tutorials and plain-language track |
|
|
36
38
|
| [demos/](demos/) | Short end-to-end demos |
|
|
37
|
-
| [product-voice.md](product-voice.md) | How ArkGate should sound (Write. Check. Ship.) |
|
|
39
|
+
| [product-voice.md](product-voice.md) | How ArkGate should sound (Write. Check. Ship. · Contener · Guiar · Ordenar) |
|
|
38
40
|
|
|
39
41
|
### Develop (integrate)
|
|
40
42
|
| Doc | What it is |
|
|
@@ -44,7 +46,7 @@ Product site: [arkgate.online](https://www.arkgate.online/) · npm: [`arkgate`](
|
|
|
44
46
|
| [agent-guide.md](agent-guide.md) | Agent, CLI, and MCP reference (incl. `ark status --json` / MCP `ark_status`) |
|
|
45
47
|
| [diagnostics.md](diagnostics.md) | Public diagnostic `ruleId` catalog (why / fix anchors) |
|
|
46
48
|
| [configuration.md](configuration.md) | `ark.config.json` contract |
|
|
47
|
-
| [arkorder.md](arkorder.md) | Optional ArkOrder extra: library + sensors, not a service |
|
|
49
|
+
| [arkorder.md](arkorder.md) | Optional ArkOrder extra: library + sensors, not a service. Proof: [billing gallery](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing) (GitHub, not in the npm tarball) |
|
|
48
50
|
| [brownfield-adoption.md](brownfield-adoption.md) | Existing messy repos |
|
|
49
51
|
| [package-surface.md](package-surface.md) | Stable vs experimental package surface |
|
|
50
52
|
| [typescript-support.md](typescript-support.md) | TS 5 / 6 / 7 analysis boundary |
|
|
@@ -52,9 +54,9 @@ Product site: [arkgate.online](https://www.arkgate.online/) · npm: [`arkgate`](
|
|
|
52
54
|
### Contribute (library)
|
|
53
55
|
| Doc | What it is |
|
|
54
56
|
|-----|------------|
|
|
55
|
-
| [CONTRIBUTING.md](../CONTRIBUTING.md) | Setup, rules,
|
|
57
|
+
| [CONTRIBUTING.md](../CONTRIBUTING.md) | Setup, rules, thin publish |
|
|
56
58
|
| [ROADMAP.md](../ROADMAP.md) | Live implementation queue (one `doing` at a time). History: [archive/roadmap-history.md](archive/roadmap-history.md) |
|
|
57
|
-
| [adr/](adr/README.md) | Architecture decisions ([0032](adr/0032-writes-via-aggregate-sensor.md) writes-via-aggregate · [0033](adr/0033-arkorder-runtime-half-is-arkrun.md) ArkOrder runtime half · [0034](adr/0034-arkorder-valved-loop.md) valved loop) |
|
|
59
|
+
| [adr/](adr/README.md) | Architecture decisions ([0032](adr/0032-writes-via-aggregate-sensor.md) writes-via-aggregate · [0033](adr/0033-arkorder-runtime-half-is-arkrun.md) ArkOrder runtime half · [0034](adr/0034-arkorder-valved-loop.md) valved loop · [0036](adr/0036-skill-catalog-product-capacity.md) skill catalog capacity) |
|
|
58
60
|
| [SECURITY.md](../SECURITY.md) · [threat-model.md](threat-model.md) | Security |
|
|
59
61
|
|
|
60
62
|
---
|
|
@@ -71,8 +73,9 @@ These are **not** the day-to-day product path. They stay in the repo for evidenc
|
|
|
71
73
|
| Field adoption kit (scaffolding, not closed) | [field/](field/) |
|
|
72
74
|
| Runtime hardening (experimental) | [production-hardening.md](production-hardening.md) |
|
|
73
75
|
|
|
74
|
-
Prepared: [
|
|
75
|
-
Current published: [releases/4.8.
|
|
76
|
+
Prepared: [CHANGELOG](../CHANGELOG.md) (`arkgate@4.8.14`; not published until `publish-npm` for `v4.8.14`).
|
|
77
|
+
Current published: [releases/4.8.11.md](releases/4.8.11.md) (`arkgate@4.8.11` on npm `latest`; does not close `K01`).
|
|
78
|
+
Prior published: [releases/4.8.10.md](releases/4.8.10.md) (`arkgate@4.8.10`).
|
|
76
79
|
Prior published: [releases/4.8.9.md](releases/4.8.9.md) (`arkgate@4.8.9`).
|
|
77
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).
|
|
78
81
|
Older notes: [releases/](releases/). Config: [configuration.md](configuration.md).
|
|
@@ -85,4 +88,4 @@ Older notes: [releases/](releases/). Config: [configuration.md](configuration.md
|
|
|
85
88
|
2. **One primary flow** — `start` → doctor → optional guided work.
|
|
86
89
|
3. **Honest hardness** — host write guarantees differ; a **required GitHub status context** running the merge CLI is the shared hard boundary.
|
|
87
90
|
4. **History is not the product** — version archaeology lives under `releases/` and `plans/`, not the front door.
|
|
88
|
-
5. **Common language** — first-contact copy uses ordinary software words (import rules, the write doesn’t land, required CI). ArkGate is import rules; ArkRules is policies; ArkRun is an experimental runtime; ArkOrder stops
|
|
91
|
+
5. **Common language** — first-contact copy uses ordinary software words (import rules, the write doesn’t land, required CI). ArkGate is import rules; ArkRules is policies; ArkRun is an experimental runtime; ArkOrder stops rewriting a big product choice (like billing plan) as if it were a seat count. Voice: [product-voice.md](product-voice.md).
|
package/docs/agent-guide.md
CHANGED
|
@@ -10,10 +10,12 @@ AI can build fast—and make a mess just as fast.
|
|
|
10
10
|
|
|
11
11
|
Keep the product easy to understand, change, and trust.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
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.
|
|
14
14
|
|
|
15
15
|
Safer changes, fewer surprises, and extra protection only when you choose it.
|
|
16
16
|
|
|
17
|
+
That is **Contener · Guiar · Ordenar**.
|
|
18
|
+
|
|
17
19
|
This guide is the **develop** reference for agents and codegen: write hooks, advisory MCP tools,
|
|
18
20
|
CI, and `/ark-*` skills.
|
|
19
21
|
|
|
@@ -227,10 +229,16 @@ The projection is **non-authoritative**. Enforcement is `ark-check` / host write
|
|
|
227
229
|
CI (`--strict-merge`) — never AGENTS.md, skills, or this projection. Root API:
|
|
228
230
|
`buildAgentProjectionBlock` / `mergeAgentProjectionDocument`.
|
|
229
231
|
|
|
230
|
-
**Agent Skills packaging (4.3):** the same
|
|
232
|
+
**Agent Skills packaging (4.3 / #216):** the same closed catalog ships as
|
|
231
233
|
an Agent Skills–compatible package under `templates/agent-skills/<name>/SKILL.md` for hosts that
|
|
232
234
|
install via `npx skills` (in addition to Ark `--install-agent-gates`). See
|
|
233
|
-
[Install skills — Ark and ecosystem](#install-skills-ark-and-ecosystem).
|
|
235
|
+
[Install skills — Ark and ecosystem](#install-skills-ark-and-ecosystem).
|
|
236
|
+
Closed catalog (`ARK_SKILL_NAMES`): first-class doors plus one-release stubs.
|
|
237
|
+
The *set* must exercise Layers + ArkRules + ArkRun + ArkOrder (when / not when / handoff).
|
|
238
|
+
First-class `/ark-order` mirrors `/ark-runtime`. ACS05 freeze was opened for that door
|
|
239
|
+
([ADR 0036](adr/0036-skill-catalog-product-capacity.md)); Domain still closes the list.
|
|
240
|
+
Add a name only with a live ROADMAP item. Filter: **Contener · Guiar · Ordenar**
|
|
241
|
+
— contain the write, guide the next step, order leftover mess.
|
|
234
242
|
Skill bodies coach residual lenses and anti false-done; they never enforce.
|
|
235
243
|
|
|
236
244
|
## Architecture playbook and `ark-check --recommend`
|
|
@@ -316,8 +324,10 @@ as unresolved decisions, and restores the integration with `ark start --tools <h
|
|
|
316
324
|
**Five doors (emphasize):** `/ark-adopt` = session 0 (greenfield scaffold + brownfield honesty —
|
|
317
325
|
write the path). `/ark-place` = new feature (place **and write**). `/ark-autopilot` = apply
|
|
318
326
|
plan A + one Shape refactor (invoke = approval). `/ark-explore` = map + dual-plan seed (no
|
|
319
|
-
apply). `/ark-upgrade` = preview then apply in-turn.
|
|
320
|
-
|
|
327
|
+
apply). `/ark-upgrade` = preview then apply in-turn. First-class extras: `/ark-runtime` wires
|
|
328
|
+
ArkRun; **`/ark-order`** wires ArkOrder. Other `/ark-*` names stay installed as
|
|
329
|
+
**one-release shortcuts**. Empty plan A is not “architecture healthy” if leftover design remains.
|
|
330
|
+
Filter: **Contener · Guiar · Ordenar** — contain the write, guide the next step, order leftover mess. Skills never enforce.
|
|
321
331
|
|
|
322
332
|
**Team parliament:** adopt is a **contract session** (law-only). Feature work must not edit
|
|
323
333
|
`ark.config.json` / `arkrules/*` / `.ark-baseline.json`. Prefer
|
|
@@ -536,7 +546,8 @@ npx ark-check --promote <ruleId> --apply # write mode "enforced" into that
|
|
|
536
546
|
ArkOrder — with its plane, its tier and whether it can *ever* be enforced, so
|
|
537
547
|
Tier-2 shows up before you write the rule rather than after you wait for a run.
|
|
538
548
|
ArkOrder: `proposeRelease` then `apply`; `refreshSigma`; ingest residual;
|
|
539
|
-
capacity pack; `ReleaseStore`; ArkRun `decisionTape`.
|
|
549
|
+
capacity pack; `ReleaseStore`; ArkRun `decisionTape`. Extras door:
|
|
550
|
+
`/ark-adopt` (turn on) then **`/ark-order`** (wire one candidate). First contact: doctor + `[ArkOrder]` on the check.
|
|
540
551
|
It also says *how*: only the ArkRules plane is promoted per rule; ArkRun and
|
|
541
552
|
ArkOrder are switched by the plane-level `arkRun.mode` / `arkOrder.mode`, and
|
|
542
553
|
`--promote --apply` writes ArkRules documents only.
|
|
@@ -757,7 +768,7 @@ Greenfield / empty-tree **depth** (only when doctor or a thin tree points here
|
|
|
757
768
|
1. Run `ark-check --recommend --json` or MCP `ark_recommend`.
|
|
758
769
|
2. Read `archetype`, `preset`, and `adoptInOrder.phase1` — scaffold only those directories first.
|
|
759
770
|
3. Run `ark init --archetype <id> --yes`, `--apply-policy-pack enthusiast-<preset>`, or `ark init --preset <preset> --yes` when no `ark.config.json` exists (or let `ark start --apply` install the compact contract).
|
|
760
|
-
4. Optional: `--write-plan` for `ark-adoption-plan.json`; copy a gallery starter from `examples/README.md`.
|
|
771
|
+
4. Optional: `--write-plan` for `ark-adoption-plan.json`; copy a gallery starter from `examples/README.md`. ArkOrder proof on that index is [arkorder-billing](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing) (not a starter; GitHub tree, not in the npm tarball).
|
|
761
772
|
5. Use `/ark-place` or `ark_place` for individual files after the contract exists.
|
|
762
773
|
6. Re-check with `ark-check --doctor`, then `ark-check --root . --config ark.config.json --strict`.
|
|
763
774
|
|
|
@@ -822,7 +833,7 @@ directories (`utils/`, `lib/`) must be classified explicitly via `/ark-adopt`.
|
|
|
822
833
|
|
|
823
834
|
## Supported agent hosts
|
|
824
835
|
|
|
825
|
-
**Day zero** is the compact path from `ark start` / `ark start --apply` (router + write path + CI plan) — not the full skill pack.
|
|
836
|
+
**Day zero** is the compact path from `ark start` / `ark start --apply` (router + write path + CI plan; merges Ark into an existing project-owned `AGENTS.md` / `.mcp.json`) — not the full skill pack.
|
|
826
837
|
|
|
827
838
|
Wire write-gate + MCP for the active host; add the full `/ark-*` skill pack only as **expert depth** (`--skills-only` or full install when you want guided autopilot):
|
|
828
839
|
|
|
@@ -856,8 +867,13 @@ and [shared Claude/Grok/Antigravity homes](ai-gates.md#shared-claude--grok-home-
|
|
|
856
867
|
|
|
857
868
|
### Install skills — Ark and ecosystem {#install-skills-ark-and-ecosystem}
|
|
858
869
|
|
|
859
|
-
The same
|
|
860
|
-
|
|
870
|
+
The same closed catalog ships two ways. **Closed catalog** (`ARK_SKILL_NAMES`): first-class
|
|
871
|
+
doors plus one-release stubs. The *set* must exercise Layers + ArkRules + ArkRun + ArkOrder
|
|
872
|
+
and route (when / not when / handoff). First-class `/ark-order`; leftover names stay as
|
|
873
|
+
one-release stubs. ACS05 freeze was opened for `/ark-order`; Domain still closes the list.
|
|
874
|
+
Add a name only with a live ROADMAP item
|
|
875
|
+
([ADR 0036](adr/0036-skill-catalog-product-capacity.md) / issue #216).
|
|
876
|
+
Filter: **Contener · Guiar · Ordenar** — contain the write, guide the next step, order leftover mess. Skills never enforce.
|
|
861
877
|
|
|
862
878
|
| Channel | What it installs | When to use |
|
|
863
879
|
|---------|------------------|-------------|
|
|
@@ -882,9 +898,10 @@ npx skills add https://github.com/pedroknigge/arkgate/tree/main/templates/agent-
|
|
|
882
898
|
npx skills add ./node_modules/arkgate/templates/agent-skills --list
|
|
883
899
|
```
|
|
884
900
|
|
|
885
|
-
|
|
886
|
-
`ark-
|
|
887
|
-
`ark-
|
|
901
|
+
Closed names: first-class `ark-adopt`, `ark-autopilot`, `ark-coverage`, `ark-explain`,
|
|
902
|
+
`ark-explore`, `ark-order`, `ark-place`, `ark-runtime`, `ark-upgrade`; one-release stubs
|
|
903
|
+
`ark-architect`, `ark-contract`, `ark-fix`, `ark-loop`, `ark-think`. Root API:
|
|
904
|
+
`ARK_SKILL_NAMES` / `ARK_FIRST_CLASS_SKILL_NAMES` / `validateAgentSkillsPackage` (Domain
|
|
888
905
|
`agentSkillsPackage`). Skills are **process** depth — they never decide pass/fail; enforcement
|
|
889
906
|
remains `ark-check` / hooks / CI.
|
|
890
907
|
|
package/docs/ai-gates.md
CHANGED
|
@@ -10,10 +10,12 @@ AI can build fast—and make a mess just as fast.
|
|
|
10
10
|
|
|
11
11
|
Keep the product easy to understand, change, and trust.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
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.
|
|
14
14
|
|
|
15
15
|
Safer changes, fewer surprises, and extra protection only when you choose it.
|
|
16
16
|
|
|
17
|
+
That is **Contener · Guiar · Ordenar**.
|
|
18
|
+
|
|
17
19
|
This page is host install depth (hooks / MCP / CI).
|
|
18
20
|
|
|
19
21
|
This page is **develop** depth (install hooks/MCP/CI per host). Product path: [use.md](use.md) ·
|
package/docs/arkorder.md
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
# ArkOrder
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
billing plan as if it were a seat count.
|
|
5
|
-
|
|
3
|
+
**Layers stop a bad import. ArkOrder stops rewriting a big product choice —
|
|
4
|
+
like the billing plan — as if it were a seat count. Change those choices
|
|
5
|
+
through a valve, not a generic update.**
|
|
6
6
|
|
|
7
7
|
Import: `arkgate/order` (same npm package `arkgate`). Off until you add
|
|
8
|
-
`arkOrder
|
|
9
|
-
|
|
8
|
+
`arkOrder`. Absence is silent. In-memory. Not durable. A library plus
|
|
9
|
+
sensors, not a service. Does **not** replace ArkRun.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
Turn the extra on with `/ark-adopt`. Wire one candidate with **`/ark-order`**
|
|
12
|
+
(mirrors `/ark-runtime`). First contact is doctor + `[ArkOrder]`
|
|
13
|
+
on the check. Names like ξ live below, in the valve and sensor tables.
|
|
14
|
+
|
|
15
|
+
Proof (GitHub, not in the npm tarball):
|
|
16
|
+
[examples/arkorder-billing](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing).
|
|
17
|
+
First freeze is `release()`. Later plan change is `proposeRelease` then `apply`.
|
|
13
18
|
|
|
14
19
|
Canonical plan seed: [plans/arkorder/README.md](plans/arkorder/README.md).
|
|
15
20
|
ADRs: [0027](adr/0027-arkorder-gated-extra-plane.md)–[0030](adr/0030-opt-in-extras-same-npm-package.md),
|
|
@@ -189,8 +194,9 @@ one axis: the factory root.
|
|
|
189
194
|
Do not rename `planeRoots` to `kernelRoots`. They name different factories.
|
|
190
195
|
List both on `ark-check --sensors` (same table, same tier vocabulary).
|
|
191
196
|
|
|
192
|
-
Turn extras on with `/ark-adopt`. Place new files with `/ark-place`.
|
|
193
|
-
|
|
197
|
+
Turn extras on with `/ark-adopt`. Place new files with `/ark-place`. First
|
|
198
|
+
contact is doctor + the `[ArkOrder]` check label — same envelope as a bad
|
|
199
|
+
import. A dedicated `/ark-order` skill is not required for that.
|
|
194
200
|
|
|
195
201
|
---
|
|
196
202
|
|
|
@@ -247,10 +253,28 @@ cash received against amount due, not a key to freeze or change with
|
|
|
247
253
|
|
|
248
254
|
The valved loop ships in **4.8.6** ([ADR 0034](adr/0034-arkorder-valved-loop.md)).
|
|
249
255
|
In-memory `ReleaseStore` is **not** durable. Doctor / status `arkOrder` stays
|
|
250
|
-
`notAScore`. This does **not** close `K01` / `Z09`.
|
|
256
|
+
`notAScore`. This does **not** close `K01` / `Z09`. The extras door stays
|
|
257
|
+
`/ark-adopt`.
|
|
251
258
|
|
|
252
259
|
---
|
|
253
260
|
|
|
261
|
+
## Doctor / start / status
|
|
262
|
+
|
|
263
|
+
`--doctor` always emits an ArkOrder row (`notAScore`). Verdicts stay silent
|
|
264
|
+
when the extra is off (Layers unchanged, not a score). The first human line
|
|
265
|
+
is always the one-breath — including the compact first screen:
|
|
266
|
+
|
|
267
|
+
**Layers stop a bad import. ArkOrder stops rewriting a big product choice —
|
|
268
|
+
like the billing plan — as if it were a seat count. Change those choices
|
|
269
|
+
through a valve, not a generic update.**
|
|
270
|
+
|
|
271
|
+
`ark start` leaves extras off (`Optional extras stay off. This start is
|
|
272
|
+
layers only — they stop bad imports.`) and still prints that one-breath plus
|
|
273
|
+
`Next: examples/arkorder-billing`, then `/ark-adopt` and `/ark-order`.
|
|
274
|
+
`ark status` projects a thin `arkOrder` slice (present / mode / leftover
|
|
275
|
+
count). A deny prints `[ArkOrder]` next to `ARKORDER_*`, the same envelope
|
|
276
|
+
as a bad import.
|
|
277
|
+
|
|
254
278
|
## Next step
|
|
255
279
|
|
|
256
280
|
```bash
|
|
@@ -258,4 +282,5 @@ npx arkgate-check --doctor
|
|
|
258
282
|
# gallery (not in the npm tarball):
|
|
259
283
|
# https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing
|
|
260
284
|
# /ark-adopt to turn arkOrder on advisory
|
|
285
|
+
# Proof deny: skip corpus trees/xi-field-write (Prisma PATCH of plan)
|
|
261
286
|
```
|
package/docs/configuration.md
CHANGED
|
@@ -453,12 +453,13 @@ Write-gate ApplyPatch denies a batch that mixes law files with product source. H
|
|
|
453
453
|
never hit PreToolUse are unchanged. Local `pnpm` gates should call `--changed --base`, not
|
|
454
454
|
only full-tree `--strict-merge`.
|
|
455
455
|
|
|
456
|
-
`--changed`
|
|
457
|
-
(class shape, orchestration-only, thin-adapter,
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
full-tree structural
|
|
456
|
+
`--changed` resolves the touched sources plus their import closure — not the whole
|
|
457
|
+
include tree. File-local ArkRules sensors (class shape, orchestration-only, thin-adapter,
|
|
458
|
+
writes-via-aggregate) and hint preload stay on the touched set. Layer and cycle sensors
|
|
459
|
+
see that closure, so a new illegal import or a cycle the change can complete still
|
|
460
|
+
fails. Untouched files outside the closure are left to the full-tree CI check. Same
|
|
461
|
+
engine; not a second analysis path. A `--changed` pass is not a full-tree structural
|
|
462
|
+
verdict.
|
|
462
463
|
|
|
463
464
|
MCP clients can call `ark_policy_delta` with the previous `baseConfig`, an optional candidate
|
|
464
465
|
contract (the current project contract is the default), and the same optional acknowledgement.
|
package/docs/develop.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
|
-
|
|
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 **developers** integrating ArkGate into a product repo: agents, CI, config, brownfield, and power tools.
|
|
19
21
|
|
|
20
22
|
If you only want the happy path, start at [use.md](use.md). Optional ArkOrder
|
package/docs/diagnostics.md
CHANGED
|
@@ -24,7 +24,7 @@ Link form for agents: `docs/diagnostics.md#RULE_ID` (exact-case HTML anchors bel
|
|
|
24
24
|
|
|
25
25
|
| ruleId | Category | Title |
|
|
26
26
|
|--------|----------|-------|
|
|
27
|
-
| [`LAYER_IMPORT_VIOLATION`](#LAYER_IMPORT_VIOLATION) | layer |
|
|
27
|
+
| [`LAYER_IMPORT_VIOLATION`](#LAYER_IMPORT_VIOLATION) | layer | This import is not allowed |
|
|
28
28
|
| [`LAYER_INTENT_REFERENCE_VIOLATION`](#LAYER_INTENT_REFERENCE_VIOLATION) | layer | Intent referenced across a blocked layer edge |
|
|
29
29
|
| [`LAYER_REFERENCE_VIOLATION`](#LAYER_REFERENCE_VIOLATION) | layer | Layer reference blocked (snippet / AI gate) |
|
|
30
30
|
| [`CIRCULAR_DEPENDENCY`](#CIRCULAR_DEPENDENCY) | layer | Dependency cycle |
|
|
@@ -58,7 +58,7 @@ Link form for agents: `docs/diagnostics.md#RULE_ID` (exact-case HTML anchors bel
|
|
|
58
58
|
| [`ARKORDER_GENERIC_UPDATE`](#ARKORDER_GENERIC_UPDATE) | arkorder | Generic update of ξ |
|
|
59
59
|
| [`ARKORDER_TOO_MANY_PARAMS`](#ARKORDER_TOO_MANY_PARAMS) | arkorder | Too many slow keys |
|
|
60
60
|
| [`ARKORDER_INGEST_WRITES_XI`](#ARKORDER_INGEST_WRITES_XI) | arkorder | ingest assigned into ξ |
|
|
61
|
-
| [`ARKORDER_UNVALVED_RELEASE`](#ARKORDER_UNVALVED_RELEASE) | arkorder |
|
|
61
|
+
| [`ARKORDER_UNVALVED_RELEASE`](#ARKORDER_UNVALVED_RELEASE) | arkorder | Second freeze without the valve |
|
|
62
62
|
| [`INVALID_CHANGE_PATH`](#INVALID_CHANGE_PATH) | preflight | Unsafe change path |
|
|
63
63
|
| [`DUPLICATE_CHANGE_PATH`](#DUPLICATE_CHANGE_PATH) | preflight | Duplicate path in change set |
|
|
64
64
|
| [`DELETE_TARGET_MISSING`](#DELETE_TARGET_MISSING) | preflight | Delete target missing |
|
|
@@ -105,9 +105,9 @@ Link form for agents: `docs/diagnostics.md#RULE_ID` (exact-case HTML anchors bel
|
|
|
105
105
|
|
|
106
106
|
### `LAYER_IMPORT_VIOLATION`
|
|
107
107
|
|
|
108
|
-
**
|
|
108
|
+
**This import is not allowed**
|
|
109
109
|
|
|
110
|
-
- **Why:**
|
|
110
|
+
- **Why:** This file imported a folder it may not reach. The write doesn’t land. The same check fails the pull request.
|
|
111
111
|
- **Fix:** Branch by import kind: constants/types/pure → adopt into DomainModel or SharedKernel (do not invent a port); kernel/events/bootstrap from Persistence → inject a port or move the map to SharedTypes (Persistence must not emit); define a port only when the target is a real use-case. Type-only edges use `import type`. Then preflight again. Do not weaken the layer rule without a hash-bound policy acknowledgement.
|
|
112
112
|
|
|
113
113
|
<a id="LAYER_INTENT_REFERENCE_VIOLATION"></a>
|
|
@@ -466,10 +466,10 @@ Haken slaving: few slow keys (ξ) determine derived fast state. Field ingest nev
|
|
|
466
466
|
|
|
467
467
|
### `ARKORDER_UNVALVED_RELEASE`
|
|
468
468
|
|
|
469
|
-
**
|
|
469
|
+
**Second freeze without the valve**
|
|
470
470
|
|
|
471
|
-
- **Why:** release()
|
|
472
|
-
- **Fix:** Change
|
|
471
|
+
- **Why:** release() already froze the big choice. A later release() with a different value does not land. First freeze is release(); later change is proposeRelease then apply.
|
|
472
|
+
- **Fix:** Change the choice with proposeRelease then apply. release() is only the first freeze. Never mechanical-safe.
|
|
473
473
|
|
|
474
474
|
## Atomic preflight and change sets
|
|
475
475
|
|
|
@@ -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
|
-
|
|
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
|
Plain-language onboarding for builders who use AI agents but are not professional
|
|
19
21
|
developers. This track follows [Diátaxis](https://diataxis.fr/): tutorial, how-to,
|
|
20
22
|
reference, and explanation. Package: **`arkgate`** (CLI: `arkgate` / `arkgate-check`;
|
|
@@ -70,6 +72,7 @@ Reproducible scripts — no video required:
|
|
|
70
72
|
- [Write-gate self-correction](../demos/01-write-gate-self-correction.md)
|
|
71
73
|
- [Brownfield baseline adoption](../demos/02-brownfield-baseline-adoption.md)
|
|
72
74
|
- [Co-pilot autopilot, end to end](https://github.com/pedroknigge/arkgate/blob/main/docs/demos/03-copilot-autopilot.md)
|
|
75
|
+
- [ArkOrder billing — first freeze, then valve](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing) (GitHub tree, not in the npm tarball; not a gallery starter)
|
|
73
76
|
|
|
74
77
|
## Gallery starters
|
|
75
78
|
|
|
@@ -84,6 +87,8 @@ Reproducible scripts — no video required:
|
|
|
84
87
|
|
|
85
88
|
Deep teaching example (runnable API + break exercises): [hexagonal-order-api](https://github.com/pedroknigge/arkgate/tree/main/examples/hexagonal-order-api).
|
|
86
89
|
|
|
90
|
+
ArkOrder proof (optional extra, not a starter): [arkorder-billing](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing) — first freeze is `release()`; later plan change is `proposeRelease` then `apply`. Index: [examples/README.md](https://github.com/pedroknigge/arkgate/blob/main/examples/README.md).
|
|
91
|
+
|
|
87
92
|
## Brownfield vs greenfield
|
|
88
93
|
|
|
89
94
|
| Situation | Use |
|
|
@@ -12,12 +12,13 @@ npm run check
|
|
|
12
12
|
|
|
13
13
|
Pick by archetype — see [examples/README.md](https://github.com/pedroknigge/arkgate/blob/main/examples/README.md).
|
|
14
14
|
|
|
15
|
-
## When to use a starter vs hexagonal-order-api
|
|
15
|
+
## When to use a starter vs hexagonal-order-api vs billing
|
|
16
16
|
|
|
17
17
|
| Need | Use |
|
|
18
18
|
|------|-----|
|
|
19
19
|
| Fast baseline layout | `*-starter/` gallery |
|
|
20
20
|
| Runnable API + break exercises | `hexagonal-order-api/` |
|
|
21
|
+
| ArkOrder freeze / valve (optional extra) | [arkorder-billing](https://github.com/pedroknigge/arkgate/tree/main/examples/arkorder-billing) — not a starter, not in the npm tarball |
|
|
21
22
|
|
|
22
23
|
## After copying
|
|
23
24
|
|
package/docs/package-surface.md
CHANGED
|
@@ -10,10 +10,12 @@ AI can build fast—and make a mess just as fast.
|
|
|
10
10
|
|
|
11
11
|
Keep the product easy to understand, change, and trust.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
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.
|
|
14
14
|
|
|
15
15
|
Safer changes, fewer surprises, and extra protection only when you choose it.
|
|
16
16
|
|
|
17
|
+
That is **Contener · Guiar · Ordenar**.
|
|
18
|
+
|
|
17
19
|
That is the product wedge (host hook + required CI). Skills name the next step after that.
|
|
18
20
|
**Not the wedge:** the optional in-process **ArkRun** runtime (`arkgate/runtime`) and the
|
|
19
21
|
optional **ArkOrder** pattern extra (`arkgate/order`).
|
|
@@ -72,7 +74,7 @@ hardening guide remains repository-hosted rather than duplicated in the gate tar
|
|
|
72
74
|
| **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`. |
|
|
73
75
|
| **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. |
|
|
74
76
|
| **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. |
|
|
75
|
-
| **Team parliament (law vs feature)** | Optional `stewards` on `ark.config.json` (GitHub handle or email); CLI `--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. `stewards` and `layers[].description` are excluded from policy hash. Identity is handle or email, not git `user.name`. No org plane. |
|
|
77
|
+
| **Team parliament (law vs feature)** | Optional `stewards` on `ark.config.json` (GitHub handle or email); CLI `--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. `stewards` and `layers[].description` are excluded from policy hash. Identity is handle or email, not git `user.name`. No org plane. |
|
|
76
78
|
| **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. |
|
|
77
79
|
| **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. |
|
|
78
80
|
| **Structural convergence (3.1.0)** | `analyzeArchitectureConvergence(...)`; map-enabled `preflightChange(...)`; existing CLI/MCP preflight adapters | Additive `convergence` result with stable `satisfied`, `missing`, `contradictory`, and `unplanned` findings. Uses the supplied/current project tree as base and the explicit complete change set as candidate; no implicit Git or LLM input. `readOnly: true`; `behavioralCompletion: "not-evaluated"`. Structural mismatch makes preflight invalid. |
|
|
@@ -84,11 +86,11 @@ hardening guide remains repository-hosted rather than duplicated in the gate tar
|
|
|
84
86
|
| **Diagnostic code catalog** | Root API `DIAGNOSTIC_CATALOG` / `getDiagnosticCatalogEntry` / `diagnosticDocsPath`; docs [diagnostics.md](diagnostics.md) (`#RULE_ID` anchors) | Closed vocabulary of public `ruleId`s with why/fix anchors. Cataloguing only — no new rule semantics. Remediation parity is test-guarded. ArkRun `ARKRUN_*` codes (RN05) share dual-depth `nextAction` / `enthusiastHint`; declaration-list adds are mechanical-safe only when the call-site literal already exists. Docs ship in the npm tarball. |
|
|
85
87
|
| **Status manifest** | CLI `ark status [--json] [--vs <ref>]`; MCP `ark_status`; `arkgate/schema/status-manifest`; root API `buildStatusManifest` / `ARK_STATUS_MANIFEST_SCHEMA` / `projectStatusImprovementCompass` | Schema `1.0`. One session/project snapshot: identity binding, honest write-path activation (`hard`\|`advisory`\|`unavailable`), last-check summary, rules residual counts, primary next action, **`improvementCompass`** with honesty **`mode`** `full`\|`subset`\|`unavailable` (residual ids only; always `notAScore: true`; optional `reasonCode`/`reason`/`factsSource`/`contractHash`), optional **`vsBase`** (pin / contract / baseline grow vs a git ref; advisory only), and additive **`arkRun`** (`notAScore`; `present` / `mode` / `extraMergeTeeth` / residual count — null residual is unknown, not green). **Not a score.** Residual never changes gate verdicts. Never prompts (`CI=1` forces JSON). Optional `--expected-root` / `--expected-project-id` (MCP `project`) for matched vs stale identity. |
|
|
86
88
|
| **Agent contract projection** | CLI `ark agents-md [--write] [--check] [--stdout] [--json]`; install/upgrade AGENTS templates; root API `buildAgentProjectionBlock` / `mergeAgentProjectionDocument` | Schema `1.0` (projection markers). Version-stamped managed block (`arkgateVersion` + contract summary + diagnostic short list). **Non-authoritative** — not a gate input; enforcement is ark-check / hooks / CI. Content-identity merge preserves customized regions outside markers. Drift: `--check` vs package version. |
|
|
87
|
-
| **Agent Skills packaging** | `templates/agent-skills/<name>/SKILL.md` (+ package README); root API `ARK_SKILL_NAMES` / `validateAgentSkillsPackage`; `npm run check:agent-skills` | Schema `1.0` (package contract).
|
|
89
|
+
| **Agent Skills packaging** | `templates/agent-skills/<name>/SKILL.md` (+ package README); root API `ARK_SKILL_NAMES` / `ARK_FIRST_CLASS_SKILL_NAMES` / `validateAgentSkillsPackage`; `npm run check:agent-skills` | Schema `1.0` (package contract). Closed catalog (`ARK_SKILL_NAMES`): first-class doors plus one-release stubs, 1:1 with flat `templates/skills/*.md`. First-class `/ark-order` (issue #216 / ADR 0036). Add a name only with a live ROADMAP item. |
|
|
88
90
|
| **`arkgate/schema/arkrules`** or **`arkgate/schema/ark.arkrules.schema.json`** | Per-layer structure sensors + invariant catalog (ADR 0012) | Schema `1.0`. Opt-in via root `arkRules` map (`ark.config` schema `1.1`). |
|
|
89
91
|
| **`arkgate/schema/resolved-candidate-facts`** or **`arkgate/schema/ark.resolved-candidate-facts.schema.json`** | Versioned parity-capable input for `analyzeResolvedProject` / `preflightResolvedChange` | Schema `1.2` is additive: optional `classShapes` (1.1) plus ArkRun `arkRunKernelCalls` / `arkRunManagedNews` / `arkRunCompositionRootHits` / `arkRunDeclarations` (RN03–RN04) and ArkOrder `arkOrderPlaneCalls` / `arkOrderGenericUpdates` / `arkOrderRootHits` (OR05). `1.0`/`1.1` payloads remain loadable. Tooling owns filesystem/compiler resolution; Domain/Kernel validate and evaluate supplied facts without importing those effects. Facts name resolver/compiler inputs, governed files, dependency evidence, completeness reasons, candidate tree/facts hashes, and (when present) ArkRun/ArkOrder call-site evidence. Tier-1 sensors emit `ARKRUN_*` / `ARKORDER_*` diagnostics from those facts: advisory never flips `valid`; enforced blocks. Extra absence is silent. |
|
|
90
92
|
| **Config JSON Schema** | `arkgate/schema` or `arkgate/schema/ark.config.schema.json` | Stable package resource subpaths for editor completion and contract tooling. |
|
|
91
|
-
| **Agent skills** | `/ark-*` templates; install via `--install-agent-gates` (often `--skills-only` on top of compact) **or** Agent Skills ecosystem path | **Day zero** is the compact router from `ark start` / `start --apply` + doctor — not the full skill pack.
|
|
93
|
+
| **Agent skills** | `/ark-*` templates; install via `--install-agent-gates` (often `--skills-only` on top of compact) **or** Agent Skills ecosystem path | **Day zero** is the compact router from `ark start` / `start --apply` + doctor — not the full skill pack. Closed catalog (`ARK_SKILL_NAMES`): first-class doors (including `/ark-order`) plus one-release stubs. Guided expert path remains `/ark-autopilot` after pack install. **4.0:** first-class doors except experimental `/ark-runtime` / `/ark-order` integrate **layers + ArkRules** and must label residual `[Layer]` vs `[ArkRules]`. **4.2:** repo catalogs are content-idempotent; the optional shared Codex home catalog is monotonic across 4.2.0+ installers. Pre-4.2 writers are outside that protocol and must be upgraded first. A durable pending-catalog journal preserves the floor across an interrupted install and is cleared only by its owning same/newer recovery. **4.3:** Agent Skills–compatible layout at `templates/agent-skills/<name>/SKILL.md` (1:1 with flat `templates/skills/*.md`); install via `npx skills add ./node_modules/arkgate/templates/agent-skills` (or the GitHub tree). **#216:** first-class `/ark-order`; ACS05 freeze opened (ADR 0036). Domain `ARK_SKILL_NAMES` + `validateAgentSkillsPackage`; drift `npm run check:agent-skills`. Skills never enforce. |
|
|
92
94
|
| **ESLint subpath** | `arkgate/eslint` | Config-driven layer/import/purity rules plus ArkRun import/`new` envelope (`ark/no-arkrun-kernel-in-domain`, `ark/no-arkrun-direct-new`, `ark/no-arkrun-transport-bypass`) when `arkRun` is on, and ArkOrder envelope (`ark/no-arkorder-kernel-in-domain`, `ark/no-arkorder-generic-update`) when `arkOrder` is on; loads consumer `ark.config.json`. Absence of an extra is silent. Missing-root / missing-plane and undeclared-* stay CLI/MCP. |
|
|
93
95
|
| **GitHub Action** | `pedroknigge/arkgate` (see `action.yml`) | The `uses:` tag/SHA selects the checker source; `version` remains an optional exact npm compatibility override. |
|
|
94
96
|
| **Package metadata** | `arkgate/package.json` | Stable resource subpath for tooling that needs the installed manifest. |
|
|
@@ -266,7 +268,8 @@ production deployment would need to satisfy; it is not a readiness certification
|
|
|
266
268
|
## Release notes (maintainers)
|
|
267
269
|
|
|
268
270
|
Ship notes for a version live under [releases/](https://github.com/pedroknigge/arkgate/tree/main/docs/releases)
|
|
269
|
-
(current published: [4.8.
|
|
271
|
+
(current published: [4.8.11.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.11.md);
|
|
272
|
+
prior published: [4.8.10.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.10.md);
|
|
270
273
|
prior published: [4.8.9.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.9.md);
|
|
271
274
|
prior published: [4.8.8.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.8.md);
|
|
272
275
|
prior published: [4.8.7.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.7.md);
|
package/docs/product-voice.md
CHANGED
|
@@ -21,9 +21,10 @@ The same check fails the pull request.
|
|
|
21
21
|
**ArkRun** is an optional runtime (`arkgate/runtime`). Experimental. In-memory.
|
|
22
22
|
Not Postgres.
|
|
23
23
|
|
|
24
|
-
**ArkOrder** is the extra that stops
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
**ArkOrder** is the extra that stops rewriting a big product choice — like
|
|
25
|
+
the billing plan — as if it were a seat count (`arkgate/order`). Change those
|
|
26
|
+
choices through a valve, not a generic update. Off unless you turn it on.
|
|
27
|
+
Same npm package. In-memory. Not durable. Does not replace ArkRun.
|
|
27
28
|
|
|
28
29
|
```text
|
|
29
30
|
Write. the agent writes
|
|
@@ -35,12 +36,32 @@ Ship. required GitHub check, then merge
|
|
|
35
36
|
ArkGate always import rules (write + required CI)
|
|
36
37
|
ArkRules optional policies inside a layer
|
|
37
38
|
ArkRun optional experimental runtime — in-memory, not Postgres
|
|
38
|
-
ArkOrder optional
|
|
39
|
+
ArkOrder optional big product choices (billing plan, not seat counts)
|
|
39
40
|
```
|
|
40
41
|
|
|
41
42
|
Status first (`arkgate-check --doctor`). One next step. CLI flag `--doctor` stays;
|
|
42
43
|
human copy says **status**.
|
|
43
44
|
|
|
45
|
+
**Contener · Guiar · Ordenar** is the product north star (not a score). First
|
|
46
|
+
contact says it in ordinary English: contain the write, guide the next step,
|
|
47
|
+
order leftover mess.
|
|
48
|
+
|
|
49
|
+
- **Contener** — decide what the AI may write, and in what shape. ArkGate is
|
|
50
|
+
this: import rules, write + required CI. ArkRules is optional shape inside a
|
|
51
|
+
part.
|
|
52
|
+
- **Guiar** — show a proven next step so a non-expert is not stuck. Doctor
|
|
53
|
+
action #1. Skills. ArkRun is an optional experimental runtime.
|
|
54
|
+
- **Ordenar** — tidy a messy tree toward a clean one, one small refactor at a
|
|
55
|
+
time. ArkOrder is the optional extra for the few big product choices (billing
|
|
56
|
+
plan, not seat counts).
|
|
57
|
+
|
|
58
|
+
The skill *set* must cover Layers + ArkRules + ArkRun + ArkOrder and say when /
|
|
59
|
+
not when / handoff. First-class `/ark-order`; leftover `/ark-*` names are
|
|
60
|
+
one-release stubs. ACS05 freeze was opened for that door
|
|
61
|
+
([ADR 0036](adr/0036-skill-catalog-product-capacity.md)); Domain `ARK_SKILL_NAMES`
|
|
62
|
+
still closes the list. See [agent guide — skills](agent-guide.md#install-skills-ark-and-ecosystem).
|
|
63
|
+
Skills never enforce. ξ / Haken stay below the fold.
|
|
64
|
+
|
|
44
65
|
---
|
|
45
66
|
|
|
46
67
|
## Locked first-contact
|
|
@@ -52,8 +73,9 @@ On the eight canonical public openings — `README.md`, `docs/use.md`,
|
|
|
52
73
|
1. **Verbs:** `Write. Check. Ship.`
|
|
53
74
|
2. **Deny:** `When the agent writes a bad import, the write doesn’t land. The same check fails the pull request.`
|
|
54
75
|
3. **Not-that (below the fold, one line):** `Not an API Gateway. Not a folder linter. If the check is not required on the PR, the config is just documentation.`
|
|
55
|
-
4. **Story:** the exact four-paragraph introduction below, with no visible heading or labels.
|
|
56
|
-
5. **
|
|
76
|
+
4. **Story:** the exact four-paragraph introduction below, with no visible heading or labels. Paragraph 3 is the north star in ordinary English.
|
|
77
|
+
5. **Caption (immediately after the four paragraphs):** `That is **Contener · Guiar · Ordenar**.`
|
|
78
|
+
6. **Technical nouns (below the introduction):** ArkGate is import rules. ArkRules is optional policies. ArkRun is an optional experimental runtime. ArkOrder is the extra for the few big product choices (billing plan, not seat counts) — named when the consumer opts in, never as the first noun. No ξ / Haken / slaving on the first screen.
|
|
57
79
|
|
|
58
80
|
Do not lead with folders, `ark.config.json`, “contract”, “gate”, “house”, or “doctor”
|
|
59
81
|
as the first noun. Historical: `If the AI writes an illegal import, the write is rejected`
|
|
@@ -74,13 +96,15 @@ AI can build fast—and make a mess just as fast.
|
|
|
74
96
|
|
|
75
97
|
Keep the product easy to understand, change, and trust.
|
|
76
98
|
|
|
77
|
-
|
|
99
|
+
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.
|
|
78
100
|
|
|
79
101
|
Safer changes, fewer surprises, and extra protection only when you choose it.
|
|
80
102
|
|
|
103
|
+
That is **Contener · Guiar · Ordenar**.
|
|
104
|
+
|
|
81
105
|
Do not add technical terms to these four paragraphs. In the next section, explain that
|
|
82
106
|
ArkGate checks imports, ArkRules is optional, ArkRun is experimental and in-memory,
|
|
83
|
-
and ArkOrder is optional and
|
|
107
|
+
and ArkOrder is optional and stops rewriting a big product choice like the billing plan.
|
|
84
108
|
|
|
85
109
|
---
|
|
86
110
|
|
|
@@ -113,7 +137,7 @@ Three beats when a line teaches:
|
|
|
113
137
|
| `arkgate-check --doctor` — **status**, one next step | control plane, coach, doctor as the product name |
|
|
114
138
|
| optional policies inside a layer | dual plane, intra-layer sensors, Saturday tidy |
|
|
115
139
|
| experimental runtime / in-memory / not Postgres | production kernel, durable runtime, training wheels |
|
|
116
|
-
|
|
|
140
|
+
| Layers stop a bad import. ArkOrder stops rewriting a big product choice (like billing plan) as if it were a seat count. Change those choices through a valve, not a generic update. | four verbs, freeze a pattern, Haken, slaving, ξ vs s, extra plane, construction OS, Prisma PATCH of a named slow key |
|
|
117
141
|
|
|
118
142
|
Command names stay command names (`--doctor` is a flag). If a word is not here,
|
|
119
143
|
cut it or put it below the fold (develop, JSON, ADRs).
|
|
@@ -172,7 +196,7 @@ a product PR — that is an owner `--contract-session` (config change).
|
|
|
172
196
|
- Emoji rain, crush-it, fake amigo, “you don’t need to understand”
|
|
173
197
|
- Auto-fix-everything / magic codemod
|
|
174
198
|
- Suggest / Adapt / Enforce as settings you pick — they are lights (Setup / In progress / Ready)
|
|
175
|
-
- Skill-shopping
|
|
199
|
+
- Skill-shopping leftover shortcut names as onboarding
|
|
176
200
|
- “Healthy / done” while leftover design work remains
|
|
177
201
|
- “MCP is active” because a file exists
|
|
178
202
|
- Package AI decided pass/fail
|
|
@@ -192,16 +216,19 @@ npx arkgate start → start --apply → arkgate-check
|
|
|
192
216
|
```
|
|
193
217
|
|
|
194
218
|
Five commands, not a menu exam: adopt · place · autopilot · explore · upgrade.
|
|
195
|
-
|
|
219
|
+
First-class extras: runtime (ArkRun) · **order** (ArkOrder). Other `/ark-*` names
|
|
220
|
+
are one-release shortcuts. Invoking a command **is** the approval. CLI checks; it
|
|
221
|
+
does not silently rewrite.
|
|
196
222
|
|
|
197
223
|
---
|
|
198
224
|
|
|
199
225
|
## Checklist before shipping copy
|
|
200
226
|
|
|
201
|
-
- [ ] **Write. Check. Ship.** is on first-contact.
|
|
227
|
+
- [ ] **Write. Check. Ship.** is on first-contact (the deny / wedge).
|
|
228
|
+
- [ ] **Contener · Guiar · Ordenar** is on first-contact in ordinary English (contain the write, guide the next step, order leftover mess).
|
|
202
229
|
- [ ] Deny is `When the agent writes a bad import, the write doesn’t land.`
|
|
203
230
|
- [ ] One next action is obvious.
|
|
204
|
-
- [ ] ArkGate / ArkRules / ArkRun / ArkOrder are import rules / policies / experimental runtime / the extra that stops
|
|
231
|
+
- [ ] ArkGate / ArkRules / ArkRun / ArkOrder are import rules / policies / experimental runtime / the extra that stops a big product choice being rewritten like a seat count.
|
|
205
232
|
- [ ] ArkRun is never implied durable / Postgres.
|
|
206
233
|
- [ ] ArkOrder is never implied durable, a second install, or a replacement for ArkRun.
|
|
207
234
|
- [ ] Status lights read Setup / In progress / Ready to humans.
|
package/docs/threat-model.md
CHANGED
|
@@ -33,7 +33,7 @@ infrastructure beyond how this package is published.
|
|
|
33
33
|
| T4 | Config weakened (`peerIsolation: false`, empty rules) | False green | semantic policy-delta guard in strict merge; hash-bound `--policy-ack`; `--contract-session` required even when `stewards[]` is empty; present-state safety diagnostics |
|
|
34
34
|
| T5 | Baseline ratcheted open | Debt reintroduced | `--update-baseline` requires `--contract-session` even with an empty steward list (`--force` is concentration, not parliament); unused/stale signals; occurrence keys |
|
|
35
35
|
| T6 | Stale MCP/global CLI or wrong root | Gate points at old package / wrong tree | project identity binding; stale process non-authoritative + `PROCESS_PACKAGE_STALE`; project-local upgrade handoff |
|
|
36
|
-
| T7 | Malicious dependency in publish | Compromised gate |
|
|
36
|
+
| T7 | Malicious dependency in publish | Compromised gate | annotated tags, npm provenance, dependency-review, CodeQL, Semgrep, `verify-package-files` |
|
|
37
37
|
| T8 | Path traversal in hooks/check | Read/write outside project | root resolution + under-root import resolve |
|
|
38
38
|
| T9 | Runtime InMemory mistaken for durable | Data loss | durability stance docs + safety InMemory production detector |
|
|
39
39
|
| T10 | Repair payload silently applied | Unexpected rewrites | repair never writes; host must re-inject; exit 2 on deny |
|
|
@@ -48,7 +48,7 @@ Codex apply_patch --PreToolUse--> arkgate-mcp (hard for complete trusted + obser
|
|
|
48
48
|
Any MCP host --tool call----> arkgate-mcp (advisory validation)
|
|
49
49
|
Human IDE --disk/git-----> working tree
|
|
50
50
|
working tree --PR-----------> CI ark-check --strict-merge
|
|
51
|
-
npm publish <--
|
|
51
|
+
npm publish <-- annotated tag --- GitHub Release + provenance
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
Codex hosted tools, specialized hook opt-outs, shell/direct writes, and incomplete patch
|