1#[derive(Clone, Copy, Debug, Eq, PartialEq)]
5pub struct JavascriptFidelityDimension {
6 pub name: &'static str,
8 pub evidence: &'static str,
10}
11
12#[derive(Clone, Copy, Debug, Eq, PartialEq)]
14pub struct JavascriptRegressionCase {
15 pub id: &'static str,
17 pub evidence: &'static str,
19}
20
21pub const ECMA262_ORACLE: &str = "ECMA-262, 17th edition (ECMAScript 2026), frozen 2026-08-01";
23pub const TEST262_ORACLE: &str = "tc39/test262@main as observed 2026-08-01";
25
26pub const fn javascript_fidelity_dimensions() -> &'static [JavascriptFidelityDimension] {
28 &[
29 JavascriptFidelityDimension {
30 name: "syntax",
31 evidence: "codec/javascript lossless Script and Module trees",
32 },
33 JavascriptFidelityDimension {
34 name: "lowering",
35 evidence: "canonical javascript/* expressions",
36 },
37 JavascriptFidelityDimension {
38 name: "direct-evaluation",
39 evidence: "bounded direct evaluator; no compiler or VM",
40 },
41 JavascriptFidelityDimension {
42 name: "objects",
43 evidence: "ordinary properties, descriptors, prototypes, and callable policy",
44 },
45 JavascriptFidelityDimension {
46 name: "intrinsics",
47 evidence: "generated intrinsics.tsv manifest with named shared backing",
48 },
49 JavascriptFidelityDimension {
50 name: "jobs-modules",
51 evidence: "explicit drain-to-empty microtasks and authorized source modules",
52 },
53 JavascriptFidelityDimension {
54 name: "boundedness",
55 evidence: "source, evaluation, arena, collection, pattern, job, and module limits",
56 },
57 JavascriptFidelityDimension {
58 name: "expected-gaps",
59 evidence: "profile and RegExp gap catalogs; Node and ambient hosts excluded",
60 },
61 ]
62}
63
64pub const fn javascript_regression_cases() -> &'static [JavascriptRegressionCase] {
66 &[
67 JavascriptRegressionCase {
68 id: "descriptors",
69 evidence: "objects::tests",
70 },
71 JavascriptRegressionCase {
72 id: "cycles",
73 evidence: "managed::tests::shared_collector_reclaims_cycles",
74 },
75 JavascriptRegressionCase {
76 id: "completion",
77 evidence: "runtime::tests",
78 },
79 JavascriptRegressionCase {
80 id: "collection",
81 evidence: "managed::tests",
82 },
83 JavascriptRegressionCase {
84 id: "drain-to-empty-jobs",
85 evidence: "jobs::tests::checkpoint_drains_reentrant_microtasks_and_isolates_finalization",
86 },
87 JavascriptRegressionCase {
88 id: "modules",
89 evidence: "modules::tests",
90 },
91 JavascriptRegressionCase {
92 id: "regexp-subset",
93 evidence: "regexp::tests",
94 },
95 JavascriptRegressionCase {
96 id: "utf16-code-unit-laws",
97 evidence: "text::tests",
98 },
99 JavascriptRegressionCase {
100 id: "capability-refusal",
101 evidence: "modules::tests",
102 },
103 ]
104}
105
106#[cfg(test)]
107mod tests {
108 use super::*;
109
110 #[test]
111 fn fidelity_dimensions_and_regressions_are_frozen_separately() {
112 assert_eq!(javascript_fidelity_dimensions().len(), 8);
113 assert_eq!(javascript_regression_cases().len(), 9);
114 assert!(
115 javascript_fidelity_dimensions()
116 .iter()
117 .all(|x| !x.evidence.is_empty())
118 );
119 assert!(
120 javascript_regression_cases()
121 .iter()
122 .all(|x| !x.evidence.is_empty())
123 );
124 }
125
126 #[test]
127 fn oracle_is_evidence_not_a_dependency() {
128 let manifest = include_str!("../Cargo.toml").to_ascii_lowercase();
129 for forbidden in [
130 "test262",
131 "swc",
132 "boa_engine",
133 "deno_core",
134 "nodejs",
135 "quickjs",
136 "v8",
137 ] {
138 assert!(
139 !manifest.contains(forbidden),
140 "forbidden dependency {forbidden}"
141 );
142 }
143 assert!(ECMA262_ORACLE.contains("frozen"));
144 assert!(TEST262_ORACLE.contains("observed"));
145 }
146
147 #[test]
148 fn sources_have_no_private_engine_fallback() {
149 let sources = [
150 include_str!("runtime.rs"),
151 include_str!("objects.rs"),
152 include_str!("jobs.rs"),
153 include_str!("modules.rs"),
154 include_str!("managed.rs"),
155 include_str!("profile.rs"),
156 ]
157 .join("\n")
158 .to_ascii_lowercase();
159 for forbidden in [
160 "compilerir",
161 "bytecodeop",
162 "optimizerpass",
163 "jitcompile",
164 "privateheap",
165 "privatescheduler",
166 "modulecache",
167 "nodefallback",
168 ] {
169 assert!(
170 !sources.contains(forbidden),
171 "forbidden engine seam {forbidden}"
172 );
173 }
174 }
175}