Published
Hierarchical slices.
ArkGate 4.8.23 is published. Current is 4.8.25. Ships the issue #326 series (#327–#333): a universe → feature wall you can adopt one step at a time. No config migration: every new field is optional, and a config without them keeps today's output. That is Contener · Guiar · Ordenar.
Upgrade
Install 4.8.23
Current is 4.8.25 on npm latest. Install that
unless you need this patch pinned. No schema bump.
Minimum version 4.8.23 for the new config fields.
arkgate 4.8.22 and older reject childSlices and
sharedImportsSlice: "deny-cross-parent" at config
load. Pin 4.8.23 in the write hook and CI before you commit a
config that uses them.
What shipped
Two walls you already know.
Nested wall: childSlices (#328)
An optional inner wall under today's universe wall on a
peerIsolation rule. A cross-universe import is
CROSS_PARENT_SLICE (never advisory). A crossing
between features of one universe is
CROSS_SIBLING_SLICE, deny or advisory.
ruleId stays LAYER_IMPORT_VIOLATION
and the baseline key does not change.
No laundering through shared roots (#329)
sharedImportsSlice: "deny-cross-parent" keeps
the direct shared-root hop a warning, and ark-check and CI
report CROSS_PARENT_VIA_SHARED when a slice
reaches another universe only through a shared root.
Enforce one subtree at a time (#330)
childSlices.siblings may be
{ "default": "advisory", "enforce": [...] }.
Listed children fail on a sibling crossing; the rest stay
warnings and still fail when they grow past the baseline.
Whole-segment wildcards (#331)
childSlices.allowedCrossSlice accepts
features/projects/*. It clears a sibling
crossing inside one universe only, never a cross-parent
finding.
sliceAliases (#332)
Map a folder outside the slice trees onto a child slice,
such as lib/compliance/** →
features/projects/compliance. Doctor lists each
alias as an owed move, not a finished house.
Doctor flat-parent move card (#333)
A flat file at universe level that exactly one child slice
imports gets a suggested destination inside that child that
keeps its layer. A suggestion only. The reshape destination
check now uses the walls' slice identity, so
sliceIdentity: "stars" no longer treats two
children as one slice.
Honesty
What stayed the same.
Without childSlices, behavior and output stay the
same as the 4.8.22 universe wall (#327 pins it). Import rules still hold at
write and at merge. Required CI is still the hard line. Cursor,
Grok, and Claude can block listed writes when hooks are trusted.
Maintainer source: CHANGELOG.md ↗