arkgate 4.8.5 → 4.8.6
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 +33 -2
- package/README.md +15 -9
- package/bin/lib/analysis-engine.mjs +4 -4
- package/bin/lib/ark-order-invariants.mjs +163 -14
- package/bin/lib/ark-order-types.mjs +3 -0
- package/bin/lib/diagnostic-catalog.mjs +5 -4
- package/bin/lib/remediation.mjs +11 -5
- package/dist/{diagnosticCatalog-DMO30svh.d.ts → diagnosticCatalog-D_DI7qrZ.d.ts} +1 -1
- package/dist/eslint/index.cjs +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/index.cjs +11 -11
- package/dist/index.d.ts +2 -2
- package/dist/index.js +10 -10
- package/dist/nestjs/index.cjs +5 -5
- package/dist/nestjs/index.d.ts +1 -1
- package/dist/nestjs/index.js +5 -5
- package/dist/order/index.cjs +1 -1
- package/dist/order/index.d.ts +61 -10
- package/dist/order/index.js +1 -1
- package/dist/runtime/index.cjs +11 -11
- package/dist/runtime/index.d.ts +3 -3
- package/dist/runtime/index.js +11 -11
- package/dist/{types-CzE6LMaW.d.ts → types-DrqsOiTY.d.ts} +21 -6
- package/docs/README.md +5 -4
- package/docs/agent-guide.md +2 -0
- package/docs/ai-gates.md +5 -2
- package/docs/arkorder.md +32 -14
- package/docs/configuration.md +5 -3
- package/docs/develop.md +7 -2
- package/docs/diagnostics.md +15 -5
- package/docs/package-surface.md +13 -10
- package/docs/product-voice.md +3 -3
- package/docs/use.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 -4
- package/templates/agent-skills/ark-architect/SKILL.md +1 -1
- package/templates/agent-skills/ark-autopilot/SKILL.md +4 -4
- package/templates/agent-skills/ark-contract/SKILL.md +1 -1
- package/templates/agent-skills/ark-coverage/SKILL.md +3 -2
- package/templates/agent-skills/ark-explain/SKILL.md +3 -2
- package/templates/agent-skills/ark-explore/SKILL.md +3 -2
- 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 +8 -8
- package/templates/agent-skills/ark-runtime/SKILL.md +3 -0
- package/templates/agent-skills/ark-think/SKILL.md +2 -2
- package/templates/agent-skills/ark-upgrade/SKILL.md +2 -2
- package/templates/skills/ark-adopt.md +4 -4
- package/templates/skills/ark-architect.md +1 -1
- package/templates/skills/ark-autopilot.md +4 -4
- package/templates/skills/ark-contract.md +1 -1
- package/templates/skills/ark-coverage.md +3 -2
- package/templates/skills/ark-explain.md +3 -2
- package/templates/skills/ark-explore.md +3 -2
- package/templates/skills/ark-fix.md +1 -1
- package/templates/skills/ark-loop.md +1 -1
- package/templates/skills/ark-place.md +8 -8
- package/templates/skills/ark-runtime.md +3 -0
- package/templates/skills/ark-think.md +2 -2
- package/templates/skills/ark-upgrade.md +2 -2
|
@@ -862,20 +862,35 @@ type ArkRunInformationPackageComponent = {
|
|
|
862
862
|
sends: string[];
|
|
863
863
|
extendedInfo?: ArkRunExtendedInfo;
|
|
864
864
|
};
|
|
865
|
+
declare const ARK_RUN_DECISION_TAPE_RESIDUAL_KINDS: readonly ["absorb", "escalate_up", "hold"];
|
|
866
|
+
type ArkRunDecisionTapeResidualKind = (typeof ARK_RUN_DECISION_TAPE_RESIDUAL_KINDS)[number];
|
|
867
|
+
/** Additive Order residual tape (ADR 0034 D6). Not a bus. Not durable. */
|
|
868
|
+
type ArkRunDecisionTapeRecord = {
|
|
869
|
+
xiHash: string;
|
|
870
|
+
event: {
|
|
871
|
+
kind: string;
|
|
872
|
+
payload?: Record<string, string | number | boolean | null>;
|
|
873
|
+
};
|
|
874
|
+
residual: {
|
|
875
|
+
kind: ArkRunDecisionTapeResidualKind;
|
|
876
|
+
reasonCode?: string;
|
|
877
|
+
eventId?: string;
|
|
878
|
+
target?: string;
|
|
879
|
+
};
|
|
880
|
+
};
|
|
865
881
|
type DependencyInformationPackage = {
|
|
866
882
|
schemaVersion: typeof ARK_RUN_INFORMATION_PACKAGE_SCHEMA_VERSION;
|
|
867
883
|
kernelInstanceId: string;
|
|
868
884
|
components: ArkRunInformationPackageComponent[];
|
|
885
|
+
/** Optional; omitted keeps the 4.8.x component snapshot shape. */
|
|
886
|
+
decisionTape?: ArkRunDecisionTapeRecord[];
|
|
869
887
|
};
|
|
870
|
-
/**
|
|
871
|
-
* Build a JSON-serializable snapshot from unknown component records.
|
|
872
|
-
* Only id, lifetime, the four declaration lists, and optional extendedInfo
|
|
873
|
-
* survive — extra keys (factory, instance, DTO payloads) are dropped.
|
|
874
|
-
*/
|
|
875
888
|
declare function buildDependencyInformationPackage(input: {
|
|
876
889
|
kernelInstanceId?: unknown;
|
|
877
890
|
components?: unknown;
|
|
891
|
+
decisionTape?: unknown;
|
|
878
892
|
}): DependencyInformationPackage;
|
|
893
|
+
declare function appendDecisionTape(pack: DependencyInformationPackage, record: unknown): DependencyInformationPackage;
|
|
879
894
|
|
|
880
895
|
/**
|
|
881
896
|
* ArkRun requestGraph slices (RN13). Tooling only — never a gate verdict.
|
|
@@ -1234,4 +1249,4 @@ interface CreateArkKernelFromConfigOptions extends Omit<CreateArkKernelOptions,
|
|
|
1234
1249
|
}
|
|
1235
1250
|
type ArkKernelConfig = ArkCheckConfig;
|
|
1236
1251
|
|
|
1237
|
-
export { ARK_RUN_INSPECTOR_EVENTS_PATH as $, type ArkKernel as A, type OutboxStatus as B, type CreateArkKernelOptions as C, type DefineIntentOptions as D, type EventContractRegistry as E, type OutboxRecord as F, type GraphEdge as G, type ObservabilityDriftReport as H, IntentRegistry as I, ARK_RUN_COMPONENT_LIFETIMES as J, ARK_RUN_EPHEMERAL_DEFAULT as K, ARK_RUN_GRAPH_DEFAULT_SLICE as L, type MetadataRegistry as M, ARK_RUN_GRAPH_NODE_KINDS as N, type ObservabilityReporter as O, type ProjectionRegistry as P, ARK_RUN_GRAPH_PROCESS_EDGE_KINDS as Q, type ReadModelStore as R, type SagaContext as S, type TraceRecordType as T, ARK_RUN_GRAPH_SCHEMA_VERSION as U, ARK_RUN_GRAPH_SLICES as V, type WorkflowStore as W, ARK_RUN_GRAPH_TECHNICAL_EDGE_KINDS as X, ARK_RUN_INFORMATION_PACKAGE_SCHEMA_VERSION as Y, ARK_RUN_INSPECTOR_DEFAULT_HOST as Z, ARK_RUN_INSPECTOR_DEFAULT_PORT as _, type DependencyGraph as a, InvalidArkRunSendOptionError as a$, ARK_RUN_INSPECTOR_GRAPH_PATH as a0, ARK_RUN_INSPECTOR_SCHEMA_VERSION as a1, ARK_RUN_INSPECTOR_SNAPSHOT_PATH as a2, ARK_RUN_INSPECTOR_SSE_EVENT as a3, ARK_RUN_INSPECTOR_TRANSPORT_FALLBACK as a4, ARK_RUN_TRANSPORT_KINDS as a5, type ArkManifestArchitecture as a6, type ArkManifestData as a7, type ArkManifestEntityLink as a8, type ArkManifestGraph as a9, type ArkRunInspectorSnapshotInput as aA, type ArkRunInspectorSource as aB, type ArkRunInspectorTransportFacts as aC, type ArkRunPublisher as aD, type ArkRunRegisterOptions as aE, type ArkRunRegistrationHandle as aF, type ArkRunSendOptions as aG, type ArkRunSendPlan as aH, type ArkRunSendPlanInput as aI, type ArkRunSendResult as aJ, type ArkRunTransportKind as aK, type AuditRecordInput as aL, type AuditRecordType as aM, type EntityMeta as aN, type EventContractIssue as aO, type EventHandler as aP, type EventInterceptionInfo as aQ, type EventInterceptor as aR, type EventInterceptorContext as aS, type EventPayloadPatch as aT, type EventPayloadSchema as aU, type EventPublisher as aV, type EventSchemaField as aW, type EventSchemaFieldType as aX, type FieldMeta as aY, type GraphNode as aZ, InvalidArkRunGraphQueryError as a_, type ArkManifestIntent as aa, type ArkManifestPolicy as ab, type ArkManifestProjection as ac, type ArkRunBrokerAdapter as ad, type ArkRunComponentLifetime as ae, type ArkRunDeliveredVia as af, type ArkRunExtendedInfo as ag, type ArkRunGraph as ah, type ArkRunGraphEdge as ai, type ArkRunGraphEdgeKind as aj, type ArkRunGraphMatch as ak, type ArkRunGraphMatchInput as al, type ArkRunGraphNode as am, type ArkRunGraphNodeKind as an, type ArkRunGraphProcessEdgeKind as ao, type ArkRunGraphQuery as ap, type ArkRunGraphResolvedQuery as aq, type ArkRunGraphSlice as ar, type ArkRunGraphTechnicalEdgeKind as as, type ArkRunInformationPackageComponent as at, type ArkRunInspectorBind as au, ArkRunInspectorBindError as av, type ArkRunInspectorBindInput as aw, type ArkRunInspectorHandle as ax, ArkRunInspectorProductionError as ay, type ArkRunInspectorSnapshot as az, type AuditStore as b, type ObservabilityFlow as b0, type ObservedLayerFlowMode as b1, type OutboxStore as b2, type PolicyEvaluationResult as b3, type ProjectionCheckpoint as b4, type ProjectionDefinition as b5, type PublishedEventRecord as b6, type RetryPolicy as b7, type SagaStatus as b8, type SagaStep as b9, type StartArkRunInspectorOptions as ba, type TraceSink as bb, type Unsubscribe as bc, type WorkflowDefinition as bd, type WorkflowStatus as be, type WorkflowStep as bf,
|
|
1252
|
+
export { ARK_RUN_INSPECTOR_EVENTS_PATH as $, type ArkKernel as A, type OutboxStatus as B, type CreateArkKernelOptions as C, type DefineIntentOptions as D, type EventContractRegistry as E, type OutboxRecord as F, type GraphEdge as G, type ObservabilityDriftReport as H, IntentRegistry as I, ARK_RUN_COMPONENT_LIFETIMES as J, ARK_RUN_EPHEMERAL_DEFAULT as K, ARK_RUN_GRAPH_DEFAULT_SLICE as L, type MetadataRegistry as M, ARK_RUN_GRAPH_NODE_KINDS as N, type ObservabilityReporter as O, type ProjectionRegistry as P, ARK_RUN_GRAPH_PROCESS_EDGE_KINDS as Q, type ReadModelStore as R, type SagaContext as S, type TraceRecordType as T, ARK_RUN_GRAPH_SCHEMA_VERSION as U, ARK_RUN_GRAPH_SLICES as V, type WorkflowStore as W, ARK_RUN_GRAPH_TECHNICAL_EDGE_KINDS as X, ARK_RUN_INFORMATION_PACKAGE_SCHEMA_VERSION as Y, ARK_RUN_INSPECTOR_DEFAULT_HOST as Z, ARK_RUN_INSPECTOR_DEFAULT_PORT as _, type DependencyGraph as a, InvalidArkRunSendOptionError as a$, ARK_RUN_INSPECTOR_GRAPH_PATH as a0, ARK_RUN_INSPECTOR_SCHEMA_VERSION as a1, ARK_RUN_INSPECTOR_SNAPSHOT_PATH as a2, ARK_RUN_INSPECTOR_SSE_EVENT as a3, ARK_RUN_INSPECTOR_TRANSPORT_FALLBACK as a4, ARK_RUN_TRANSPORT_KINDS as a5, type ArkManifestArchitecture as a6, type ArkManifestData as a7, type ArkManifestEntityLink as a8, type ArkManifestGraph as a9, type ArkRunInspectorSnapshotInput as aA, type ArkRunInspectorSource as aB, type ArkRunInspectorTransportFacts as aC, type ArkRunPublisher as aD, type ArkRunRegisterOptions as aE, type ArkRunRegistrationHandle as aF, type ArkRunSendOptions as aG, type ArkRunSendPlan as aH, type ArkRunSendPlanInput as aI, type ArkRunSendResult as aJ, type ArkRunTransportKind as aK, type AuditRecordInput as aL, type AuditRecordType as aM, type EntityMeta as aN, type EventContractIssue as aO, type EventHandler as aP, type EventInterceptionInfo as aQ, type EventInterceptor as aR, type EventInterceptorContext as aS, type EventPayloadPatch as aT, type EventPayloadSchema as aU, type EventPublisher as aV, type EventSchemaField as aW, type EventSchemaFieldType as aX, type FieldMeta as aY, type GraphNode as aZ, InvalidArkRunGraphQueryError as a_, type ArkManifestIntent as aa, type ArkManifestPolicy as ab, type ArkManifestProjection as ac, type ArkRunBrokerAdapter as ad, type ArkRunComponentLifetime as ae, type ArkRunDeliveredVia as af, type ArkRunExtendedInfo as ag, type ArkRunGraph as ah, type ArkRunGraphEdge as ai, type ArkRunGraphEdgeKind as aj, type ArkRunGraphMatch as ak, type ArkRunGraphMatchInput as al, type ArkRunGraphNode as am, type ArkRunGraphNodeKind as an, type ArkRunGraphProcessEdgeKind as ao, type ArkRunGraphQuery as ap, type ArkRunGraphResolvedQuery as aq, type ArkRunGraphSlice as ar, type ArkRunGraphTechnicalEdgeKind as as, type ArkRunInformationPackageComponent as at, type ArkRunInspectorBind as au, ArkRunInspectorBindError as av, type ArkRunInspectorBindInput as aw, type ArkRunInspectorHandle as ax, ArkRunInspectorProductionError as ay, type ArkRunInspectorSnapshot as az, type AuditStore as b, type ObservabilityFlow as b0, type ObservedLayerFlowMode as b1, type OutboxStore as b2, type PolicyEvaluationResult as b3, type ProjectionCheckpoint as b4, type ProjectionDefinition as b5, type PublishedEventRecord as b6, type RetryPolicy as b7, type SagaStatus as b8, type SagaStep as b9, type StartArkRunInspectorOptions as ba, type TraceSink as bb, type Unsubscribe as bc, type WorkflowDefinition as bd, type WorkflowStatus as be, type WorkflowStep as bf, appendDecisionTape as bg, arkRunGraphQueryFromSearchParams as bh, arkRunInspectorUrl as bi, buildArkRunInspectorSnapshot as bj, buildDependencyInformationPackage as bk, closeArkRunGraphQuery as bl, closedArkRunEphemeral as bm, closedArkRunTransportKind as bn, formatArkRunGraphMermaid as bo, formatArkRunInspectorSseEvent as bp, isArkRunInspectorLoopbackHost as bq, isArkRunInspectorProductionEnv as br, requestArkRunGraph as bs, resolveArkRunInspectorBind as bt, resolveArkRunSendPlan as bu, startArkRunInspector as bv, type AuditRecord as c, type AuditQuery as d, type CreateAuditTrailOptions as e, type AuditTrail as f, type EventContract as g, type EventContractValidationResult as h, type CreateProjectionRegistryOptions as i, type EventBufferStore as j, type EventBufferRecord as k, type EventBufferStatus as l, type EventBusOptions as m, type EventBus as n, type CreateObservabilityReporterOptions as o, PolicyEngine as p, type ArkManifest as q, type WorkflowSnapshot as r, type SagaDefinition as s, type CreateWorkflowEngineOptions as t, type SagaInstance as u, type WorkflowEngine as v, type DependencyInformationPackage as w, type ArkKernelConfig as x, type CreateArkKernelFromConfigOptions as y, type TraceRecord as z };
|
package/docs/README.md
CHANGED
|
@@ -46,7 +46,7 @@ Product site: [arkgate.online](https://www.arkgate.online/) · npm: [`arkgate`](
|
|
|
46
46
|
|-----|------------|
|
|
47
47
|
| [CONTRIBUTING.md](../CONTRIBUTING.md) | Setup, rules, PR/release |
|
|
48
48
|
| [ROADMAP.md](../ROADMAP.md) | Live implementation queue (one `doing` at a time). History: [archive/roadmap-history.md](archive/roadmap-history.md) |
|
|
49
|
-
| [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) |
|
|
49
|
+
| [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) |
|
|
50
50
|
| [SECURITY.md](../SECURITY.md) · [threat-model.md](threat-model.md) | Security |
|
|
51
51
|
|
|
52
52
|
---
|
|
@@ -58,13 +58,14 @@ These are **not** the day-to-day product path. They stay in the repo for evidenc
|
|
|
58
58
|
| Area | Path |
|
|
59
59
|
|------|------|
|
|
60
60
|
| Release notes (by version) | [releases/](releases/) · npm [CHANGELOG.md](../CHANGELOG.md) (Unreleased + 4.6.x) · [pre-4.6 archive](archive/CHANGELOG-pre-4.6.md) |
|
|
61
|
-
| Epic plans | [plans/](plans/) — maintainer seeds, not required to use the package. Live: [alive-in-six-months](plans/alive-in-six-months/README.md) (`AL01`–`AL04` done; `AL05` parked). [arkrun](plans/arkrun/README.md) (Phase RN; `RN01`–`RN17` done; shipped **4.7.0** + companion **4.7.4**; ADRs [0020](adr/0020-arkrun-gated-extra-plane.md)–[0024](adr/0024-arkrun-transport-ports.md) accepted). [one-catalog-one-root](plans/one-catalog-one-root/README.md) (Phase HS; `HS01`–`HS05` done; shipped **4.7.1**). [arkorder](plans/arkorder/README.md) (Phase OR; `OR01`–`OR07` done; shipped **4.8.0**; extra **inside** package `arkgate` as `arkgate/order`; ADRs [0027](adr/0027-arkorder-gated-extra-plane.md)–[0031](adr/0031-one-package-extras-deprecate-companion.md)). [arkorder-arkrun](plans/arkorder-arkrun/README.md) (Phase XP; `XP01`–`XP08` done
|
|
61
|
+
| Epic plans | [plans/](plans/) — maintainer seeds, not required to use the package. Live: [alive-in-six-months](plans/alive-in-six-months/README.md) (`AL01`–`AL04` done; `AL05` parked). [arkrun](plans/arkrun/README.md) (Phase RN; `RN01`–`RN17` done; shipped **4.7.0** + companion **4.7.4**; ADRs [0020](adr/0020-arkrun-gated-extra-plane.md)–[0024](adr/0024-arkrun-transport-ports.md) accepted). [one-catalog-one-root](plans/one-catalog-one-root/README.md) (Phase HS; `HS01`–`HS05` done; shipped **4.7.1**). [arkorder](plans/arkorder/README.md) (Phase OR; `OR01`–`OR07` done; shipped **4.8.0**; extra **inside** package `arkgate` as `arkgate/order`; ADRs [0027](adr/0027-arkorder-gated-extra-plane.md)–[0031](adr/0031-one-package-extras-deprecate-companion.md)). [arkorder-arkrun](plans/arkorder-arkrun/README.md) (Phase XP; `XP01`–`XP08` done; shipped **4.8.5**; ADR [0033](adr/0033-arkorder-runtime-half-is-arkrun.md)). [arkorder-valve-loop](plans/arkorder-valve-loop/README.md) (Phase LV; `LV01`–`LV09` done on tree; **4.8.6** prepared; [ADR 0034](adr/0034-arkorder-valved-loop.md); does not close K01). |
|
|
62
62
|
| Claims audit | [audit/claims-matrix.md](audit/claims-matrix.md) |
|
|
63
63
|
| Field adoption kit (scaffolding, not closed) | [field/](field/) |
|
|
64
64
|
| Runtime hardening (experimental) | [production-hardening.md](production-hardening.md) |
|
|
65
65
|
|
|
66
|
-
Current
|
|
67
|
-
|
|
66
|
+
Current published: [releases/4.8.5.md](releases/4.8.5.md) (`arkgate@4.8.5` on npm `latest`; does not close `K01`).
|
|
67
|
+
Tree: [releases/4.8.6.md](releases/4.8.6.md) (`arkgate@4.8.6` prepared).
|
|
68
|
+
Prior: [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).
|
|
68
69
|
Older notes: [releases/](releases/). Config: [configuration.md](configuration.md).
|
|
69
70
|
|
|
70
71
|
---
|
package/docs/agent-guide.md
CHANGED
|
@@ -507,6 +507,8 @@ npx ark-check --promote <ruleId> --apply # write mode "enforced" into that
|
|
|
507
507
|
**`--sensors`** lists every sensor ArkGate ships — ArkRules, ArkRun and
|
|
508
508
|
ArkOrder — with its plane, its tier and whether it can *ever* be enforced, so
|
|
509
509
|
Tier-2 shows up before you write the rule rather than after you wait for a run.
|
|
510
|
+
ArkOrder: `proposeRelease` then `apply`; `refreshSigma`; ingest residual;
|
|
511
|
+
capacity pack; `ReleaseStore`; ArkRun `decisionTape`. No `/ark-order` skill.
|
|
510
512
|
It also says *how*: only the ArkRules plane is promoted per rule; ArkRun and
|
|
511
513
|
ArkOrder are switched by the plane-level `arkRun.mode` / `arkOrder.mode`, and
|
|
512
514
|
`--promote --apply` writes ArkRules documents only.
|
package/docs/ai-gates.md
CHANGED
|
@@ -33,8 +33,11 @@ Prefer fail-closed honesty over fake hard guarantees on advisory hosts.
|
|
|
33
33
|
Everything below uses the same `ark.config.json` as `arkgate-check` / `ark-check` (CI) — one
|
|
34
34
|
rules file shared by every surface. From **4.0**, optional **ArkRules** (`arkRules` map +
|
|
35
35
|
`arkrules/*.json`) ride the **same** write path, doctor, and CI adapter; absence of ArkRules
|
|
36
|
-
does not change inter-layer verdicts.
|
|
37
|
-
|
|
36
|
+
does not change inter-layer verdicts. Optional ArkRun / ArkOrder extras ride that envelope
|
|
37
|
+
when on (`proposeRelease` then `apply`). Absence is silent. Label residual **`[Layer]`** vs
|
|
38
|
+
**`[ArkRules]`** vs **`[ArkRun]`** vs **`[ArkOrder]`**. See
|
|
39
|
+
[configuration — ArkRules](configuration.md#arkrules-intra-layer-opt-in) ·
|
|
40
|
+
[ArkOrder](arkorder.md).
|
|
38
41
|
|
|
39
42
|
Generate the layer contract once:
|
|
40
43
|
|
package/docs/arkorder.md
CHANGED
|
@@ -8,12 +8,13 @@ Import: `arkgate/order` (same npm package `arkgate`). Off until you add
|
|
|
8
8
|
`arkOrder` on schema `1.3`. Absence is silent. In-memory. Not durable. It is
|
|
9
9
|
a library plus sensors, not a service. Does **not** replace ArkRun.
|
|
10
10
|
|
|
11
|
-
First-contact copy: freeze
|
|
12
|
-
below.
|
|
11
|
+
First-contact copy: freeze through a valve / no `update`. Haken (ξ vs s) lives
|
|
12
|
+
below. **ArkOrder freezes the pattern through a valve. ArkRun is how the residual travels.**
|
|
13
13
|
|
|
14
14
|
Canonical plan seed: [plans/arkorder/README.md](plans/arkorder/README.md).
|
|
15
15
|
ADRs: [0027](adr/0027-arkorder-gated-extra-plane.md)–[0030](adr/0030-opt-in-extras-same-npm-package.md),
|
|
16
|
-
[0033](adr/0033-arkorder-runtime-half-is-arkrun.md) (runtime half is ArkRun)
|
|
16
|
+
[0033](adr/0033-arkorder-runtime-half-is-arkrun.md) (runtime half is ArkRun),
|
|
17
|
+
[0034](adr/0034-arkorder-valved-loop.md) (valved loop; public verbs in 4.8.6).
|
|
17
18
|
Config: [configuration.md](configuration.md). Surface:
|
|
18
19
|
[package-surface.md](package-surface.md#experimental-opt-in-surfaces).
|
|
19
20
|
|
|
@@ -24,7 +25,7 @@ Config: [configuration.md](configuration.md). Surface:
|
|
|
24
25
|
| Is | Is not |
|
|
25
26
|
|----|--------|
|
|
26
27
|
| A **library** (`createOrderPlane`) plus **static sensors** | A running service, daemon, or hosted plane |
|
|
27
|
-
|
|
|
28
|
+
| Valved verbs: `release` / `project` / `ingest` / `proposeRelease` / `apply` / `refreshSigma` | A generic `update` / `patch` / `set` |
|
|
28
29
|
| Opt-in extra on `ark.config.json` | Always-on; compact starters leave it off |
|
|
29
30
|
| Consumer-named slow keys (`xiKeys`) | A construction OS, BIM, or FirmPack |
|
|
30
31
|
| Same npm tarball | not `@arkgate/order` |
|
|
@@ -49,10 +50,10 @@ They already exist:
|
|
|
49
50
|
|
|
50
51
|
| Ask | API | Since |
|
|
51
52
|
|-----|-----|-------|
|
|
52
|
-
| Escalation as a first-class concept | `IngestResult
|
|
53
|
+
| Escalation as a first-class concept | `IngestResult` residual `absorb \| escalate_up \| hold` (`reasonCode`, `IngestEscalate.target`) | 4.8.0 / 4.8.6 |
|
|
53
54
|
| Projection at the boundary | `Projector = (release, sigma) => Projection` | 4.8.0 |
|
|
54
55
|
| Cap on badly designed slow parameters | `DEFAULT_MAX_XI_KEYS = 7`, `maxXiKeys`, `ARKORDER_TOO_MANY_PARAMS`, `ARKORDER_EMPTY_XI`, `ARKORDER_NESTED_XI` | 4.8.0 |
|
|
55
|
-
| Valved proposals, never direct mutation | `ProposeResult
|
|
56
|
+
| Valved proposals, never direct mutation | `ProposeResult` then `apply` (`ARKORDER_UNVALVED_RELEASE`) | 4.8.0 / 4.8.6 |
|
|
56
57
|
| Typed cell schema | `XiSchema` / `XiPropertySchema` | 4.8.0 |
|
|
57
58
|
| Named slow keys on the write path | `arkOrder.xiKeys`; `ARKORDER_XI_FIELD_WRITE` | 4.8.3 |
|
|
58
59
|
| Factory isolation | `createOrderPlane` from `arkgate/order` only | 4.8.0 |
|
|
@@ -60,13 +61,20 @@ They already exist:
|
|
|
60
61
|
| σ freshness, never ξ | `sigmaMaxAgeMs` / `σ.freshUntil`; `ARKORDER_XI_TTL`, `ARKORDER_STALE_SIGMA` | 4.8.5 |
|
|
61
62
|
| Escalate to a person | `IngestEscalate.target` including `human` | 4.8.5 |
|
|
62
63
|
| Shadow / replay / compare | ArkRun `shadowInformationPackage` / `compareInformationPackages` / `replayInformationPackages` | 4.8.5 |
|
|
64
|
+
| Decision tape | ArkRun information package `decisionTape` `{ xiHash, event, residual }` | 4.8.6 |
|
|
65
|
+
| σ vs ξ identity | `xiHash` / `sigmaHash` / `refreshSigma` | 4.8.6 |
|
|
66
|
+
| Capacity as data | `ConstraintPack.capacity` (`kind` / `sigmaKey` / `payloadKey` / `op`) | 4.8.6 |
|
|
67
|
+
| Store port | `ReleaseStore` / `createMemoryReleaseStore` in-memory default — not durable, not K01 | 4.8.6 |
|
|
68
|
+
| Thin travel helper | `ingestTravelAction` absorb→`send` / escalate_up human→`raises` | 4.8.6 |
|
|
63
69
|
|
|
64
70
|
Nothing here is a hosted runtime. Nothing here can be “down”. A degraded-mode
|
|
65
71
|
contract would defend against an outage that cannot happen.
|
|
66
72
|
|
|
67
73
|
---
|
|
68
74
|
|
|
69
|
-
##
|
|
75
|
+
## Valved loop
|
|
76
|
+
|
|
77
|
+
**ArkOrder freezes the pattern through a valve. ArkRun is how the residual travels.**
|
|
70
78
|
|
|
71
79
|
```ts
|
|
72
80
|
import { createOrderPlane } from 'arkgate/order';
|
|
@@ -76,26 +84,32 @@ const plane = createOrderPlane({
|
|
|
76
84
|
xiSchema, // JSON Schema object; additionalProperties false
|
|
77
85
|
maxXiKeys, // default 7
|
|
78
86
|
clocks, // injected; Domain must not call Date.now
|
|
79
|
-
packs, // data, not user predicates
|
|
87
|
+
packs, // data, not user predicates (capacity is kind/sigmaKey/payloadKey/op)
|
|
80
88
|
informationBudget, // optional { cannotObserve: ['ledger'] } — not a config key
|
|
81
89
|
sigmaMaxAgeMs, // optional σ freshness; never on ξ — not a config key
|
|
90
|
+
store, // optional ReleaseStore; default in-memory is not durable
|
|
91
|
+
catalogDigest, // optional; keyed by ξ.catalogReleaseId — SKU set does not enter the hash
|
|
82
92
|
});
|
|
83
93
|
|
|
84
|
-
plane.release(xi, sigma); // freeze
|
|
94
|
+
plane.release(xi, sigma); // first freeze only
|
|
85
95
|
plane.project(); // derive allowed s + invalidations
|
|
86
|
-
plane.ingest(event); // absorb
|
|
96
|
+
plane.ingest(event); // residual absorb | escalate_up | hold. Never a Release
|
|
87
97
|
plane.proposeRelease(delta); // blast radius. Empty blast = domain error
|
|
98
|
+
plane.apply(proposal); // valve: later ξ change
|
|
99
|
+
plane.refreshSigma(sigma); // saldo / clocks; xiHash unchanged
|
|
88
100
|
```
|
|
89
101
|
|
|
90
102
|
There is no `update()`. Calling `update` / `patch` / `set` on the plane throws
|
|
91
103
|
`ARKORDER_FORBIDDEN_METHOD` and, on the write path, emits
|
|
92
|
-
`ARKORDER_GENERIC_UPDATE`.
|
|
104
|
+
`ARKORDER_GENERIC_UPDATE`. A second `release()` whose ξ differs fails
|
|
105
|
+
`ARKORDER_UNVALVED_RELEASE`.
|
|
93
106
|
|
|
94
107
|
| Field write | Verb |
|
|
95
108
|
|-------------|------|
|
|
96
|
-
| Invoice, seat within cap, timesheet, daily log | `ingest` → absorb |
|
|
97
|
-
| Over cap /
|
|
98
|
-
|
|
|
109
|
+
| Invoice, seat within cap, timesheet, daily log | `ingest` → absorb (`ingestTravelAction` may `send`) |
|
|
110
|
+
| Over cap (capacity pack) / stale σ | `ingest` → hold |
|
|
111
|
+
| Kind not in h(ξ) | `ingest` → escalate_up (`target: human`; `ingestTravelAction` may `raises`) |
|
|
112
|
+
| Change plan / protocol / cost-code bound | `proposeRelease` then `apply` |
|
|
99
113
|
| PATCH the slow key through Prisma/Drizzle | `ARKORDER_XI_FIELD_WRITE` |
|
|
100
114
|
|
|
101
115
|
Copy [examples/arkorder-billing/](../examples/arkorder-billing/) and rename the
|
|
@@ -199,6 +213,10 @@ Durability (`K01`) stays parked. In-memory is the honesty line.
|
|
|
199
213
|
|
|
200
214
|
If a “slow parameter” changes with every click, it is not an order parameter.
|
|
201
215
|
|
|
216
|
+
The valved loop ships in **4.8.6** ([ADR 0034](adr/0034-arkorder-valved-loop.md)).
|
|
217
|
+
In-memory `ReleaseStore` is **not** durable. Doctor / status `arkOrder` stays
|
|
218
|
+
`notAScore`. This does **not** close `K01` / `Z09`. No `/ark-order` skill.
|
|
219
|
+
|
|
202
220
|
---
|
|
203
221
|
|
|
204
222
|
## Next step
|
package/docs/configuration.md
CHANGED
|
@@ -131,8 +131,10 @@ Top-level fields:
|
|
|
131
131
|
`enforced` mode fails closed (`ARKORDER_MISSING_PLANE`). `xiKeys` are the 3–5 slow
|
|
132
132
|
names the product already knows (plan, protocol, cost-code bound). Empty `xiKeys`
|
|
133
133
|
leaves `ARKORDER_XI_FIELD_WRITE` silent. Membership ids are not keys. Factory options
|
|
134
|
-
`informationBudget
|
|
135
|
-
|
|
134
|
+
`informationBudget`, `sigmaMaxAgeMs`, `store` (`ReleaseStore`), and capacity packs
|
|
135
|
+
belong on `createOrderPlane`, not this extra object. Later ξ is `proposeRelease`
|
|
136
|
+
then `apply`; `refreshSigma`; ingest residual `absorb | escalate_up | hold`.
|
|
137
|
+
Demotion or deletion is a policy-delta **weakening**. Field ingest never mints
|
|
136
138
|
a pattern.
|
|
137
139
|
|
|
138
140
|
**Activation is one shape.** ArkRun and ArkOrder both use `mode` + `managedLayers`.
|
|
@@ -246,7 +248,7 @@ See [brownfield adoption](brownfield-adoption.md#nextjs-honesty-default-overlays
|
|
|
246
248
|
| **Structure sensors** | Intra-layer heuristics | Only `mode: "enforced"` |
|
|
247
249
|
| **Invariants** | Catalog + coverage evidence (not a business runtime) | Only enforced + proven-uncovered |
|
|
248
250
|
| **ArkRun** (opt-in extra) | Kernel usage + complete declarations | Only `arkRun.mode: "enforced"` when classified |
|
|
249
|
-
| **ArkOrder** (opt-in extra) | Frozen pattern
|
|
251
|
+
| **ArkOrder** (opt-in extra) | Frozen pattern; first freeze `release()`, later ξ is `proposeRelease` then `apply` (no `update`) | Only `arkOrder.mode: "enforced"` when classified |
|
|
250
252
|
|
|
251
253
|
Absence of `arkRules`, `arkRun`, or `arkOrder` adds **no** extra merge teeth. **Advisory** structure sensors, advisory
|
|
252
254
|
invariants, advisory ArkRun, and advisory ArkOrder also add **no** merge teeth (FG-ARKRULES-ADVISORY-ONLY / ADR 0020 / ADR 0027) — packing every starter
|
package/docs/develop.md
CHANGED
|
@@ -202,9 +202,14 @@ The plane is `arkgate/order` in package `arkgate`, not a second install.
|
|
|
202
202
|
stays plane-free. Empty `planeRoots` in `enforced` mode fails closed
|
|
203
203
|
(`ARKORDER_MISSING_PLANE`). In-memory. Not durable. Does not replace ArkRun.
|
|
204
204
|
|
|
205
|
+
First freeze is `release()`. Later pattern change is `proposeRelease` then
|
|
206
|
+
`apply` (`ARKORDER_UNVALVED_RELEASE`). `refreshSigma`; ingest residual
|
|
207
|
+
`absorb | escalate_up | hold` + `reasonCode`; capacity pack as data;
|
|
208
|
+
`createMemoryReleaseStore`; `ingestTravelAction`; ArkRun `decisionTape`.
|
|
209
|
+
|
|
205
210
|
Copy [examples/arkorder-billing/](../examples/arkorder-billing/) (`plan` / `cycle` /
|
|
206
|
-
`tenancy`) and rename the keys. Posting an invoice is absorbed; changing plan is
|
|
207
|
-
|
|
211
|
+
`tenancy`) and rename the keys. Posting an invoice is absorbed; changing plan is
|
|
212
|
+
`proposeRelease` then `apply`. See [configuration.md](configuration.md) and
|
|
208
213
|
[package-surface.md](package-surface.md).
|
|
209
214
|
|
|
210
215
|
---
|
package/docs/diagnostics.md
CHANGED
|
@@ -57,6 +57,7 @@ Link form for agents: `docs/diagnostics.md#RULE_ID` (exact-case HTML anchors bel
|
|
|
57
57
|
| [`ARKORDER_GENERIC_UPDATE`](#ARKORDER_GENERIC_UPDATE) | arkorder | Generic update of ξ |
|
|
58
58
|
| [`ARKORDER_TOO_MANY_PARAMS`](#ARKORDER_TOO_MANY_PARAMS) | arkorder | Too many slow keys |
|
|
59
59
|
| [`ARKORDER_INGEST_WRITES_XI`](#ARKORDER_INGEST_WRITES_XI) | arkorder | ingest assigned into ξ |
|
|
60
|
+
| [`ARKORDER_UNVALVED_RELEASE`](#ARKORDER_UNVALVED_RELEASE) | arkorder | Unvalved second freeze of ξ |
|
|
60
61
|
| [`INVALID_CHANGE_PATH`](#INVALID_CHANGE_PATH) | preflight | Unsafe change path |
|
|
61
62
|
| [`DUPLICATE_CHANGE_PATH`](#DUPLICATE_CHANGE_PATH) | preflight | Duplicate path in change set |
|
|
62
63
|
| [`DELETE_TARGET_MISSING`](#DELETE_TARGET_MISSING) | preflight | Delete target missing |
|
|
@@ -395,7 +396,7 @@ Haken slaving: few slow keys (ξ) determine derived fast state. Field ingest nev
|
|
|
395
396
|
**Generic update of ξ**
|
|
396
397
|
|
|
397
398
|
- **Why:** A call to update/patch/set on the order plane rewrites the slow pattern. Haken slaving forbids generic ξ mutation.
|
|
398
|
-
- **Fix:** Use release()
|
|
399
|
+
- **Fix:** Use release() for the first freeze of ξ. Later pattern change is proposeRelease then apply(ProposeResult). Never update/patch/set. Never mechanical-safe.
|
|
399
400
|
|
|
400
401
|
<a id="ARKORDER_TOO_MANY_PARAMS"></a>
|
|
401
402
|
|
|
@@ -412,8 +413,8 @@ Haken slaving: few slow keys (ξ) determine derived fast state. Field ingest nev
|
|
|
412
413
|
|
|
413
414
|
**ingest assigned into ξ**
|
|
414
415
|
|
|
415
|
-
- **Why:** An ingest() result is written into a Release or ξ store. ingest may absorb or
|
|
416
|
-
- **Fix:** Keep ingest results as absorb/
|
|
416
|
+
- **Why:** An ingest() result is written into a Release or ξ store. ingest may absorb, escalate_up, or hold; it never mints a pattern.
|
|
417
|
+
- **Fix:** Keep ingest results as absorb/escalate_up/hold only. Change ξ with proposeRelease then apply(ProposeResult). Never mechanical-safe.
|
|
417
418
|
|
|
418
419
|
<a id="ARKORDER_XI_FIELD_WRITE"></a>
|
|
419
420
|
|
|
@@ -422,7 +423,7 @@ Haken slaving: few slow keys (ξ) determine derived fast state. Field ingest nev
|
|
|
422
423
|
**Slow key written around the order plane**
|
|
423
424
|
|
|
424
425
|
- **Why:** A managed-layer file imports a persistence driver and writes a declared arkOrder.xiKeys name. Field events absorb or escalate; they do not PATCH the slow pattern.
|
|
425
|
-
- **Fix:** Keep invoices, seats, hours, and logs on ingest. Change the slow key with proposeRelease
|
|
426
|
+
- **Fix:** Keep invoices, seats, hours, and logs on ingest. Change the slow key with proposeRelease then apply(ProposeResult), then preflight again. Never mechanical-safe.
|
|
426
427
|
|
|
427
428
|
<a id="ARKORDER_INFORMATION_BUDGET"></a>
|
|
428
429
|
|
|
@@ -449,7 +450,16 @@ Haken slaving: few slow keys (ξ) determine derived fast state. Field ingest nev
|
|
|
449
450
|
**σ is stale**
|
|
450
451
|
|
|
451
452
|
- **Why:** ingest ran after σ.freshUntil (or sigmaMaxAgeMs). ξ does not TTL.
|
|
452
|
-
- **Fix:**
|
|
453
|
+
- **Fix:** Call refreshSigma and ingest again, or proposeRelease then apply(ProposeResult) if the pattern changed. Never mechanical-safe.
|
|
454
|
+
|
|
455
|
+
<a id="ARKORDER_UNVALVED_RELEASE"></a>
|
|
456
|
+
|
|
457
|
+
### `ARKORDER_UNVALVED_RELEASE`
|
|
458
|
+
|
|
459
|
+
**Unvalved second freeze of ξ**
|
|
460
|
+
|
|
461
|
+
- **Why:** release() ran after a pattern was already frozen and the new ξ differs. First freeze is release(); later pattern change is proposeRelease then apply.
|
|
462
|
+
- **Fix:** Change ξ with proposeRelease then apply(ProposeResult). release() is only the first freeze. Never mechanical-safe.
|
|
453
463
|
|
|
454
464
|
## Atomic preflight and change sets
|
|
455
465
|
|
package/docs/package-surface.md
CHANGED
|
@@ -161,21 +161,24 @@ The type-only root exports are also semver-supported:
|
|
|
161
161
|
- Config contract: `ArkConfig`, `ArkConfigLoadResult`.
|
|
162
162
|
|
|
163
163
|
Runtime-kernel factories, `CAPABILITY_IDS`, `collectCapabilityUses`, and Domain capability mapping
|
|
164
|
-
helpers are deliberately absent from this root. Use
|
|
165
|
-
**ArkRun** kernel
|
|
164
|
+
helpers are deliberately absent from this root. Use `arkgate/runtime` for the
|
|
165
|
+
**ArkRun** kernel (experimental here means **durability**: in-memory stores, not
|
|
166
|
+
Postgres), and `analyzeProject(...).ir.capabilityUses` for public capability evidence.
|
|
166
167
|
|
|
167
168
|
---
|
|
168
169
|
|
|
169
170
|
## Experimental opt-in surfaces
|
|
170
171
|
|
|
171
|
-
|
|
172
|
-
|
|
172
|
+
**Experimental** names **durability** (in-memory stores, not Postgres) — not the extras
|
|
173
|
+
themselves. ArkRun and ArkOrder are opt-in extras of package `arkgate`. These APIs are
|
|
174
|
+
implemented for evaluation and compatibility; they are **not** production durability
|
|
175
|
+
claims. Static architecture enforcement does not depend on them.
|
|
173
176
|
|
|
174
177
|
| Surface | Import path | Notes |
|
|
175
178
|
|---------|-------------|--------|
|
|
176
|
-
| **ArkRun kernel** | **`arkgate/runtime`** | Public brand **ArkRun**. Same npm package `arkgate` (ADR 0031). Factory `createStrictArkKernel` (each call is an isolated instance; no process-wide `getKernel()` singleton). Root export does **not** include the factory. Optional extra `arkRun` on schema `1.2+`. Event bus, intents, policies, sagas, event buffer, projections, and strict helpers. Managed components declare `uses` / `reactsTo` / `raises` / `sends` on `register()`; `getDependencyInformationPackage()` is a JSON snapshot of ids, lifetime, and declarations and never includes factories, live instances, or input DTOs (ADR 0023). `requestGraph()` slices that snapshot into **process** or **technical** graphs with optional `nodeIds`, `degreesOfSeparation`, and include/exclude query; `formatArkRunGraphMermaid()` (also `graph.mermaid`) is a helper string, never a score. `send()` is the transport port (local / localBlocking / broker); missing broker falls back to in-process local delivery, `ephemeral` defaults true, and **no cloud SDKs ship** in the package (ADR 0024). Opt-in `startInspector()` / `startArkRunInspector()` binds **`127.0.0.1` only**, refuses `NODE_ENV=production`, lazy-loads HTTP, and serves JSON snapshots, SSE, and `/graph` slices of the information package (no public / authless bind). **Shadow / replay / compare** (`shadowInformationPackage`, `compareInformationPackages`, `replayInformationPackages`) are in-memory helpers on that snapshot — not durable, not a second bus (ADR 0033). Built-in stores are **InMemory reference only**. Branding ArkRun is not a production-durability claim. **`@arkgate/runtime` is deprecated** leftover 0.x (`experimental` dist-tag). |
|
|
179
|
+
| **ArkRun kernel** | **`arkgate/runtime`** | Public brand **ArkRun**. Same npm package `arkgate` (ADR 0031). Factory `createStrictArkKernel` (each call is an isolated instance; no process-wide `getKernel()` singleton). Root export does **not** include the factory. Optional extra `arkRun` on schema `1.2+`. Event bus, intents, policies, sagas, event buffer, projections, and strict helpers. Managed components declare `uses` / `reactsTo` / `raises` / `sends` on `register()`; `getDependencyInformationPackage()` is a JSON snapshot of ids, lifetime, and declarations and never includes factories, live instances, or input DTOs (ADR 0023). `requestGraph()` slices that snapshot into **process** or **technical** graphs with optional `nodeIds`, `degreesOfSeparation`, and include/exclude query; `formatArkRunGraphMermaid()` (also `graph.mermaid`) is a helper string, never a score. `send()` is the transport port (local / localBlocking / broker); missing broker falls back to in-process local delivery, `ephemeral` defaults true, and **no cloud SDKs ship** in the package (ADR 0024). Opt-in `startInspector()` / `startArkRunInspector()` binds **`127.0.0.1` only**, refuses `NODE_ENV=production`, lazy-loads HTTP, and serves JSON snapshots, SSE, and `/graph` slices of the information package (no public / authless bind). **Shadow / replay / compare** (`shadowInformationPackage`, `compareInformationPackages`, `replayInformationPackages`) are in-memory helpers on that snapshot — not durable, not a second bus (ADR 0033). **Decision tape** `decisionTape` `{ xiHash, event, residual }` via `appendDecisionTape` (ADR 0034). Built-in stores are **InMemory reference only**. Branding ArkRun is not a production-durability claim. **`@arkgate/runtime` is deprecated** leftover 0.x (`experimental` dist-tag). |
|
|
177
180
|
| **NestJS adapter** | **`arkgate/nestjs`** | Experimental optional peer `@nestjs/common` for the ArkRun kernel. Same npm package. `@arkgate/runtime/nestjs` is deprecated. |
|
|
178
|
-
| **ArkOrder plane** | **`arkgate/order`** | Public brand **ArkOrder**. Same npm package `arkgate` (ADR 0030) — not `@arkgate/order`. Factory `createOrderPlane`.
|
|
181
|
+
| **ArkOrder plane** | **`arkgate/order`** | Public brand **ArkOrder**. Same npm package `arkgate` (ADR 0030) — not `@arkgate/order`. Factory `createOrderPlane`. Valved verbs: `release` / `project` / `ingest` / `proposeRelease` / `apply` / `refreshSigma`. No `update`. First freeze is `release()`; later ξ change is `apply` (`ARKORDER_UNVALVED_RELEASE`). Haken: few slow keys; ingest residual `absorb | escalate_up | hold` + closed `reasonCode`; empty blast fails closed. Capacity pack as data (`kind` / `sigmaKey` / `payloadKey` / `op`). Factory options (not config keys): `informationBudget.cannotObserve`, `sigmaMaxAgeMs`, `store` (`ReleaseStore` / `createMemoryReleaseStore`), `catalogDigest`. Thin travel: `ingestTravelAction` absorb→`send` / escalate_up human→`raises`. `IngestEscalate.target` includes `human`. Root `arkgate` export does **not** include the factory. Optional extra `arkOrder` on schema `1.3`. In-memory; not durable; does not close K01. Does not replace ArkRun. Runtime half (shadow/replay/compare + `decisionTape` / `appendDecisionTape`) is ArkRun (ADR 0033 / 0034). Canonical: [ArkOrder](arkorder.md). |
|
|
179
182
|
|
|
180
183
|
---
|
|
181
184
|
|
|
@@ -241,16 +244,16 @@ production deployment would need to satisfy; it is not a readiness certification
|
|
|
241
244
|
| Break CLI JSON field, MCP tool rename, or required `ark.config` field | **major** |
|
|
242
245
|
| New optional config field, new CLI flag, additive JSON | **minor** |
|
|
243
246
|
| Bugfix with no contract change | **patch** |
|
|
244
|
-
| Additive experimental ArkRun kernel API |
|
|
245
|
-
| Remove deprecated `arkgate/runtime` / `arkgate/nestjs` forwarding shims | **Done (AR04)** — use
|
|
247
|
+
| Additive experimental ArkRun kernel API | `arkgate/runtime` patch/minor (`@arkgate/runtime` is deprecated) |
|
|
248
|
+
| Remove deprecated `arkgate/runtime` / `arkgate/nestjs` forwarding shims | **Done (AR04)** — use `arkgate/runtime` / `arkgate/nestjs` |
|
|
246
249
|
|
|
247
250
|
---
|
|
248
251
|
|
|
249
252
|
## Release notes (maintainers)
|
|
250
253
|
|
|
251
254
|
Ship notes for a version live under [releases/](https://github.com/pedroknigge/arkgate/tree/main/docs/releases)
|
|
252
|
-
(current
|
|
253
|
-
|
|
255
|
+
(current published: [4.8.5.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.5.md);
|
|
256
|
+
prior published: [4.8.4.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.4.md);
|
|
254
257
|
prior published: [4.8.3.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.3.md);
|
|
255
258
|
prior published: [4.8.2.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.2.md);
|
|
256
259
|
prior published: [4.8.1.md](https://github.com/pedroknigge/arkgate/blob/main/docs/releases/4.8.1.md);
|
package/docs/product-voice.md
CHANGED
|
@@ -77,7 +77,7 @@ Three beats when a line teaches:
|
|
|
77
77
|
| The agent imported Infrastructure from Domain. The write didn’t land. Next: `/ark-place`. | Ship it 🚀 crush the spaghetti |
|
|
78
78
|
| Import rules pass. The tree still needs a refactor. Next: one small change. | You don’t need to understand anything |
|
|
79
79
|
| ArkRun is experimental. In-memory. Data is gone on restart. | The kernel is production-ready |
|
|
80
|
-
| The agent PATCHed the billing plan as if it were a seat count. The write didn’t land. Next:
|
|
80
|
+
| The agent PATCHed the billing plan as if it were a seat count. The write didn’t land. Next: `proposeRelease` then `apply`, not `update`. | Freeze ξ. Four verbs. Haken slaving. |
|
|
81
81
|
| Status: one light, one next step. | Become an architect in 60 seconds |
|
|
82
82
|
|
|
83
83
|
**Brands, then the common word:** ArkGate, ArkRules, ArkRun, ArkOrder. Gloss once.
|
|
@@ -90,7 +90,7 @@ Three beats when a line teaches:
|
|
|
90
90
|
| `arkgate-check --doctor` — **status**, one next step | control plane, coach, doctor as the product name |
|
|
91
91
|
| optional policies inside a layer | dual plane, intra-layer sensors, Saturday tidy |
|
|
92
92
|
| experimental runtime / in-memory / not Postgres | production kernel, durable runtime, training wheels |
|
|
93
|
-
| the few slow product decisions / billing plan vs seats / that PUT doesn’t land | four verbs, freeze a pattern, Haken, slaving, ξ vs s, extra plane, construction OS |
|
|
93
|
+
| the few slow product decisions / billing plan vs seats / that PUT doesn’t land / `proposeRelease` then `apply` | four verbs, freeze a pattern, Haken, slaving, ξ vs s, extra plane, construction OS |
|
|
94
94
|
|
|
95
95
|
Command names stay command names (`--doctor` is a flag). If a word is not here,
|
|
96
96
|
cut it or put it below the fold (develop, JSON, ADRs).
|
|
@@ -111,7 +111,7 @@ These are product law, not vibe:
|
|
|
111
111
|
- Host write hardness differs. Required CI is the shared hard line.
|
|
112
112
|
- ArkRun stores are **in-memory**. Not production durability. Do not imply otherwise.
|
|
113
113
|
- Absence of ArkRules, ArkRun, or ArkOrder is silent. Label leftovers **`[Layer]`** vs **`[ArkRules]`** vs **`[ArkRun]`** vs **`[ArkOrder]`**.
|
|
114
|
-
- ArkOrder is in-memory and not durable. It does not replace ArkRun. Do not imply a second npm package.
|
|
114
|
+
- ArkOrder is in-memory and not durable. It does not replace ArkRun. Do not imply a second npm package. Later pattern change is `proposeRelease` then `apply`.
|
|
115
115
|
|
|
116
116
|
Full engineering queue: [ROADMAP.md](../ROADMAP.md). Do not narrate phase ids in consumer copy.
|
|
117
117
|
|
package/docs/use.md
CHANGED
|
@@ -81,7 +81,7 @@ The config only binds when the write doesn’t land and CI is required.
|
|
|
81
81
|
| **ArkGate** (layers) | Import rules. The write doesn’t land. The PR fails. | Always — this is the product |
|
|
82
82
|
| **ArkRules** | Optional policies *inside* a layer. | Off until you turn it on (start may ship advisory templates) |
|
|
83
83
|
| **ArkRun** | Optional experimental runtime (`arkgate/runtime`) | Off. In-memory. Not Postgres. |
|
|
84
|
-
| **ArkOrder** | Stops the agent rewriting the few slow product decisions as CRUD (`arkgate/order`). Library + sensors, [not a service](arkorder.md). | Off. Name `xiKeys` (plan / protocol, not `projectId`). Invoices and seats still flow. In-memory. Not durable. |
|
|
84
|
+
| **ArkOrder** | Stops the agent rewriting the few slow product decisions as CRUD (`arkgate/order`). Library + sensors, [not a service](arkorder.md). Valve: `proposeRelease` then `apply`; `refreshSigma`; ingest residual; capacity pack; `ReleaseStore`; ArkRun `decisionTape`. ArkOrder freezes the pattern through a valve. ArkRun is how the residual travels. | Off. Name `xiKeys` (plan / protocol, not `projectId`). Invoices and seats still flow. In-memory. Not durable. |
|
|
85
85
|
|
|
86
86
|
Start always gives you **layers**. Compact starters do **not** turn on ArkRun or
|
|
87
87
|
ArkOrder. No extras is fine — only ArkGate runs. Leftovers are labeled
|
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.6",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "arkgate",
|
|
14
|
-
"version": "4.8.
|
|
14
|
+
"version": "4.8.6",
|
|
15
15
|
"runtimeHint": "npx",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
This directory is the **Agent Skills–compatible** packaging of the same **13**
|
|
8
8
|
`/ark-*` skills shipped as flat templates for Ark install. **No new skill names.**
|
|
9
9
|
|
|
10
|
-
Package version when last generated context: **arkgate@4.8.
|
|
10
|
+
Package version when last generated context: **arkgate@4.8.6**
|
|
11
11
|
Schema: agent-skills package contract `1.0`
|
|
12
12
|
|
|
13
13
|
## Skills (frozen catalog)
|
|
@@ -126,8 +126,8 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
126
126
|
|-------|------------------|----------------|-----------------|
|
|
127
127
|
| **Layers** (inter-layer) | Who may import whom, capabilities, pure/forbiddenGlobals, peerIsolation | `ark.config.json` → `layers[]`, `rules[]` | graph check, baseline edges, doctor coverage % |
|
|
128
128
|
| **ArkRules** (intra-layer) | Structure inside a layer + domain invariants as data | `arkRules` map + `arkrules/<ExactLayerName>.json` | structure sensors, invariant coverage, `--rules-inventory`, doctor `rulesUnderContract` |
|
|
129
|
-
| **ArkRun** (extra) | Kernel usage + complete declarations | `arkRun` on `ark.config.json` (schema `1.2+`); factory `arkgate/runtime`; **`kernelRoots` preferred**, `compositionRoots` alias | `ARKRUN_*`, doctor `arkRun` (`notAScore`) |
|
|
130
|
-
| **ArkOrder** (extra) | Operational pattern (ξ vs s) | `arkOrder` on `ark.config.json` (schema `1.3+`); factory `arkgate/order` | `ARKORDER_*` |
|
|
129
|
+
| **ArkRun** (extra) | Kernel usage + complete declarations; information package `decisionTape` `{ xiHash, event, residual }` | `arkRun` on `ark.config.json` (schema `1.2+`); factory `arkgate/runtime`; **`kernelRoots` preferred**, `compositionRoots` alias | `ARKRUN_*`, doctor `arkRun` (`notAScore`) |
|
|
130
|
+
| **ArkOrder** (extra) | Operational pattern (ξ vs s). Valve: first `release()`, later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb \| escalate_up \| hold` + `reasonCode`; capacity pack as data; in-memory `ReleaseStore` | `arkOrder` on `ark.config.json` (schema `1.3+`); factory `arkgate/order` | `ARKORDER_*` |
|
|
131
131
|
|
|
132
132
|
**Rules for every report / answer:**
|
|
133
133
|
1. Prefix each finding or next step with **`[Layer]`** or **`[ArkRules]`** or **`[ArkRun]`** or **`[ArkOrder]`** (or a table with those headers).
|
|
@@ -151,7 +151,7 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
151
151
|
- Do **not** put `arkRun` on the compact starter / `ark start` scaffold. Brownfield stays advisory until the team promotes.
|
|
152
152
|
- Absence is valid and **silent** — never force the extra. Never force the kernel over existing Nest/DI. Do not invent `/ark-run`.
|
|
153
153
|
- Import from `arkgate/runtime` (factory `createStrictArkKernel`, per instance, no process-wide singleton). `@arkgate/runtime` is deprecated. No shipped cloud broker SDKs.
|
|
154
|
-
- In-memory stores are **not** production durability. Branding ArkRun is not a durability claim. Doctor / status `arkRun` is `notAScore`.
|
|
154
|
+
- In-memory stores are **not** production durability. Branding ArkRun is not a durability claim. Doctor / status `arkRun` is `notAScore`. Information package `decisionTape` / `appendDecisionTape` is in-memory, not a bus.
|
|
155
155
|
- Demoting enforced → advisory or deleting the extra is policy-delta **weakening**.
|
|
156
156
|
- After the extra is honest: handoff `/ark-runtime` to wire one candidate, `/ark-place` for new kernel-managed files. Skills never enforce.
|
|
157
157
|
|
|
@@ -173,7 +173,7 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
173
173
|
}
|
|
174
174
|
```
|
|
175
175
|
|
|
176
|
-
- `xiKeys` are meaning, not membership. `projectId` / `orgId` do not belong. If `proposeRelease` throws empty blast, that key does not order anything.
|
|
176
|
+
- `xiKeys` are meaning, not membership. `projectId` / `orgId` do not belong. If `proposeRelease` throws empty blast, that key does not order anything. After the first `release()`, change ξ with `proposeRelease` then `apply` — not a second `release()` (`ARKORDER_UNVALVED_RELEASE`). `refreshSigma`; ingest residual `absorb | escalate_up | hold` + `reasonCode`; capacity pack as data; `createMemoryReleaseStore`; `ingestTravelAction`; ArkRun `decisionTape`.
|
|
177
177
|
- A use-case that `prisma.*.update({ plan })` while `plan` is in `xiKeys` is **[ArkOrder]** `ARKORDER_XI_FIELD_WRITE`. Invoices and seats still flow through `ingest`.
|
|
178
178
|
|
|
179
179
|
- Do **not** put `arkOrder` on the compact starter / `ark start` scaffold. Domain stays plane-free. Import `createOrderPlane` from `arkgate/order` (same npm package).
|
|
@@ -42,7 +42,7 @@ Then call **`ark_recommend`** with the same bound `project` envelope (or `ark-ch
|
|
|
42
42
|
|
|
43
43
|
## Dual plane — layers + extras (mandatory, except /ark-runtime)
|
|
44
44
|
|
|
45
|
-
Label findings **`[Layer]`** vs **`[ArkRules]`** vs **`[ArkRun]`** vs **`[ArkOrder]`**. Absence of extras is valid and silent. Session-0 extras (advisory `arkRun` / advisory `arkOrder`) live on **`/ark-adopt`**. Do not invent `/ark-run` or `/ark-order`. Skills never enforce.
|
|
45
|
+
Label findings **`[Layer]`** vs **`[ArkRules]`** vs **`[ArkRun]`** vs **`[ArkOrder]`**. Absence of extras is valid and silent. Session-0 extras (advisory `arkRun` / advisory `arkOrder`) live on **`/ark-adopt`**. When ArkOrder is on: first freeze `release()`, later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb | escalate_up | hold`; capacity pack as data; in-memory `ReleaseStore`; ArkRun `decisionTape`. Do not invent `/ark-run` or `/ark-order`. Skills never enforce.
|
|
46
46
|
|
|
47
47
|
## Subagent fan-out (optional, host-dependent)
|
|
48
48
|
|
|
@@ -119,8 +119,8 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
119
119
|
|-------|------------------|----------------|-----------------|
|
|
120
120
|
| **Layers** (inter-layer) | Who may import whom, capabilities, pure/forbiddenGlobals, peerIsolation | `ark.config.json` → `layers[]`, `rules[]` | graph check, baseline edges, doctor coverage % |
|
|
121
121
|
| **ArkRules** (intra-layer) | Structure inside a layer + domain invariants as data | `arkRules` map + `arkrules/<ExactLayerName>.json` | structure sensors, invariant coverage, `--rules-inventory`, doctor `rulesUnderContract` |
|
|
122
|
-
| **ArkRun** (extra) | Kernel usage + complete declarations | `arkRun` on `ark.config.json` (schema `1.2+`); factory `arkgate/runtime`; **`kernelRoots` preferred**, `compositionRoots` alias | `ARKRUN_*`, doctor `arkRun` (`notAScore`) |
|
|
123
|
-
| **ArkOrder** (extra) | Operational pattern (ξ vs s) | `arkOrder` on `ark.config.json` (schema `1.3+`); factory `arkgate/order` | `ARKORDER_*` |
|
|
122
|
+
| **ArkRun** (extra) | Kernel usage + complete declarations; information package `decisionTape` `{ xiHash, event, residual }` | `arkRun` on `ark.config.json` (schema `1.2+`); factory `arkgate/runtime`; **`kernelRoots` preferred**, `compositionRoots` alias | `ARKRUN_*`, doctor `arkRun` (`notAScore`) |
|
|
123
|
+
| **ArkOrder** (extra) | Operational pattern (ξ vs s). Valve: first `release()`, later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb \| escalate_up \| hold` + `reasonCode`; capacity pack as data; in-memory `ReleaseStore` | `arkOrder` on `ark.config.json` (schema `1.3+`); factory `arkgate/order` | `ARKORDER_*` |
|
|
124
124
|
|
|
125
125
|
**Rules for every report / answer:**
|
|
126
126
|
1. Prefix each finding or next step with **`[Layer]`** or **`[ArkRules]`** or **`[ArkRun]`** or **`[ArkOrder]`** (or a table with those headers).
|
|
@@ -141,13 +141,13 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
141
141
|
### Autopilot + ArkRun
|
|
142
142
|
When `arkRun` is present:
|
|
143
143
|
- Grind skip clusters with judgment: `ARKRUN_DIRECT_NEW` / `ARKRUN_TRANSPORT_BYPASS` / `ARKRUN_KERNEL_IN_DOMAIN` / `ARKRUN_MISSING_ROOT`. Never invent `mechanical-safe` for new emits / homemade buses.
|
|
144
|
-
- Factory only inside `arkRun.kernelRoots` (`compositionRoots` alias). Import `arkgate/runtime`. Doctor `arkRun` is `notAScore`.
|
|
144
|
+
- Factory only inside `arkRun.kernelRoots` (`compositionRoots` alias). Import `arkgate/runtime`. Doctor `arkRun` is `notAScore`. Information package may carry `decisionTape` `{ xiHash, event, residual }` (`appendDecisionTape`). Shadow / compare / replay stay in-memory.
|
|
145
145
|
- Extra off → `/ark-adopt` (advisory) or `/ark-runtime` (evaluate one candidate). Do not invent `/ark-run`.
|
|
146
146
|
- Skills never enforce.
|
|
147
147
|
|
|
148
148
|
### Autopilot + ArkOrder
|
|
149
149
|
When `arkOrder` is present:
|
|
150
|
-
- Grind skip clusters with judgment: `ARKORDER_MISSING_PLANE` / `ARKORDER_KERNEL_IN_DOMAIN` / `ARKORDER_GENERIC_UPDATE` / `ARKORDER_TOO_MANY_PARAMS` / `ARKORDER_INGEST_WRITES_XI` / `ARKORDER_XI_FIELD_WRITE`.
|
|
150
|
+
- Grind skip clusters with judgment: `ARKORDER_MISSING_PLANE` / `ARKORDER_KERNEL_IN_DOMAIN` / `ARKORDER_GENERIC_UPDATE` / `ARKORDER_TOO_MANY_PARAMS` / `ARKORDER_INGEST_WRITES_XI` / `ARKORDER_XI_FIELD_WRITE` / `ARKORDER_UNVALVED_RELEASE`. First freeze with `release()`; later ξ change is `proposeRelease` then `apply`. `refreshSigma`; ingest residual `absorb | escalate_up | hold` + `reasonCode`; capacity pack; `createMemoryReleaseStore`; `ingestTravelAction`; ArkRun `decisionTape`. Never `update`/`patch`/`set`. Name `xiKeys`; do not persist those keys from a use-case. Doctor / status `arkOrder` is `notAScore`.
|
|
151
151
|
- Extra off → `/ark-adopt` (advisory). Do not invent `/ark-order`.
|
|
152
152
|
- Skills never enforce.
|
|
153
153
|
|
|
@@ -45,7 +45,7 @@ Label findings **`[Layer]`** vs **`[ArkRules]`** vs **`[ArkRun]`** vs **`[ArkOrd
|
|
|
45
45
|
|
|
46
46
|
Application / Features may declare advisory **`writes-via-aggregate`**: a use-case that imports a persistence driver and calls `.insert` / `.create` / `INSERT INTO` is the skip. Persistence adapters stay the write edge. Do not add `Externals/` or `admission.ts` as contract law.
|
|
47
47
|
|
|
48
|
-
When `arkOrder` is on, name **`xiKeys`** (3–5 slow product decisions). Membership ids are not keys. A use-case that persists those keys is `ARKORDER_XI_FIELD_WRITE`. Copy [examples/arkorder-billing/](../../../examples/arkorder-billing/) and rename the three keys.
|
|
48
|
+
When `arkOrder` is on, name **`xiKeys`** (3–5 slow product decisions). Membership ids are not keys. A use-case that persists those keys is `ARKORDER_XI_FIELD_WRITE`. First freeze is `release()`; later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb | escalate_up | hold` + `reasonCode`; capacity pack as data; in-memory `ReleaseStore`; ArkRun `decisionTape`. Copy [examples/arkorder-billing/](../../../examples/arkorder-billing/) and rename the three keys.
|
|
49
49
|
|
|
50
50
|
## Subagent fan-out (optional, host-dependent)
|
|
51
51
|
|
|
@@ -83,8 +83,8 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
83
83
|
|-------|------------------|----------------|-----------------|
|
|
84
84
|
| **Layers** (inter-layer) | Who may import whom, capabilities, pure/forbiddenGlobals, peerIsolation | `ark.config.json` → `layers[]`, `rules[]` | graph check, baseline edges, doctor coverage % |
|
|
85
85
|
| **ArkRules** (intra-layer) | Structure inside a layer + domain invariants as data | `arkRules` map + `arkrules/<ExactLayerName>.json` | structure sensors, invariant coverage, `--rules-inventory`, doctor `rulesUnderContract` |
|
|
86
|
-
| **ArkRun** (extra) | Kernel usage + complete declarations | `arkRun` on `ark.config.json` (schema `1.2+`); factory `arkgate/runtime`; **`kernelRoots` preferred**, `compositionRoots` alias | `ARKRUN_*`, doctor `arkRun` (`notAScore`) |
|
|
87
|
-
| **ArkOrder** (extra) | Operational pattern (ξ vs s) | `arkOrder` on `ark.config.json` (schema `1.3+`); factory `arkgate/order` | `ARKORDER_*` |
|
|
86
|
+
| **ArkRun** (extra) | Kernel usage + complete declarations; information package `decisionTape` `{ xiHash, event, residual }` | `arkRun` on `ark.config.json` (schema `1.2+`); factory `arkgate/runtime`; **`kernelRoots` preferred**, `compositionRoots` alias | `ARKRUN_*`, doctor `arkRun` (`notAScore`) |
|
|
87
|
+
| **ArkOrder** (extra) | Operational pattern (ξ vs s). Valve: first `release()`, later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb \| escalate_up \| hold` + `reasonCode`; capacity pack as data; in-memory `ReleaseStore` | `arkOrder` on `ark.config.json` (schema `1.3+`); factory `arkgate/order` | `ARKORDER_*` |
|
|
88
88
|
|
|
89
89
|
**Rules for every report / answer:**
|
|
90
90
|
1. Prefix each finding or next step with **`[Layer]`** or **`[ArkRules]`** or **`[ArkRun]`** or **`[ArkOrder]`** (or a table with those headers).
|
|
@@ -102,6 +102,7 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
102
102
|
|
|
103
103
|
### Coverage + extras
|
|
104
104
|
- Extras silent when off. Doctor `arkRun` is `notAScore`. “No arkRun / arkOrder” is not a failed gate. Do not force extras.
|
|
105
|
+
- When ArkOrder is on, fitness still labels **[ArkOrder]**: valve is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb | escalate_up | hold` + `reasonCode`; capacity pack as data; in-memory `ReleaseStore`. ArkRun residual may include `decisionTape`.
|
|
105
106
|
|
|
106
107
|
## Subagent fan-out (optional, host-dependent)
|
|
107
108
|
|
|
@@ -67,8 +67,8 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
67
67
|
|-------|------------------|----------------|-----------------|
|
|
68
68
|
| **Layers** (inter-layer) | Who may import whom, capabilities, pure/forbiddenGlobals, peerIsolation | `ark.config.json` → `layers[]`, `rules[]` | graph check, baseline edges, doctor coverage % |
|
|
69
69
|
| **ArkRules** (intra-layer) | Structure inside a layer + domain invariants as data | `arkRules` map + `arkrules/<ExactLayerName>.json` | structure sensors, invariant coverage, `--rules-inventory`, doctor `rulesUnderContract` |
|
|
70
|
-
| **ArkRun** (extra) | Kernel usage + complete declarations | `arkRun` on `ark.config.json` (schema `1.2+`); factory `arkgate/runtime`; **`kernelRoots` preferred**, `compositionRoots` alias | `ARKRUN_*`, doctor `arkRun` (`notAScore`) |
|
|
71
|
-
| **ArkOrder** (extra) | Operational pattern (ξ vs s) | `arkOrder` on `ark.config.json` (schema `1.3+`); factory `arkgate/order` | `ARKORDER_*` |
|
|
70
|
+
| **ArkRun** (extra) | Kernel usage + complete declarations; information package `decisionTape` `{ xiHash, event, residual }` | `arkRun` on `ark.config.json` (schema `1.2+`); factory `arkgate/runtime`; **`kernelRoots` preferred**, `compositionRoots` alias | `ARKRUN_*`, doctor `arkRun` (`notAScore`) |
|
|
71
|
+
| **ArkOrder** (extra) | Operational pattern (ξ vs s). Valve: first `release()`, later ξ is `proposeRelease` then `apply`; `refreshSigma`; ingest residual `absorb \| escalate_up \| hold` + `reasonCode`; capacity pack as data; in-memory `ReleaseStore` | `arkOrder` on `ark.config.json` (schema `1.3+`); factory `arkgate/order` | `ARKORDER_*` |
|
|
72
72
|
|
|
73
73
|
**Rules for every report / answer:**
|
|
74
74
|
1. Prefix each finding or next step with **`[Layer]`** or **`[ArkRules]`** or **`[ArkRun]`** or **`[ArkOrder]`** (or a table with those headers).
|
|
@@ -97,6 +97,7 @@ ArkGate has **always-on Layers** plus opt-in extras. The user chooses extras; yo
|
|
|
97
97
|
|
|
98
98
|
### Explain + extras
|
|
99
99
|
- Extras silent when off. If `arkRun` is on, doctor `arkRun` is `notAScore` — never a tour score. Do not force extras.
|
|
100
|
+
- If `arkOrder` is on, teach the valve in plain language: first freeze is `release()`; later pattern change is `proposeRelease` then `apply`; `refreshSigma` refreshes saldo; ingest returns `absorb | escalate_up | hold` plus `reasonCode`; capacity is a data pack; `ReleaseStore` is in-memory; ArkRun may carry `decisionTape`. Never `update`.
|
|
100
101
|
|
|
101
102
|
## Subagent fan-out (optional, host-dependent)
|
|
102
103
|
|