@substrat-run/contract-tests 0.88.0 → 0.90.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 @@
1
+ {"version":3,"file":"impersonation-suite.js","sourceRoot":"","sources":["../src/impersonation-suite.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,9 +2,12 @@ export { scopeHostContractSuite } from './scope-host-suite.js';
2
2
  export type { ScopeHostFixture, ScopeHostSuiteOptions } from './scope-host-suite.js';
3
3
  export { permissionContractSuite } from './permission-suite.js';
4
4
  export { atomicContractSuite } from './atomic-suite.js';
5
+ export { impersonationContractSuite } from './impersonation-suite.js';
5
6
  export { searchContractSuite } from './search-suite.js';
6
7
  export { entityVersionContractSuite } from './entity-version-suite.js';
8
+ export { timelineContractSuite } from './timeline-suite.js';
7
9
  export { concurrencyContractSuite } from './concurrency-suite.js';
10
+ export { idempotencyContractSuite } from './idempotency-suite.js';
8
11
  export { listContractSuite } from './list-suite.js';
9
12
  export { scheduleContractSuite } from './schedule-suite.js';
10
13
  export { inputParseContractSuite } from './input-parse-suite.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxF,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxF,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,12 @@
1
1
  export { scopeHostContractSuite } from './scope-host-suite.js';
2
2
  export { permissionContractSuite } from './permission-suite.js';
3
3
  export { atomicContractSuite } from './atomic-suite.js';
4
+ export { impersonationContractSuite } from './impersonation-suite.js';
4
5
  export { searchContractSuite } from './search-suite.js';
5
6
  export { entityVersionContractSuite } from './entity-version-suite.js';
7
+ export { timelineContractSuite } from './timeline-suite.js';
6
8
  export { concurrencyContractSuite } from './concurrency-suite.js';
9
+ export { idempotencyContractSuite } from './idempotency-suite.js';
7
10
  export { listContractSuite } from './list-suite.js';
8
11
  export { scheduleContractSuite } from './schedule-suite.js';
9
12
  export { inputParseContractSuite } from './input-parse-suite.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOxF,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOxF,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,wBAAwB,CAAC"}
package/dist/modules.d.ts CHANGED
@@ -1142,6 +1142,118 @@ export declare const gateModManifest: {
1142
1142
  }[] | undefined;
1143
1143
  } | undefined;
1144
1144
  };
