Skip to content

Fix TypeScript execution and Calls/PBT contracts after full review - #520

Merged
CaelmBleidd merged 97 commits into
mainfrom
caelmbleidd/ts-quality-review-20261014
Oct 15, 2026
Merged

CaelmBleidd merged 97 commits into
mainfrom
caelmbleidd/ts-quality-review-20261014

Conversation

@CaelmBleidd

@CaelmBleidd CaelmBleidd commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Correct TypeScript execution, Calls and PBT defects found during the bounded source review, and simplify the affected code around explicit ownership, evaluation order and supported behavior.

  • Correct runtime type/address handling, state cloning, string and numeric operations, inherited dispatch, array storage and supported call arities.
  • Preserve Calls/PBT target identities, replay and coverage contracts, source freshness and unsupported outcomes; protect raw results from accidental overwrite.
  • Improve process failure handling and observed-child cleanup, remove redundant helpers, and make conditions, limits and test stages explicit.
  • Prune infeasible configured initial states per entry method while keeping solver UNKNOWN distinct from UNSAT. Preserve the public strict initial-state API.
  • Add regression sources and address strict TypeScript lint findings with scoped decomposition and formatting.
  • Address Calls Detekt findings through cohesive type-matching and digest helpers, consistent branches, named constants and four focused experiment test classes retaining all 21 tests.

The JacoDB companion UnitTestBot/jacodb#443 is merged into neo. The dependency now pins current merged neo at 7db549ef2a6c2cd05e9403e3e2e7087df7c5fcc2, which contains #443 and the subsequent frontend fixes #438–442. All eight JitPack modules for this exact SHA are published. The shared revision keeps the frontend and Kotlin converter aligned, including compact lexical-environment references; bounded source review found no additional USVM adaptation needed. The companion supplies isSuperCall metadata and corrected generic constraints. The newer merges also address optional-chain fallback CFGs, property source spans, ambient namespaces and deep comma-expression lowering.

Rebased onto current main at d7b3d2111bec8f57ccf853e0e29f5f8fa566d124. The rebase preserves the prior source tree exactly and drops redundant intermediate JacoDB pins already superseded by main. Conflict resolutions retain upstream observer events, remainder semantics and prepared class harness behavior alongside the reviewed fixes.

Validation: automatic CI 38737176045 passed all jobs at b92f23a6aa24d54c0cb7ea0493e9e9a4321545fb: TS/Calls, PBT, core, JVM, Python and lint. Actual Detekt output and code scanning confirm 19 of the 20 Calls warnings fixed; the remaining digest NestedBlockDepth is addressed separately in #522. No lint policy, baseline or suppression changed. All 21 moved experiment tests actually passed; independent source comparison also preserves their 17 TempDir parameters, eight helper bodies and fixture strings. The original native-JavaScript replay oracles are retained. Computed Symbol.hasInstance source fixtures assert the precise earlier frontend boundary; they do not claim runtime guard coverage.

The change also received bounded subagent review, independent inspection of risky semantic changes, range-diff inspection and full-range git diff --check. No local JVM, Gradle, Node/npm, compiler, tests, solvers or containers were started under the requested resource restriction. The branch was rebased onto main d7b3d2111 before publication and merged as cac798cb2c5cda4e3cd9da6c0ea1fa2865dcbcc5.

@github-advanced-security github-advanced-security AI 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.

detekt found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

return "$revision@sha256:${callsExternalFrontendRuntimeDigest(realDirectory)}"
}

private fun callsExternalFrontendRuntimeDigest(frontendDirectory: Path): String {
Comment thread usvm-ts/src/main/kotlin/org/usvm/machine/expr/TsExprResolver.kt Fixed
Move Date routing from the generic catalog to the dispatcher while preserving direct-target precedence and original-call completion. Add focused dispatcher contract tests. Runtime checks were not run at the user request.
Keep joined runtime-kind metadata separate from payload construction. No semantic change; verification was static only at the user request.
Preserve array dimensions, literal reflexivity, structural class alternatives and auxiliary requirements. Add focused unexecuted regression source. Independent static patch verification only; no compiler, tests, JVM or containers were run.
Decompose result ITE payloads and guards from current memory. Add five unexecuted API regression contracts and clarify existing test phases and numeric comment. Independent static verification and targeted fixture repair only; no compiler, tests, JVM or containers were run.
Correct wrapper-bearing conditional boxing and primitive literal, alias, and intersection array descriptors. Add focused regression source and separate existing test phases. Independently reviewed and statically verified; compilation and runtime checks were not run under the user restriction.
Copy the mutable artificial-local registry for each cloned state. Add a focused bidirectional add/remove isolation regression source and clean local comments and test phases. Independent static review and patch verification passed; compilation, tests, and runtime checks were not run.
Reuse guarded code-unit population and the existing private length reader while preserving distinct backing allocation and state mutation order. Name the input register index and separate test phases. Independently reviewed and statically verified; compilation, tests, solver, and replay were not run.
Reject unsupported active numeric conversions and retain represented wrapper alternatives. Add regression source; verification is static only and no tests were executed.
Use the selected right payload in mixed-kind equality and add a focused regression source case. Apply named arguments and staged predicates in PBT value encoding. Verification is static only.
Isolate runtime limitation callbacks like unknown-call observation. Add a regression source scenario asserting callback invocation and preserved metadata. Independent static verification only; no tests executed.
Preserve manifests with repeated project IDs by selecting the project that owns the globally unique function. Add focused regression source and clarify manifest validation and build diagnostics. Independent static verification only.
Check the existing encoding contract before NaN and bound membership handling. Add direct predicate regression source for malformed tags and noncanonical finite bits. Independent static verification only.
Select public default exports and direct named declarations marked DEFAULT while preserving source-origin metadata. Add ordinary alias and source-backed named-function regression cases. Independent static verification only; no tests executed.
Reject identifier-ignorable controls and malformed integer encodings. Enforce string primitive types in Istanbul reports while preserving nullable path fallback. Add focused regression source and clarify validation code. Independent static verification only.
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-quality-review-20261014 branch from 3fa1024 to b92f23a Compare October 15, 2026 12:46
@CaelmBleidd
CaelmBleidd merged commit cac798c into main Oct 15, 2026
7 checks passed
@CaelmBleidd
CaelmBleidd deleted the caelmbleidd/ts-quality-review-20261014 branch October 15, 2026 12:55
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.

[TS] Support multiple arguments in Array.unshift

2 participants