@volter/twin-catalog 0.2.21 → 0.2.22
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/catalog.json +1 -1
- package/docs/process.md +2 -0
- package/package.json +2 -2
- package/runner/prepare.mjs +9 -2
package/catalog.json
CHANGED
package/docs/process.md
CHANGED
|
@@ -156,6 +156,8 @@ artifact digest is independently recomputed. Private-source publication without
|
|
|
156
156
|
|
|
157
157
|
Resend client conformance uses its official Node SDK at the demanded application's exact 6.6.0 pin: a single send and readback, a batch and individual readbacks, and the documented missing-required-field refusal. Mail remains synthetic. Passing these cases establishes those operations, not live delivery or complete SDK coverage.
|
|
158
158
|
|
|
159
|
+
The released standard owns the development SDK versions used by its client cases. Candidate development dependencies supply additional clients but cannot override an evaluator-owned version. Preparation retains `clientDependencyChoices` for differing requested ranges and the resolved dependency lock. These cases measure the selected evaluator client; they do not establish compatibility with every SDK range in the candidate manifest.
|
|
160
|
+
|
|
159
161
|
The versioned `@volter/twin-standard` owns the checks and machine-readable assessment API. The catalog invokes it;
|
|
160
162
|
it does not implement another Protocol 3 grader or journey engine. Evaluation occurs inside a task-owned World.
|
|
161
163
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/twin-catalog",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.22",
|
|
4
4
|
"description": "The moderated twin distribution: approved versions and submission tooling for independent publishers.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"evidence"
|
|
39
39
|
],
|
|
40
40
|
"catalog": {
|
|
41
|
-
"sourceCommit": "
|
|
41
|
+
"sourceCommit": "613d5262e9af9c28c79ae7622a9f6ef3c5067007",
|
|
42
42
|
"digest": "6eb6ed3d49a71b4696b3de94ded50876b71e186f6ba5fdf670041364d8a853fe"
|
|
43
43
|
}
|
|
44
44
|
}
|
package/runner/prepare.mjs
CHANGED
|
@@ -35,7 +35,14 @@ for (const group of ['dependencies', 'optionalDependencies', 'peerDependencies',
|
|
|
35
35
|
// The standard's client cases and the pack's declared SDK examples need their pinned development clients too.
|
|
36
36
|
// This installs data only; candidate scripts never execute in the networked preparation phase.
|
|
37
37
|
const standardManifest = read('/opt/catalog/node_modules/@volter/twin-standard/package.json');
|
|
38
|
-
|
|
38
|
+
// Evaluator client cases run against the released standard's clients. The candidate's development manifest
|
|
39
|
+
// supplies additional clients; it cannot replace one used by that evaluator. Retain collisions as conditions,
|
|
40
|
+
// rather than claiming these cases measured the candidate's different SDK range.
|
|
41
|
+
const clientDependencyChoices = Object.entries(pack.devDependencies ?? {}).flatMap(([name, candidate]) => {
|
|
42
|
+
const evaluator = standardManifest.devDependencies?.[name];
|
|
43
|
+
return evaluator && evaluator !== candidate ? [{ name, candidate, evaluator, selected: evaluator }] : [];
|
|
44
|
+
});
|
|
45
|
+
const dependencies = { ...pack.devDependencies, ...standardManifest.devDependencies, ...policy.tools, [s.package]: s.version };
|
|
39
46
|
requireThat(!Object.hasOwn(policy.tools, s.package), 'submission collides with evaluator tooling');
|
|
40
47
|
write('/work/package.json', { name: 'catalog-assessment', private: true, dependencies });
|
|
41
48
|
await installationMetadata(s, policy.registry);
|
|
@@ -83,5 +90,5 @@ const packageMetadata = {
|
|
|
83
90
|
repositoryDirectory: typeof pack.repository === 'object' ? pack.repository.directory ?? null : null,
|
|
84
91
|
bugs: typeof pack.bugs === 'string' ? pack.bugs : pack.bugs?.url ?? null,
|
|
85
92
|
};
|
|
86
|
-
write('/work/prepared.json', { schemaVersion: 1, submission: s, integrity: s.integrity, provenance, packageMetadata, dependencyLockSha256: digest(readFileSync('/work/package-lock.json', 'utf8')), clientSdkLocks, tools: policy.tools });
|
|
93
|
+
write('/work/prepared.json', { schemaVersion: 1, submission: s, integrity: s.integrity, provenance, packageMetadata, dependencyLockSha256: digest(readFileSync('/work/package-lock.json', 'utf8')), clientSdkLocks, clientDependencyChoices, tools: policy.tools });
|
|
87
94
|
write('/work/world.json', { id: 'catalog-assessment', network: { egress: [] }, services: [] });
|