@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "sourceCommit": "9ddd392f308b6117596141fe62ff9e593c97b574",
3
+ "sourceCommit": "613d5262e9af9c28c79ae7622a9f6ef3c5067007",
4
4
  "digest": "6eb6ed3d49a71b4696b3de94ded50876b71e186f6ba5fdf670041364d8a853fe",
5
5
  "versions": [
6
6
  {
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.21",
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": "9ddd392f308b6117596141fe62ff9e593c97b574",
41
+ "sourceCommit": "613d5262e9af9c28c79ae7622a9f6ef3c5067007",
42
42
  "digest": "6eb6ed3d49a71b4696b3de94ded50876b71e186f6ba5fdf670041364d8a853fe"
43
43
  }
44
44
  }
@@ -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
- const dependencies = { ...standardManifest.devDependencies, ...pack.devDependencies, ...policy.tools, [s.package]: s.version };
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: [] });