@rotifer/playground 0.30.2 → 0.31.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/CHANGELOG.md +26 -0
- package/README.md +6 -6
- package/README.zh.md +1 -1
- package/dist/arena/invalidation-criteria.js +8 -8
- package/dist/commands/agent-create.js +1 -1
- package/dist/commands/agent-create.js.map +1 -1
- package/dist/commands/arena-submit.d.ts.map +1 -1
- package/dist/commands/arena-submit.js +34 -10
- package/dist/commands/arena-submit.js.map +1 -1
- package/dist/commands/arena-watch.js +1 -1
- package/dist/commands/arena-watch.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +15 -8
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +3 -9
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/vg.d.ts.map +1 -1
- package/dist/commands/vg.js +18 -1
- package/dist/commands/vg.js.map +1 -1
- package/dist/commands/wrap.d.ts +6 -0
- package/dist/commands/wrap.d.ts.map +1 -1
- package/dist/commands/wrap.js +12 -3
- package/dist/commands/wrap.js.map +1 -1
- package/dist/publish/pre-publish-check.d.ts.map +1 -1
- package/dist/publish/pre-publish-check.js +12 -0
- package/dist/publish/pre-publish-check.js.map +1 -1
- package/dist/scanner/index.d.ts +1 -1
- package/dist/scanner/index.d.ts.map +1 -1
- package/dist/scanner/index.js +2 -1
- package/dist/scanner/index.js.map +1 -1
- package/dist/scanner/rules.d.ts +1 -1
- package/dist/scanner/rules.d.ts.map +1 -1
- package/dist/scanner/rules.js +14 -1
- package/dist/scanner/rules.js.map +1 -1
- package/dist/scanner/scanner.d.ts +2 -0
- package/dist/scanner/scanner.d.ts.map +1 -1
- package/dist/scanner/scanner.js +60 -6
- package/dist/scanner/scanner.js.map +1 -1
- package/dist/scanner/types.d.ts +3 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/testsuite/gate.d.ts +6 -3
- package/dist/testsuite/gate.d.ts.map +1 -1
- package/dist/testsuite/gate.js +15 -6
- package/dist/testsuite/gate.js.map +1 -1
- package/dist/utils/fidelity-discount.d.ts +24 -0
- package/dist/utils/fidelity-discount.d.ts.map +1 -1
- package/dist/utils/fidelity-discount.js +35 -0
- package/dist/utils/fidelity-discount.js.map +1 -1
- package/dist/utils/javy-compiler.d.ts +25 -0
- package/dist/utils/javy-compiler.d.ts.map +1 -1
- package/dist/utils/javy-compiler.js +84 -1
- package/dist/utils/javy-compiler.js.map +1 -1
- package/genes/gene-health-scanner/index.ts +476 -0
- package/genes/gene-health-scanner/phenotype.json +47 -0
- package/genes/genesis-web-search/index.ts +5 -3
- package/genes/genesis-web-search/phenotype.json +2 -2
- package/genes/genesis-web-search-lite/phenotype.json +2 -2
- package/package.json +5 -5
package/dist/scanner/scanner.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unscannedLanguages = unscannedLanguages;
|
|
3
4
|
exports.scanFile = scanFile;
|
|
4
5
|
exports.computeGrade = computeGrade;
|
|
5
6
|
exports.scan = scan;
|
|
@@ -8,22 +9,28 @@ const node_path_1 = require("node:path");
|
|
|
8
9
|
const rules_js_1 = require("./rules.js");
|
|
9
10
|
const literals_js_1 = require("./literals.js");
|
|
10
11
|
const CODE_EXTENSIONS = new Set([".ts", ".js", ".mts", ".mjs", ".cjs", ".tsx", ".jsx", ".sh", ".py"]);
|
|
12
|
+
// Source files V(g) has no rules for. They are not read, but they are named in
|
|
13
|
+
// the result: a gene written only in Rust otherwise looks exactly like a gene
|
|
14
|
+
// with no code at all.
|
|
15
|
+
const UNSUPPORTED_CODE_EXTENSIONS = new Set([
|
|
16
|
+
".rs", ".go", ".c", ".h", ".cc", ".cpp", ".hpp", ".zig", ".java", ".kt", ".swift", ".rb", ".cs",
|
|
17
|
+
]);
|
|
11
18
|
// Files whose literals maskJsLiterals understands. .tsx/.jsx are left out (JSX
|
|
12
19
|
// text such as `Don't` is not a string literal), as are .sh and .py, whose
|
|
13
20
|
// quoting rules differ; those keep raw-line matching for every rule.
|
|
14
21
|
const JS_EXTENSIONS = new Set([".ts", ".js", ".mts", ".mjs", ".cjs"]);
|
|
15
|
-
function collectCodeFiles(dir) {
|
|
22
|
+
function collectCodeFiles(dir, extensions = CODE_EXTENSIONS, skip = []) {
|
|
16
23
|
const files = [];
|
|
17
24
|
const walk = (d) => {
|
|
18
25
|
for (const entry of (0, node_fs_1.readdirSync)(d)) {
|
|
19
|
-
if (entry === "node_modules" || entry === ".git" || entry === "dist")
|
|
26
|
+
if (entry === "node_modules" || entry === ".git" || entry === "dist" || skip.includes(entry))
|
|
20
27
|
continue;
|
|
21
28
|
const full = (0, node_path_1.join)(d, entry);
|
|
22
29
|
const st = (0, node_fs_1.statSync)(full);
|
|
23
30
|
if (st.isDirectory()) {
|
|
24
31
|
walk(full);
|
|
25
32
|
}
|
|
26
|
-
else if (
|
|
33
|
+
else if (extensions.has((0, node_path_1.extname)(entry))) {
|
|
27
34
|
files.push(full);
|
|
28
35
|
}
|
|
29
36
|
}
|
|
@@ -34,6 +41,47 @@ function collectCodeFiles(dir) {
|
|
|
34
41
|
function hasSrcDirectory(dir) {
|
|
35
42
|
return (0, node_fs_1.existsSync)((0, node_path_1.join)(dir, "src"));
|
|
36
43
|
}
|
|
44
|
+
/** Code files directly in `dir`, not in its subdirectories. */
|
|
45
|
+
function collectTopLevelCodeFiles(dir, extensions = CODE_EXTENSIONS) {
|
|
46
|
+
return (0, node_fs_1.readdirSync)(dir)
|
|
47
|
+
.map((entry) => (0, node_path_1.join)(dir, entry))
|
|
48
|
+
.filter((full) => (0, node_fs_1.statSync)(full).isFile() && extensions.has((0, node_path_1.extname)(full)));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Which files a scan reads:
|
|
52
|
+
* - `--all`: every code file under `dir`.
|
|
53
|
+
* - otherwise src/ when it exists — a Skill's code lives there;
|
|
54
|
+
* - otherwise the code files at the top level of `dir`, not below it. Genes
|
|
55
|
+
* keep index.ts at the gene root (every Genesis gene does), and reading
|
|
56
|
+
* only src/ left all of them ungraded. Subdirectories stay out so that
|
|
57
|
+
* test fixtures and vendored files are not graded as the gene.
|
|
58
|
+
*/
|
|
59
|
+
function selectFiles(dir, shouldScanAll) {
|
|
60
|
+
if (shouldScanAll)
|
|
61
|
+
return collectCodeFiles(dir);
|
|
62
|
+
if (hasSrcDirectory(dir))
|
|
63
|
+
return collectCodeFiles((0, node_path_1.join)(dir, "src"));
|
|
64
|
+
return collectTopLevelCodeFiles(dir);
|
|
65
|
+
}
|
|
66
|
+
/** The files selectFiles would have read had V(g) rules for their language.
|
|
67
|
+
* `target/` is skipped: it is Rust's build output, not the gene's source. */
|
|
68
|
+
function selectUnscanned(dir, shouldScanAll) {
|
|
69
|
+
const files = shouldScanAll
|
|
70
|
+
? collectCodeFiles(dir, UNSUPPORTED_CODE_EXTENSIONS, ["target"])
|
|
71
|
+
: hasSrcDirectory(dir)
|
|
72
|
+
? collectCodeFiles((0, node_path_1.join)(dir, "src"), UNSUPPORTED_CODE_EXTENSIONS, ["target"])
|
|
73
|
+
: collectTopLevelCodeFiles(dir, UNSUPPORTED_CODE_EXTENSIONS);
|
|
74
|
+
return files.map((f) => (0, node_path_1.relative)(dir, f)).sort();
|
|
75
|
+
}
|
|
76
|
+
/** ".rs" files → "Rust"; unknown extensions are named by extension. */
|
|
77
|
+
function unscannedLanguages(files) {
|
|
78
|
+
const names = {
|
|
79
|
+
".rs": "Rust", ".go": "Go", ".c": "C", ".h": "C", ".cc": "C++", ".cpp": "C++", ".hpp": "C++",
|
|
80
|
+
".zig": "Zig", ".java": "Java", ".kt": "Kotlin", ".swift": "Swift", ".rb": "Ruby", ".cs": "C#",
|
|
81
|
+
};
|
|
82
|
+
const langs = [...new Set(files.map((f) => names[(0, node_path_1.extname)(f)] ?? (0, node_path_1.extname)(f)))];
|
|
83
|
+
return langs.join(", ");
|
|
84
|
+
}
|
|
37
85
|
function scanFile(filePath, rootDir) {
|
|
38
86
|
const content = (0, node_fs_1.readFileSync)(filePath, "utf-8");
|
|
39
87
|
const lines = content.split("\n");
|
|
@@ -75,17 +123,22 @@ function computeGrade(findings) {
|
|
|
75
123
|
}
|
|
76
124
|
function scan(dir, skillId, options) {
|
|
77
125
|
const shouldScanAll = options?.scanAll ?? false;
|
|
78
|
-
|
|
126
|
+
const files = selectFiles(dir, shouldScanAll);
|
|
127
|
+
const unscanned = selectUnscanned(dir, shouldScanAll);
|
|
128
|
+
const unscannedField = unscanned.length > 0 ? { unscanned } : {};
|
|
129
|
+
// No code read, no grade. computeGrade([]) is "A", and `--all` over a
|
|
130
|
+
// directory without code used to report exactly that: a clean result for
|
|
131
|
+
// code that was never looked at.
|
|
132
|
+
if (files.length === 0) {
|
|
79
133
|
return {
|
|
80
134
|
skill_id: skillId ?? dir,
|
|
81
135
|
scanned_at: new Date().toISOString(),
|
|
82
136
|
grade: "?",
|
|
83
137
|
findings: [],
|
|
84
138
|
stats: { files_scanned: 0, lines_of_code: 0 },
|
|
139
|
+
...unscannedField,
|
|
85
140
|
};
|
|
86
141
|
}
|
|
87
|
-
const scanDir = shouldScanAll ? dir : (0, node_path_1.join)(dir, "src");
|
|
88
|
-
const files = collectCodeFiles(scanDir);
|
|
89
142
|
const allFindings = [];
|
|
90
143
|
let totalLines = 0;
|
|
91
144
|
for (const file of files) {
|
|
@@ -102,6 +155,7 @@ function scan(dir, skillId, options) {
|
|
|
102
155
|
files_scanned: files.length,
|
|
103
156
|
lines_of_code: totalLines,
|
|
104
157
|
},
|
|
158
|
+
...unscannedField,
|
|
105
159
|
};
|
|
106
160
|
}
|
|
107
161
|
//# sourceMappingURL=scanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"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"}
|
package/dist/scanner/types.d.ts
CHANGED
|
@@ -30,5 +30,8 @@ export interface ScanResult {
|
|
|
30
30
|
files_scanned: number;
|
|
31
31
|
lines_of_code: number;
|
|
32
32
|
};
|
|
33
|
+
/** Source files in a language V(g) has no rules for (e.g. Rust), relative to
|
|
34
|
+
* the scanned directory. They were not read: present only when there are any. */
|
|
35
|
+
unscanned?: string[];
|
|
33
36
|
}
|
|
34
37
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scanner/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AACtD,MAAM,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scanner/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AACtD,MAAM,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF;qFACiF;IACjF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB"}
|
package/dist/testsuite/gate.d.ts
CHANGED
|
@@ -32,9 +32,12 @@ export interface GateInput {
|
|
|
32
32
|
run: GeneRunner | null;
|
|
33
33
|
}
|
|
34
34
|
export declare function evaluatePublishGate(input: GateInput): GateVerdict;
|
|
35
|
-
/** Adapter
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
/** Adapter from the sandbox's result to a RunOutcome, shared by `rotifer test`
|
|
36
|
+
* and `rotifer publish`. An ADR-334 refusal is a refusal, as on the Node path
|
|
37
|
+
* (readErrorEnvelope): ADR-334 counts explicit INVALID_INPUT as handling, not a
|
|
38
|
+
* crash. Every other failure — a trap, a host error code, an L0 block — is
|
|
39
|
+
* reported as crashed: the caller cannot tell it from a defect. See
|
|
40
|
+
* runNegative. */
|
|
38
41
|
export declare function outcomeFromSandbox(r: {
|
|
39
42
|
success: boolean;
|
|
40
43
|
output?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/testsuite/gate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEvD;;;;;;;;;GASG;AAEH,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAoBjD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7D;oDACgD;IAChD,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAoEjE;
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/testsuite/gate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEvD;;;;;;;;;GASG;AAEH,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAoBjD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7D;oDACgD;IAChD,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAoEjE;AAMD;;;;;kBAKkB;AAClB,wBAAgB,kBAAkB,CAAC,CAAC,EAAE;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,UAAU,CAMb;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUhE;AAED,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA2CvD"}
|
package/dist/testsuite/gate.js
CHANGED
|
@@ -86,13 +86,22 @@ function evaluatePublishGate(input) {
|
|
|
86
86
|
],
|
|
87
87
|
};
|
|
88
88
|
}
|
|
89
|
-
/**
|
|
90
|
-
*
|
|
91
|
-
|
|
89
|
+
/** The prefix the napi binding gives a GeneResult::Error{ INVALID_INPUT }
|
|
90
|
+
* (`"{code}: {message}"`), which only the ADR-334 envelope produces. */
|
|
91
|
+
const SANDBOX_REFUSAL_PREFIX = "INVALID_INPUT: ";
|
|
92
|
+
/** Adapter from the sandbox's result to a RunOutcome, shared by `rotifer test`
|
|
93
|
+
* and `rotifer publish`. An ADR-334 refusal is a refusal, as on the Node path
|
|
94
|
+
* (readErrorEnvelope): ADR-334 counts explicit INVALID_INPUT as handling, not a
|
|
95
|
+
* crash. Every other failure — a trap, a host error code, an L0 block — is
|
|
96
|
+
* reported as crashed: the caller cannot tell it from a defect. See
|
|
97
|
+
* runNegative. */
|
|
92
98
|
function outcomeFromSandbox(r) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
99
|
+
if (r.success)
|
|
100
|
+
return { success: true, output: r.output, durationMs: r.durationMs };
|
|
101
|
+
if (r.errorMessage?.startsWith(SANDBOX_REFUSAL_PREFIX)) {
|
|
102
|
+
return { success: false, errorMessage: r.errorMessage, durationMs: r.durationMs };
|
|
103
|
+
}
|
|
104
|
+
return { success: false, crashed: true, errorMessage: r.errorMessage ?? undefined };
|
|
96
105
|
}
|
|
97
106
|
/**
|
|
98
107
|
* Build a GeneRunner for a Wrapped gene, which has no IR and executes in its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/testsuite/gate.ts"],"names":[],"mappings":";;AAgDA,kDAoEC;
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/testsuite/gate.ts"],"names":[],"mappings":";;AAgDA,kDAoEC;AAYD,gDAWC;AA+BD,8CAUC;AAED,wCA8CC;AApOD,uCAAyC;AACzC,uCAA0C;AAC1C,qCAAiC;AAmBjC;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAG;IAC7B,iDAAiD;IACjD,+DAA+D;IAC/D,oEAAoE;IACpE,8DAA8D;IAC9D,4DAA4D;IAC5D,iDAAiD;CAClD,CAAC;AAWF,SAAgB,mBAAmB,CAAC,KAAgB;IAClD,MAAM,IAAI,GAAG,IAAA,uBAAa,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,+DAA+D;YACvE,QAAQ,EAAE,sBAAsB;SACjC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,6BAA6B;YACrC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,iDAAiD,CAAC;SAClF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACf,2EAA2E;QAC3E,2EAA2E;QAC3E,kDAAkD;QAClD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,oEAAoE;YAC5E,QAAQ,EAAE;gBACR,6DAA6D;gBAC7D,gDAAgD;aACjD;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,EAAE;QAC/B,WAAW,EAAG,KAAK,CAAC,SAAS,CAAC,WAAuC,IAAI,IAAI;QAC7E,YAAY,EAAG,KAAK,CAAC,SAAS,CAAC,YAAwC,IAAI,IAAI;QAC/E,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,kBAAkB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,SAAS;SAC3G,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;IAChC,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;KACtC,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7F,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,wCAAwC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClE,QAAQ,EAAE;YACR,GAAG,QAAQ;YACX,EAAE;YACF,8EAA8E;YAC9E,+EAA+E;YAC/E,kDAAkD;YAClD,2CAA2C;SAC5C;KACF,CAAC;AACJ,CAAC;AAED;wEACwE;AACxE,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEjD;;;;;kBAKkB;AAClB,SAAgB,kBAAkB,CAAC,CAKlC;IACC,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,SAAS,EAAE,CAAC;AACtF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,MAAe;IAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAiC,CAAC,CAAC;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,IAAI,GAAI,MAAkC,CAAC,eAAe,CAAC;IACjE,MAAM,OAAO,GACX,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,OAAQ,IAAgC,CAAC,OAAO,KAAK,QAAQ;QACxG,CAAC,CAAG,IAAgC,CAAC,OAAkB;QACvD,CAAC,CAAC,wBAAwB,CAAC;IAC/B,OAAO,kBAAkB,OAAO,EAAE,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,aAAqB,EACrB,EAAqC;IAErC,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,MAAM,IAAI,WAAW,EAAE,EAAE,CAAC;IAC/E,CAAC;IAED,IAAI,SAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAA,wBAAa,EAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC;QACnE,CAAC;QACD,SAAS,GAAG,GAAG,CAAC,OAAsC,CAAC;IACzD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,mCAAoC,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;IAChF,CAAC;IAED,MAAM,MAAM,GAAe,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAEhC,oEAAoE;YACpE,wEAAwE;YACxE,uEAAuE;YACvE,wEAAwE;YACxE,sEAAsE;YACtE,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;YACrF,CAAC;YAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5C,iEAAiE;gBACjE,uEAAuE;gBACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,mCAAmC,EAAE,CAAC;YAC9F,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
|
|
@@ -33,6 +33,30 @@ export interface DiscountedFitness {
|
|
|
33
33
|
* source and no artifact.
|
|
34
34
|
*/
|
|
35
35
|
export declare function fidelityDiscountFor(fidelity: string | null | undefined): number;
|
|
36
|
+
/**
|
|
37
|
+
* The tier a score is entitled to, given what actually ran.
|
|
38
|
+
*
|
|
39
|
+
* §5.1 gives Native 1.00 because "pure WASM execution is fully verifiable".
|
|
40
|
+
* A Gene that declares Native but did not run in the sandbox — no compiled
|
|
41
|
+
* artifact, no sandbox on this platform, or an estimate that runs nothing at
|
|
42
|
+
* all — earned none of that: its logic ran under Node.js or did not run. It
|
|
43
|
+
* takes the Wrapped discount, the tier that makes no claim about execution.
|
|
44
|
+
* Wrapped keeps its tier: it already claims nothing. Hybrid keeps its declared
|
|
45
|
+
* tier too, for now. Since ADR-327 a Hybrid gene comes in two shapes — Node.js
|
|
46
|
+
* behind the network gateway, or its own WASM in the sandbox reaching the
|
|
47
|
+
* network through `rotifer.net` — and §5.1's 0.85 rests on "the WASM portion
|
|
48
|
+
* remains verifiable", which a Hybrid that did not run in the sandbox did not
|
|
49
|
+
* show. Whether that one should drop a tier is not decided yet: `arena submit`
|
|
50
|
+
* does not run any Hybrid in the sandbox today, so lowering it now would leave
|
|
51
|
+
* no Hybrid able to earn 0.85.
|
|
52
|
+
*/
|
|
53
|
+
export declare function effectiveFidelity(declared: string | null | undefined, didRunInSandbox: boolean): string;
|
|
54
|
+
/**
|
|
55
|
+
* F(g) for the listings that estimate from the content hash and run nothing
|
|
56
|
+
* (`arena watch`, `agent create`). Nothing ran, so a declared Native is
|
|
57
|
+
* discounted as Wrapped (see effectiveFidelity).
|
|
58
|
+
*/
|
|
59
|
+
export declare function estimateUnexecutedFitness(declared: string | null | undefined, geneId: string): DiscountedFitness;
|
|
36
60
|
/** Apply the discount and return all three numbers the ledger wants. */
|
|
37
61
|
export declare function applyFidelityDiscount(baseFitness: number, fidelity: string | null | undefined): DiscountedFitness;
|
|
38
62
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fidelity-discount.d.ts","sourceRoot":"","sources":["../../src/utils/fidelity-discount.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,gBAAgB,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG/E;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,iBAAiB,CAOnB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1D"}
|
|
1
|
+
{"version":3,"file":"fidelity-discount.d.ts","sourceRoot":"","sources":["../../src/utils/fidelity-discount.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,gBAAgB,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG/E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,CAKvG;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,GACb,iBAAiB,CAEnB;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,iBAAiB,CAOnB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1D"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ESTIMATED_BASE_FITNESS = void 0;
|
|
4
4
|
exports.fidelityDiscountFor = fidelityDiscountFor;
|
|
5
|
+
exports.effectiveFidelity = effectiveFidelity;
|
|
6
|
+
exports.estimateUnexecutedFitness = estimateUnexecutedFitness;
|
|
5
7
|
exports.applyFidelityDiscount = applyFidelityDiscount;
|
|
6
8
|
exports.estimateBaseFitness = estimateBaseFitness;
|
|
7
9
|
const phenotype_js_1 = require("../types/phenotype.js");
|
|
@@ -18,6 +20,39 @@ function fidelityDiscountFor(fidelity) {
|
|
|
18
20
|
const key = (fidelity ?? "").trim().toLowerCase();
|
|
19
21
|
return phenotype_js_1.FIDELITY_DISCOUNT[key] ?? phenotype_js_1.FIDELITY_DISCOUNT.wrapped;
|
|
20
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* The tier a score is entitled to, given what actually ran.
|
|
25
|
+
*
|
|
26
|
+
* §5.1 gives Native 1.00 because "pure WASM execution is fully verifiable".
|
|
27
|
+
* A Gene that declares Native but did not run in the sandbox — no compiled
|
|
28
|
+
* artifact, no sandbox on this platform, or an estimate that runs nothing at
|
|
29
|
+
* all — earned none of that: its logic ran under Node.js or did not run. It
|
|
30
|
+
* takes the Wrapped discount, the tier that makes no claim about execution.
|
|
31
|
+
* Wrapped keeps its tier: it already claims nothing. Hybrid keeps its declared
|
|
32
|
+
* tier too, for now. Since ADR-327 a Hybrid gene comes in two shapes — Node.js
|
|
33
|
+
* behind the network gateway, or its own WASM in the sandbox reaching the
|
|
34
|
+
* network through `rotifer.net` — and §5.1's 0.85 rests on "the WASM portion
|
|
35
|
+
* remains verifiable", which a Hybrid that did not run in the sandbox did not
|
|
36
|
+
* show. Whether that one should drop a tier is not decided yet: `arena submit`
|
|
37
|
+
* does not run any Hybrid in the sandbox today, so lowering it now would leave
|
|
38
|
+
* no Hybrid able to earn 0.85.
|
|
39
|
+
*/
|
|
40
|
+
function effectiveFidelity(declared, didRunInSandbox) {
|
|
41
|
+
const tier = (declared ?? "").trim();
|
|
42
|
+
if (!tier)
|
|
43
|
+
return "Wrapped";
|
|
44
|
+
if (tier.toLowerCase() === "native" && !didRunInSandbox)
|
|
45
|
+
return "Wrapped";
|
|
46
|
+
return tier;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* F(g) for the listings that estimate from the content hash and run nothing
|
|
50
|
+
* (`arena watch`, `agent create`). Nothing ran, so a declared Native is
|
|
51
|
+
* discounted as Wrapped (see effectiveFidelity).
|
|
52
|
+
*/
|
|
53
|
+
function estimateUnexecutedFitness(declared, geneId) {
|
|
54
|
+
return applyFidelityDiscount(estimateBaseFitness(geneId), effectiveFidelity(declared, false));
|
|
55
|
+
}
|
|
21
56
|
/** Apply the discount and return all three numbers the ledger wants. */
|
|
22
57
|
function applyFidelityDiscount(baseFitness, fidelity) {
|
|
23
58
|
const fidelityDiscount = fidelityDiscountFor(fidelity);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fidelity-discount.js","sourceRoot":"","sources":["../../src/utils/fidelity-discount.ts"],"names":[],"mappings":";;;AAsCA,kDAGC;AAGD,sDAUC;AAeD,kDAIC;
|
|
1
|
+
{"version":3,"file":"fidelity-discount.js","sourceRoot":"","sources":["../../src/utils/fidelity-discount.ts"],"names":[],"mappings":";;;AAsCA,kDAGC;AAmBD,8CAKC;AAOD,8DAKC;AAGD,sDAUC;AAeD,kDAIC;AA7GD,wDAA0D;AA6B1D;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,QAAmC;IACrE,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,OAAO,gCAAiB,CAAC,GAAG,CAAC,IAAI,gCAAiB,CAAC,OAAO,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,iBAAiB,CAAC,QAAmC,EAAE,eAAwB;IAC7F,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CACvC,QAAmC,EACnC,MAAc;IAEd,OAAO,qBAAqB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,wEAAwE;AACxE,SAAgB,qBAAqB,CACnC,WAAmB,EACnB,QAAmC;IAEnC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO;QACL,WAAW;QACX,gBAAgB;QAChB,OAAO,EAAE,WAAW,GAAG,gBAAgB;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACU,QAAA,sBAAsB,GAAG,GAAG,CAAC;AAE1C,SAAgB,mBAAmB,CAAC,MAAc;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,8BAAsB,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -28,6 +28,31 @@ export declare function formatToolchainReport(status: ToolchainStatus, npxPath:
|
|
|
28
28
|
export declare function buildToolchainErrorMessage(status: ToolchainStatus): string;
|
|
29
29
|
/** True when the gene source has been edited after the WASM was last compiled (#58). */
|
|
30
30
|
export declare function isWasmStale(wasmPath: string, sourcePath: string): boolean;
|
|
31
|
+
/** Outcome of normalizeJavyClockSeed(); the module is unchanged unless "normalized". */
|
|
32
|
+
export interface ClockSeedResult {
|
|
33
|
+
wasm: Buffer;
|
|
34
|
+
status: "normalized" | "absent" | "ambiguous";
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Replace the compile-time clock javy bakes into a module with a fixed seed.
|
|
38
|
+
*
|
|
39
|
+
* javy 3.0.1 pre-initialises QuickJS and snapshots its heap; QuickJS seeds
|
|
40
|
+
* Math.random from gettimeofday() while doing so, and that 8-byte microsecond
|
|
41
|
+
* value lands in the Data section. It was the only difference between two
|
|
42
|
+
* compiles of the same source, and the v2 gene ID digests every standard
|
|
43
|
+
* section (ADR-340 D1), so every compile announced a new identity.
|
|
44
|
+
*
|
|
45
|
+
* The field is found by value, not by offset: the one little-endian u64 in the
|
|
46
|
+
* Data section that falls inside `windowUs`, the span javy was running. Exactly
|
|
47
|
+
* one match is required. None means this javy build does not do it (or does it
|
|
48
|
+
* differently); two means the guess is not safe. Either way the module is
|
|
49
|
+
* returned untouched and the caller says so — a wrong overwrite would corrupt
|
|
50
|
+
* the heap, an unnormalized module only loses reproducibility.
|
|
51
|
+
*
|
|
52
|
+
* Math.random was already fixed per artifact (the snapshot holds its state);
|
|
53
|
+
* this makes it fixed per source as well.
|
|
54
|
+
*/
|
|
55
|
+
export declare function normalizeJavyClockSeed(wasm: Buffer, windowUs: [from: number, to: number], seed: Buffer): ClockSeedResult;
|
|
31
56
|
export interface JavyCompileResult {
|
|
32
57
|
wasmPath: string;
|
|
33
58
|
bundleSize: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javy-compiler.d.ts","sourceRoot":"","sources":["../../src/utils/javy-compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"javy-compiler.d.ts","sourceRoot":"","sources":["../../src/utils/javy-compiler.ts"],"names":[],"mappings":"AAMA,wGAAwG;AACxG,qBAAa,iBAAkB,SAAQ,KAAK;IACjC,IAAI,SAAuB;CACrC;AAED,gGAAgG;AAChG,qBAAa,cAAe,SAAQ,KAAK;IAC9B,IAAI,SAAoB;CAClC;AAUD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhE;AAED,KAAK,OAAO,GAAG,MAAM,EAAE,CAAC;AA8BxB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CACtB;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD;AAED,wFAAwF;AACxF,0FAA0F;AAC1F,wBAAgB,oBAAoB,IAAI,MAAM,CAQ7C;AAED,qCAAqC;AACrC,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE5D;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAOxF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAS1E;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAOzE;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC/C;AA4BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EACpC,IAAI,EAAE,MAAM,GACX,eAAe,CAcjB;AAqBD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,iBAAiB,CA8EnB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7D"}
|
|
@@ -41,10 +41,12 @@ exports.toolchainOk = toolchainOk;
|
|
|
41
41
|
exports.formatToolchainReport = formatToolchainReport;
|
|
42
42
|
exports.buildToolchainErrorMessage = buildToolchainErrorMessage;
|
|
43
43
|
exports.isWasmStale = isWasmStale;
|
|
44
|
+
exports.normalizeJavyClockSeed = normalizeJavyClockSeed;
|
|
44
45
|
exports.compileTypeScriptToWasm = compileTypeScriptToWasm;
|
|
45
46
|
exports.isJavyAvailable = isJavyAvailable;
|
|
46
47
|
exports.findGeneSource = findGeneSource;
|
|
47
48
|
const node_child_process_1 = require("node:child_process");
|
|
49
|
+
const node_crypto_1 = require("node:crypto");
|
|
48
50
|
const node_fs_1 = require("node:fs");
|
|
49
51
|
const node_path_1 = require("node:path");
|
|
50
52
|
const display = __importStar(require("./display.js"));
|
|
@@ -156,6 +158,76 @@ function isWasmStale(wasmPath, sourcePath) {
|
|
|
156
158
|
return false;
|
|
157
159
|
}
|
|
158
160
|
}
|
|
161
|
+
const WASM_SECTION_DATA = 11;
|
|
162
|
+
function readLeb128(buf, offset) {
|
|
163
|
+
let value = 0;
|
|
164
|
+
let shift = 0;
|
|
165
|
+
let at = offset;
|
|
166
|
+
for (;;) {
|
|
167
|
+
const byte = buf[at++];
|
|
168
|
+
value += (byte & 0x7f) * 2 ** shift;
|
|
169
|
+
shift += 7;
|
|
170
|
+
if (!(byte & 0x80))
|
|
171
|
+
return [value, at];
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/** Byte range of the Data section's contents, or null if the module has none. */
|
|
175
|
+
function dataSectionRange(wasm) {
|
|
176
|
+
let at = 8; // magic + version
|
|
177
|
+
while (at < wasm.length) {
|
|
178
|
+
const id = wasm[at];
|
|
179
|
+
const [size, bodyStart] = readLeb128(wasm, at + 1);
|
|
180
|
+
if (id === WASM_SECTION_DATA)
|
|
181
|
+
return [bodyStart, bodyStart + size];
|
|
182
|
+
at = bodyStart + size;
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Replace the compile-time clock javy bakes into a module with a fixed seed.
|
|
188
|
+
*
|
|
189
|
+
* javy 3.0.1 pre-initialises QuickJS and snapshots its heap; QuickJS seeds
|
|
190
|
+
* Math.random from gettimeofday() while doing so, and that 8-byte microsecond
|
|
191
|
+
* value lands in the Data section. It was the only difference between two
|
|
192
|
+
* compiles of the same source, and the v2 gene ID digests every standard
|
|
193
|
+
* section (ADR-340 D1), so every compile announced a new identity.
|
|
194
|
+
*
|
|
195
|
+
* The field is found by value, not by offset: the one little-endian u64 in the
|
|
196
|
+
* Data section that falls inside `windowUs`, the span javy was running. Exactly
|
|
197
|
+
* one match is required. None means this javy build does not do it (or does it
|
|
198
|
+
* differently); two means the guess is not safe. Either way the module is
|
|
199
|
+
* returned untouched and the caller says so — a wrong overwrite would corrupt
|
|
200
|
+
* the heap, an unnormalized module only loses reproducibility.
|
|
201
|
+
*
|
|
202
|
+
* Math.random was already fixed per artifact (the snapshot holds its state);
|
|
203
|
+
* this makes it fixed per source as well.
|
|
204
|
+
*/
|
|
205
|
+
function normalizeJavyClockSeed(wasm, windowUs, seed) {
|
|
206
|
+
const range = dataSectionRange(wasm);
|
|
207
|
+
if (!range)
|
|
208
|
+
return { wasm, status: "absent" };
|
|
209
|
+
const [from, to] = [BigInt(Math.floor(windowUs[0])), BigInt(Math.ceil(windowUs[1]))];
|
|
210
|
+
const hits = [];
|
|
211
|
+
for (let at = range[0]; at + 8 <= range[1]; at++) {
|
|
212
|
+
const value = wasm.readBigUInt64LE(at);
|
|
213
|
+
if (value >= from && value <= to)
|
|
214
|
+
hits.push(at);
|
|
215
|
+
}
|
|
216
|
+
if (hits.length === 0)
|
|
217
|
+
return { wasm, status: "absent" };
|
|
218
|
+
if (hits.length > 1)
|
|
219
|
+
return { wasm, status: "ambiguous" };
|
|
220
|
+
const out = Buffer.from(wasm);
|
|
221
|
+
seed.copy(out, hits[0], 0, 8);
|
|
222
|
+
return { wasm: out, status: "normalized" };
|
|
223
|
+
}
|
|
224
|
+
/** A non-zero 8-byte seed derived from the compiled source (xorshift state must not be 0). */
|
|
225
|
+
function seedFromSource(source) {
|
|
226
|
+
const seed = (0, node_crypto_1.createHash)("sha256").update(source).digest().subarray(0, 8);
|
|
227
|
+
if (seed.every((b) => b === 0))
|
|
228
|
+
seed[0] = 1;
|
|
229
|
+
return seed;
|
|
230
|
+
}
|
|
159
231
|
const WASI_SHIM_HEADER = `\
|
|
160
232
|
function __readStdin(){var s=1024,c=[],t=0;while(1){var b=new Uint8Array(s);var r=Javy.IO.readSync(0,b);t+=r;if(r===0)break;c.push(b.subarray(0,r))}var o=new Uint8Array(t);var p=0;for(var i=0;i<c.length;i++){o.set(c[i],p);p+=c[i].length}return JSON.parse(new TextDecoder().decode(o))}
|
|
161
233
|
function __writeStdout(v){var b=new TextEncoder().encode(JSON.stringify(v));Javy.IO.writeSync(1,b)}
|
|
@@ -205,10 +277,21 @@ function compileTypeScriptToWasm(geneSrcPath, outputWasmPath) {
|
|
|
205
277
|
const shimCode = WASI_SHIM_HEADER + bundleCode + "\n" + WASI_SHIM_FOOTER;
|
|
206
278
|
(0, node_fs_1.writeFileSync)(shimPath, shimCode);
|
|
207
279
|
display.info(" Step 3/3: JavaScript → WASM (Javy / QuickJS)");
|
|
280
|
+
const javyStartedMs = Date.now();
|
|
208
281
|
(0, node_child_process_1.execFileSync)(toolchain.javy[0], [
|
|
209
282
|
...toolchain.javy.slice(1), "compile", shimPath, "-o", outputWasmPath,
|
|
210
283
|
], { stdio: "pipe", timeout: 60_000 });
|
|
211
|
-
const
|
|
284
|
+
const javyEndedMs = Date.now();
|
|
285
|
+
// Same source, same bytes: take javy's compile-time clock out (T-95).
|
|
286
|
+
const seeded = normalizeJavyClockSeed((0, node_fs_1.readFileSync)(outputWasmPath), [(javyStartedMs - 1_000) * 1_000, (javyEndedMs + 1_000) * 1_000], seedFromSource(shimCode));
|
|
287
|
+
if (seeded.status === "normalized") {
|
|
288
|
+
(0, node_fs_1.writeFileSync)(outputWasmPath, seeded.wasm);
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
display.warn(` This javy build's output is not reproducible (${seeded.status === "ambiguous" ? "more than one" : "no"} ` +
|
|
292
|
+
"compile-time clock value found): compiling this gene again will give different bytes and a different v2 gene ID.");
|
|
293
|
+
}
|
|
294
|
+
const wasmSize = seeded.wasm.length;
|
|
212
295
|
const durationMs = Date.now() - startTime;
|
|
213
296
|
display.success(` WASM compiled: ${(wasmSize / 1024).toFixed(0)} KB (${durationMs}ms)`);
|
|
214
297
|
return { wasmPath: outputWasmPath, bundleSize, wasmSize, durationMs };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javy-compiler.js","sourceRoot":"","sources":["../../src/utils/javy-compiler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"javy-compiler.js","sourceRoot":"","sources":["../../src/utils/javy-compiler.ts"],"names":[],"mappings":"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"}
|