@hona/openeval 0.5.7 → 0.5.8

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/VERIFICATION.md CHANGED
@@ -93,7 +93,9 @@ evidence. Do not put evaluator scripts in candidate workspaces.
93
93
  ## Readable judgments and controls
94
94
 
95
95
  Retained code judgments stay scored when a metadata-only identity change leaves
96
- the exact self-contained executable unchanged. The reader verifies both recorded
96
+ the comment-free self-contained executable unchanged. Generated bundle comments
97
+ and debug IDs are excluded; string literals remain executable input.
98
+ The reader verifies both recorded
97
99
  identities and rejects changed source, external package imports, unknown metadata,
98
100
  or a different execution protocol. This check makes no model calls and rewrites
99
101
  no evidence. A completed code verification is still required. Package/lockfile
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hona/openeval",
3
- "version": "0.5.7",
3
+ "version": "0.5.8",
4
4
  "description": "Code and LLM evaluations with isolated agents, recorded OpenCode data, and a results viewer",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -18,7 +18,8 @@ function portableDirectories(source: string) {
18
18
  }
19
19
 
20
20
  /** An unchanged self-contained executable can retain judgments whose older
21
- * identity included host package manifests and lockfiles. This is a read-only
21
+ * identity included host package manifests and lockfiles. Generated comments
22
+ * and debug IDs are not executable input. This is a read-only
22
23
  * identity check, not a rewrite of recorded code or a changed scoring rule.
23
24
  * External packages still require their exact executable identity. */
24
25
  export function recordedCodeMatches(
@@ -27,7 +28,8 @@ export function recordedCodeMatches(
27
28
  ) {
28
29
  if (!recorded) return false;
29
30
  if (recorded.hash === expected.hash) return true;
30
- if (!expected.source.trim() || expected.source !== recorded.source ||
31
+ if (!expected.source.trim() ||
32
+ printer.transformSync(expected.source) !== printer.transformSync(recorded.source) ||
31
33
  Object.keys(expected.dependencies).length !== 0) return false;
32
34
  const imports = new Bun.Transpiler({ loader: "js" }).scan(expected.source).imports;
33
35
  if (imports.some(item => !item.path.startsWith("node:") && !item.path.startsWith("bun:"))) return false;