1145
+ /**
1146
+ * K-42 (#868): a CONSUMER of `perm.acted`, whose whole job is to answer the
1147
+ * question a raw outbox read cannot — does the two-actor stamp survive the trip
1148
+ * from the stored row back into a `DomainEvent`? An adapter that writes the column
1149
+ * and drops it on the way out passes every assertion that reads SQL directly, and
1150
+ * still hands its consumers an event with no administrative actor on it.
1151
+ *
1152
+ * Only the impersonation suite reads `imp_echo`, so it is inert everywhere else.
1153
+ */
1154
+ export declare const impersonationEchoManifest: {
1155
+ id: string & z.$brand<"ModuleId">;
1156
+ version: string;
1157
+ kernelContract: string;
1158
+ permissions: {
1159
+ key: string & z.$brand<"PermissionKey">;
1160
+ description: string;
1161
+ }[];
1162
+ events: {
1163
+ emits: {
1164
+ type: string;
1165
+ schemaVersion: number;
1166
+ }[];
1167
+ consumes: {
1168
+ type: string;
1169
+ schemaVersion: number;
1170
+ }[];
1171
+ };
1172
+ migrations: {
1173
+ journalDir: string;
1174
+ compatibleFrom: string;
1175
+ };
1176
+ attachmentTargets: {
1177
+ entityType: string;
1178
+ readPermission: string & z.$brand<"PermissionKey">;
1179
+ writePermission?: (string & z.$brand<"PermissionKey">) | undefined;
1180
+ }[];
1181
+ entityRelations?: {
1182
+ entityType: string;
1183
+ parentType: string;
1184
+ }[] | undefined;
1185
+ guards?: {
1186
+ before: string;
1187
+ predicate: string;
1188
+ config: Record<string, unknown>;
1189
+ }[] | undefined;
1190
+ schedules?: {
1191
+ operation: string;
1192
+ cadence: {
1193
+ everyMinutes: number;
1194
+ };
1195
+ input?: Record<string, unknown> | undefined;
1196
+ permissions: (string & z.$brand<"PermissionKey">)[];
1197
+ }[] | undefined;
1198
+ withdraws?: string[] | undefined;
1199
+ entitlementKey: string;
1200
+ envSpec?: {
1201
+ key: string;
1202
+ label?: string | undefined;
1203
+ description: string;
1204
+ placeholder?: string | undefined;
1205
+ required: boolean;
1206
+ secret: boolean;
1207
+ default?: string | undefined;
1208
+ group?: string | undefined;
1209
+ }[] | undefined;
1210
+ ownerGrants?: (string & z.$brand<"PermissionKey">)[] | undefined;
1211
+ entitlements?: string[] | undefined;
1212
+ provides?: string[] | undefined;
1213
+ requires?: string[] | undefined;
1214
+ api?: string | undefined;
1215
+ searchables?: {
1216
+ entityType: string;
1217
+ fields: string[];
1218
+ table?: string | undefined;
1219
+ idColumn?: string | undefined;
1220
+ tokenizer?: "prefix" | "substring" | undefined;
1221
+ }[] | undefined;
1222
+ lists?: {
1223
+ entityType: string;
1224
+ sortable: string[];
1225
+ filterable?: string[] | undefined;
1226
+ table?: string | undefined;
1227
+ idColumn?: string | undefined;
1228
+ }[] | undefined;
1229
+ ui?: {
1230
+ routes?: {
1231
+ path: string;
1232
+ screen: string;
1233
+ permission: string & z.$brand<"PermissionKey">;
1234
+ }[] | undefined;
1235
+ nav?: {
1236
+ label: string;
1237
+ icon?: string | undefined;
1238
+ to: string;
1239
+ permission: string & z.$brand<"PermissionKey">;
1240
+ }[] | undefined;
1241
+ entityViews?: {
1242
+ entityType: string;
1243
+ view: string;
1244
+ }[] | undefined;
1245
+ widgets?: {
1246
+ slot: string;
1247
+ component: string;
1248
+ permission: string & z.$brand<"PermissionKey">;
1249
+ }[] | undefined;
1250
+ settingsPanels?: {
1251
+ label: string;
1252
+ component: string;
1253
+ permission: string & z.$brand<"PermissionKey">;
1254
+ }[] | undefined;
1255
+ } | undefined;
1256
+ };
1145
1257
  export declare const permModManifest: {
1146
1258
  id: string & z.$brand<"ModuleId">;
1147
1259
  version: string;
@@ -1257,6 +1369,7 @@ export declare const victimMod: ModuleRegistration;
1257
1369
  export declare const withdrawLateMod: ModuleRegistration;
1258
1370
  export declare const lateMod: ModuleRegistration;
1259
1371
  export declare const billedMod: ModuleRegistration;
1372
+ export declare const impersonationEchoMod: ModuleRegistration;
1260
1373
  export declare const permMod: ModuleRegistration;
1261
1374
  export declare const connectorModManifest: {
1262
1375
  id: string & z.$brand<"ModuleId">;
@@ -1808,6 +1921,110 @@ export declare const concurrencyModManifest: {
1808
1921
  } | undefined;
1809
1922
  };
1810
1923
  export declare const concurrencyMod: ModuleRegistration;
1924
+ export declare const idempotencyModManifest: {
1925
+ id: string & z.$brand<"ModuleId">;
1926
+ version: string;
1927
+ kernelContract: string;
1928
+ permissions: {
1929
+ key: string & z.$brand<"PermissionKey">;
1930
+ description: string;
1931
+ }[];
1932
+ events: {
1933
+ emits: {
1934
+ type: string;
1935
+ schemaVersion: number;
1936
+ }[];
1937
+ consumes: {
1938
+ type: string;
1939
+ schemaVersion: number;
1940
+ }[];
1941
+ };
1942
+ migrations: {
1943
+ journalDir: string;
1944
+ compatibleFrom: string;
1945
+ };
1946
+ attachmentTargets: {
1947
+ entityType: string;
1948
+ readPermission: string & z.$brand<"PermissionKey">;
1949
+ writePermission?: (string & z.$brand<"PermissionKey">) | undefined;
1950
+ }[];
1951
+ entityRelations?: {
1952
+ entityType: string;
1953
+ parentType: string;
1954
+ }[] | undefined;
1955
+ guards?: {
1956
+ before: string;
1957
+ predicate: string;
1958
+ config: Record<string, unknown>;
1959
+ }[] | undefined;
1960
+ schedules?: {
1961
+ operation: string;
1962
+ cadence: {
1963
+ everyMinutes: number;
1964
+ };
1965
+ input?: Record<string, unknown> | undefined;
1966
+ permissions: (string & z.$brand<"PermissionKey">)[];
1967
+ }[] | undefined;
1968
+ withdraws?: string[] | undefined;
1969
+ entitlementKey: string;
1970
+ envSpec?: {
1971
+ key: string;
1972
+ label?: string | undefined;
1973
+ description: string;
1974
+ placeholder?: string | undefined;
1975
+ required: boolean;
1976
+ secret: boolean;
1977
+ default?: string | undefined;
1978
+ group?: string | undefined;
1979
+ }[] | undefined;
1980
+ ownerGrants?: (string & z.$brand<"PermissionKey">)[] | undefined;
1981
+ entitlements?: string[] | undefined;
1982
+ provides?: string[] | undefined;
1983
+ requires?: string[] | undefined;
1984
+ api?: string | undefined;
1985
+ searchables?: {
1986
+ entityType: string;
1987
+ fields: string[];
1988
+ table?: string | undefined;
1989
+ idColumn?: string | undefined;
1990
+ tokenizer?: "prefix" | "substring" | undefined;
1991
+ }[] | undefined;
1992
+ lists?: {
1993
+ entityType: string;
1994
+ sortable: string[];
1995
+ filterable?: string[] | undefined;
1996
+ table?: string | undefined;
1997
+ idColumn?: string | undefined;
1998
+ }[] | undefined;
1999
+ ui?: {
2000
+ routes?: {
2001
+ path: string;
2002
+ screen: string;
2003
+ permission: string & z.$brand<"PermissionKey">;
2004
+ }[] | undefined;
2005
+ nav?: {
2006
+ label: string;
2007
+ icon?: string | undefined;
2008
+ to: string;
2009
+ permission: string & z.$brand<"PermissionKey">;
2010
+ }[] | undefined;
2011
+ entityViews?: {
2012
+ entityType: string;
2013
+ view: string;
2014
+ }[] | undefined;
2015
+ widgets?: {
2016
+ slot: string;
2017
+ component: string;
2018
+ permission: string & z.$brand<"PermissionKey">;
2019
+ }[] | undefined;
2020
+ settingsPanels?: {
2021
+ label: string;
2022
+ component: string;
2023
+ permission: string & z.$brand<"PermissionKey">;
2024
+ }[] | undefined;
2025
+ } | undefined;
2026
+ };
2027
+ export declare const idempotencyMod: ModuleRegistration;
1811
2028
  export declare const contractTestModules: ModuleRegistration[];
1812
2029
  export declare const brokenModManifest: {
1813
2030
  id: string & z.$brand<"ModuleId">;
@@ -1 +1 @@
1
- {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAOL,CAAC,EAGF,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAI9B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU1B,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa9B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkB1B,CAAC;AAMH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmB5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS1B,CAAC;AAKH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS5B,CAAC;AAOH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAe7B,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUhC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS1B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuB1B,CAAC;AA6BH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAsJhF,CAAC;AA4OF,eAAO,MAAM,OAAO,EAAE,kBA4BrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,kBAkBvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,kBAsCzB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBAqCrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAwBxB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBAYrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,kBAAwD,CAAC;AAExF,eAAO,MAAM,SAAS,EAAE,kBAOvB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,kBAAuD,CAAC;AAEtF,eAAO,MAAM,OAAO,EAAE,kBAQrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,kBAWvB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,kBA4CrB,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,kBA0E1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,EAS1D,CAAC;AAEF;;;;;GAKG;AAGH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoB1B,CAAC;AAEH,eAAO,MAAM,OAAO,EAAE,kBAqDrB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAe5B,CAAC;AAEH,eAAO,MAAM,SAAS,EAAE,kBAmDvB,CAAC;AAIF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS3B,CAAC;AA+CH,eAAO,MAAM,QAAQ,EAAE,kBAQtB,CAAC;AAIF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYjC,CAAC;AAmGH,eAAO,MAAM,cAAc,EAAE,kBAY5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,EAYnD,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS5B,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,EAAE,kBASvB,CAAC"}
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
package/dist/modules.js CHANGED
@@ -7,8 +7,8 @@
7
7
  * validates) draw from this one source. The assertions live in the suites; the
8
8
  * artifacts live here.
9
9
  */
10
- import { dataSubjectId, moduleManifest, operationInputsOf, operationConcurrencyOf, permissionKey, principalId, z, } from '@substrat-run/contracts';
11
- import { assertAllowed, } from '@substrat-run/kernel';
10
+ import { dataSubjectId, moduleManifest, operationInputsOf, operationConcurrencyOf, operationIdempotencyOptOutsOf, IDEMPOTENCY_RESULT_LIMIT, permissionKey, principalId, z, } from '@substrat-run/contracts';
11
+ import { assertAllowed, readHistory, readTimeline, ulid, } from '@substrat-run/kernel';
12
12
  // -- manifests ---------------------------------------------------------------
13
13
  export const testModManifest = moduleManifest.parse({
14
14
  id: '@test/mod',
@@ -170,6 +170,28 @@ export const gateModManifest = moduleManifest.parse({
170
170
  attachmentTargets: [],
171
171
  entitlementKey: 'gate',
172
172
  });
173
+ /**
174
+ * K-42 (#868): a CONSUMER of `perm.acted`, whose whole job is to answer the
175
+ * question a raw outbox read cannot — does the two-actor stamp survive the trip
176
+ * from the stored row back into a `DomainEvent`? An adapter that writes the column
177
+ * and drops it on the way out passes every assertion that reads SQL directly, and
178
+ * still hands its consumers an event with no administrative actor on it.
179
+ *
180
+ * Only the impersonation suite reads `imp_echo`, so it is inert everywhere else.
181
+ */
182
+ export const impersonationEchoManifest = moduleManifest.parse({
183
+ id: '@imp/echo',
184
+ version: '1.0.0',
185
+ kernelContract: '^0.0.1',
186
+ permissions: [],
187
+ events: {
188
+ emits: [],
189
+ consumes: [{ type: 'perm.acted', schemaVersion: 1 }],
190
+ },
191
+ migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
192
+ attachmentTargets: [],
193
+ entitlementKey: 'imp-echo',
194
+ });
173
195
  export const permModManifest = moduleManifest.parse({
174
196
  id: '@perm/mod',
175
197
  version: '1.0.0',
@@ -294,6 +316,46 @@ export const contractTestBareOps = {
294
316
  // documented hole, pinned deliberately so it is a known property rather than a
295
317
  // surprise. The fix is a compile-checked `concurrency` against `emits` (#129),
296
318
  // not a change here.
319
+ // -- #800: the supported read of an entity's history ------------------------
320
+ // Emit N events about one entity in ONE invocation. `ctx.now()` is stable for
321
+ // the whole operation (#812), so every row lands with the IDENTICAL
322
+ // `occurred_at` — which is what makes a timestamp cursor lose rows, and what
323
+ // the suite needs to be able to construct on purpose rather than hope for.
324
+ 'test/emit-burst': ((ctx, input) => {
325
+ for (let n = 0; n < input.count; n++) {
326
+ ctx.emit({
327
+ type: 'test.happened',
328
+ schemaVersion: 1,
329
+ entity: { entityType: 'test-thing', entityId: input.entityId },
330
+ piiClass: 'none',
331
+ payload: { n },
332
+ });
333
+ }
334
+ return ctx.now();
335
+ }),
336
+ // The reads under test. They take the whole page shape so the suite can drive
337
+ // limit, cursor and order without a variant operation per case.
338
+ 'test/timeline': ((ctx, input) => readTimeline(ctx, { entityType: input.entityType, entityId: input.entityId }, input)),
339
+ 'test/history': ((ctx, input) => readHistory(ctx, { entityType: input.entityType, entityId: input.entityId }, input)),
340
+ // An event carrying PII, so the suite can shred it and assert the history
341
+ // degrades to a null payload instead of vanishing or throwing.
342
+ //
343
+ // It CHECKS before it emits, unlike `test/emit-about`, and that is the point
344
+ // rather than politeness: `authorization` is stamped from the checks the
345
+ // operation passed (K-34), so an operation that checks nothing writes a null
346
+ // there — indistinguishable from a row predating the column. A history read
347
+ // has to be driven against an event that actually recorded its authority.
348
+ 'test/emit-about-with-payload': (async (ctx, input) => {
349
+ assertAllowed(await ctx.check(permissionKey.parse('testmod:use')));
350
+ ctx.emit({
351
+ type: 'test.happened',
352
+ schemaVersion: 1,
353
+ entity: { entityType: 'test-thing', entityId: input.entityId },
354
+ piiClass: 'direct',
355
+ subjectId: dataSubjectId.parse(input.subject),
356
+ payload: { said: input.said },
357
+ });
358
+ }),
297
359
  'test/mutate-silently': ((ctx) => {
298
360
  ctx.sql.exec('CREATE TABLE IF NOT EXISTS quiet (n INTEGER NOT NULL)');
299
361
  ctx.sql.exec('INSERT INTO quiet (n) VALUES (1)');
@@ -374,8 +436,33 @@ const authorizedReadOp = async (ctx, input) => {
374
436
  assertAllowed(await ctx.check(input.permission));
375
437
  return ctx.sql.query('SELECT COUNT(*) AS n FROM testmod_items')[0].n;
376
438
  };
377
- const readOutboxOp = (ctx) => ctx.sql.query('SELECT id, type, authorization FROM _substrat_outbox ORDER BY id');
378
- const readDenialsOp = (ctx) => ctx.sql.query('SELECT actor, permission, tenant_id, scope_id, operation FROM _substrat_denials ORDER BY id');
439
+ const readOutboxOp = (ctx) => ctx.sql.query('SELECT id, type, authorization, impersonation FROM _substrat_outbox ORDER BY id');
440
+ const readDenialsOp = (ctx) => ctx.sql.query(`SELECT actor, permission, tenant_id, scope_id, operation, impersonation
441
+ FROM _substrat_denials ORDER BY id`);
442
+ // -- K-42 fixtures (#868) ----------------------------------------------------
443
+ // A read, a bare-SQL write, and an intent. The bare-SQL write is the one that
444
+ // matters: it goes through NO effecting verb, so a read-only session that only
445
+ // refused `ctx.emit` would let it commit. Its table is created in the handler
446
+ // rather than in a migration deliberately — this module has none, and a DDL
447
+ // statement is a write like any other, so a rolled-back session leaves no table
448
+ // behind either.
449
+ const noteWriteOp = async (ctx, input) => {
450
+ assertAllowed(await ctx.check(permissionKey.parse('perm:use')));
451
+ ctx.sql.exec('CREATE TABLE IF NOT EXISTS perm_notes (note TEXT NOT NULL)');
452
+ ctx.sql.exec('INSERT INTO perm_notes (note) VALUES (?)', [input.note]);
453
+ return { wrote: input.note };
454
+ };
455
+ const noteReadOp = (ctx) => {
456
+ ctx.sql.exec('CREATE TABLE IF NOT EXISTS perm_notes (note TEXT NOT NULL)');
457
+ return ctx.sql.query('SELECT note FROM perm_notes ORDER BY note').map((r) => r.note);
458
+ };
459
+ const requestIntentOp = async (ctx, input) => {
460
+ assertAllowed(await ctx.check(permissionKey.parse('perm:use')));
461
+ return ctx.requestPlatform({ kind: input.kind, payload: {} });
462
+ };
463
+ const readIntentsOp = (ctx) => ctx.sql.query('SELECT kind, requested_by, impersonation FROM _substrat_platform_requests ORDER BY id');
464
+ /** The identity a caller is running as, as `ctx` reports it — never the staff actor. */
465
+ const whoAmIOp = (ctx) => ctx.principal;
379
466
  // -- #770 sub-transaction handlers -------------------------------------------
380
467
  // Every write a sub-transaction can make is exercised in one place: a row, an
381
468
  // event, a link, and a platform intent. The storage transaction reaches all four
@@ -688,6 +775,28 @@ export const billedMod = {
688
775
  'billed/list-entitlements': (async (ctx) => ctx.entitlements()),
689
776
  },
690
777
  };
778
+ export const impersonationEchoMod = {
779
+ manifest: impersonationEchoManifest,
780
+ migrations: [
781
+ {
782
+ version: '0001-init',
783
+ sql: 'CREATE TABLE imp_echo (event_id TEXT PRIMARY KEY, impersonation TEXT)',
784
+ },
785
+ ],
786
+ operations: {
787
+ 'imp-echo/seen': ((ctx) => ctx.sql.query('SELECT event_id, impersonation FROM imp_echo ORDER BY event_id')),
788
+ },
789
+ consumers: {
790
+ // The stamp as the CONSUMER received it, JSON-encoded so an absent one and a
791
+ // null one stay distinguishable in the assertion.
792
+ 'perm.acted': ((ctx, event) => {
793
+ ctx.sql.exec('INSERT INTO imp_echo (event_id, impersonation) VALUES (?, ?)', [
794
+ event.id,
795
+ event.impersonation === undefined ? null : JSON.stringify(event.impersonation),
796
+ ]);
797
+ }),
798
+ },
799
+ };
691
800
  export const permMod = {
692
801
  manifest: permModManifest,
693
802
  operations: {
@@ -697,6 +806,12 @@ export const permMod = {
697
806
  'perm/authorized-read': authorizedReadOp,
698
807
  'perm/read-outbox': readOutboxOp,
699
808
  'perm/read-denials': readDenialsOp,
809
+ // K-42 (#868)
810
+ 'perm/write-note': noteWriteOp,
811
+ 'perm/read-notes': noteReadOp,
812
+ 'perm/request-intent': requestIntentOp,
813
+ 'perm/read-intents': readIntentsOp,
814
+ 'perm/whoami': whoAmIOp,
700
815
  // #304: read the request-time entitlement view — used by the scope-local (projected)
701
816
  // and CP-less path tests to prove a hosted vertical reads entitlements without a CP.
702
817
  'perm/read-entitlement': (async (ctx, key) => ctx.entitlement(key)),
@@ -1164,11 +1279,116 @@ export const concurrencyMod = {
1164
1279
  operationInputs: operationInputsOf(concurrencyDeclaration),
1165
1280
  operationConcurrency: operationConcurrencyOf(concurrencyDeclaration),
1166
1281
  };
1282
+ // -- #116: request idempotency ------------------------------------------------
1283
+ export const idempotencyModManifest = moduleManifest.parse({
1284
+ id: '@test/idempotency',
1285
+ version: '1.0.0',
1286
+ kernelContract: '^0.0.1',
1287
+ permissions: [{ key: 'idem:use', description: 'the idempotency fixture permission' }],
1288
+ events: { emits: [{ type: 'idem.created', schemaVersion: 1 }], consumes: [] },
1289
+ migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
1290
+ attachmentTargets: [],
1291
+ entitlementKey: 'idem',
1292
+ });
1293
+ const IDEM_USE = permissionKey.parse('idem:use');
1294
+ /**
1295
+ * The fixture that makes a duplicate VISIBLE.
1296
+ *
1297
+ * Every call appends a row, so "was this replayed?" is not answered by trusting
1298
+ * a flag the host set — it is answered by counting what the handler did. A suite
1299
+ * that asserted only on the returned value would pass just as happily against a
1300
+ * host that re-ran the operation and happened to produce the same answer, which
1301
+ * is precisely the bug (a second work order looks a lot like the first).
1302
+ */
1303
+ const idemCreate = async (ctx, input) => {
1304
+ assertAllowed(await ctx.check(IDEM_USE));
1305
+ ctx.sql.exec('CREATE TABLE IF NOT EXISTS idem_runs (run TEXT PRIMARY KEY, thing TEXT)');
1306
+ const run = ulid();
1307
+ ctx.sql.exec('INSERT INTO idem_runs (run, thing) VALUES (?, ?)', [run, input.thingId]);
1308
+ ctx.emit({
1309
+ type: 'idem.created',
1310
+ schemaVersion: 1,
1311
+ entity: { entityType: 'idem-thing', entityId: input.thingId },
1312
+ piiClass: 'none',
1313
+ payload: { label: input.label ?? null },
1314
+ });
1315
+ return { id: input.thingId, run, label: input.label ?? null };
1316
+ };
1317
+ /** Counts what actually ran — the suite's ground truth. */
1318
+ const idemRuns = async (ctx) => {
1319
+ assertAllowed(await ctx.check(IDEM_USE));
1320
+ ctx.sql.exec('CREATE TABLE IF NOT EXISTS idem_runs (run TEXT PRIMARY KEY, thing TEXT)');
1321
+ const rows = ctx.sql.query('SELECT run FROM idem_runs');
1322
+ return { count: rows.length };
1323
+ };
1324
+ /**
1325
+ * Fails after writing, every time.
1326
+ *
1327
+ * The write matters: it proves the recording rolls back with the work rather
1328
+ * than merely never being reached. A retry must execute, because nothing
1329
+ * happened the first time.
1330
+ */
1331
+ const idemFails = async (ctx, input) => {
1332
+ assertAllowed(await ctx.check(IDEM_USE));
1333
+ ctx.sql.exec('CREATE TABLE IF NOT EXISTS idem_runs (run TEXT PRIMARY KEY, thing TEXT)');
1334
+ ctx.sql.exec('INSERT INTO idem_runs (run, thing) VALUES (?, ?)', [ulid(), input.thingId]);
1335
+ throw new Error('idem/fails always fails');
1336
+ };
1337
+ /** Returns more than `IDEMPOTENCY_RESULT_LIMIT` — the recording that cannot be kept. */
1338
+ const idemBig = async (ctx, input) => {
1339
+ assertAllowed(await ctx.check(IDEM_USE));
1340
+ ctx.sql.exec('CREATE TABLE IF NOT EXISTS idem_runs (run TEXT PRIMARY KEY, thing TEXT)');
1341
+ ctx.sql.exec('INSERT INTO idem_runs (run, thing) VALUES (?, ?)', [ulid(), input.thingId]);
1342
+ return { id: input.thingId, blob: 'x'.repeat(IDEMPOTENCY_RESULT_LIMIT + 1) };
1343
+ };
1344
+ /**
1345
+ * Declares `idempotency: false` — its response is a credential in the story this
1346
+ * fixture tells, and must not be recorded. A key here is REFUSED.
1347
+ */
1348
+ const idemSecret = async (ctx, input) => {
1349
+ assertAllowed(await ctx.check(IDEM_USE));
1350
+ ctx.sql.exec('CREATE TABLE IF NOT EXISTS idem_runs (run TEXT PRIMARY KEY, thing TEXT)');
1351
+ ctx.sql.exec('INSERT INTO idem_runs (run, thing) VALUES (?, ?)', [ulid(), input.thingId]);
1352
+ return { id: input.thingId, secret: 'never-recorded' };
1353
+ };
1354
+ const idempotencyDeclaration = {
1355
+ 'idem/create': {
1356
+ input: z.object({ thingId: z.string(), label: z.string().optional() }),
1357
+ },
1358
+ // Guarded AND idempotent — the two seams on one operation, which is the case
1359
+ // that proves a replay hands back the original's tag rather than no tag.
1360
+ 'idem/create-guarded': {
1361
+ input: z.object({ thingId: z.string(), label: z.string().optional() }),
1362
+ concurrency: { over: 'idem-thing', idFrom: 'thingId' },
1363
+ },
1364
+ 'idem/runs': { input: z.object({}) },
1365
+ 'idem/fails': { input: z.object({ thingId: z.string() }) },
1366
+ 'idem/big': { input: z.object({ thingId: z.string() }) },
1367
+ 'idem/secret': { input: z.object({ thingId: z.string() }), idempotency: false },
1368
+ };
1369
+ export const idempotencyMod = {
1370
+ manifest: idempotencyModManifest,
1371
+ operations: {
1372
+ 'idem/create': idemCreate,
1373
+ 'idem/create-guarded': idemCreate,
1374
+ 'idem/runs': idemRuns,
1375
+ 'idem/fails': idemFails,
1376
+ 'idem/big': idemBig,
1377
+ 'idem/secret': idemSecret,
1378
+ },
1379
+ operationInputs: operationInputsOf(idempotencyDeclaration),
1380
+ operationConcurrency: operationConcurrencyOf(idempotencyDeclaration),
1381
+ operationIdempotencyOptOuts: operationIdempotencyOptOutsOf(idempotencyDeclaration),
1382
+ };
1167
1383
  export const contractTestModules = [
1168
1384
  ...contractTestInitialModules,
1169
1385
  lateMod,
1170
1386
  billedMod,
1171
1387
  permMod,
1388
+ // K-42 (#868): the consumer that proves the two-actor stamp survives the outbox
1389
+ // read. It consumes `perm.acted` and writes one row per delivery; nothing else
1390
+ // in the kit reads `imp_echo`, so it is inert for every other suite.
1391
+ impersonationEchoMod,
1172
1392
  connectorMod,
1173
1393
  scheduleMod,
1174
1394
  atomicMod,
@@ -1176,6 +1396,7 @@ export const contractTestModules = [
1176
1396
  listMod,
1177
1397
  parseMod,
1178
1398
  concurrencyMod,
1399
+ idempotencyMod,
1179
1400
  ];
1180
1401
  export const brokenModManifest = moduleManifest.parse({
1181
1402
  id: '@test/broken',