Skip to content

[Calls] Preserve reached inputs and measure native class coverage - #479

Merged
CaelmBleidd merged 2 commits into
mainfrom
caelmbleidd/ts-calls-class-measurement
Oct 14, 2026
Merged

CaelmBleidd merged 2 commits into
mainfrom
caelmbleidd/ts-calls-class-measurement

Conversation

@CaelmBleidd

@CaelmBleidd CaelmBleidd commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Calls previously measured members independently and mixed native coverage with symbolic-result agreement. Measure exact executable original TypeScript statements of one class under a shared 30- or 120-second budget, retaining input candidates when symbolic execution reaches an unsupported call or an execution limit.

The frozen class surface schedules the constructor, every member and ordered two-member scenarios on one receiver. A single machine retains scenario queues with constant-time fairness, a 250 ms quantum, Yices and class-only symbolic novelty. The original AST denominator stays fixed across profiles and budgets; wrappers, foreign classes, model bodies and type-only declarations stay outside coverage.

Primary coverage requires complete, agreeing original and independently instrumented native replays with checked target-class statement IDs. Symbolic returned-value/state consistency is a separate strict diagnostic. Candidate origin participates in deduplication, so a stopped prefix cannot hide a later terminal observation with the same inputs. In-search candidates retain their actual emission times; final queue extraction contributes only to the final budget checkpoint. Candidate caps, extraction failures and overruns remain visible.

Class measurement connects TsStoppedStatesObserver to the caller's candidate consumer. It snapshots feasible unknown-call prefixes before pruning, observes reachable runtime-bound inputs, and collects queued inputs after successful analysis while the machine remains open. The shared UMachine.run, observer and options contracts come from main unchanged. Collection performs no additional execution steps or SAT checks and preserves stop metadata.

JacoDB remains pinned to 37327563ab from UnitTestBot/jacodb#437 for constructor parameter-property binding. Schema 2 binds coverage and stopped-input policies; source closure, harness, domains, models, frontend and clean tool revision are bound into each cell. Source/instrumentation corruption, foreign hits and resume drift invalidate the acquisition attempt.

Rebased onto main at 26f00125a3eb7ebbb1fbc8fcff8e1813f2e3926b. Already-merged engine changes are excluded from this PR; the additional observer migration touches three Calls files.

Local validation of the rebased code: 64 Kotlin class/coverage tests, 41 Node source-inspection tests and 22 Python driver tests passed, with no failures or skips. Calls Detekt, whitespace checks and installDist passed. Broader suites remain for CI. These checks establish fixture behavior and packaging; they are not a rerun of the scientific campaign.

Historical evidence at 421dd926ee39312ec678bfc23be5390066f5a398: one unchanged HashMap, seed 17, a requested 30s in each profile, 91 scenarios and 66 original-class statements. All 475 candidate pairs passed complete agreeing original/instrumented replay without extraction, replay or native infrastructure failures.

Profile Primary native /66 Strict secondary /66 Terminal In-search prefix Post-stop frontier
EMPTY_STOP 57 0 0 91 0
EMPTY_FRESH 43 0 10 0 0
FROZEN_STOP 58 20 5 0 182
FROZEN_FRESH 58 20 5 0 182

Those measurements are a failure reproduction on one class. The sealed v7 campaign covers three unique classes and retains its historical strict metric; neither data set establishes ecosystem representativeness. The historical results remain tied to their original revision and were not recomputed by this rebase.

@CaelmBleidd
CaelmBleidd marked this pull request as ready for review October 13, 2026 23:57
mirror(root, overlay, target)
}

private fun classReplayWrapper(
@CaelmBleidd CaelmBleidd changed the title [Calls] Measure exact class coverage under a shared budget [Calls] Preserve reached inputs and measure native class coverage Oct 14, 2026
@CaelmBleidd
CaelmBleidd changed the base branch from main to caelmbleidd/pr479-ts-primitive-string-conversion October 14, 2026 15:35
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-calls-class-measurement branch 2 times, most recently from e0f349b to 700f8b9 Compare October 14, 2026 15:46
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/pr479-ts-primitive-string-conversion branch 2 times, most recently from 3370736 to 38ff497 Compare October 14, 2026 19:44
Base automatically changed from caelmbleidd/pr479-ts-primitive-string-conversion to main October 14, 2026 19:49
Connect class candidate extraction to the merged TS observer factory and collect queued inputs after successful analysis. Remove references to the retired shared callback and option while preserving stopped-versus-terminal candidate accounting.
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-calls-class-measurement branch from 700f8b9 to 079b434 Compare October 14, 2026 20:06
@CaelmBleidd
CaelmBleidd merged commit 4cc8d0d into main Oct 14, 2026
7 checks passed
@CaelmBleidd
CaelmBleidd deleted the caelmbleidd/ts-calls-class-measurement branch October 14, 2026 20:19
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.

2 participants