Current
Weekly accumulate.
ArkGate 4.8.25 is on npm latest. Weekly accumulate over 4.8.24 (#342, #344–#350). No required config migration: a config that loads in 4.8.24 still loads. That is Contener · Guiar · Ordenar.
Upgrade
Install 4.8.25
No required config migration. No schema bump. Does not close K01 or Z09. This mother config still does not turn ArkOrder on.
Minimum version 4.8.25 for the new config fields
(childSlices.arkRulesFile, pinned
sliceAliases). arkgate 4.8.24 and older reject them
at config load. Pin 4.8.25 in the write hook and CI first.
What shipped
Probe the rule. Name the copy. Name the orphan.
Per-slice rules file (#342)
childSlices.arkRulesFile points a slice at its
own ArkRules file. Pinned sliceAliases ship
with it (#341). Both need 4.8.25.
--probe-invariants
A test title that names a rule proves the test exists, not
that it would fail if the rule broke. The probe copies the
project, runs the covering tests, then small changes inside
the symbol. Your files are never changed. Each invariant
reads killed, survived,
not-reached, inconclusive, or
unprobeable. Not a score.
--write saves
.ark/invariant-probe.json.
Promotion reads the probe
A fresh survived or not-reached row
blocks --promote to enforced
(probe-survived). A stale, killed, inconclusive,
or missing result changes nothing. Catalog id
INVARIANT_PROBE_SURVIVED is advisory and never
in the check. The probe runs only when you start it.
Copies across a wall
--doctor --all lists near-identical code on two
sides of a slice wall, in two child slices, or in two layers
(CROSS_WALL_DUPLICATE,
CROSS_LAYER_DUPLICATE). Copies inside one slice
are counted, never listed. Verdict and
factsHash do not change. Never a score.
Files nothing imports
A governed file with no importer shows under
doctor.orphanModules
(ORPHAN_MODULE). Exports nothing imports by name
are UNUSED_EXPORT. Both are advisory. Entry
points can come from an optional
.ark/entry-points.json. Compact status prints
one count line at most.
Owners and trust
Optional layers[].owners and
requireLayerOwners. Absence is silent; when the
flag is on, doctor names the first house without an owner and
the write gate denies a write into it. Optional
layers[].trustBoundary
(public, auth, admin,
internal) is display only. Owners and trust are
stripped from policyHash the way stewards are.
The require flag stays in the hash. No
schemaVersion bump.
Also in status
Friendly next steps. Not a fail.
-
Empty Domain while the UI holds the rules
(
noDomainFrontend). Silent when there is no frontend, Domain already has files, or the UI bag is too thin. -
A domain doc in play with no states → transitions table, and a
narrow
statusTransitionCatalogwhen Domain-role code already names a closed status vocabulary. -
Soft ADR note when
--require-gatesis on and the tree has nodocs/adr/ordocs/decisions/yet. Policy weaken still uses--policy-ack. -
INVARIANT_CATALOG_EMPTYwhenarkRulesis on, Domain has code, andinvariants[]is empty. Advisory unless a domain structure rule is already enforced.
Behavior changes
Read these before you upgrade.
-
Cursor hard-write evidence now requires the host-native
failClosed: trueflag. A Write/StrReplace hook without it is fail-open: doctor and--require-write-hooksay so and do not claim a hard block. Required CI is still the shared merge line. -
writes-via-aggregateflags tagged-template SQL writes (UPDATE,MERGE,TRUNCATE). Comments,FOR UPDATE, andDO UPDATE SETstay silent (#344, #343). -
--policy-baseand MCP policy-delta judge an advisory → enforced promotion with the declaredcoverage.coverageRoots, the same way--promotedoes. -
The write hook and
ark-checkagree on overlapping layer globs (#237). Anincludethat matches files but classifies none is no longer a green check (ANALYSIS_COVERS_NO_FILES); the hook denies those files (CONFIG_UNCLASSIFIED_FILES). -
Library
arkgate startno longer writes Next captions when the tree has no Next (#213). Cold--doctorno longer treats a full governed list as--changed(#212). A newark.config.jsonwrites$schemaatarkgate@4(#211). Doctor counts a fail-closed Ark check behind unconditionalneeds:jobs as a merge gate. -
brace-expansionis overridden to 5.0.12 (#350). The package no longer shipsbin/lib/ark-order-invariants.mjs,bin/lib/ark-order-error.mjs, orbin/lib/stable-hash.mjs. ArkOrder invariants still ship inarkgate/order. Compact--doctornames ArkRules only when thearkRulesmap is on.
Honesty
What stayed the same.
No schemaVersion bump. Does not close K01 or Z09.
The probe never runs from the write hook, MCP, ESLint, the
GitHub Action, or --strict-merge, and it refuses to
combine with them. Import rules still hold at write and at
merge. Required CI is still the hard line. ArkOrder stays
opt-in.
Maintainer source: CHANGELOG.md ↗