Skip to content

Align the development Pyodide with the declared 314.0.0 target - #375

Open
luisleo526 wants to merge 3 commits into
mainfrom
fix/pyodide-version
Open

luisleo526 wants to merge 3 commits into
mainfrom
fix/pyodide-version

Conversation

@luisleo526

Copy link
Copy Markdown
Contributor

Align the development Pyodide with the declared 314.0.0 target: the dev lock now installs exactly the version the package declares as its peer and that the full gate targets, so the gate's identity check and its 268-fixture runtime parity run on the supported version.

It also carries the initialized-runtime release-identity guard that this fix builds on, with codegen main merged in.

🤖 Generated with Claude Code

Validate independent observed, target and peer version identities before
glue, native oracle or release metadata writes. Preserve declaration and
lock inputs and record the checked observed version in release metadata.
Extend the existing pure selftest with varied matching, mismatch and
invalid identities without claiming runtime or whole-gate parity proof.
Date read 2026-11-11T02:08:18+08:00. Follow CORE-TOP's 02:06 main update
without rebasing or rewriting the unpublished 714d8a4 candidate.

The new main fixes variable-held input string defaults. Its nine changed
paths do not overlap the gate's three-file runtime-identity change.
Current exact-candidate review and genuine runtime evidence remain open;
the existing pure selftest result retains its original head and scope.
Pin the development dependency and its npm lock entry to 314.0.0 so the
installed runtime agrees with the existing target and exact package peer.
Preserve the fail-closed runtime identity guard and published declarations.

@graphify-labs graphify-labs Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Graphify reviewed this change.

No issues found by static checks — no coupling regressions or blocking issues in the code graph. That is not the same as safe to merge: see what was not checked.

Not checked: tests were not run; formal verification proved 0 of 1 changed function(s) (1 not verified).

Formal verification. PR-changed functions: 0/1 verified (0 proven, 0 may-equivalent, 0 distinguished) · 1 not verified (1 vacuous).

Not verified on this run: main (vacuous: never exercised).


Graphify review — findings

Adds a runtime identity check to the gate: after loading Pyodide, checkRuntimeVersion requires the observed pyodide.version, PYODIDE_TARGET, and the npm/package.json peer dependency to be valid, exact version strings that all match. Any malformed input (ranges, v prefixes, whitespace, non-strings, leading zeros) or any mismatch throws before the archive is unpacked or glue runs, and release.json now reports that checked version instead of re-reading PYODIDE_TARGET. Extends gate/selftest.mjs with matching, mismatch, and invalid-input cases for the new helper. It runs without initializing Pyodide, so it covers the helper's rules but not the real runtime identity. Pins the pyodide devDependency and lockfile entry to 314.0.0 (down from 314.0.7), so the installed runtime has to line up with the target and peer versions.

No blocking issues surfaced.

Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 34 functions depend on the 34 functions this change touches.

Health — this change adds coupling hotspots:

  • worse: main() — 1 callers, 6 callees

Verification — 34 functions in the blast radius were not formally verified this run (proofs are advisory here).

Gate & verification

graphify gate

PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.

Advisory (not blocking):

  • verification_scope: 34 function(s) in the blast radius were not formally verified this run

Cross-repo impact

Cross-repo impact

This change impacts 2 symbol(s) across 1 peer repo(s) — blast radius over derived cross-repo edges:

  • pineforge-4pass/pineforge-hpo — python/pineforge_hpo/transpile.py (via import_moniker, heuristic), tests/python/test_transpile.py (via import_moniker, heuristic)

1 peer repo(s) in this group are not yet indexed — cross-repo impact may be incomplete.

Cross-repo linkage is derived (SCIP-moniker matches are sound; name/contract matches are heuristic) and ADVISORY — it never affects this check's conclusion.

Test selection

Test selection

516 of 516 test file(s) selected (100%) via static blast radius.

