Skip to content

[TS Calls] Add reproducible unknown-call census - #389

Merged
CaelmBleidd merged 10 commits into
mainfrom
caelmbleidd/issue-367-unknown-call-census
Sep 20, 2026
Merged

CaelmBleidd merged 10 commits into
mainfrom
caelmbleidd/issue-367-unknown-call-census

Conversation

@CaelmBleidd

@CaelmBleidd CaelmBleidd commented Sep 19, 2026

Copy link
Copy Markdown
Member

The TypeScript engine's unknown-call decisions were not available as a reproducible project-level inventory. This adds runUnknownCallCensus with census and summarize commands: it checks pinned project revisions, loads the complete project scene, records repeated events and explicit complete/partial/timeout/error outcomes, and summarizes unique call sites and containing functions.

The development sample no longer depends on lexicographic file order or BFS. A class qualifies when it has at least minMethodsPerClass ordinary methods with at least minStatementsPerMethod IR statements. Eligible classes and methods receive reproducible SHA-256 ranks from the manifest seed, and methods are taken round-robin across classes. Execution uses CLOSEST_TO_UNCOVERED_RANDOM, records the seed and strategy, and does not stop at entry-method coverage. Synthetic file methods use JacoDB's DEFAULT_ARK_METHOD_NAME.

The manifest uses a 30-second method budget and a 900-second project budget, with up to 40 classes and 40 methods per project. Its three projects are an explicitly limited development pilot. Additional development projects must be pinned before inspecting their results, while held-out projects remain separate from model selection.

The accepted EMPTY_FRESH run at c1e07845 analyzed 97 methods: 45 completed, 36 partial, 16 timed out, and none failed at the tool boundary. The project distribution was 17/40/40 methods across 11/37/14 source files. It recorded 7,002 repeated events at 36 stable source sites in 26 containing functions. Site counts, not repeated exploration events, drive the documented decision; no new model family is admitted by this pilot.

The runner is split into orchestration, seeded method selection, bounded process handling, and event recording. The main runner is 574 lines instead of 1,136.

Validation on the final head:

  • JDK 21 compilation and 10 focused census tests passed.
  • :usvm-ts:detektMain, :usvm-ts:detektTest, and git diff --check passed.
  • Standalone summary regeneration is byte-identical to the generated summary.
  • Raw SHA-256: a091dff2d393e131a83e76cc71af51dd38dcd821e2e01ee007cfe8aa56ab6c08.
  • Summary SHA-256: 7c59fbfa09af54de1e74ed65f4c762629013688d109305a970b421ee32781d00.
  • Manifest SHA-256: 4adba5861339782e1f514f01525561a67aa9f01a6abe914b3d371ff77e1c1bbb.

Optional models are disabled for the census; mandatory semantics and existing pre-dispatch approximations remain unchanged. The 36 partial analyses, 16 timeouts, and three-project scope remain explicit limits on prevalence claims.

Related to #367.

@CaelmBleidd
CaelmBleidd merged commit 4cb2466 into main Sep 20, 2026
7 checks passed
@CaelmBleidd
CaelmBleidd deleted the caelmbleidd/issue-367-unknown-call-census branch September 20, 2026 09:38
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