@rotifer/playground 0.25.1 → 0.26.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 +25 -0
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/dist/commands/arena-submit.d.ts.map +1 -1
- package/dist/commands/arena-submit.js +2 -57
- package/dist/commands/arena-submit.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +22 -0
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +18 -0
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +49 -0
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +164 -0
- package/dist/commands/test.js.map +1 -1
- package/dist/scanner/rules.d.ts.map +1 -1
- package/dist/scanner/rules.js +14 -4
- package/dist/scanner/rules.js.map +1 -1
- package/dist/testsuite/gate.d.ts +82 -0
- package/dist/testsuite/gate.d.ts.map +1 -0
- package/dist/testsuite/gate.js +179 -0
- package/dist/testsuite/gate.js.map +1 -0
- package/dist/testsuite/generate.d.ts +12 -0
- package/dist/testsuite/generate.d.ts.map +1 -0
- package/dist/testsuite/generate.js +70 -0
- package/dist/testsuite/generate.js.map +1 -0
- package/dist/testsuite/load.d.ts +23 -0
- package/dist/testsuite/load.d.ts.map +1 -0
- package/dist/testsuite/load.js +121 -0
- package/dist/testsuite/load.js.map +1 -0
- package/dist/testsuite/run.d.ts +109 -0
- package/dist/testsuite/run.d.ts.map +1 -0
- package/dist/testsuite/run.js +298 -0
- package/dist/testsuite/run.js.map +1 -0
- package/dist/testsuite/scaffold.d.ts +20 -0
- package/dist/testsuite/scaffold.d.ts.map +1 -0
- package/dist/testsuite/scaffold.js +146 -0
- package/dist/testsuite/scaffold.js.map +1 -0
- package/dist/testsuite/types.d.ts +67 -0
- package/dist/testsuite/types.d.ts.map +1 -0
- package/dist/testsuite/types.js +19 -0
- package/dist/testsuite/types.js.map +1 -0
- package/dist/utils/artifact-consistency.d.ts +37 -0
- package/dist/utils/artifact-consistency.d.ts.map +1 -0
- package/dist/utils/artifact-consistency.js +43 -0
- package/dist/utils/artifact-consistency.js.map +1 -0
- package/genes/genesis-code-format/.cloud-manifest.json +4 -4
- package/genes/genesis-code-format/index.ts +24 -6
- package/genes/genesis-code-format/phenotype.json +36 -7
- package/genes/genesis-code-format/testsuite.json +25 -0
- package/genes/genesis-file-read/.cloud-manifest.json +4 -4
- package/genes/genesis-file-read/index.ts +21 -2
- package/genes/genesis-file-read/phenotype.json +32 -8
- package/genes/genesis-file-read/testsuite.json +41 -0
- package/genes/genesis-web-search/.cloud-manifest.json +4 -4
- package/genes/genesis-web-search/index.ts +23 -4
- package/genes/genesis-web-search/phenotype.json +36 -9
- package/genes/genesis-web-search/testsuite.json +82 -0
- package/genes/genesis-web-search-lite/.cloud-manifest.json +4 -4
- package/genes/genesis-web-search-lite/index.ts +14 -2
- package/genes/genesis-web-search-lite/phenotype.json +21 -5
- package/genes/genesis-web-search-lite/testsuite.json +24 -0
- package/package.json +12 -7
package/dist/commands/test.js
CHANGED
|
@@ -51,11 +51,18 @@ const sandbox_defaults_js_1 = require("../utils/sandbox-defaults.js");
|
|
|
51
51
|
const run_fuel_ladder_js_1 = require("../utils/run-fuel-ladder.js");
|
|
52
52
|
const network_gateway_js_1 = require("../runtime/network-gateway.js");
|
|
53
53
|
const validate_gene_name_js_1 = require("../utils/validate-gene-name.js");
|
|
54
|
+
const load_js_1 = require("../testsuite/load.js");
|
|
55
|
+
const run_js_1 = require("../testsuite/run.js");
|
|
56
|
+
const gate_js_1 = require("../testsuite/gate.js");
|
|
57
|
+
const scaffold_js_1 = require("../testsuite/scaffold.js");
|
|
58
|
+
const load_js_2 = require("../testsuite/load.js");
|
|
54
59
|
exports.testCommand = new commander_1.Command("test")
|
|
55
60
|
.description("Test a gene in sandbox")
|
|
56
61
|
.argument("[gene-name]", "gene name to test")
|
|
57
62
|
.option("--verbose", "show detailed output", false)
|
|
58
63
|
.option("--compliance", "run structural compliance checks", false)
|
|
64
|
+
.option("--scaffold", `generate a ${"testsuite.json"} skeleton from the phenotype and exit`, false)
|
|
65
|
+
.option("--json", "print T1 results as JSON (spec §47.2 TestResult)", false)
|
|
59
66
|
.action(async (geneName, options) => {
|
|
60
67
|
const root = (0, project_root_js_1.requireProjectRoot)();
|
|
61
68
|
const config = (0, config_js_1.loadConfig)(root);
|
|
@@ -78,10 +85,71 @@ exports.testCommand = new commander_1.Command("test")
|
|
|
78
85
|
process.exit(1);
|
|
79
86
|
}
|
|
80
87
|
const phenotype = JSON.parse((0, node_fs_1.readFileSync)(phenotypePath, "utf-8"));
|
|
88
|
+
// --- --scaffold: write a §47.5-shaped starting point and stop ---
|
|
89
|
+
// Placed before the checks below because it produces a file rather than a
|
|
90
|
+
// verdict; running seven checks first would only bury the one line that
|
|
91
|
+
// matters. It refuses to overwrite: a suite the author has edited is worth
|
|
92
|
+
// more than anything generated here.
|
|
93
|
+
if (options.scaffold) {
|
|
94
|
+
const suitePath = (0, node_path_1.join)(geneDir, load_js_2.TESTSUITE_FILENAME);
|
|
95
|
+
if ((0, node_fs_1.existsSync)(suitePath)) {
|
|
96
|
+
display.error(`${load_js_2.TESTSUITE_FILENAME} already exists — refusing to overwrite`);
|
|
97
|
+
display.hint("Delete it first if you really want to regenerate from the phenotype.");
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
const { suite, notes, warnings } = (0, scaffold_js_1.scaffoldTestSuite)(phenotype);
|
|
101
|
+
(0, node_fs_1.writeFileSync)(suitePath, JSON.stringify(suite, null, 2) + "\n");
|
|
102
|
+
display.success(`Wrote ${load_js_2.TESTSUITE_FILENAME} — ${suite.testCases.length} case(s)`);
|
|
103
|
+
notes.forEach((n, i) => display.info(` [${i}] ${n.requirement}: ${n.rationale}`));
|
|
104
|
+
for (const w of warnings)
|
|
105
|
+
display.warn(" " + w);
|
|
106
|
+
console.log();
|
|
107
|
+
display.info("These are a starting point, not a passing suite. Two things to do by hand:");
|
|
108
|
+
display.info(" • replace the positive case's input with one that means something for this Gene");
|
|
109
|
+
display.info(" • for each negative case, decide what correct handling looks like — if the Gene");
|
|
110
|
+
display.info(" answers illegal input rather than refusing it, declare that answer with");
|
|
111
|
+
display.info(" expectedOutput or expectedSchema, or the case will fail");
|
|
112
|
+
// ADR-334 D2: the channel has to reach the author or it repeats the
|
|
113
|
+
// history that produced it — ErrorCode.INVALID_INPUT sat defined and
|
|
114
|
+
// unused for six months, which is why 11 of 13 Genes had each invented
|
|
115
|
+
// their own way of coping with input they could not read.
|
|
116
|
+
display.info("");
|
|
117
|
+
display.info(" To refuse outright instead, return exactly { \"__rotifer_error\": { \"message\": \"…\" } }");
|
|
118
|
+
display.info(" and nothing else — the host turns that into INVALID_INPUT (ADR-334). A refusal");
|
|
119
|
+
display.info(" needs no expectedOutput: the case passes on the refusal itself.");
|
|
120
|
+
display.hint(`Then run: rotifer test ${geneName}`);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
81
123
|
const ajv = new ajv_1.default({ allErrors: true });
|
|
82
124
|
let passed = 0;
|
|
83
125
|
let failed = 0;
|
|
84
126
|
let skipped = 0;
|
|
127
|
+
// Shared by both T1 paths — WASM sandbox and Node — so the two cannot drift
|
|
128
|
+
// into reporting the same run differently.
|
|
129
|
+
const reportT1 = (report) => {
|
|
130
|
+
for (const r of report.results) {
|
|
131
|
+
if (r.passed) {
|
|
132
|
+
passed++;
|
|
133
|
+
display.success(` ${r.testId}: ${r.details ?? "passed"}`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
failed++;
|
|
137
|
+
display.error(` ${r.testId}: ${r.failureReason}`);
|
|
138
|
+
if (r.details)
|
|
139
|
+
display.info(" " + r.details);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (options.json) {
|
|
143
|
+
console.log(JSON.stringify({ requirements: report.requirements, gatePassed: report.gatePassed, results: report.results }, null, 2));
|
|
144
|
+
}
|
|
145
|
+
const req = report.requirements;
|
|
146
|
+
display.info(` §47.5 requirements — positive: ${req.positive ? "met" : "NOT met"}, ` +
|
|
147
|
+
`negative: ${req.negative ? "met" : "NOT met"}, ` +
|
|
148
|
+
`property: ${req.property ? "met" : "NOT met"}`);
|
|
149
|
+
if (!report.gatePassed) {
|
|
150
|
+
display.hint("This Gene would not pass the §47.5 publishing gate once it is enforced.");
|
|
151
|
+
}
|
|
152
|
+
};
|
|
85
153
|
const markSkipped = (message) => {
|
|
86
154
|
skipped++;
|
|
87
155
|
display.warn(message);
|
|
@@ -442,6 +510,102 @@ exports.testCommand = new commander_1.Command("test")
|
|
|
442
510
|
}
|
|
443
511
|
// --- Summary ---
|
|
444
512
|
console.log();
|
|
513
|
+
// --- §47.5 T1 TestSuite ---
|
|
514
|
+
// Separate from Tests 1-7 above, which are §47.3 scaffolding: generated
|
|
515
|
+
// inputs checked against the Gene's own schemas. Those never see a case the
|
|
516
|
+
// author wrote, so they cannot tell whether the Gene does the right thing —
|
|
517
|
+
// only that it does a well-shaped thing. §47.5 is the MUST that gates
|
|
518
|
+
// publishing, and this is where it gets evaluated.
|
|
519
|
+
const suiteLoad = (0, load_js_1.loadTestSuite)(geneDir);
|
|
520
|
+
if (suiteLoad.status === "invalid") {
|
|
521
|
+
failed++;
|
|
522
|
+
display.error("T1 TestSuite: testsuite.json is not valid");
|
|
523
|
+
for (const e of suiteLoad.errors)
|
|
524
|
+
display.info(" " + e);
|
|
525
|
+
}
|
|
526
|
+
else if (suiteLoad.status === "absent") {
|
|
527
|
+
// Stage 1 sets no gate — §47.5 enforcement is a separate deliverable, and
|
|
528
|
+
// failing every Gene here before authors have a way to write a suite would
|
|
529
|
+
// just teach people to ignore the runner. Informational on purpose: it
|
|
530
|
+
// does not touch passed/failed/skipped either, because no Gene has a suite
|
|
531
|
+
// yet and moving every existing Gene's verdict is itself a gate.
|
|
532
|
+
display.warn("T1 TestSuite: no testsuite.json — §47.5 publishing gate not evaluated");
|
|
533
|
+
display.hint("spec §47.5 requires ≥1 positive case, ≥1 negative case and a schema-legality property test before publishing");
|
|
534
|
+
}
|
|
535
|
+
else if (!hasIrWasm && srcFile) {
|
|
536
|
+
// No IR, but there is source: this is how a Wrapped gene is actually run,
|
|
537
|
+
// so run it that way. Skipping here while the publish gate checks Wrapped
|
|
538
|
+
// would leave an author unable to see locally what publish is about to
|
|
539
|
+
// refuse — and the gate's whole exit is "run rotifer test".
|
|
540
|
+
display.info("T1 TestSuite (spec §47.5, via Node)");
|
|
541
|
+
const loaded = await (0, gate_js_1.loadNodeRunner)((0, node_path_1.resolve)(geneDir, srcFile), (0, l0_gate_js_1.evaluateL0)(binding, phenotype));
|
|
542
|
+
if ("refusal" in loaded) {
|
|
543
|
+
failed++;
|
|
544
|
+
display.error(" could not run the gene: " + loaded.refusal);
|
|
545
|
+
}
|
|
546
|
+
else {
|
|
547
|
+
reportT1((0, run_js_1.runT1)(suiteLoad.suite, {
|
|
548
|
+
inputSchema: phenotype.inputSchema ?? null,
|
|
549
|
+
outputSchema: phenotype.outputSchema ?? null,
|
|
550
|
+
run: loaded.runner,
|
|
551
|
+
}));
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
else if (!hasIrWasm || !binding) {
|
|
555
|
+
// A suite exists but nothing can run it. That is a skip, not a pass —
|
|
556
|
+
// unlike the absent case above, the author asked for this to be checked.
|
|
557
|
+
skipped++;
|
|
558
|
+
display.warn("T1 TestSuite: found testsuite.json, but the Gene has neither a compiled artifact nor source — run 'rotifer compile " + geneName + "' first");
|
|
559
|
+
}
|
|
560
|
+
else {
|
|
561
|
+
display.info("T1 TestSuite (spec §47.5)");
|
|
562
|
+
const irWasmForT1 = (0, node_fs_1.readFileSync)(irWasmPath);
|
|
563
|
+
const { irHash: _t1strip, ...phenotypeForT1 } = phenotype;
|
|
564
|
+
const runOne = (input) => {
|
|
565
|
+
try {
|
|
566
|
+
const r = binding.executeGene(irWasmForT1, JSON.stringify(input), JSON.stringify(phenotypeForT1), (0, run_fuel_ladder_js_1.constraintsForFuel)(run_fuel_ladder_js_1.FUEL_LADDER[0]));
|
|
567
|
+
if (r.success)
|
|
568
|
+
return { success: true, output: r.output, durationMs: r.durationMs };
|
|
569
|
+
// Everything the sandbox reports as a failure is a crash unless it is
|
|
570
|
+
// a resource ceiling: a Gene has no way to "return an error" through
|
|
571
|
+
// this boundary, so a thrown validation error and a TypeError arrive
|
|
572
|
+
// identically. Treating both as crashed is the conservative reading of
|
|
573
|
+
// "correctly handle" — a Gene that means to reject declares the shape
|
|
574
|
+
// it rejects with instead (see runNegative).
|
|
575
|
+
return { success: false, crashed: true, errorMessage: r.errorMessage ?? undefined };
|
|
576
|
+
}
|
|
577
|
+
catch (e) {
|
|
578
|
+
return { success: false, crashed: true, errorMessage: e.message };
|
|
579
|
+
}
|
|
580
|
+
};
|
|
581
|
+
const report = (0, run_js_1.runT1)(suiteLoad.suite, {
|
|
582
|
+
inputSchema: phenotype.inputSchema ?? null,
|
|
583
|
+
outputSchema: phenotype.outputSchema ?? null,
|
|
584
|
+
run: runOne,
|
|
585
|
+
});
|
|
586
|
+
for (const r of report.results) {
|
|
587
|
+
if (r.passed) {
|
|
588
|
+
passed++;
|
|
589
|
+
display.success(` ${r.testId}: ${r.details ?? "passed"}`);
|
|
590
|
+
}
|
|
591
|
+
else {
|
|
592
|
+
failed++;
|
|
593
|
+
display.error(` ${r.testId}: ${r.failureReason}`);
|
|
594
|
+
if (r.details)
|
|
595
|
+
display.info(" " + r.details);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
if (options.json) {
|
|
599
|
+
console.log(JSON.stringify({ requirements: report.requirements, gatePassed: report.gatePassed, results: report.results }, null, 2));
|
|
600
|
+
}
|
|
601
|
+
const req = report.requirements;
|
|
602
|
+
display.info(` §47.5 requirements — positive: ${req.positive ? "met" : "NOT met"}, ` +
|
|
603
|
+
`negative: ${req.negative ? "met" : "NOT met"}, ` +
|
|
604
|
+
`property: ${req.property ? "met" : "NOT met"}`);
|
|
605
|
+
if (!report.gatePassed) {
|
|
606
|
+
display.hint("This Gene would not pass the §47.5 publishing gate once it is enforced.");
|
|
607
|
+
}
|
|
608
|
+
}
|
|
445
609
|
const total = passed + failed + skipped;
|
|
446
610
|
if (failed === 0 && skipped === 0) {
|
|
447
611
|
display.success(`All ${total} tests passed`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/scanner/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,UAAU,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/scanner/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,UAAU,EAAE,QAAQ,EAmGhC,CAAC"}
|
package/dist/scanner/rules.js
CHANGED
|
@@ -17,12 +17,22 @@ exports.SCAN_RULES = [
|
|
|
17
17
|
description: "System command execution",
|
|
18
18
|
severity: "CRITICAL",
|
|
19
19
|
patterns: [
|
|
20
|
+
// Capability acquisition. These two are the load-bearing half: system
|
|
21
|
+
// commands are unreachable in JS without child_process, so anything that
|
|
22
|
+
// obtains it is caught here however it later calls out.
|
|
20
23
|
/require\s*\(\s*['"]child_process['"]\s*\)/,
|
|
21
24
|
/from\s+['"]child_process['"]/,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
// Call sites — defence in depth for the destructured-import form
|
|
26
|
+
// (`const { exec } = ...` followed by a bare `exec(...)`). The lookbehind
|
|
27
|
+
// excludes member calls: `\bexec\s*\(` also matched `regex.exec(`, and
|
|
28
|
+
// `.exec()` is how you iterate a global regex in JavaScript. On this repo's
|
|
29
|
+
// own gene corpus that misfired on 6 of the 7 genes it flagged — CRITICAL,
|
|
30
|
+
// blocking publish, for calling a regex. A member call can only reach
|
|
31
|
+
// child_process through a binding the two patterns above already catch.
|
|
32
|
+
/(?<![.\w$])exec\s*\(/,
|
|
33
|
+
/(?<![.\w$])execSync\s*\(/,
|
|
34
|
+
/(?<![.\w$])spawn\s*\(/,
|
|
35
|
+
/(?<![.\w$])spawnSync\s*\(/,
|
|
26
36
|
],
|
|
27
37
|
},
|
|
28
38
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/scanner/rules.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAe;IACpC;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE;YACR,aAAa;YACb,iBAAiB;YACjB,qBAAqB;SACtB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE;YACR,2CAA2C;YAC3C,8BAA8B;YAC9B,
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/scanner/rules.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAe;IACpC;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE;YACR,aAAa;YACb,iBAAiB;YACjB,qBAAqB;SACtB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE;YACR,sEAAsE;YACtE,yEAAyE;YACzE,wDAAwD;YACxD,2CAA2C;YAC3C,8BAA8B;YAC9B,iEAAiE;YACjE,0EAA0E;YAC1E,uEAAuE;YACvE,4EAA4E;YAC5E,2EAA2E;YAC3E,sEAAsE;YACtE,wEAAwE;YACxE,sBAAsB;YACtB,0BAA0B;YAC1B,uBAAuB;YACvB,2BAA2B;SAC5B;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE;YACR,iCAAiC;YACjC,sBAAsB;YACtB,yDAAyD;YACzD,kDAAkD;SACnD;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE;YACR,cAAc;YACd,sBAAsB;YACtB,uBAAuB;YACvB,2BAA2B;YAC3B,gBAAgB;SACjB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE;YACR,kBAAkB;YAClB,eAAe;YACf,iBAAiB;YACjB,uBAAuB;SACxB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE;YACR,sBAAsB;YACtB,oBAAoB;YACpB,wBAAwB;YACxB,8BAA8B;YAC9B,qBAAqB;SACtB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE;YACR,kBAAkB;YAClB,sBAAsB;YACtB,mBAAmB;YACnB,uBAAuB;YACvB,gBAAgB;YAChB,oBAAoB;YACpB,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,mBAAmB;YACnB,qBAAqB;YACrB,sBAAsB;SACvB;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { GeneRunner, RunOutcome } from "./run.js";
|
|
2
|
+
/**
|
|
3
|
+
* spec §47.5 publishing gate, as decided in ADR-333.
|
|
4
|
+
*
|
|
5
|
+
* §47.5 makes T1 a MUST for DRAFT→PUBLISHED. Until this existed the MUST was
|
|
6
|
+
* unenforced, which is how 62 Native genes reached the registry — and how two
|
|
7
|
+
* of them were republished on 2026-09-07 without satisfying it.
|
|
8
|
+
*
|
|
9
|
+
* Kept out of publish.ts so the decision "may this be published" is testable
|
|
10
|
+
* without a publish: the same three requirements, the same verdict, no network.
|
|
11
|
+
*/
|
|
12
|
+
export type GateVerdict = {
|
|
13
|
+
status: "passed";
|
|
14
|
+
details: string;
|
|
15
|
+
} | {
|
|
16
|
+
status: "blocked";
|
|
17
|
+
reason: string;
|
|
18
|
+
guidance: string[];
|
|
19
|
+
} | {
|
|
20
|
+
status: "not-applicable";
|
|
21
|
+
reason: string;
|
|
22
|
+
};
|
|
23
|
+
export interface GateInput {
|
|
24
|
+
geneDir: string;
|
|
25
|
+
fidelity: string;
|
|
26
|
+
phenotype: {
|
|
27
|
+
inputSchema?: unknown;
|
|
28
|
+
outputSchema?: unknown;
|
|
29
|
+
};
|
|
30
|
+
/** Runs one input against the compiled Gene. Null when no runtime is
|
|
31
|
+
* available — see the not-applicable branch. */
|
|
32
|
+
run: GeneRunner | null;
|
|
33
|
+
}
|
|
34
|
+
export declare function evaluatePublishGate(input: GateInput): GateVerdict;
|
|
35
|
+
/** Adapter: the sandbox reports every failure alike, so anything that is not a
|
|
36
|
+
* clean return is reported as crashed. See runNegative for why that is the
|
|
37
|
+
* conservative reading rather than a limitation. */
|
|
38
|
+
export declare function outcomeFromSandbox(r: {
|
|
39
|
+
success: boolean;
|
|
40
|
+
output?: unknown;
|
|
41
|
+
errorMessage?: string | null;
|
|
42
|
+
durationMs?: number;
|
|
43
|
+
}): RunOutcome;
|
|
44
|
+
/**
|
|
45
|
+
* Build a GeneRunner for a Wrapped gene, which has no IR and executes in its
|
|
46
|
+
* native language under Node.
|
|
47
|
+
*
|
|
48
|
+
* This exists because the gate skipping Wrapped was a hole, not a design. §47.5
|
|
49
|
+
* makes T1 a MUST for every DRAFT->PUBLISHED transition, not only Native ones,
|
|
50
|
+
* and 35 published Wrapped records went out under that exemption.
|
|
51
|
+
*
|
|
52
|
+
* It surfaced while deciding genesis-file-read's fidelity: it imports node:fs,
|
|
53
|
+
* so it can never compile to Native, and Wrapped is the honest label. Making
|
|
54
|
+
* that change while Wrapped was exempt would have relabelled a gene straight
|
|
55
|
+
* through the gap — the shape of thing this plan exists to stop. So the hole is
|
|
56
|
+
* closed first, and the relabel then costs what it should.
|
|
57
|
+
*
|
|
58
|
+
* Async because a dynamic import is: the module is loaded once here, and the
|
|
59
|
+
* returned runner is synchronous over the resolved export.
|
|
60
|
+
*
|
|
61
|
+
* The L0 gate is consulted BEFORE the import, not before express(): importing
|
|
62
|
+
* executes module top-level code, so a check afterwards checks nothing.
|
|
63
|
+
*/
|
|
64
|
+
/**
|
|
65
|
+
* The ADR-334 refusal envelope, as recognised on the Node path.
|
|
66
|
+
*
|
|
67
|
+
* Kept identical to `parse_error_envelope` in the Rust core, including the
|
|
68
|
+
* single-key rule: an object that merely *contains* the key alongside data is
|
|
69
|
+
* ordinary output. The two implementations exist because the two execution
|
|
70
|
+
* paths do not share code — `node-envelope-parity.test.ts` pins them to the
|
|
71
|
+
* same answers so they cannot drift apart silently.
|
|
72
|
+
*/
|
|
73
|
+
export declare function readErrorEnvelope(output: unknown): string | null;
|
|
74
|
+
export declare function loadNodeRunner(absSourcePath: string, l0: {
|
|
75
|
+
kind: string;
|
|
76
|
+
detail?: string;
|
|
77
|
+
}): Promise<{
|
|
78
|
+
runner: GeneRunner;
|
|
79
|
+
} | {
|
|
80
|
+
refusal: string;
|
|
81
|
+
}>;
|
|
82
|
+
//# sourceMappingURL=gate.d.ts.map
|
|
@@ -0,0 +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;AAED;;oDAEoD;AACpD,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,CAIb;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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.evaluatePublishGate = evaluatePublishGate;
|
|
4
|
+
exports.outcomeFromSandbox = outcomeFromSandbox;
|
|
5
|
+
exports.readErrorEnvelope = readErrorEnvelope;
|
|
6
|
+
exports.loadNodeRunner = loadNodeRunner;
|
|
7
|
+
const node_url_1 = require("node:url");
|
|
8
|
+
const load_js_1 = require("./load.js");
|
|
9
|
+
const run_js_1 = require("./run.js");
|
|
10
|
+
/**
|
|
11
|
+
* The guidance lines are load-bearing, not decoration.
|
|
12
|
+
*
|
|
13
|
+
* ADR-333 records the ecosystem seat's vote as conditional on exactly this:
|
|
14
|
+
* a gate that answers "negative case failed" and stops has told the author
|
|
15
|
+
* nothing they can act on, and an unactionable gate gets routed around rather
|
|
16
|
+
* than satisfied. `publish-gate.test.ts` asserts these lines survive, so the
|
|
17
|
+
* condition is mechanical rather than a promise.
|
|
18
|
+
*/
|
|
19
|
+
const MISSING_SUITE_GUIDANCE = [
|
|
20
|
+
"spec §47.5 requires, before DRAFT -> PUBLISHED:",
|
|
21
|
+
" • at least 1 positive case (input your inputSchema accepts)",
|
|
22
|
+
" • at least 1 negative case (input it forbids, handled correctly)",
|
|
23
|
+
" • a schema-legality property test over 10 generated inputs",
|
|
24
|
+
"Generate a starting point: rotifer test --scaffold <gene>",
|
|
25
|
+
"Then run it: rotifer test <gene>",
|
|
26
|
+
];
|
|
27
|
+
function evaluatePublishGate(input) {
|
|
28
|
+
const load = (0, load_js_1.loadTestSuite)(input.geneDir);
|
|
29
|
+
if (load.status === "absent") {
|
|
30
|
+
return {
|
|
31
|
+
status: "blocked",
|
|
32
|
+
reason: "no testsuite.json — spec §47.5 T1 is a MUST before publishing",
|
|
33
|
+
guidance: MISSING_SUITE_GUIDANCE,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (load.status === "invalid") {
|
|
37
|
+
return {
|
|
38
|
+
status: "blocked",
|
|
39
|
+
reason: "testsuite.json is not valid",
|
|
40
|
+
guidance: [...load.errors, "", "Fix the fields above, then: rotifer test <gene>"],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (!input.run) {
|
|
44
|
+
// No runtime, so the suite cannot be executed. Blocking rather than waving
|
|
45
|
+
// it through: "we could not check" is not "it passed", and the alternative
|
|
46
|
+
// publishes on the strength of a file nobody ran.
|
|
47
|
+
return {
|
|
48
|
+
status: "blocked",
|
|
49
|
+
reason: "testsuite.json exists but the Gene could not be executed to run it",
|
|
50
|
+
guidance: [
|
|
51
|
+
"Compile first so the suite can run: rotifer compile <gene>",
|
|
52
|
+
"A suite that has not been run is not evidence.",
|
|
53
|
+
],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const report = (0, run_js_1.runT1)(load.suite, {
|
|
57
|
+
inputSchema: input.phenotype.inputSchema ?? null,
|
|
58
|
+
outputSchema: input.phenotype.outputSchema ?? null,
|
|
59
|
+
run: input.run,
|
|
60
|
+
});
|
|
61
|
+
if (report.gatePassed) {
|
|
62
|
+
return {
|
|
63
|
+
status: "passed",
|
|
64
|
+
details: `T1 satisfied — ${report.results.filter((r) => r.passed).length}/${report.results.length} checks`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const req = report.requirements;
|
|
68
|
+
const unmet = [
|
|
69
|
+
...(req.positive ? [] : ["positive"]),
|
|
70
|
+
...(req.negative ? [] : ["negative"]),
|
|
71
|
+
...(req.property ? [] : ["property"]),
|
|
72
|
+
];
|
|
73
|
+
const failures = report.results
|
|
74
|
+
.filter((r) => !r.passed)
|
|
75
|
+
.map((r) => ` ${r.testId}: ${r.failureReason}${r.details ? `\n ${r.details}` : ""}`);
|
|
76
|
+
return {
|
|
77
|
+
status: "blocked",
|
|
78
|
+
reason: `spec §47.5 T1 not satisfied — unmet: ${unmet.join(", ")}`,
|
|
79
|
+
guidance: [
|
|
80
|
+
...failures,
|
|
81
|
+
"",
|
|
82
|
+
"Each failure above names what to change. A negative case that returns output",
|
|
83
|
+
"rather than refusing is not automatically wrong — declare the answer you mean",
|
|
84
|
+
"with expectedOutput or expectedSchema (ADR-333).",
|
|
85
|
+
"Re-run locally with: rotifer test <gene>",
|
|
86
|
+
],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** Adapter: the sandbox reports every failure alike, so anything that is not a
|
|
90
|
+
* clean return is reported as crashed. See runNegative for why that is the
|
|
91
|
+
* conservative reading rather than a limitation. */
|
|
92
|
+
function outcomeFromSandbox(r) {
|
|
93
|
+
return r.success
|
|
94
|
+
? { success: true, output: r.output, durationMs: r.durationMs }
|
|
95
|
+
: { success: false, crashed: true, errorMessage: r.errorMessage ?? undefined };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build a GeneRunner for a Wrapped gene, which has no IR and executes in its
|
|
99
|
+
* native language under Node.
|
|
100
|
+
*
|
|
101
|
+
* This exists because the gate skipping Wrapped was a hole, not a design. §47.5
|
|
102
|
+
* makes T1 a MUST for every DRAFT->PUBLISHED transition, not only Native ones,
|
|
103
|
+
* and 35 published Wrapped records went out under that exemption.
|
|
104
|
+
*
|
|
105
|
+
* It surfaced while deciding genesis-file-read's fidelity: it imports node:fs,
|
|
106
|
+
* so it can never compile to Native, and Wrapped is the honest label. Making
|
|
107
|
+
* that change while Wrapped was exempt would have relabelled a gene straight
|
|
108
|
+
* through the gap — the shape of thing this plan exists to stop. So the hole is
|
|
109
|
+
* closed first, and the relabel then costs what it should.
|
|
110
|
+
*
|
|
111
|
+
* Async because a dynamic import is: the module is loaded once here, and the
|
|
112
|
+
* returned runner is synchronous over the resolved export.
|
|
113
|
+
*
|
|
114
|
+
* The L0 gate is consulted BEFORE the import, not before express(): importing
|
|
115
|
+
* executes module top-level code, so a check afterwards checks nothing.
|
|
116
|
+
*/
|
|
117
|
+
/**
|
|
118
|
+
* The ADR-334 refusal envelope, as recognised on the Node path.
|
|
119
|
+
*
|
|
120
|
+
* Kept identical to `parse_error_envelope` in the Rust core, including the
|
|
121
|
+
* single-key rule: an object that merely *contains* the key alongside data is
|
|
122
|
+
* ordinary output. The two implementations exist because the two execution
|
|
123
|
+
* paths do not share code — `node-envelope-parity.test.ts` pins them to the
|
|
124
|
+
* same answers so they cannot drift apart silently.
|
|
125
|
+
*/
|
|
126
|
+
function readErrorEnvelope(output) {
|
|
127
|
+
if (typeof output !== "object" || output === null || Array.isArray(output))
|
|
128
|
+
return null;
|
|
129
|
+
const keys = Object.keys(output);
|
|
130
|
+
if (keys.length !== 1 || keys[0] !== "__rotifer_error")
|
|
131
|
+
return null;
|
|
132
|
+
const body = output.__rotifer_error;
|
|
133
|
+
const message = typeof body === "object" && body !== null && typeof body.message === "string"
|
|
134
|
+
? body.message
|
|
135
|
+
: "gene refused the input";
|
|
136
|
+
return `INVALID_INPUT: ${message}`;
|
|
137
|
+
}
|
|
138
|
+
async function loadNodeRunner(absSourcePath, l0) {
|
|
139
|
+
if (l0.kind === "violation") {
|
|
140
|
+
return { refusal: `L0 gate blocked this gene: ${l0.detail ?? "no detail"}` };
|
|
141
|
+
}
|
|
142
|
+
let expressFn;
|
|
143
|
+
try {
|
|
144
|
+
const mod = await import((0, node_url_1.pathToFileURL)(absSourcePath).href);
|
|
145
|
+
if (typeof mod.express !== "function") {
|
|
146
|
+
return { refusal: "gene does not export an express() function" };
|
|
147
|
+
}
|
|
148
|
+
expressFn = mod.express;
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
return { refusal: `could not load the gene module: ${e.message}` };
|
|
152
|
+
}
|
|
153
|
+
const runner = (input) => {
|
|
154
|
+
const started = Date.now();
|
|
155
|
+
try {
|
|
156
|
+
const output = expressFn(input);
|
|
157
|
+
// ADR-334: the WASM sandbox turns a lone `__rotifer_error` key into
|
|
158
|
+
// GeneResult::Error, and this path has to agree with it. It does not go
|
|
159
|
+
// through the Rust core at all, so without this the same Gene would be
|
|
160
|
+
// read as refusing when compiled and as answering when run under Node —
|
|
161
|
+
// and which one a Gene gets depends on its fidelity, not on its code.
|
|
162
|
+
const refusal = readErrorEnvelope(output);
|
|
163
|
+
if (refusal) {
|
|
164
|
+
return { success: false, errorMessage: refusal, durationMs: Date.now() - started };
|
|
165
|
+
}
|
|
166
|
+
if (output === null || output === undefined) {
|
|
167
|
+
// Distinct from throwing, and worth its own message: a Gene that
|
|
168
|
+
// returns nothing has not refused, it has silently produced no answer.
|
|
169
|
+
return { success: false, crashed: true, errorMessage: "express() returned null/undefined" };
|
|
170
|
+
}
|
|
171
|
+
return { success: true, output, durationMs: Date.now() - started };
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
return { success: false, crashed: true, errorMessage: e.message };
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
return { runner };
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/testsuite/gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seeded input generation, shared by `arena submit` and the §47.5 T1 property
|
|
3
|
+
* test.
|
|
4
|
+
*
|
|
5
|
+
* Moved verbatim out of arena-submit.ts rather than reimplemented: S_r has to
|
|
6
|
+
* stay reproducible across releases, and a second generator that drifted from
|
|
7
|
+
* this one would make `rotifer test` and Arena admission disagree about what a
|
|
8
|
+
* Gene was fed. Same seed, same input, both callers.
|
|
9
|
+
*/
|
|
10
|
+
export declare function mulberry32(seed: number): () => number;
|
|
11
|
+
export declare function generateTestInput(schema: any, seed: number): Record<string, any>;
|
|
12
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/testsuite/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,MAAM,CAQrD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAsChF"}
|