Repository navigation
[Epic][TS PBT] Build and evaluate a property-aware PBT–USVM feedback system #345
Description
Current state (2026-10-14)
Audited against usvm main at 19866c959d.
Direct property projection/search (#387), original-suite/joint-support registration (#407), bounded observations (#411), object domains (#473) and exact supported if-arm mapping (#409) are merged. These are foundations, not the completed property-aware feedback/evaluation result.
Remaining acceptance boundary
Complete #353/#354, the shared search session #481, #397-#399 and #355, then the #405 pilot and held-out/extension evaluation. #480 supplies the independent typed authoring track. Preserve the full #400-#404 research scope and distinguish sequential PBT+USVM coverage work from the required iterative property-observation loop.
Implementation map updated on 2026-10-14
This map replaces the earlier implementation order. The inspected main revision is 19866c959dcf23d343132c9ab2ee5a3c15d41fe2. Several issues remain open although their bounded deliveries have merged: #351/#352 via #387, #395 via #407, branch reconstruction in #382 via #409, and the accepted bounded #396 capture via #411/#413. Audit acceptance and capability boundaries; do not duplicate these implementations or close issues solely from their merge status.
| Step | Owning issues | Deliverable and acceptance gate |
|---|---|---|
| 0. Reconcile foundation and fix shared contracts | #351, #352, #395, #382; interfaces for #353/#354/#481 | Record the supported domains, original/check identity, source/context scope, candidate/replay/evidence delta and session API. Validate the merged bounded substrate and explicitly list remaining gates. |
| 1. Direct execution and confirmation | Direct slice of #353; shell/controls of #354 | The same property executes via PBT and direct USVM. A supported external USVM witness is natively confirmed, reduced and rechecked; failed replay and unsupported shrinking stay distinct. One total deadline and common artifacts work for direct/sequential controls. |
| 2. Incremental edge-guided original-property search | Initial #481; admitted branch evidence in #382/early #355 using the completed #396 contract; coverage policy in #399 | Real admitted PBT edge evidence changes pending exploration of NOT(original property). Confirmed edges leave coverage goals, necessary prefixes remain traversable, compatible work is reused, and native replay confirms additions. No hypothesis inference is needed for this gate. |
| 3. Observation-derived challenges and property guidance | Reuse completed #396; #397, #398; hypothesis slice of #353; relation policy in #399 | A contextual nontrivial relation is observed, exactly bound, challenged and natively classified. PBT evidence also changes original-property path/state selection. Keep auxiliary roles, small finite support, stale contexts and misleading hypotheses explicit. |
| 4. Two-way repeated generation/search | #355 with #481/#353/#354/#399 | A confirmed witness changes a support-preserving PBT neighborhood generation; its fresh evidence changes the second symbolic advance. Preserve compatible previous work and expose the complete causal lineage. |
| 5. Core functional checkpoint and development assessment | #405; development inputs from #356/#357/#404 | Complete the two-advance functional gate first. Then run the preregistered equal-budget core comparisons on development data and record the assessment, including negative results. Full held-out corpus and #400–#403 are not prerequisites. |
| 6. Bounded extensions | #400, #401, #402, #403 | After the core assessment, integrate generator choices, correlated executions, commands and helper contexts separately on the same contracts. Each has its own supported subset, native confirmation and enabled/disabled comparison. |
| 7. Final held-out evaluation and paper | #356, #357, #404 | Freeze source-linked oracles, splits, capabilities and policies; evaluate core/extensions and regenerate results from raw evidence. Manuscript claims stay within confirmed outcomes. |
#480 is an independent usability track: agree the shared check identity at step 0, deliver ordinary direct DSL tests alongside step 1, then connect the same typed representation to steps 3–4. Do not wait for the complete loop to improve test authoring, and do not build a separate DSL-specific feedback engine.
Corpus selection/validation (#356), the development comparison protocol (#357), and nearest-work/claim analysis (#404) start alongside steps 0–1. Their early artifacts support #405 without requiring their final completion. Earlier corpus PRs #406/#408 are closed without merge; recover any wanted preparation explicitly rather than treating it as delivered main code.
Parallel implementation is safe across the direct replay/control, DSL, and initial session/evidence tracks once their small contracts are agreed. #397 consumes #396; #398 can use shared typed fixtures before inference completes; #399 can use the #481 session contract before the full #355 loop. Integration gates follow the table; no circular prerequisite on completing the integrated loop is introduced.
Use one PR per independently reviewable delivery where practical. Each PR names the implemented contract, exact revision and focused validation. Native functional/integration checks establish behavior; benchmark campaigns remain paused until explicitly resumed. No positive comparative result is required to accept correct implementation.
Required coupling contract
- The primary supported search retains the original entry point, domain, precondition and NOT(original named property/check). PBT evidence changes exploration inside that search.
- Coverage/hypothesis goals are explicit auxiliary exploration. A helper-only query is allowed only with justified original reach/value/time/context binding; it cannot masquerade as unchanged public-property analysis.
- [TS PBT] Preserve a shared incremental search session across feedback rounds #481 retains compatible previous work. Confirmed coverage is shared; unconfirmed symbolic reachability, UNKNOWN and failed replay are not concrete facts or global infeasibility proofs.
- Every useful return to PBT affects actual support-preserving generation. Evidence from that new generation must affect a later symbolic advance, with at least two advances in [TS PBT][Checkpoint] Validate the bounded core feedback loop and assess its research value #405.
- A small finite support cannot be disabled by an impossible distinct-sample threshold. Missing relation evidence leaves eligible original-property/coverage exploration usable.
Original report and acceptance context, retained for traceability
Intended result
Deliver the strongest evidence-backed version of the TypeScript PBT/USVM work: reuse human-written properties and generator semantics, infer property-relevant behavioral relations from concrete executions, challenge them symbolically, and return validated inputs to further generation and shrinking.
Coverage feedback is mandatory infrastructure. Observed relations are a central research mechanism. Generator-choice search, metamorphic relations, bounded command models and context-scoped helper summaries are included in the full delivery through bounded, working implementations and separate evaluation. They are not deferred as unspecified future work.
The full epic completes with an implemented, evaluated and reproducible result; scientific superiority is a hypothesis, not an acceptance criterion that permits hiding negative results.
Delivery stages
The full scope above is retained, but it is delivered through independently reviewable checkpoints. The first checkpoint does not wait for all extensions or the final benchmark corpus.
| Stage | Owner | Completion boundary |
|---|---|---|
| Core implementation and development pilot | #405, with #355 owning integration | A bounded end-to-end loop, exact coverage feedback, original-oracle replay, returned-input generation and equal-budget development comparisons; a recorded assessment of feasibility and empirical promise |
| Bounded extensions | #400, #401, #402, #403 | Working generator-choice, multi-execution, command-model and helper-context extensions on the same core contracts |
| Final evaluation and paper | #356, #357, #404 | Frozen held-out evaluation of the core and each extension, limitations, manuscript and reproducible artifact |
The core starts with supported bounded numeric/scalar inputs, tuples and dense bounded arrays; selected arguments, returns and explicit intermediate observation points; a small frozen relation vocabulary; and deterministic target scheduling. This is a declared capability boundary, not permission to approximate unsupported JavaScript behavior silently. Ordinary multi-call predicates remain usable wherever already supported; dedicated cross-execution inference belongs to #401.
#405 separates functional completion from evidence of benefit. A reproducible negative or inconclusive pilot can complete that checkpoint with a documented diagnosis and next decision; it cannot be called a demonstrated improvement. The full epic and its required extensions remain open. A later reduction of full scope must be an explicit roadmap change, never an inference from a negative run.
Dependencies are completion gates. Literature, corpus selection, protocol design and extension interface design may start early. Core component issues close on their stated bounded contracts; extension-specific implementation and acceptance are owned by #400–#403, not retroactively added to those core issues.
Semantic contract
- Kotlin owns common artifacts and orchestration; fast-check is the first concrete backend. Reuse completed [TS PBT] Establish a clean integration baseline #346–[TS PBT] Map Kotlin property definitions and source coverage to EtsIR #350 and [TS PBT][P0] Align and simplify property execution semantics before integration #384, the native TypeScript frontend, original TypeScript oracles and existing tagged values.
- Distinguish declared input support/preconditions, generator probability bias, concrete observations, empirical hypotheses and proved facts. Search for a violation of the declared predicate; never assume that predicate or a sampled relation as an unconditional fact.
- Challenge a hypothesis using declared domain AND admitted precondition AND reach(point/context) AND NOT(hypothesis). Preserve context/guards and value identity. Refuting a hypothesis is not automatically a defect.
- Every finding must replay in the original runtime. Unsupported execution, solver uncertainty, invalid models, timeouts and failed extraction remain visible. No finite unsuccessful search proves a property.
- Covered edges remain searchable. Input-dependent faults, relational behavior and different states on one path remain relevant after coverage plateaus.
- Speculative restrictions/substitutions are labeled experimental assumptions, with replay and a positive bounded unrestricted allocation under the same total deadline. Fallback alone is not a completeness guarantee.
- Preserve [TS PBT][P0] Align and simplify property execution semantics before integration #384 sample isolation; bounded stateful sequences explicitly preserve state only within one invocation.
Work packages
| Package | Owning issues | Required output |
|---|---|---|
| Delivered foundation | #346, #347, #348, #349, #350, #384 | Existing models, concrete execution, coverage, mapping and shared semantics |
| Direct symbolic baseline | #351, #352 | Existing scoped PR #387; declared-domain and original-predicate search |
| User-authored semantics | #395 | Original predicates/assertions and support-preserving generator relationships |
| Replay, shrinking and campaign shell | #353, #354 | Original-runtime validation, target-preserving reduction, common budgets/artifacts and controls |
| Exact branch signal | #382 | Real-runtime branch-to-CFG mapping; semantic coverage usable by search |
| Feedback integration | #355 | Bounded core PBT → observations → symbolic challenge → replay → PBT cycle |
| First research checkpoint | #405 | Core functional evidence, development comparisons and an explicit proceed/refine/reassess decision |
| Observations | #396 | Bounded original-runtime values with property/run/point provenance |
| Relational inference | #397 | Property-focused, guarded hypotheses with evidence and contradictions |
| Symbolic challenge binding | #398 | Exact value/location/time/context projection and useful-prefix targets |
| Search scheduling | #399 | Auditable assertion/coverage/hypothesis scheduling under one budget |
| Generator-choice search | #400 | A working bounded dependent-generator subset and original-generator replay |
| Metamorphic execution | #401 | Correlated multiple executions and original relational oracles |
| Stateful command models | #402 | Bounded command sequences, guards, state invariants and reduction |
| Helper summaries | #403 | Stage-two context-specific relations, challenge and refinement; independent of core completion |
| Corpus and evaluation | #356, #357 | Real properties, validated faults, development/held-out split and causal ablations |
| Novelty and paper | #404 | Primary-source comparison, claim/evidence ledger, manuscript and reproducible package |
Execution order and orchestration
- Start corpus selection ([TS PBT] Build a property-rich development and held-out benchmark with validated faults #356) and literature/claim design ([TS PBT][Research] Establish novelty and deliver the reproducible property-feedback paper #404) immediately. Preserve the already reviewed foundation and the narrow [TS PBT] Project properties and search violations with USVM #387 delivery; new research mechanisms land in their owning follow-ups.
- Complete [TS PBT] Project property domains and preconditions into USVM #351/[TS PBT] Search for property violations with USVM #352 and implement [TS PBT] Confirm, classify and shrink symbolic property and hypothesis witnesses #353/[TS PBT] Provide campaign controls, shared budgets and extensible run artifacts #354. In parallel, establish [TS PBT] Reuse user properties, assertion structure and generator semantics #395, [TS PBT] Capture bounded property-scoped observations in original TypeScript #396 and [TS PBT] Integrate exact c8/EtsIR edge feedback into target selection #382.
- Deliver the bounded [TS PBT] Infer property-relevant relational hypotheses from PBT observations #397/[TS PBT] Project observed relations and assertion goals into exact EtsIR bindings #398 contracts, then [TS PBT] Schedule assertion, coverage and hypothesis targets under one budget #399 and [TS PBT] Integrate the core iterative property-observation feedback loop #355's core repeated loop. Use the development manifest from [TS PBT] Build a property-rich development and held-out benchmark with validated faults #356 and protocol/nearest-work inputs from [TS PBT] Evaluate causal contributions of property-aware feedback and bounded extensions #357/[TS PBT][Research] Establish novelty and deliver the reproducible property-feedback paper #404 without waiting for those issues to close.
- Complete [TS PBT][Checkpoint] Validate the bounded core feedback loop and assess its research value #405: check functional causality, run the equal-budget development comparisons, account for all overhead, and record the next decision. Do not make [TS PBT] Search bounded generator choices while preserving dependent input structure #400–[TS PBT] Challenge context-scoped observed function summaries during symbolic search #403 prerequisites for this checkpoint or expand the pilot to rescue an unfavorable result.
- Use the pilot's diagnosis to implement and integrate [TS PBT] Search bounded generator choices while preserving dependent input structure #400, [TS PBT] Guide relational and metamorphic properties across multiple executions #401, [TS PBT] Reuse bounded command models and state invariants in hybrid search #402 and [TS PBT] Challenge context-scoped observed function summaries during symbolic search #403 on the same budget/oracle contracts. Each remains required for the full epic, with a nonempty supported subset, conformance evidence and ablation. Their completion depends on the pilot assessment; early interface design is allowed.
- Freeze final templates, bounds, scheduler, corpus exclusions and settings on development data, then execute [TS PBT] Evaluate causal contributions of property-aware feedback and bounded extensions #357 and complete [TS PBT][Research] Establish novelty and deliver the reproducible property-feedback paper #404. Final results do not tune the method or select favorable benchmarks.
Use one PR per independently reviewable contract/mechanism where practical, with linked issue, focused behavior tests, actual checked revision and reproduction commands. Keep the dependency graph acyclic; distinguish readiness to start work from gates on final integration. Do not mark an issue implemented solely because its plan or fixture exists.
Evaluation and completion gates
- Same original user oracles are used in PBT-only, symbolic-only, sequential, coverage-only, relations-only and combined modes. Add observation-independent template, unfocused-inference, no-return-loop, output-novelty and extension ablations in [TS PBT] Evaluate causal contributions of property-aware feedback and bounded extensions #357.
- Total budgets include observation/inference/mapping, frontend/adapter work, search, replay and reduction; report setup consistently. Measure distinct confirmed faults and time to confirmation, not coverage alone.
- Include held-out real properties, known defects and separately reported validated mutants; saturated-coverage, misleading-hypothesis, generator-dependence, metamorphic and stateful cases.
- Each required bounded extension works end to end. Unsupported-only placeholders or toy wins cannot stand in for the full scope or its evaluation.
- Raw artifacts expose observations, inferred expressions, evidence provenance, mappings, target decisions, replay outcomes, returned seeds, costs and limitations. Regeneration commands reproduce the paper's tables.
- Nearest-work analysis covers coverage-guided PBT, dynamic invariants, static/dynamic testing, hypothesis falsification, generator choices and model-based testing. The supplied Go/gopter thesis includes coverage, input corpora and behaviorKey novelty; reuse of values alone is not a novelty claim.
- Preserve negative results and distinguish functional completion from measured improvement. Keep unknown-call policy work ([Epic][TS Calls] Introduce explicit fallback policies and partial semantic models #360/[TS Calls] Evaluate fallback policies and models with concrete replay #385), the ICCQ manuscript and IFDS/type-inference research separate.
Arbitrary JavaScript closure serialization, universal invariant discovery, arbitrary heap/environment modeling, concurrency/async schedule exploration and a general plugin platform are outside the required bounded implementation. This does not exclude the explicitly listed structured generators, metamorphic relations or within-invocation stateful command models.
Activity
[-][Epic][TS PBT] Integrate fast-check with symbolic execution[/-][+][Epic][TS PBT] Integrate pluggable PBT engines with symbolic execution[/+][-][Epic][TS PBT] Integrate pluggable PBT engines with symbolic execution[/-][+][Epic][TS PBT] Build and evaluate a property-aware PBT–USVM feedback system[/+]