@substrat-run/contracts 0.153.0 → 0.155.0

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.
@@ -0,0 +1,59 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Connection landings (#2316): how a poll-only connector's data enters a vertical's scope, declared
4
+ * by the vertical that receives it.
5
+ *
6
+ * A poll-only connector (Fortnox, Planima) has nothing inside a scope to start its work, so it
7
+ * needs a BINDING: "sweep this connection into that scope, through this operation, holding this
8
+ * key". Before this declaration a binding came only from a person running `substrat connection
9
+ * bind`, and the key it needs from a vertical's own credential relay. A connection a company
10
+ * approved through a connect link or the dashboard's door held no key and had no binding, so
11
+ * nothing landed and nothing said so.
12
+ *
13
+ * The shape of the mechanism, so the pieces below read in place:
14
+ *
15
+ * - **The vertical declares the landing** — `connections` in its module manifest
16
+ * (`connectionLandingSpec`): the provider, the operation the connector invokes, and the key that
17
+ * operation checks. It is lifted into the permission registry, so it is rendered in the
18
+ * vertical's PERMISSIONS.md and hashed into its permission digest: the key a connection is
19
+ * given is a reviewed permission diff, and a version that widens it cannot be promoted
20
+ * unacknowledged.
21
+ * - **The platform seats and binds from the running version.** On each connector pass, every
22
+ * live connection of a declared provider in a tenant where the vertical is installed is granted
23
+ * the declared key on each primary, active install, and bound to it. Both steps happen only when
24
+ * missing or different, so a pass that finds them in place writes nothing. The bind is the
25
+ * connector's own, and it still refuses a connection that does not hold the key.
26
+ * - **Revocation is the connection's.** Revoking a connection tombstones its grants and deletes
27
+ * its bindings, and a revoked connection is never seated again.
28
+ */
29
+ /** The most option keys one landing may carry. */
30
+ export declare const CONNECTION_LANDING_OPTIONS_MAX = 16;
31
+ /**
32
+ * Provider-specific binding options (Planima's `organizationId`, `currency`, `window`,
33
+ * `horizonYears`), as JSON. Not typed per provider here: the contracts package names no connector,
34
+ * and the platform validates them with the provider's own schema before it binds. A declaration a
35
+ * provider refuses is reported on that connection's sweep row, never bound with a guess.
36
+ */
37
+ export declare const connectionLandingOptions: z.ZodRecord<z.ZodString, z.ZodUnknown>;
38
+ export type ConnectionLandingOptions = z.infer<typeof connectionLandingOptions>;
39
+ /**
40
+ * One declared landing — "a `provider` connection of this tenant lands through `operation`,
41
+ * holding `permission`" — as a module manifest's `connections` entry.
42
+ *
43
+ * `operation` is the full `module/operation` name the connector invokes. It is not checked against
44
+ * the module's own operations here: a vertical may land through an operation of an engine it
45
+ * composes, and the host's registry is what knows every name. `lint:permissions` reports an
46
+ * unknown one, and an unknown name lands nothing (the sweep reports the refusal).
47
+ *
48
+ * `permission` is what the connection is granted, and it must be a key some module declares and
49
+ * that is not reserved to a system principal: a connection acts for the external provider holding
50
+ * its token. The registry builder refuses both.
51
+ */
52
+ export declare const connectionLandingSpec: z.ZodObject<{
53
+ provider: z.ZodString;
54
+ operation: z.ZodString;
55
+ permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
56
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
57
+ }, z.core.$strict>;
58
+ export type ConnectionLandingSpec = z.infer<typeof connectionLandingSpec>;
59
+ //# sourceMappingURL=connection-landing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-landing.d.ts","sourceRoot":"","sources":["../src/connection-landing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,kDAAkD;AAClD,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,wCAIjC,CAAC;AACL,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEhF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB;;;;;kBAOvB,CAAC;AACZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod';
2
+ import { permissionKey } from './ids.js';
3
+ import { connectionProvider } from './connections.js';
4
+ /**
5
+ * Connection landings (#2316): how a poll-only connector's data enters a vertical's scope, declared
6
+ * by the vertical that receives it.
7
+ *
8
+ * A poll-only connector (Fortnox, Planima) has nothing inside a scope to start its work, so it
9
+ * needs a BINDING: "sweep this connection into that scope, through this operation, holding this
10
+ * key". Before this declaration a binding came only from a person running `substrat connection
11
+ * bind`, and the key it needs from a vertical's own credential relay. A connection a company
12
+ * approved through a connect link or the dashboard's door held no key and had no binding, so
13
+ * nothing landed and nothing said so.
14
+ *
15
+ * The shape of the mechanism, so the pieces below read in place:
16
+ *
17
+ * - **The vertical declares the landing** — `connections` in its module manifest
18
+ * (`connectionLandingSpec`): the provider, the operation the connector invokes, and the key that
19
+ * operation checks. It is lifted into the permission registry, so it is rendered in the
20
+ * vertical's PERMISSIONS.md and hashed into its permission digest: the key a connection is
21
+ * given is a reviewed permission diff, and a version that widens it cannot be promoted
22
+ * unacknowledged.
23
+ * - **The platform seats and binds from the running version.** On each connector pass, every
24
+ * live connection of a declared provider in a tenant where the vertical is installed is granted
25
+ * the declared key on each primary, active install, and bound to it. Both steps happen only when
26
+ * missing or different, so a pass that finds them in place writes nothing. The bind is the
27
+ * connector's own, and it still refuses a connection that does not hold the key.
28
+ * - **Revocation is the connection's.** Revoking a connection tombstones its grants and deletes
29
+ * its bindings, and a revoked connection is never seated again.
30
+ */
31
+ /** The most option keys one landing may carry. */
32
+ export const CONNECTION_LANDING_OPTIONS_MAX = 16;
33
+ /**
34
+ * Provider-specific binding options (Planima's `organizationId`, `currency`, `window`,
35
+ * `horizonYears`), as JSON. Not typed per provider here: the contracts package names no connector,
36
+ * and the platform validates them with the provider's own schema before it binds. A declaration a
37
+ * provider refuses is reported on that connection's sweep row, never bound with a guess.
38
+ */
39
+ export const connectionLandingOptions = z
40
+ .record(z.string().min(1), z.unknown())
41
+ .refine((o) => Object.keys(o).length <= CONNECTION_LANDING_OPTIONS_MAX, {
42
+ message: `a landing carries at most ${CONNECTION_LANDING_OPTIONS_MAX} options`,
43
+ });
44
+ /**
45
+ * One declared landing — "a `provider` connection of this tenant lands through `operation`,
46
+ * holding `permission`" — as a module manifest's `connections` entry.
47
+ *
48
+ * `operation` is the full `module/operation` name the connector invokes. It is not checked against
49
+ * the module's own operations here: a vertical may land through an operation of an engine it
50
+ * composes, and the host's registry is what knows every name. `lint:permissions` reports an
51
+ * unknown one, and an unknown name lands nothing (the sweep reports the refusal).
52
+ *
53
+ * `permission` is what the connection is granted, and it must be a key some module declares and
54
+ * that is not reserved to a system principal: a connection acts for the external provider holding
55
+ * its token. The registry builder refuses both.
56
+ */
57
+ export const connectionLandingSpec = z
58
+ .object({
59
+ provider: connectionProvider,
60
+ operation: z.string().regex(/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+$/, 'operation is `module/operation`'),
61
+ permission: permissionKey,
62
+ options: connectionLandingOptions.optional(),
63
+ })
64
+ .strict();
65
+ //# sourceMappingURL=connection-landing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-landing.js","sourceRoot":"","sources":["../src/connection-landing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,8BAA8B,EAAE;IACtE,OAAO,EAAE,6BAA6B,8BAA8B,UAAU;CAC/E,CAAC,CAAC;AAGL;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kCAAkC,EAAE,iCAAiC,CAAC;IAClG,UAAU,EAAE,aAAa;IACzB,OAAO,EAAE,wBAAwB,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,MAAM,EAAE,CAAC"}
package/dist/deploy.d.ts CHANGED
@@ -721,6 +721,24 @@ export type ManifestExports = {
721
721
  reason: string;
722
722
  };
723
723
  export declare function exportsOfManifestJson(manifestJson: string | null | undefined): ManifestExports;
724
+ /**
725
+ * What a STORED manifest says about connection landings (#2316), in `importsOfManifestJson`'s three
726
+ * answers. The connector pass reads it for the version each install runs: a `landings` row is what
727
+ * the platform grants a connection of that provider and binds it with.
728
+ *
729
+ * `unreadable` is never acted on — a pass grants nothing from a declaration it cannot read — and
730
+ * it is reported on the connection's sweep row, so a broken manifest is not silent.
731
+ */
732
+ export type ManifestConnectionLandings = {
733
+ kind: 'none';
734
+ } | {
735
+ kind: 'landings';
736
+ rows: Omit<PermissionRegistryConnection, 'declaredBy'>[];
737
+ } | {
738
+ kind: 'unreadable';
739
+ reason: string;
740
+ };
741
+ export declare function connectionLandingsOfManifestJson(manifestJson: string | null | undefined): ManifestConnectionLandings;
724
742
  /**
725
743
  * #2178: the binding-shape gate over two STORED manifests — the version that runs now and the one
726
744
  * that would run instead — refused `precondition_failed` with {@link bindingShapeRefusal} when the
@@ -822,6 +840,7 @@ export declare const permissionRegistryEntry: z.ZodObject<{
822
840
  key: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
823
841
  description: z.ZodString;
824
842
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
843
+ holder: z.ZodOptional<z.ZodLiteral<"system">>;
825
844
  }, z.core.$strip>;
826
845
  export type PermissionRegistryEntry = z.infer<typeof permissionRegistryEntry>;
827
846
  export declare const entityGrantShape: z.ZodObject<{
@@ -895,11 +914,26 @@ export declare const permissionRegistryImport: z.ZodObject<{
895
914
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
896
915
  }, z.core.$strip>;
897
916
  export type PermissionRegistryImport = z.infer<typeof permissionRegistryImport>;
917
+ /**
918
+ * One provider whose connections land in this vertical (#2316): the operation the connector
919
+ * invokes and the key a connection is granted for it. A row here is authority handed to whoever
920
+ * holds the provider token, so it belongs in the same artifact, and the same digest, as the keys a
921
+ * person is given.
922
+ */
923
+ export declare const permissionRegistryConnection: z.ZodObject<{
924
+ provider: z.ZodString;
925
+ operation: z.ZodString;
926
+ permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
927
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
928
+ declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
929
+ }, z.core.$strip>;
930
+ export type PermissionRegistryConnection = z.infer<typeof permissionRegistryConnection>;
898
931
  export declare const permissionRegistry: z.ZodObject<{
899
932
  permissions: z.ZodArray<z.ZodObject<{
900
933
  key: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
901
934
  description: z.ZodString;
902
935
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
936
+ holder: z.ZodOptional<z.ZodLiteral<"system">>;
903
937
  }, z.core.$strip>>;
904
938
  roles: z.ZodArray<z.ZodObject<{
905
939
  key: z.ZodString;
@@ -936,6 +970,13 @@ export declare const permissionRegistry: z.ZodObject<{
936
970
  schemaVersion: z.ZodNumber;
937
971
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
938
972
  }, z.core.$strip>>>;
973
+ connections: z.ZodOptional<z.ZodArray<z.ZodObject<{
974
+ provider: z.ZodString;
975
+ operation: z.ZodString;
976
+ permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
977
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
978
+ declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
979
+ }, z.core.$strip>>>;
939
980
  }, z.core.$strip>;
940
981
  export type PermissionRegistry = z.infer<typeof permissionRegistry>;
941
982
  /**
@@ -949,6 +990,7 @@ export declare const pushedPermissionRegistry: z.ZodObject<{
949
990
  key: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
950
991
  description: z.ZodString;
951
992
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
993
+ holder: z.ZodOptional<z.ZodLiteral<"system">>;
952
994
  }, z.core.$strip>>;
953
995
  roles: z.ZodArray<z.ZodObject<{
954
996
  key: z.ZodString;
@@ -971,6 +1013,13 @@ export declare const pushedPermissionRegistry: z.ZodObject<{
971
1013
  schemaVersion: z.ZodNumber;
972
1014
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
973
1015
  }, z.core.$strip>>>;
1016
+ connections: z.ZodOptional<z.ZodArray<z.ZodObject<{
1017
+ provider: z.ZodString;
1018
+ operation: z.ZodString;
1019
+ permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
1020
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1021
+ declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
1022
+ }, z.core.$strip>>>;
974
1023
  entityGrants: z.ZodDefault<z.ZodArray<z.ZodObject<{
975
1024
  permissions: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
976
1025
  bootstrap: z.ZodOptional<z.ZodLiteral<true>>;
@@ -986,6 +1035,16 @@ export declare const pushedPermissionRegistry: z.ZodObject<{
986
1035
  entityType: z.ZodString;
987
1036
  }, z.core.$strip>>>;
988
1037
  }, z.core.$strip>;
1038
+ /**
1039
+ * #2430: the deploy manifest's `ownerGrants` (package.json `substrat.ownerGrants`, which an install
1040
+ * grants to its owner, a person) against the reservations its registry's rows mark. The control
1041
+ * plane's push routes call it beside {@link pushedPermissionRegistry}: a manifest cannot carry a
1042
+ * refinement, since history is read through an `extend` of it.
1043
+ */
1044
+ export declare function pushedOwnerGrantProblems(manifest: {
1045
+ ownerGrants?: readonly string[];
1046
+ registry?: Pick<PermissionRegistry, 'permissions' | 'roles' | 'entityGrants'>;
1047
+ }): string[];
989
1048
  /**
990
1049
  * A vertical's declared permission surface, as the **single typed source** — the input the
991
1050
  * permission checkpoint (`tools/permission-diff.mts`) and `substrat push` both read to derive
@@ -1442,6 +1501,7 @@ export declare const deployManifest: z.ZodObject<{
1442
1501
  key: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
1443
1502
  description: z.ZodString;
1444
1503
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
1504
+ holder: z.ZodOptional<z.ZodLiteral<"system">>;
1445
1505
  }, z.core.$strip>>;
1446
1506
  roles: z.ZodArray<z.ZodObject<{
1447
1507
  key: z.ZodString;
@@ -1464,6 +1524,13 @@ export declare const deployManifest: z.ZodObject<{
1464
1524
  schemaVersion: z.ZodNumber;
1465
1525
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
1466
1526
  }, z.core.$strip>>>;
1527
+ connections: z.ZodOptional<z.ZodArray<z.ZodObject<{
1528
+ provider: z.ZodString;
1529
+ operation: z.ZodString;
1530
+ permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
1531
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1532
+ declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
1533
+ }, z.core.$strip>>>;
1467
1534
  entityGrants: z.ZodDefault<z.ZodArray<z.ZodObject<{
1468
1535
  permissions: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
1469
1536
  bootstrap: z.ZodOptional<z.ZodLiteral<true>>;
@@ -1658,6 +1725,7 @@ export declare const storedDeployManifest: z.ZodObject<{
1658
1725
  key: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
1659
1726
  description: z.ZodString;
1660
1727
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
1728
+ holder: z.ZodOptional<z.ZodLiteral<"system">>;
1661
1729
  }, z.core.$strip>>;
1662
1730
  roles: z.ZodArray<z.ZodObject<{
1663
1731
  key: z.ZodString;
@@ -1694,6 +1762,13 @@ export declare const storedDeployManifest: z.ZodObject<{
1694
1762
  schemaVersion: z.ZodNumber;
1695
1763
  declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
1696
1764
  }, z.core.$strip>>>;
1765
+ connections: z.ZodOptional<z.ZodArray<z.ZodObject<{
1766
+ provider: z.ZodString;
1767
+ operation: z.ZodString;
1768
+ permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
1769
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1770
+ declaredBy: z.ZodArray<z.core.$ZodBranded<z.ZodString, "ModuleId", "out">>;
1771
+ }, z.core.$strip>>>;
1697
1772
  }, z.core.$strip>>;
1698
1773
  platformSweeper: z.ZodOptional<z.ZodBoolean>;
1699
1774
  migrations: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
package/dist/deploy.js CHANGED
@@ -11,6 +11,9 @@ import { substratError } from './errors.js';
11
11
  import { blankReason } from './review-text.js';
12
12
  import { SCOPE_STORE_CANARY, STORE_DRIVER_ID } from './script-names.js';
13
13
  import { bindingShapeBreaks, bindingShapeRefusal } from './registry-diff.js';
14
+ import { connectionLandingOptions } from './connection-landing.js';
15
+ import { connectionProvider } from './connections.js';
16
+ import { ownerGrantSets, reservedKeyLine, reservedKeyOffences, reservedKeysOf, } from './reserved-keys.js';
14
17
  // The deploy manifest is the JSON part a `substrat push` sends alongside the
15
18
  // module files (self-serve-deploy.md). It lives here — not in the transport
16
19
  // package — because BOTH ends must speak the same shape: the CLI builds and
@@ -907,6 +910,17 @@ export function exportsOfManifestJson(manifestJson) {
907
910
  return { kind: 'unreadable', reason: read.unreadable };
908
911
  return { kind: 'exports', rows: read.rows.map((r) => ({ type: r.type, schemaVersion: r.schemaVersion })) };
909
912
  }
913
+ export function connectionLandingsOfManifestJson(manifestJson) {
914
+ const read = registryRowsOfManifestJson(manifestJson, 'connections', permissionRegistryConnection);
915
+ if (read === null)
916
+ return { kind: 'none' };
917
+ if ('unreadable' in read)
918
+ return { kind: 'unreadable', reason: read.unreadable };
919
+ return {
920
+ kind: 'landings',
921
+ rows: read.rows.map((r) => ({ provider: r.provider, operation: r.operation, permission: r.permission, ...(r.options ? { options: r.options } : {}) })),
922
+ };
923
+ }
910
924
  /**
911
925
  * #2178: the binding-shape gate over two STORED manifests — the version that runs now and the one
912
926
  * that would run instead — refused `precondition_failed` with {@link bindingShapeRefusal} when the
@@ -1028,6 +1042,13 @@ export const permissionRegistryEntry = z.object({
1028
1042
  key: permissionKey,
1029
1043
  description: z.string().min(1),
1030
1044
  declaredBy: z.array(moduleId).min(1),
1045
+ /**
1046
+ * #2430: the key is reserved to a system principal, because a module in `declaredBy` declares it
1047
+ * `holder: 'system'` (the union rule of `reservedKeysOf`). Omitted otherwise, so a registry that
1048
+ * reserves nothing keeps the permission digest it had. ABSENT means a person key, on a registry
1049
+ * pushed before the field too, so nothing older is read as reserved.
1050
+ */
1051
+ holder: z.literal('system').optional(),
1031
1052
  });
1032
1053
  /** An entity-narrowed grant SHAPE — which keys a per-entity grant carries (§4 of
1033
1054
  * PERMISSIONS.md). The grants themselves are per-principal, runtime, scope-local; only
@@ -1255,6 +1276,19 @@ export const permissionRegistryImport = z.object({
1255
1276
  schemaVersion: z.number().int().positive(),
1256
1277
  declaredBy: z.array(moduleId).min(1),
1257
1278
  });
1279
+ /**
1280
+ * One provider whose connections land in this vertical (#2316): the operation the connector
1281
+ * invokes and the key a connection is granted for it. A row here is authority handed to whoever
1282
+ * holds the provider token, so it belongs in the same artifact, and the same digest, as the keys a
1283
+ * person is given.
1284
+ */
1285
+ export const permissionRegistryConnection = z.object({
1286
+ provider: connectionProvider,
1287
+ operation: z.string().regex(/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+$/),
1288
+ permission: permissionKey,
1289
+ options: connectionLandingOptions.optional(),
1290
+ declaredBy: z.array(moduleId).min(1),
1291
+ });
1258
1292
  export const permissionRegistry = z.object({
1259
1293
  permissions: z.array(permissionRegistryEntry),
1260
1294
  roles: z.array(roleDefinition),
@@ -1267,6 +1301,8 @@ export const permissionRegistry = z.object({
1267
1301
  // or what enters it, cannot be promoted unacknowledged.
1268
1302
  exports: z.array(permissionRegistryExport).optional(),
1269
1303
  imports: z.array(permissionRegistryImport).optional(),
1304
+ // #2316: connection landings. Optional and omitted when none, for the digest reason above.
1305
+ connections: z.array(permissionRegistryConnection).optional(),
1270
1306
  });
1271
1307
  /**
1272
1308
  * The registry as a PUSH carries it (#1869): an `entityGrants` shape naming a kernel namespace
@@ -1274,7 +1310,8 @@ export const permissionRegistry = z.object({
1274
1310
  * Only at the push boundary: {@link storedDeployManifest} reads history with the plain
1275
1311
  * {@link permissionRegistry}, so a version stored before the refusal stays readable.
1276
1312
  */
1277
- export const pushedPermissionRegistry = permissionRegistry.extend({
1313
+ export const pushedPermissionRegistry = permissionRegistry
1314
+ .extend({
1278
1315
  entityGrants: z
1279
1316
  .array(entityGrantShape.extend({ entityType: declaredEntityType }).superRefine((shape, ctx) => {
1280
1317
  for (const message of retiredShapeProblems(shape))
@@ -1283,7 +1320,49 @@ export const pushedPermissionRegistry = permissionRegistry.extend({
1283
1320
  ctx.addIssue({ code: 'custom', path: ['bind'], message });
1284
1321
  }))
1285
1322
  .default([]),
1323
+ })
1324
+ // #2430: the push boundary holds the reservation the registry's rows carry, as the CLI did.
1325
+ .superRefine((registry, ctx) => {
1326
+ for (const message of registryReservedKeyProblems(registry))
1327
+ ctx.addIssue({ code: 'custom', path: [], message });
1328
+ // #2316: a landing's key is one the registry declares and does not reserve, and one landing per provider.
1329
+ const keys = new Map(registry.permissions.map((p) => [p.key, p]));
1330
+ const providers = new Set();
1331
+ for (const l of registry.connections ?? []) {
1332
+ const where = `connections '${l.provider}'`;
1333
+ const key = keys.get(l.permission);
1334
+ if (!key)
1335
+ ctx.addIssue({ code: 'custom', path: ['connections'], message: `${where}: lands holding ${l.permission}, which the registry does not declare` });
1336
+ else if (key.holder === 'system')
1337
+ ctx.addIssue({ code: 'custom', path: ['connections'], message: `${where}: lands holding ${l.permission}, which is reserved to a system principal` });
1338
+ if (providers.has(l.provider))
1339
+ ctx.addIssue({ code: 'custom', path: ['connections'], message: `${where}: declared more than once` });
1340
+ providers.add(l.provider);
1341
+ }
1286
1342
  });
1343
+ /**
1344
+ * #2430: a registry's reserved-key offences, one line each — a person's role, grant shape or
1345
+ * owner grant holding a reserved key, and a system-held role holding anything else or nothing.
1346
+ * Checked where a registry is BUILT ({@link buildPermissionRegistry}, which passes the `reserved`
1347
+ * map it read off the manifests, so a refusal names the module that marks the key) and where a push
1348
+ * carries one ({@link pushedPermissionRegistry}, which has only the rows' marks and names no
1349
+ * module). A registry from a CLI that predates the field marks no key, so it is refused nothing.
1350
+ */
1351
+ function registryReservedKeyProblems(registry, reserved, personGrants = []) {
1352
+ const marked = reserved ?? new Set(registry.permissions.filter((p) => p.holder === 'system').map((p) => p.key));
1353
+ return reservedKeyOffences({ roles: registry.roles, grants: registry.entityGrants, personGrants }, marked).map((o) => reservedKeyLine(o, reserved));
1354
+ }
1355
+ /**
1356
+ * #2430: the deploy manifest's `ownerGrants` (package.json `substrat.ownerGrants`, which an install
1357
+ * grants to its owner, a person) against the reservations its registry's rows mark. The control
1358
+ * plane's push routes call it beside {@link pushedPermissionRegistry}: a manifest cannot carry a
1359
+ * refinement, since history is read through an `extend` of it.
1360
+ */
1361
+ export function pushedOwnerGrantProblems(manifest) {
1362
+ if (!manifest.registry || !manifest.ownerGrants?.length)
1363
+ return [];
1364
+ return registryReservedKeyProblems({ permissions: manifest.registry.permissions, roles: [], entityGrants: [] }, undefined, ownerGrantSets([], manifest.ownerGrants));
1365
+ }
1287
1366
  /**
1288
1367
  * Declare a vertical's permission surface, once, in TypeScript. A near-identity helper: it pins the
1289
1368
  * shape so a missing or mistyped field is a **compile error**, not a silently-skipped vertical,
@@ -1356,15 +1435,23 @@ export function buildPermissionRegistry(input) {
1356
1435
  declaredBy.set(p.key, { description: p.description, modules: new Set([m.manifest.id]) });
1357
1436
  }
1358
1437
  }
1438
+ // #2430: a system-held role (K-55) says so in the registry, as a reserved key does below. A
1439
+ // person role carries no holder (`'person'` is the same as none), so no existing digest moves.
1359
1440
  const roles = [...input.roles]
1360
1441
  .sort((a, b) => cmp(a.key, b.key))
1361
1442
  .map((r) => {
1362
1443
  if (!r.source)
1363
1444
  throw new Error(`buildPermissionRegistry: role '${r.key}' has no source`);
1364
- return { key: r.key, permissions: sortKeys(r.permissions), source: r.source };
1445
+ return { key: r.key, permissions: sortKeys(r.permissions), source: r.source, ...(r.holder === 'system' ? { holder: r.holder } : {}) };
1365
1446
  });
1447
+ const reserved = reservedKeysOf(input.modules);
1366
1448
  const permissions = [...declaredBy.entries()]
1367
- .map(([key, v]) => ({ key, description: v.description, declaredBy: [...v.modules].sort(cmp) }))
1449
+ .map(([key, v]) => ({
1450
+ key,
1451
+ description: v.description,
1452
+ declaredBy: [...v.modules].sort(cmp),
1453
+ ...(reserved.has(key) ? { holder: 'system' } : {}),
1454
+ }))
1368
1455
  .sort((a, b) => cmp(a.key, b.key));
1369
1456
  const entityGrants = [...(input.entityGrants ?? [])]
1370
1457
  .sort((a, b) => cmp(a.entityType, b.entityType))
@@ -1379,6 +1466,7 @@ export function buildPermissionRegistry(input) {
1379
1466
  const problems = [
1380
1467
  ...entityGrants.flatMap(retiredShapeProblems),
1381
1468
  ...entityGrants.flatMap((g) => bindShapeProblems(g, new Set(declaredBy.keys()))),
1469
+ ...registryReservedKeyProblems({ permissions, roles, entityGrants }, reserved, ownerGrantSets(input.modules)),
1382
1470
  ];
1383
1471
  if (problems.length > 0)
1384
1472
  throw new Error(`buildPermissionRegistry: ${problems.join('; ')}`);
@@ -1412,14 +1500,52 @@ export function buildPermissionRegistry(input) {
1412
1500
  }
1413
1501
  const exports = [...exportRows.values()].sort((a, b) => cmp(a.type, b.type));
1414
1502
  const imports = [...importRows.values()].sort((a, b) => cmp(a.from, b.from) || cmp(a.type, b.type));
1503
+ const connections = connectionRowsOf(input.modules, new Set(declaredBy.keys()), reserved);
1415
1504
  return {
1416
1505
  permissions,
1417
1506
  roles,
1418
1507
  entityGrants,
1419
1508
  ...(exports.length ? { exports } : {}),
1420
1509
  ...(imports.length ? { imports } : {}),
1510
+ ...(connections.length ? { connections } : {}),
1421
1511
  };
1422
1512
  }
1513
+ /**
1514
+ * #2316: the modules' connection landings as registry rows, one per provider. Two modules stating
1515
+ * the same landing collapse into one row naming both; two stating DIFFERENT landings for one
1516
+ * provider are refused, since a connection binds one operation per scope and the platform would
1517
+ * otherwise pick one. Refused as well: a key no module declares (the grant could never be
1518
+ * checked) and a key reserved to a system principal (a connection acts for whoever holds the
1519
+ * provider's token, #2430).
1520
+ */
1521
+ function connectionRowsOf(modules, declared, reserved) {
1522
+ const rows = new Map();
1523
+ const problems = [];
1524
+ const same = (a, b) => a.operation === b.operation && a.permission === b.permission && JSON.stringify(a.options ?? {}) === JSON.stringify(b.options ?? {});
1525
+ // `?? []` although parsed manifests carry the field: the CLI imports a vertical's modules as plain JS.
1526
+ for (const m of modules) {
1527
+ for (const l of m.manifest.connections ?? []) {
1528
+ const where = `connections '${l.provider}' (${m.manifest.id})`;
1529
+ if (!declared.has(l.permission))
1530
+ problems.push(`${where}: lands holding ${l.permission}, which no module declares`);
1531
+ if (reserved.has(l.permission))
1532
+ problems.push(`${where}: lands holding ${l.permission}, which is reserved to a system principal`);
1533
+ const row = rows.get(l.provider);
1534
+ if (!row) {
1535
+ rows.set(l.provider, { provider: l.provider, operation: l.operation, permission: l.permission, ...(l.options ? { options: l.options } : {}), declaredBy: [m.manifest.id] });
1536
+ }
1537
+ else if (same(row, l)) {
1538
+ row.declaredBy = [...new Set([...row.declaredBy, m.manifest.id])].sort((a, b) => a.localeCompare(b));
1539
+ }
1540
+ else {
1541
+ problems.push(`${where}: declares a different landing for '${l.provider}' than ${row.declaredBy.join(', ')}`);
1542
+ }
1543
+ }
1544
+ }
1545
+ if (problems.length > 0)
1546
+ throw new Error(`buildPermissionRegistry: ${problems.join('; ')}`);
1547
+ return [...rows.values()].sort((a, b) => a.provider.localeCompare(b.provider));
1548
+ }
1423
1549
  /**
1424
1550
  * One static file in the shipped manifest (#340). The trio Cloudflare's asset store keys
1425
1551
  * on — content-addressed `hash`, `size` — plus the `contentType` the platform attaches at