Repository navigation
feat: bind calibrations to declared histories - #31
Open
KyleAMathews wants to merge 18 commits into
Open
KyleAMathews wants to merge 18 commits into
KyleAMathews wants to merge 18 commits into
Conversation
Law: An explicit history binding runs only that history. The selected clean run and actual reach must pass before exactly the designated law rejects the mutant. Authority: approved maintainer proposal and review, 2026-11-11. Reach: Constructed framework histories exercise direct selection, invalid selectors, isolated constructed drivers, and both forced-probe controls. Fixed seed 1 reached bound-calibration 6 times, registration-error once, and bound-constructed-driver once. The random campaign reached them 3, 4, and 1 times respectively. Existing run budgets remain unchanged. RED: On unchanged source at 49f3bd1, the extended framework self-oracle's 'fixed history: bound calibrations use only' test rejected two driver calls where the binding permits one. GREEN: 22 focused binding regressions and the selected clean-driver-error regression pass. Build, lint, types, format, publint, sherif, 56 core tests, and 4320 ESLint plugin tests pass. Full framework and gap checks are running. Mutant: The same comparison rejects restoring search (driver count 2 > 1), skipping reach, accepting an inapplicable corruption, accepting the wrong law, and cloning a built history that carries identity metadata. Limits: Unbound calibrations retain search with named registration warnings until consumers migrate. Fresh seeds await UNIT replay support. DB migration, a matched DB timing comparison in CI, and the later F27 rebase remain separate.
🦋 Changeset detectedLatest commit: 81391d3 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Pre-merge checks:
|
commit: |
KyleAMathews
marked this pull request as ready for review
November 11, 2026 19:09
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.
Calibrations currently search fixed histories, constructions and generated samples until a mutant applies. Each candidate can open a real database. In the motivating DB release, PowerSync startup calibrations consumed 1,455.762 of the file’s 1,926.534 test seconds.
This change lets a calibration select one declared history. Its clean run must pass and prove its declared reach before the mutant must fail under the named law and optional
differencerequirement. A failed selected premise fails immediately.Generated sources accept fixed or constructed names. Enumerated sources accept zero-based indices or canonical labels. Invalid selectors fail registration before any driver runs. Fixed and enumerated selections preserve the original identity. Each constructed driver execution builds a fresh history from a stable seed derived from property id and calibration name, then resolves its plan once.
probeHistoriesbinds the automatic controls independently: a clean entered history detects a probe forced not entered; a clean absent history detects a probe forced entered. Entered selection can infer a unique construction; absent selection is explicit. Both paths retain ordinary verdict ranking, so an earlier recorded violation survives a later driver error or controlled-clock spin. Callback failures retain truthful calibration/history context and original cause.Unbound calibrations retain search during migration. Registration warns once per property/process and names every unbound calibration; collection stays silent. Bound calibrations keep the
calibrationroute. Main’s named campaign/determinism units, UNIT replay and F27 differences are integrated by normal merge. Calibrations still use their stable seed. Fresh calibration seeds, DB migration and eventual search removal remain separate work.Oracle evidence
The versioned review and repair record preserves every original finding, follow-up, pre-edit gate, mutant result and scope qualification.
Current validation
Final pushed head
81391d3is green in all CI jobs, including preview publication. The complete framework suite passes 831/831 on Vitest 4.1.12 and 831/831 on Vitest 5.1.0. Each version completes 56 fixed-seed and 56 random-seed units, with nonzero reach for every required diagnostic and timeout receiver. Core/package, plugin, gap oracles, gap end-to-end, type/build/lint/format and packaging checks also pass. Local combined and host-RNG follow-ups pass 49/49 and 18/18. Both final independent reviews and the loss audit found no remaining supported in-scope defect. The PR is ready within the finite contract and historical qualifications in the versioned record. Earlier interrupted local full runs remain interrupted; final complete-suite evidence comes from this exact-head CI run.