Skip to content

test(test262): admit dynamic-import, dependency-free module and top-15 negative-diagnostic cohorts (+1,849 pass) - #26

Open
lfkdsk wants to merge 5 commits into
pocket-stack:mainfrom
lfkdsk:pr/test262-admissions
Open

lfkdsk wants to merge 5 commits into
pocket-stack:mainfrom
lfkdsk:pr/test262-admissions

Conversation

@lfkdsk

@lfkdsk lfkdsk commented Sep 17, 2026

Copy link
Copy Markdown

What

Four Test262 admission cohorts, all data-only (no product code), produced with the repository's own generators:

  • top-15 parse negative-diagnostic contracts (+1,372 variants): rules anchored to pinned quickjs.c locations, contracts generated with scripts/audit-negative-diagnostics.mjs --generate so both engines had to agree byte-for-byte;
  • dynamic-import/syntax/valid closed-root cohort (+206);
  • dynamic-import/usage cohort (+214);
  • dependency-free module instantiation/evaluation cohort (+57) plus its 12 exact contracts.

The two dynamic-import generator extensions are merged into one generate-test262-dynamic-import-a.mjs change.

Numbers (full pinned corpus, --mode both, this branch vs main)

bucket main this PR
pass 79,982 81,831 (+1,849)
unsupported-feature 847 427
unsupported-module 121 64
unsupported-negative-provenance 2,562 1,190
fail-parse / fail-runtime 7 / 43 7 / 43 (unchanged)

Verification

  • cargo test --locked --workspace --all-targets 3,363 pass / 0 fail; cargo fmt --check, rust-only, no-special-casing, artifact inventory, host-boundary gates green.
  • test-test262.sh --check: zero line-count / hash drift; focused vector 6,844 / 6,844 pass, result body byte-identical to the frozen receipt.
  • Pinned-QuickJS contract replay: 4,328 exact contracts / 92 rules.
  • Each cohort was reviewed independently on its original branch (fleet tasks 946–949) and the merged branch re-ran the full corpus (fleet 957/968).

Receipt promotion for the new full-corpus counts is left to the maintainer.

lfkdsk and others added 5 commits September 17, 2026 14:54
Add 1,372 exact pinned-QuickJS parse diagnostic contracts across 716
previously-unaudited negative paths (the 15 most frequent identical
messages in the unsupported-negative-provenance bucket): full-corpus
pass 79,982 -> 81,354, bucket 2,562 -> 1,190, with fail-parse=7 /
fail-runtime=43 unchanged.

- negative-diagnostics.tsv: 2,944 -> 4,316 source-authenticated rows,
  generated via audit-negative-diagnostics.mjs --generate after
  QuickJS/Oxide type/message/line/column differential validation
- negative-diagnostic-rules.tsv: +12 semantic rules anchored in pinned
  quickjs.c (js_parse_var, define_var, js_parse_regexp, emit_break,
  js_parse_expect[_semi], js_parse_error_reserved_identifier,
  js_parse_postfix_expr); 5 existing rules reused
- audit-negative-diagnostics.mjs: admit define_var and emit_break as
  non-js_-prefixed parser diagnostic anchors
- test262-oxide.conf: +716 audited negative paths
- 17 top-15 identical rows stay fail-closed in the bucket by design
  (1 real diagnostic mismatch, 1 hashbang source, 15 authored
  use-strict sources the parse sentinel conservatively rejects)

Rebase note: regenerated byte-identically on main@49d1a299 (workspace
layout; generator/gate now under scripts/test262/). Data hashes in
current.conf are therefore identical to the original B1 admission;
path fields already point at the relocated scripts.

Co-Authored-By: Claude Code <noreply@anthropic.com>
…enerators

Fold the B2 (dynamic-import/syntax/valid closed-root cohort) and B4
(dynamic-import/usage graph cohort) extensions to
generate-test262-dynamic-import-a.mjs into a single script so both
cohorts are discovered, asserted, emitted, and check-current
authenticated together; the tail dispatch and ownership checks cover
both groups.

Add the B3 dependency-free module cohort generator
(generate-test262-module-depfree-bindings-a.mjs) and its candidate test,
and register both in the CI fast-tier generator checks.

No admission data changes in this commit; each cohort's catalog rows and
pins land in their own admit commit.

Rebase note: relocated to scripts/test262/ with the rest of the
generator suite; evidence files follow the workspace convention under
dev-support/test262/generated/. Generator contents are otherwise
bytewise-identical to the 56faa47 branch (normalized for the two path
constants).

Co-Authored-By: Claude Code <noreply@anthropic.com>
Admit the 108 positive Script-goal roots under
test/language/expressions/dynamic-import/syntax/valid as a closed-root
dynamic-import cohort (group dynamic-import-syntax-valid-a): 86 roots
close over the dependency-free empty_FIXTURE (2-file initial-import-tree),
22 import('') roots are request-free one-file closures. 303 catalog rows
(109 graph-file, 86 graph-request, 108 dynamic-import-root) turn 206
variants from unsupported-feature to pass; full-corpus unsupported-feature
drops 847 to 641. The 84 import-defer/import.source files stay canaries.

Rows are regenerated with the merged cohort generator and bytewise merged;
current.conf refreshes only the mechanical admissions line count and
checksum. No receipt promotion.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Admit the generated dynamic-import/usage matrix (S1 C1a) as admission
group dynamic-import-usage-a: 108 Script-goal async roots and 4
dependency-free fixtures, 108 import edges, closure size 2 per root,
216 sloppy+strict variants. All roots are positive and carry only the
dynamic-import feature (12 also async-iteration); 18 use
fnGlobalObject.js. Rows regenerated with the merged cohort generator and
bytewise merged; current.conf refreshes only the mechanical admissions
line count and checksum. No receipt promotion.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Admit 57 dependency-free static module semantics from the unsupported-module
bucket (S1 C2a): the instn-* instantiation family, eval-gtbndng-* /
eval-export-* evaluation roots, the four export-default-*-declaration-binding
roots, and the two self-referential dynamic-import generator eval-export
roots. Data-only admission; the engine already implements every path.

- admissions.tsv: +237 rows group module-depfree-bindings-a (11 module, 95
  graph-file, 85 graph-request, 46 graph-root; 49 fixtures, max closure 5,
  2 initial-import-tree roots)
- negative-diagnostics.tsv: +12 resolution/SyntaxError exact contracts
  (7 absent-location missing/circular export, 5 exact-location dependency
  parse errors), replay 4,328 exact contracts / 92 rules byte-identical
- negative-diagnostic-rules.tsv: +module.circular-export,
  module.dependency-parse-break, module.dependency-parse-lvalue
- test262-oxide.conf: +12 audited negative root paths (3910 -> 3922)
- 11 generator-authenticated evidence files under tests/

All rows regenerated with the repo generator and bytewise merged; current.conf
and upstream.toml refresh only mechanical line counts/checksums. Full-corpus
unsupported-module drops 121 -> 64. No receipt promotion.

Rebase note: evidence files follow the workspace convention under
dev-support/test262/generated/; all regenerated rows are byte-identical
to the 56faa47 branch and every data pin matches the original admission.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant