@xemahq/contracts 0.27.0 → 0.29.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.
- package/dist/.source-stamp.json +2 -2
- package/dist/biome/index.d.ts +1 -0
- package/dist/biome/index.d.ts.map +1 -1
- package/dist/biome/index.js +1 -0
- package/dist/biome/index.js.map +1 -1
- package/dist/biome/lib/biome-component-process-facts.d.ts +11 -0
- package/dist/biome/lib/biome-component-process-facts.d.ts.map +1 -0
- package/dist/biome/lib/biome-component-process-facts.js +25 -0
- package/dist/biome/lib/biome-component-process-facts.js.map +1 -0
- package/dist/biome/lib/biome-component-vocabulary.d.ts +0 -6
- package/dist/biome/lib/biome-component-vocabulary.d.ts.map +1 -1
- package/dist/biome/lib/biome-component-vocabulary.js +1 -8
- package/dist/biome/lib/biome-component-vocabulary.js.map +1 -1
- package/dist/biome/lib/biome-component.d.ts +18 -5
- package/dist/biome/lib/biome-component.d.ts.map +1 -1
- package/dist/biome/lib/biome-component.js +11 -24
- package/dist/biome/lib/biome-component.js.map +1 -1
- package/dist/biome/lib/biome-manifest.d.ts +48 -6
- package/dist/biome/lib/biome-manifest.d.ts.map +1 -1
- package/dist/biome/xema-biome.schema.json +60 -14
- package/dist/distribution/index.d.ts +2 -0
- package/dist/distribution/index.d.ts.map +1 -1
- package/dist/distribution/index.js +2 -0
- package/dist/distribution/index.js.map +1 -1
- package/dist/distribution/lib/biome-closure.d.ts +136 -0
- package/dist/distribution/lib/biome-closure.d.ts.map +1 -0
- package/dist/distribution/lib/biome-closure.js +440 -0
- package/dist/distribution/lib/biome-closure.js.map +1 -0
- package/dist/distribution/lib/distribution-lock.d.ts +33 -2
- package/dist/distribution/lib/distribution-lock.d.ts.map +1 -1
- package/dist/distribution/lib/distribution-lock.js +85 -3
- package/dist/distribution/lib/distribution-lock.js.map +1 -1
- package/dist/distribution/lib/distribution-roots.d.ts +28 -0
- package/dist/distribution/lib/distribution-roots.d.ts.map +1 -0
- package/dist/distribution/lib/distribution-roots.js +45 -0
- package/dist/distribution/lib/distribution-roots.js.map +1 -0
- package/dist/distribution/lib/distribution.d.ts +4 -1
- package/dist/distribution/lib/distribution.d.ts.map +1 -1
- package/dist/distribution/lib/distribution.js +41 -1
- package/dist/distribution/lib/distribution.js.map +1 -1
- package/dist/distribution/lib/image-lock.d.ts +2 -1
- package/dist/distribution/lib/image-lock.d.ts.map +1 -1
- package/dist/distribution/lib/image-lock.js +1 -0
- package/dist/distribution/lib/image-lock.js.map +1 -1
- package/dist/process-topology/index.d.ts +1 -0
- package/dist/process-topology/index.d.ts.map +1 -1
- package/dist/process-topology/index.js +1 -0
- package/dist/process-topology/index.js.map +1 -1
- package/dist/process-topology/lib/composed-process-contract.d.ts +26 -0
- package/dist/process-topology/lib/composed-process-contract.d.ts.map +1 -0
- package/dist/process-topology/lib/composed-process-contract.js +46 -0
- package/dist/process-topology/lib/composed-process-contract.js.map +1 -0
- package/dist/process-topology/lib/process-topology.d.ts +23 -0
- package/dist/process-topology/lib/process-topology.d.ts.map +1 -1
- package/dist/process-topology/lib/process-topology.js +68 -1
- package/dist/process-topology/lib/process-topology.js.map +1 -1
- package/dist/process-topology/lib/resolve-process-topology.d.ts +29 -12
- package/dist/process-topology/lib/resolve-process-topology.d.ts.map +1 -1
- package/dist/process-topology/lib/resolve-process-topology.js +134 -86
- package/dist/process-topology/lib/resolve-process-topology.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,24 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ProcessTopologyViolationCode = void 0;
|
|
4
|
+
exports.deriveProcessMemberFacts = deriveProcessMemberFacts;
|
|
4
5
|
exports.isExactVersion = isExactVersion;
|
|
5
6
|
exports.resolveProcessTopology = resolveProcessTopology;
|
|
6
7
|
exports.assertProcessTopology = assertProcessTopology;
|
|
7
|
-
exports.oneProcessPerComponent = oneProcessPerComponent;
|
|
8
8
|
const biome_1 = require("../../biome");
|
|
9
9
|
const process_topology_1 = require("./process-topology");
|
|
10
10
|
var ProcessTopologyViolationCode;
|
|
11
11
|
(function (ProcessTopologyViolationCode) {
|
|
12
12
|
ProcessTopologyViolationCode["UnknownMember"] = "unknown-member";
|
|
13
|
-
ProcessTopologyViolationCode["
|
|
14
|
-
ProcessTopologyViolationCode["
|
|
15
|
-
ProcessTopologyViolationCode["MissingTrustClass"] = "missing-trust-class";
|
|
16
|
-
ProcessTopologyViolationCode["SingletonScaled"] = "singleton-scaled";
|
|
13
|
+
ProcessTopologyViolationCode["NotAService"] = "not-a-service";
|
|
14
|
+
ProcessTopologyViolationCode["RuntimeScheduled"] = "runtime-scheduled";
|
|
17
15
|
ProcessTopologyViolationCode["InvocationOnlyMember"] = "invocation-only-member";
|
|
18
|
-
ProcessTopologyViolationCode["
|
|
16
|
+
ProcessTopologyViolationCode["SingletonScaled"] = "singleton-scaled";
|
|
17
|
+
ProcessTopologyViolationCode["ExclusiveShared"] = "exclusive-shared";
|
|
19
18
|
ProcessTopologyViolationCode["FloatingMemberVersion"] = "floating-member-version";
|
|
20
19
|
ProcessTopologyViolationCode["KernelMajorDisagreement"] = "kernel-major-disagreement";
|
|
20
|
+
ProcessTopologyViolationCode["MixedBuildSources"] = "mixed-build-sources";
|
|
21
|
+
ProcessTopologyViolationCode["MixedTrustDomains"] = "mixed-trust-domains";
|
|
22
|
+
ProcessTopologyViolationCode["ForeignCodeBesideCustody"] = "foreign-code-beside-custody";
|
|
23
|
+
ProcessTopologyViolationCode["ForeignCodeBesideGovernedEgress"] = "foreign-code-beside-governed-egress";
|
|
21
24
|
})(ProcessTopologyViolationCode || (exports.ProcessTopologyViolationCode = ProcessTopologyViolationCode = {}));
|
|
25
|
+
function deriveProcessMemberFacts(component, context) {
|
|
26
|
+
return {
|
|
27
|
+
biomeId: context.biomeId,
|
|
28
|
+
componentKey: component.key,
|
|
29
|
+
componentKind: component.kind,
|
|
30
|
+
...(component.scheduler === undefined
|
|
31
|
+
? {}
|
|
32
|
+
: { scheduler: component.scheduler }),
|
|
33
|
+
scalingMode: component.requirements.scaling.mode,
|
|
34
|
+
...(component.processFacts === undefined
|
|
35
|
+
? {}
|
|
36
|
+
: { processFacts: component.processFacts }),
|
|
37
|
+
origin: context.origin,
|
|
38
|
+
version: context.version,
|
|
39
|
+
buildSource: context.buildSource,
|
|
40
|
+
...(context.kernelMajor === undefined
|
|
41
|
+
? {}
|
|
42
|
+
: { kernelMajor: context.kernelMajor }),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
22
45
|
const EXACT_VERSION = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
|
23
46
|
function isExactVersion(value) {
|
|
24
47
|
return EXACT_VERSION.test(value);
|
|
@@ -27,67 +50,85 @@ const REPLICABLE_SCALING_MODES = new Set([
|
|
|
27
50
|
biome_1.BiomeScalingMode.Horizontal,
|
|
28
51
|
biome_1.BiomeScalingMode.Partitioned,
|
|
29
52
|
]);
|
|
53
|
+
function isForeignCode(facts) {
|
|
54
|
+
return (facts.origin !== biome_1.BiomeOrigin.FirstParty ||
|
|
55
|
+
facts.processFacts?.foreignCodeExecution === true);
|
|
56
|
+
}
|
|
57
|
+
function buildSourceKey(source) {
|
|
58
|
+
return `${source.repository}@${source.commit}`;
|
|
59
|
+
}
|
|
60
|
+
function summarise(groups) {
|
|
61
|
+
return [...groups.entries()]
|
|
62
|
+
.map(([key, members]) => `${key} (${members.join(', ')})`)
|
|
63
|
+
.sort()
|
|
64
|
+
.join(' and ');
|
|
65
|
+
}
|
|
66
|
+
function group(map, key, member) {
|
|
67
|
+
const members = map.get(key) ?? [];
|
|
68
|
+
members.push(member);
|
|
69
|
+
map.set(key, members);
|
|
70
|
+
}
|
|
30
71
|
function resolveProcessTopology(input) {
|
|
31
72
|
const violations = [];
|
|
32
73
|
const facts = new Map();
|
|
33
|
-
for (const
|
|
74
|
+
for (const member of input.memberFacts) {
|
|
34
75
|
facts.set((0, process_topology_1.processMemberKey)({
|
|
35
|
-
biomeId:
|
|
36
|
-
componentKey:
|
|
37
|
-
}),
|
|
76
|
+
biomeId: member.biomeId,
|
|
77
|
+
componentKey: member.componentKey,
|
|
78
|
+
}), member);
|
|
38
79
|
}
|
|
39
|
-
const
|
|
80
|
+
const policy = input.topology.trustPolicy;
|
|
40
81
|
for (const process of input.topology.processes) {
|
|
41
|
-
const
|
|
82
|
+
const domains = new Map();
|
|
83
|
+
const buildSources = new Map();
|
|
42
84
|
const kernelMajors = new Map();
|
|
85
|
+
const custody = [];
|
|
86
|
+
const egress = [];
|
|
87
|
+
const foreign = [];
|
|
88
|
+
const shared = process.members.length > 1;
|
|
43
89
|
for (const member of process.members) {
|
|
44
90
|
const key = (0, process_topology_1.processMemberKey)(member);
|
|
45
|
-
placed.add(key);
|
|
46
91
|
const component = facts.get(key);
|
|
47
92
|
if (component === undefined) {
|
|
48
93
|
violations.push({
|
|
49
94
|
code: ProcessTopologyViolationCode.UnknownMember,
|
|
50
95
|
process: process.name,
|
|
51
96
|
member: key,
|
|
52
|
-
message: `process "${process.name}" names member "${key}", which
|
|
53
|
-
`
|
|
54
|
-
`Either the component does not
|
|
97
|
+
message: `process "${process.name}" names member "${key}", for which no ` +
|
|
98
|
+
`component facts were supplied from distribution ` +
|
|
99
|
+
`"${input.topology.distributionId}". Either the component does not ` +
|
|
100
|
+
`exist in the edition, or the caller did not read its facts — and ` +
|
|
101
|
+
`"could not check" is not "passed".`,
|
|
55
102
|
});
|
|
56
103
|
continue;
|
|
57
104
|
}
|
|
58
|
-
if (
|
|
105
|
+
if (component.componentKind !== biome_1.BiomeComponentKind.Service) {
|
|
59
106
|
violations.push({
|
|
60
|
-
code: ProcessTopologyViolationCode.
|
|
107
|
+
code: ProcessTopologyViolationCode.NotAService,
|
|
61
108
|
process: process.name,
|
|
62
109
|
member: key,
|
|
63
|
-
message: `"${key}"
|
|
64
|
-
`
|
|
65
|
-
`
|
|
110
|
+
message: `"${key}" is a ${component.componentKind} component, so it cannot be ` +
|
|
111
|
+
`a member of process "${process.name}". Only services are composed; ` +
|
|
112
|
+
`a ${component.componentKind} keeps the process its kind gives it.`,
|
|
66
113
|
});
|
|
67
114
|
}
|
|
68
|
-
if (component.
|
|
115
|
+
else if (component.scheduler === biome_1.BiomeComponentScheduler.Runtime) {
|
|
69
116
|
violations.push({
|
|
70
|
-
code: ProcessTopologyViolationCode.
|
|
117
|
+
code: ProcessTopologyViolationCode.RuntimeScheduled,
|
|
71
118
|
process: process.name,
|
|
72
119
|
member: key,
|
|
73
|
-
message: `"${key}"
|
|
74
|
-
`
|
|
75
|
-
`
|
|
120
|
+
message: `"${key}" is runtime-scheduled — the runtime plane launches its ` +
|
|
121
|
+
`instances on demand — so it is not a standing workload and cannot ` +
|
|
122
|
+
`be a member of process "${process.name}".`,
|
|
76
123
|
});
|
|
77
124
|
}
|
|
78
|
-
else {
|
|
79
|
-
const members = trustClasses.get(component.compositionTrustClass) ?? [];
|
|
80
|
-
members.push(key);
|
|
81
|
-
trustClasses.set(component.compositionTrustClass, members);
|
|
82
|
-
}
|
|
83
125
|
if (component.scalingMode === biome_1.BiomeScalingMode.InvocationOnly) {
|
|
84
126
|
violations.push({
|
|
85
127
|
code: ProcessTopologyViolationCode.InvocationOnlyMember,
|
|
86
128
|
process: process.name,
|
|
87
129
|
member: key,
|
|
88
130
|
message: `"${key}" is invocation-only, so nothing rosters it as a standing ` +
|
|
89
|
-
`workload and it cannot be a member of process "${process.name}"
|
|
90
|
-
`An invocation-only component is launched per invocation by the runner plane.`,
|
|
131
|
+
`workload and it cannot be a member of process "${process.name}".`,
|
|
91
132
|
});
|
|
92
133
|
}
|
|
93
134
|
else if (process.replicas.max > 1 &&
|
|
@@ -98,9 +139,18 @@ function resolveProcessTopology(input) {
|
|
|
98
139
|
member: key,
|
|
99
140
|
message: `"${key}" declares scaling.mode "${component.scalingMode}", so process ` +
|
|
100
141
|
`"${process.name}" may run at most one replica — it declares ` +
|
|
101
|
-
`replicas.max ${process.replicas.max}. ` +
|
|
102
|
-
`
|
|
103
|
-
|
|
142
|
+
`replicas.max ${process.replicas.max}. "Leader-elected" is singleton ` +
|
|
143
|
+
`plus a kernel-state lease, not a scaling mode.`,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
const exclusive = component.processFacts?.exclusive;
|
|
147
|
+
if (exclusive !== undefined && shared) {
|
|
148
|
+
violations.push({
|
|
149
|
+
code: ProcessTopologyViolationCode.ExclusiveShared,
|
|
150
|
+
process: process.name,
|
|
151
|
+
member: key,
|
|
152
|
+
message: `"${key}" declares a process-global constraint ("${exclusive.reason}"), ` +
|
|
153
|
+
`so it cannot share process "${process.name}" with any other member.`,
|
|
104
154
|
});
|
|
105
155
|
}
|
|
106
156
|
if (!isExactVersion(component.version)) {
|
|
@@ -110,59 +160,71 @@ function resolveProcessTopology(input) {
|
|
|
110
160
|
member: key,
|
|
111
161
|
message: `"${key}" resolves to "${component.version}", which is not an exact ` +
|
|
112
162
|
`version. A floating range would decide what shares a heap at install ` +
|
|
113
|
-
`time, so two installs of one edition could differ
|
|
114
|
-
`in that heap" would be unanswerable after the fact.`,
|
|
163
|
+
`time, so two installs of one edition could differ.`,
|
|
115
164
|
});
|
|
116
165
|
}
|
|
166
|
+
group(domains, (0, process_topology_1.resolveTrustDomain)(component.biomeId, component.origin, policy), key);
|
|
167
|
+
group(buildSources, buildSourceKey(component.buildSource), key);
|
|
117
168
|
if (component.kernelMajor !== undefined) {
|
|
118
|
-
|
|
119
|
-
members.push(key);
|
|
120
|
-
kernelMajors.set(component.kernelMajor, members);
|
|
169
|
+
group(kernelMajors, String(component.kernelMajor), key);
|
|
121
170
|
}
|
|
171
|
+
if (component.processFacts?.credentialCustody === true)
|
|
172
|
+
custody.push(key);
|
|
173
|
+
if (component.processFacts?.governedEgressEdge === true)
|
|
174
|
+
egress.push(key);
|
|
175
|
+
if (isForeignCode(component))
|
|
176
|
+
foreign.push(key);
|
|
122
177
|
}
|
|
123
|
-
if (
|
|
124
|
-
const summary = [...trustClasses.entries()]
|
|
125
|
-
.map(([trustClass, members]) => `${trustClass} (${members.join(', ')})`)
|
|
126
|
-
.sort()
|
|
127
|
-
.join(' and ');
|
|
178
|
+
if (domains.size > 1) {
|
|
128
179
|
violations.push({
|
|
129
|
-
code: ProcessTopologyViolationCode.
|
|
180
|
+
code: ProcessTopologyViolationCode.MixedTrustDomains,
|
|
130
181
|
process: process.name,
|
|
131
|
-
message: `process "${process.name}" mixes trust
|
|
132
|
-
`
|
|
133
|
-
`
|
|
134
|
-
`
|
|
135
|
-
|
|
182
|
+
message: `process "${process.name}" mixes trust domains: ${summarise(domains)}. ` +
|
|
183
|
+
`One process is ONE security boundary, so its members must be one ` +
|
|
184
|
+
`domain. To co-locate them deliberately, assign their biomes to one ` +
|
|
185
|
+
`domain in the deployment's trustPolicy; otherwise declare more processes.`,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
const foreignOnly = (keys) => foreign.filter((key) => !keys.includes(key));
|
|
189
|
+
if (custody.length > 0 && foreignOnly(custody).length > 0) {
|
|
190
|
+
violations.push({
|
|
191
|
+
code: ProcessTopologyViolationCode.ForeignCodeBesideCustody,
|
|
192
|
+
process: process.name,
|
|
193
|
+
message: `process "${process.name}" places foreign code (${foreignOnly(custody).join(', ')}) ` +
|
|
194
|
+
`beside credential-custody material (${custody.join(', ')}). Code in the ` +
|
|
195
|
+
`same heap can read the keys; no trust policy can admit this.`,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (egress.length > 0 && foreignOnly(egress).length > 0) {
|
|
199
|
+
violations.push({
|
|
200
|
+
code: ProcessTopologyViolationCode.ForeignCodeBesideGovernedEgress,
|
|
201
|
+
process: process.name,
|
|
202
|
+
message: `process "${process.name}" places foreign code (${foreignOnly(egress).join(', ')}) ` +
|
|
203
|
+
`beside a governed egress edge (${egress.join(', ')}). Foreign code would ` +
|
|
204
|
+
`inherit the edge's network reach and bypass its control from the same ` +
|
|
205
|
+
`heap; no trust policy can admit this.`,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
if (buildSources.size > 1) {
|
|
209
|
+
violations.push({
|
|
210
|
+
code: ProcessTopologyViolationCode.MixedBuildSources,
|
|
211
|
+
process: process.name,
|
|
212
|
+
message: `process "${process.name}" mixes builds: ${summarise(buildSources)}. ` +
|
|
213
|
+
`Members of one process share one module graph, and a composed image ` +
|
|
214
|
+
`is built from ONE repository at ONE commit — so every member must come ` +
|
|
215
|
+
`from the same build.`,
|
|
136
216
|
});
|
|
137
217
|
}
|
|
138
218
|
if (kernelMajors.size > 1) {
|
|
139
|
-
const summary = [...kernelMajors.entries()]
|
|
140
|
-
.map(([major, members]) => `${major} (${members.join(', ')})`)
|
|
141
|
-
.sort()
|
|
142
|
-
.join(' and ');
|
|
143
219
|
violations.push({
|
|
144
220
|
code: ProcessTopologyViolationCode.KernelMajorDisagreement,
|
|
145
221
|
process: process.name,
|
|
146
|
-
message: `process "${process.name}" mixes kernel majors: ${
|
|
222
|
+
message: `process "${process.name}" mixes kernel majors: ${summarise(kernelMajors)}. ` +
|
|
147
223
|
`Members of one process share one module graph, so they must resolve one ` +
|
|
148
|
-
`compatible kernel major
|
|
149
|
-
`discovered at boot.`,
|
|
224
|
+
`compatible kernel major.`,
|
|
150
225
|
});
|
|
151
226
|
}
|
|
152
227
|
}
|
|
153
|
-
for (const component of input.composableComponents) {
|
|
154
|
-
const key = (0, process_topology_1.processMemberKey)(component);
|
|
155
|
-
if (placed.has(key))
|
|
156
|
-
continue;
|
|
157
|
-
violations.push({
|
|
158
|
-
code: ProcessTopologyViolationCode.UnplacedComponent,
|
|
159
|
-
member: key,
|
|
160
|
-
message: `"${key}" is a composable component of distribution ` +
|
|
161
|
-
`"${input.topology.distributionId}" and no process contains it. ` +
|
|
162
|
-
`A topology declares where EVERY composable component runs; an omission ` +
|
|
163
|
-
`would silently drop a service from the installation.`,
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
228
|
return violations;
|
|
167
229
|
}
|
|
168
230
|
function assertProcessTopology(input) {
|
|
@@ -174,18 +236,4 @@ function assertProcessTopology(input) {
|
|
|
174
236
|
`(${violations.length} violation${violations.length === 1 ? '' : 's'}):\n` +
|
|
175
237
|
lines.join('\n'));
|
|
176
238
|
}
|
|
177
|
-
function oneProcessPerComponent(distributionId, components, listenPort) {
|
|
178
|
-
return {
|
|
179
|
-
schemaVersion: 1,
|
|
180
|
-
distributionId,
|
|
181
|
-
processes: components.map((component) => ({
|
|
182
|
-
name: `${component.biomeId}-${component.componentKey}`,
|
|
183
|
-
members: [
|
|
184
|
-
{ biomeId: component.biomeId, componentKey: component.componentKey },
|
|
185
|
-
],
|
|
186
|
-
replicas: { min: 1, max: 1 },
|
|
187
|
-
listen: { port: listenPort },
|
|
188
|
-
})),
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
239
|
//# sourceMappingURL=resolve-process-topology.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-process-topology.js","sourceRoot":"","sources":["../../../src/process-topology/lib/resolve-process-topology.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"resolve-process-topology.js","sourceRoot":"","sources":["../../../src/process-topology/lib/resolve-process-topology.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "Consolidated Xema OS kernel wire contracts — pure types + zod schemas for the kernel protocol surfaces. One package, one npm scope, wildcard per-surface subpath exports. No framework/runtime deps.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",
|