UnitTestBot / UnitTestBot/usvm
[Epic][TS Calls] Introduce explicit fallback policies and partial semantic models
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 33
- Forks
- 27
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 15
Description
Goal
Make unknown-call behavior explicit and evaluate its effect on symbolic exploration and concrete reproducibility.
Scope
- Use the current USVM and native JacoDB TypeScript frontend.
- Reuse one typed unknown-call dispatch boundary.
- Select an immutable set of semantic models independently from STOP_PATH or FRESH_SYMBOLIC_RETURN fallback.
- Support guarded normal/exceptional successors, state changes and aliases, with an explicit residual domain routed to fallback.
- Execute source models through the normal EtsIR interpreter; use intrinsics for engine primitives unavailable or inefficient in ordinary TypeScript.
- Observe decisions through TsInterpreterObserver. Persistent path history and stopped-state snapshots are not production requirements.
- Select a small justified model set using a real-project census and existing-model audit, then compare policy/model configurations with real TypeScript replay.
First-priority gate
#383 is P0 and blocks completion of #365/#366 and further integration using their old contract. Reuse the simplification already in PR #377/#380; do not create a duplicate implementation.
A model needs an ID, a declarative target and execution. Do not reintroduce separate backend/registration/descriptor layers, redundant implementation-kind/precision values, manually maintained model versions, or a generic plugin framework.
Work
- Completed foundation: #361, #362, #363, #364.
- Priority simplification gate: #383.
- Model integration: #365, #366.
- Independent census and audit: #367, #368. Their preparatory work may continue while the gate is resolved.
- Final policy/model experiment: #385. Add bounded family implementation prerequisites only when the census justifies them.
- Optional research-only frontier capture: #373, only when a concrete consumer needs more than existing decision events.
Definition of Done
- All relevant unknown calls use one documented boundary or have an explicit exclusion.
- Fallback semantics are consistent; opaque returns do not claim to model arbitrary side effects or exceptions.
- Built-in model applicability depends on sufficient target/receiver evidence, not a method name or one possible type.
- Unsupported domains retain their configured fallback; trusted models have focused guard, alias and exception tests.
- One useful intrinsic and one ordinary TypeScript model demonstrate the two implementation mechanisms.
- Decision observation does not change exploration or require generic core-state changes.
- A frozen model set and development/held-out evaluation in #385 measure real replay-confirmed targets on comparable budgets.
- Mandatory language semantics and correctness fixes remain identical between experimental profiles.
- Negative results and unsupported cases are reported.
PBT generation, hybrid scheduling, LLM/MCP, a complete standard library and speculative research-state APIs are outside this epic.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Begin with blocking issue #383 and the simplification in PRs #377/#380, then trace the TsInterpreterObserver and EtsIR interpreter contracts. Review the dependent work in #365, #366, #367, #368, and #385; completion requires the documented boundary, justified model set, focused behavior tests, and replay-based evaluation described in the definition of done.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kotlin, typescript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100