arkgate 4.8.16 → 4.8.17
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 +26 -0
- package/README.md +3 -3
- package/bin/ark-check-runtime.mjs +5 -1
- package/bin/ark-mcp-runtime.mjs +14 -7
- package/bin/lib/adr-path.mjs +116 -0
- package/bin/lib/adr-presence.mjs +3 -2
- package/bin/lib/analysis-engine.mjs +6 -6
- package/bin/lib/first-run-help.mjs +2 -1
- package/bin/lib/policy-delta-io.mjs +19 -10
- package/dist/{diagnosticCatalog-KWvGLI1U.d.ts → diagnosticCatalog-DVABouBV.d.ts} +7 -1
- package/dist/index.cjs +9 -9
- package/dist/index.d.ts +2 -2
- package/dist/index.js +11 -11
- package/dist/nestjs/index.cjs +1 -1
- package/dist/nestjs/index.js +1 -1
- package/dist/runtime/index.cjs +6 -6
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +6 -6
- package/docs/README.md +1 -1
- package/docs/agent-guide.md +1 -1
- package/docs/configuration.md +6 -3
- package/docs/enthusiast/how-to-agent-gates.md +3 -1
- package/docs/package-surface.md +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/templates/agent-skills/README.md +1 -1
- package/templates/agent-skills/ark-adopt/SKILL.md +4 -2
- package/templates/agent-skills/ark-explore/SKILL.md +3 -1
- package/templates/skills/ark-adopt.md +4 -2
- package/templates/skills/ark-explore.md +3 -1
package/docs/README.md
CHANGED
|
@@ -73,7 +73,7 @@ These are **not** the day-to-day product path. They stay in the repo for evidenc
|
|
|
73
73
|
| Field adoption kit (scaffolding, not closed) | [field/](field/) |
|
|
74
74
|
| Runtime hardening (experimental) | [production-hardening.md](production-hardening.md) |
|
|
75
75
|
|
|
76
|
-
Prepared: [CHANGELOG](../CHANGELOG.md) (`arkgate@4.8.
|
|
76
|
+
Prepared: [CHANGELOG](../CHANGELOG.md) (`arkgate@4.8.17`; not published until `publish-npm` for `v4.8.17`).
|
|
77
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
78
|
Prior published: [releases/4.8.10.md](releases/4.8.10.md) (`arkgate@4.8.10`).
|
|
79
79
|
Prior published: [releases/4.8.9.md](releases/4.8.9.md) (`arkgate@4.8.9`).
|
package/docs/agent-guide.md
CHANGED
|
@@ -1347,7 +1347,7 @@ The server exposes these thirteen tools. Every tool accepts the additive
|
|
|
1347
1347
|
| `ark_manifest` | No non-project args: return the machine-readable architecture contract with an authoritative binding after the identity handshake. |
|
|
1348
1348
|
| `validate_code` | `{ source, layer?, filePath? }`: validate one snippet; infer the layer from `filePath` when possible; return an error result when invalid. |
|
|
1349
1349
|
| `ark_check` | `{ strict?, baseline? }`: run the full project architecture check. `verdict` separates `identity`, `completeness`, `graph`, `coverage`, `gates`, and `overallOk`; no individual green fact substitutes for the combined verdict. |
|
|
1350
|
-
| `ark_policy_delta` | `{ baseConfig, candidateConfig?, acknowledgement? }`: classify a complete contract transition; never edits the contract. |
|
|
1350
|
+
| `ark_policy_delta` | `{ baseConfig, candidateConfig?, acknowledgement? }`: classify a complete contract transition; never edits the contract. Weakening / new layer / new allow edge needs `adrPath` on the acknowledgement. |
|
|
1351
1351
|
| `ark_coverage` | No args: report per-layer counts, every unclassified file, unmatched layers, and missing rule edges. |
|
|
1352
1352
|
| `ark_place` | `{ filePath?, description? }`: resolve or propose a governed home and return its import/global constraints. |
|
|
1353
1353
|
| `ark_prepare_write` | `{ source, filePath?, description?, layer? }`: compose placement and snippet validation, with hashes and a mechanical-safe patch when available. |
|
package/docs/configuration.md
CHANGED
|
@@ -457,12 +457,15 @@ JSON artifact passed with `--policy-ack`:
|
|
|
457
457
|
"basePolicyHash": "fnv1a-...",
|
|
458
458
|
"candidatePolicyHash": "fnv1a-...",
|
|
459
459
|
"findingIds": ["weakening:$.dynamicImportAllowlist:added"],
|
|
460
|
-
"reason": "Temporary loader while the static registry is migrated."
|
|
460
|
+
"reason": "Temporary loader while the static registry is migrated.",
|
|
461
|
+
"adrPath": "docs/adr/0001-temporary-loader.md"
|
|
461
462
|
}
|
|
462
463
|
```
|
|
463
464
|
|
|
464
|
-
The acknowledgement must list every blocking finding exactly
|
|
465
|
-
|
|
465
|
+
The acknowledgement must list every blocking finding exactly and name a short
|
|
466
|
+
decision note as `adrPath` (under `docs/adr/` or `docs/decisions/`). A reason
|
|
467
|
+
alone is not enough. It is not a permanent allowlist: changing either contract
|
|
468
|
+
changes its hash and invalidates the acknowledgement.
|
|
466
469
|
|
|
467
470
|
## Team parliament (law vs feature)
|
|
468
471
|
|
|
@@ -52,7 +52,9 @@ unclassified source files therefore remain red.
|
|
|
52
52
|
If gates are required and the tree has no short decision note yet (`docs/adr/` or
|
|
53
53
|
`docs/decisions/`), `--require-gates` and doctor point at that path. Soft hint —
|
|
54
54
|
not a fail, and silent when `--require-gates` is off. Not every change needs a
|
|
55
|
-
note; use one when you loosen a rule or add a real gate.
|
|
55
|
+
note; use one when you loosen a rule or add a real gate. When `--policy-ack`
|
|
56
|
+
is required (weaken, new layer, or new allow edge), put that note's path on
|
|
57
|
+
the acknowledgement as `adrPath`.
|
|
56
58
|
|
|
57
59
|
Doctor JSON includes `writePath.mode` plus `enforcementLadder`: support, installation, observed
|
|
58
60
|
evidence, covered operations, bypassability, and CI honesty. MCP registration stays advisory.
|
package/docs/package-surface.md
CHANGED
|
@@ -75,7 +75,7 @@ hardening guide remains repository-hosted rather than duplicated in the gate tar
|
|
|
75
75
|
| **Package pin dual-truth (4.0)** | doctor JSON `packageVersionTruth`; upgrade JSON/human note when pin behind CLI | Additive, advisory. Surfaces after `upgrade --no-install` when managed CLI is ahead of package.json. |
|
|
76
76
|
| **Managed upgrade self-service honesty (4.5 / DF05)** | `ark upgrade [--json]` → `selfService` (+ human “Self-service honesty” lines) | Additive, advisory. Answers without a maintainer: write-path activation labels per selected host (`hard`\|`advisory`\|`unavailable`) and customized content-identity preserve (`customizedPaths` / `customizedContentPreserved`). Soft hosts never hard; upgrade never invents `hardWriteActive` from disk alone. Always `notAScore: true`. Not a gate input; not part of `planDigest`. |
|
|
77
77
|
| **Product honesty readiness split (4.1.1)** | doctor JSON `productHonesty` | Additive. `unfinished` / `headline` / `primaryNextAction` / `reasonIds` remain; EH adds `contractReadiness` (`ready`\|`partial`\|`not-ready`), `localWriteBoundary` (`advisory`\|`hard`\|`unverified`\|`unknown`), `architectureReasonIds`, `environmentResidualIds` / `environmentResiduals`. Soft-write hosts stay in evidence without alone forcing global **Not finished**. `notAScore: true` always. |
|
|
78
|
-
| **Policy transition analysis (3.1.0)** | `analyzePolicyDelta(...)`; MCP `ark_policy_delta`; CLI `--policy-base` / `--policy-base-ref` / `--policy-ack`; check JSON `policyDelta` | Additive schema `1.0`. Classifications and finding ids are deterministic. Weakening/judgment requires an acknowledgement bound to both policy hashes and the exact blocking finding set. |
|
|
78
|
+
| **Policy transition analysis (3.1.0)** | `analyzePolicyDelta(...)`; MCP `ark_policy_delta`; CLI `--policy-base` / `--policy-base-ref` / `--policy-ack`; check JSON `policyDelta` | Additive schema `1.0`. Classifications and finding ids are deterministic. Weakening/judgment requires an acknowledgement bound to both policy hashes and the exact blocking finding set. A new layer or new allow edge is `judgment-required`. On the CLI/MCP policy-ack plane, `adrPath` must name a short note under `docs/adr/` or `docs/decisions/` (`policyDelta.adrNote`). Domain hash match stays I/O-free. |
|
|
79
79
|
| **Team parliament (law vs feature)** | Optional `stewards` on `ark.config.json` (GitHub handle or email); CLI `--local` / `--changed` / `--against` / `--base` / `--contract-diff` / `--contract-session` / `--persona` / `--author`; check JSON `teamParliament`; `ark status --vs`; write-gate mixed-batch deny | Additive. Law files must not mix with product source. Loosen / baseline-grow are steward-only when `stewards` is set. `--against` ratchets vs the base-ref baseline. `--changed` scans touched sources plus their import closure. `--local` (or `ARK_CHECK_LOCAL=1`) is the same cheap path and stays per `--root`; it cannot combine with `--strict-merge`. Check JSON may add `local`, `scope: "changed"`, `analysisRoot`. `stewards`, `layers[].description`, `layers[].trustBoundary`, and `layers[].owners` are excluded from policy hash. `requireLayerOwners` stays in the hash. Identity is handle or email, not git `user.name`. No org plane. |
|
|
80
80
|
| **Atomic change preflight (3.1.0)** | `preflightChange(...)`; CLI `ark preflight --changes <file> --json`; MCP `ark_prepare_change` | Additive schema `1.0`. One complete governed production-source `{path,content}` / `{path,delete:true}` batch; read-only; returns operation, content/tree/policy/compiler fingerprints and stable graph findings. MCP availability alone is advisory. |
|
|
81
81
|
| **Architecture change map (3.1.0)** | `arkgate/schema/change-map` or `arkgate/schema/ark.change-map.schema.json`; CLI `ark preflight --change-map <file>`; MCP `ark_prepare_change.changeMap` | Optional strict schema `1.0`. Canonical planned paths + operations + resolved Ark layers + dependencies between planned files. Preflight returns `changeMapHash`; absence is normal and adds no project file. Structural intent only, never behavioral completion. |
|
package/package.json
CHANGED
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.
|
|
9
|
+
"version": "4.8.17",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "arkgate",
|
|
14
|
-
"version": "4.8.
|
|
14
|
+
"version": "4.8.17",
|
|
15
15
|
"runtimeHint": "npx",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
@@ -9,7 +9,7 @@ closed `/ark-*` catalog shipped as flat templates for Ark install.
|
|
|
9
9
|
**Closed catalog** (`ARK_SKILL_NAMES`) — first-class doors plus one-release
|
|
10
10
|
redirect stubs. Add a name only with a live ROADMAP item.
|
|
11
11
|
|
|
12
|
-
Package version when last generated context: **arkgate@4.8.
|
|
12
|
+
Package version when last generated context: **arkgate@4.8.17**
|
|
13
13
|
Schema: agent-skills package contract `1.0`
|
|
14
14
|
|
|
15
15
|
## Skills (closed catalog)
|
|
@@ -168,8 +168,10 @@ When gates are required (`--require-gates` / `--strict-merge` / required merge
|
|
|
168
168
|
status) and there is no short decision-note home yet, doctor may ask for one
|
|
169
169
|
under `docs/adr/` or `docs/decisions/`. Write a note when you loosen a rule or
|
|
170
170
|
add a real gate — not on every file. Absence is silent unless that demand is
|
|
171
|
-
on. The hint does not fail the check. Do **not** invent `/ark-adr`.
|
|
172
|
-
|
|
171
|
+
on. The home hint does not fail the check. Do **not** invent `/ark-adr`.
|
|
172
|
+
When `--policy-ack` is required (weaken, new layer, or new allow edge), put
|
|
173
|
+
that note's path on the acknowledgement as `adrPath`. A free-floating reason
|
|
174
|
+
is not enough on the policy-ack plane.
|
|
173
175
|
|
|
174
176
|
## States and transitions (process)
|
|
175
177
|
|
|
@@ -24,7 +24,9 @@ one bounded decision needs 2–3 enforceable options.
|
|
|
24
24
|
- Doctor #1: if ENFORCE + empty plan A and gates are already installed → **Shape** (`/ark-explore` then `/ark-autopilot`). Do not say install-agent-gates.
|
|
25
25
|
- When `--require-gates` / adopted-strict is on and doctor JSON has `adrPresence`,
|
|
26
26
|
the next step is a short note under `docs/adr/` (or `docs/decisions/`). Soft.
|
|
27
|
-
Not every change. Off when require-gates is off. No `/ark-adr`.
|
|
27
|
+
Not every change. Off when require-gates is off. No `/ark-adr`. When
|
|
28
|
+
`policyDelta` needs `--policy-ack` (weaken, new layer, or new allow edge),
|
|
29
|
+
the ack must name that note as `adrPath` — a reason alone is not enough.
|
|
28
30
|
- When doctor JSON has `statesTransitions` or `statusTransitionCatalog`, the
|
|
29
31
|
next step is a short states → transitions table (or one link) on the domain
|
|
30
32
|
doc already in play. Use catalog names when present. Soft. Silent when that
|
|
@@ -168,8 +168,10 @@ When gates are required (`--require-gates` / `--strict-merge` / required merge
|
|
|
168
168
|
status) and there is no short decision-note home yet, doctor may ask for one
|
|
169
169
|
under `docs/adr/` or `docs/decisions/`. Write a note when you loosen a rule or
|
|
170
170
|
add a real gate — not on every file. Absence is silent unless that demand is
|
|
171
|
-
on. The hint does not fail the check. Do **not** invent `/ark-adr`.
|
|
172
|
-
|
|
171
|
+
on. The home hint does not fail the check. Do **not** invent `/ark-adr`.
|
|
172
|
+
When `--policy-ack` is required (weaken, new layer, or new allow edge), put
|
|
173
|
+
that note's path on the acknowledgement as `adrPath`. A free-floating reason
|
|
174
|
+
is not enough on the policy-ack plane.
|
|
173
175
|
|
|
174
176
|
## States and transitions (process)
|
|
175
177
|
|
|
@@ -24,7 +24,9 @@ one bounded decision needs 2–3 enforceable options.
|
|
|
24
24
|
- Doctor #1: if ENFORCE + empty plan A and gates are already installed → **Shape** (`/ark-explore` then `/ark-autopilot`). Do not say install-agent-gates.
|
|
25
25
|
- When `--require-gates` / adopted-strict is on and doctor JSON has `adrPresence`,
|
|
26
26
|
the next step is a short note under `docs/adr/` (or `docs/decisions/`). Soft.
|
|
27
|
-
Not every change. Off when require-gates is off. No `/ark-adr`.
|
|
27
|
+
Not every change. Off when require-gates is off. No `/ark-adr`. When
|
|
28
|
+
`policyDelta` needs `--policy-ack` (weaken, new layer, or new allow edge),
|
|
29
|
+
the ack must name that note as `adrPath` — a reason alone is not enough.
|
|
28
30
|
- When doctor JSON has `statesTransitions` or `statusTransitionCatalog`, the
|
|
29
31
|
next step is a short states → transitions table (or one link) on the domain
|
|
30
32
|
doc already in play. Use catalog names when present. Soft. Silent when that
|