Repository navigation
[TS PBT] Add direct campaign controls under a shared deadline - #540
Open
CaelmBleidd wants to merge 1 commit into
Open
CaelmBleidd wants to merge 1 commit into
CaelmBleidd wants to merge 1 commit into
Conversation
CaelmBleidd
force-pushed
the
caelmbleidd/pbt-direct-campaign-controls
branch
from
October 15, 2026 22:25
bf5de36 to
71fdab8
Compare
This was referenced Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Concrete PBT, original-predicate symbolic search, and native candidate confirmation currently require separate calls with independent time budgets. This change adds
PropertyCampaignRunnerfor an ordinaryPropertyDefinition, withPBT_ONLY,SYMBOLIC_ONLY, andSEQUENTIALcontrols sharing one monotonic deadline.SYMBOLIC_ONLYconfirms and reduces the actual USVM candidate through the existing external-witness implementation from #506.SEQUENTIALreturns a demonstrated concrete violation immediately. Completed concrete results and unresolved symbolic candidates remain available when preparation, confirmation, or the remaining allocation cannot finish. Requested concrete coverage is retained; collection timeouts produce an explicit diagnostic artifact without discarding an already demonstrated violation.The existing two-argument
FastCheckBackend.runkeeps its contract. A deadline-aware overload bounds its coverage preparation and supervised process. The TypeScript machine receives the same optional caller deadline callback already used by #524, so machine preparation cannot silently reset the search allocation. Frontend generation reuses the existing JacoDB timeout with the convenience loader's provider, entrypoint and inference settings; failed partial output is discarded and successful temporary IR is cleaned up. JSON loading, mapping, and individual solver calls remain cooperative boundaries; their elapsed time is charged before subsequent work begins.This is a bounded first implementation slice of #354, stacked on #506 at
0715401d5d973479bc677072322925c47a501c77. It does not close #354 or #353. Concrete named checks work; symbolic named/DSL candidates retain an explicitUNSUPPORTED_REPLAYoutcome until the separate executable binding integration exists. CLI wiring, a common serialized campaign artifact, and repeated session/feedback integration remain outside this change. No README changes or benchmark campaigns.Validation on Java 11 / Node 22: after inheriting the shared transport repair, the complete integration check with #542 passed 195 PBT Kotlin tests, 138 FastCheck Kotlin tests and 186 Node tests, without failures or skips. It includes all 13 direct-campaign scenarios and 18 symbolic-search regressions. The shared timeout class also passes directly on #506. Strict Detekt for the changed sets and
git diff --checkpassed.