Escalated to a full run for safety (noncode-change, uncovered-code) — the selection is not trustworthy on its own (see below). CI should run the whole suite.

  • tests/test_action_pins.py — full-run-safety
  • tests/test_allow_entry_in_qualifier.py — full-run-safety
  • tests/test_allow_entry_in_request_const.py — full-run-safety
  • tests/test_analyzer.py — full-run-safety
  • tests/test_analyzer_matrix_inference.py — full-run-safety
  • tests/test_analyzer_ta_return_types.py — full-run-safety
  • tests/test_anchor_tf_change.py — full-run-safety
  • tests/test_anchor_time.py — full-run-safety
  • tests/test_anchor_vwap.py — full-run-safety
  • tests/test_array_bounds_insert_fill_slice.py — full-run-safety
  • tests/test_array_checked_access.py — full-run-safety
  • tests/test_array_empty_aggregates.py — full-run-safety
  • tests/test_array_history.py — full-run-safety
  • tests/test_array_missing_integer_index.py — full-run-safety
  • tests/test_array_new_color_fill_and_na_size.py — full-run-safety
  • tests/test_array_new_defaults_and_order.py — full-run-safety
  • tests/test_array_reference_semantics.py — full-run-safety
  • tests/test_array_retained_alias.py — full-run-safety
  • tests/test_array_slice_view.py — full-run-safety
  • tests/test_array_terminal_returns.py — full-run-safety
  • tests/test_arrseg_coded_run_stops.py — full-run-safety
  • tests/test_arrseg_review_fixes.py — full-run-safety
  • tests/test_binop_operand_order.py — full-run-safety
  • tests/test_block_shadow_primitive_types.py — full-run-safety
  • tests/test_block_var_plain_siblings.py — full-run-safety
  • tests/test_bool_na_refusal.py — full-run-safety
  • tests/test_bool_na_refusals_2.py — full-run-safety
  • tests/test_bool_na_values.py — full-run-safety
  • tests/test_bool_string_inference.py — full-run-safety
  • tests/test_builtin_name_shadow.py — full-run-safety
  • tests/test_builtin_named_locals_compile.py — full-run-safety
  • tests/test_builtin_named_locals_price_refusal.py — full-run-safety
  • tests/test_builtin_named_locals_receipt.py — full-run-safety
  • tests/test_builtin_named_locals_scope.py — full-run-safety
  • tests/test_builtin_named_parameters.py — full-run-safety
  • tests/test_builtin_named_parameters_reference.py — full-run-safety
  • tests/test_calc_on_order_fills_codegen.py — full-run-safety
  • tests/test_calendar_lambda_locals.py — full-run-safety
  • tests/test_call_argument_order.py — full-run-safety
  • tests/test_callable_local_histories.py — full-run-safety
  • tests/test_callable_series_param_types.py — full-run-safety
  • tests/test_callable_string_series_type.py — full-run-safety
  • tests/test_callable_ta_forwarded_length.py — full-run-safety
  • tests/test_callable_var_first_reach.py — full-run-safety
  • tests/test_checked_settings.py — full-run-safety
  • tests/test_ci_engine_main_touched.py — full-run-safety
  • tests/test_closed_trade_fold.py — full-run-safety
  • tests/test_closed_trade_fold_emission.py — full-run-safety
  • tests/test_closed_trade_text_equals.py — full-run-safety
  • tests/test_coded_run_stops.py — full-run-safety
  • … and 466 more

non-code file(s) changed (package-lock.json, package.json) → running the full suite for safety (a code graph can't see config/fixture/data deps)

changed code file(s) with no mapped test (gate/run-gate.mjs, gate/runtime-version.mjs, gate/selftest.mjs, package.json) — a coverage gap or a missing link — running the full suite rather than only the selected tests

Selection is safe under the controlled-regression assumption; always-run tests + a periodic full run are the backstops. Advisory — it never changes the check verdict.

Formal verification

Could not verify: Could not verify main.

The verifier did not have enough to check main, so it is saying so rather than guessing. No false assurance is the whole point.

Guarantee: No guarantee either way, this is an honest abstention, not a pass.

Note: Reason: not verifiable: all 1 sampled inputs raised on both versions — the function never executed, so 'no divergence' would be vacuous (mostly ReferenceError: branchItems is not defined — names the real obstacle, not a sampling gap)

· 1 more finding(s) on lines outside this diff (see the check run).

This branch has not been deployed

No deployments
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