Repository navigation
feat: bind calibrations to declared histories - #31
Open
KyleAMathews wants to merge 15 commits into
Open
KyleAMathews wants to merge 15 commits into
KyleAMathews wants to merge 15 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: c18a30f 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 two 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 use the ordinary verdict ranking, so an earlier recorded violation survives a later driver error or controlled-clock spin. Callback failures retain calibration and history context.Unbound calibrations retain search during migration. Registration warns once per property/process and names every unbound calibration; collection remains silent. Bound calibrations keep the
calibrationroute for gap classification. Main’s named campaign/determinism units andUNITreplay are integrated by normal merge. Calibrations still use their stable seed; fresh calibration seeds and replay support remain follow-up work. DB migration and eventual search removal remain separate.Oracle evidence
The append-only review and repair record records laws, pre-edit gates, receiving paths, mutants and finite limits.
Current validation
Pushed head
c18a30f: core/package, plugin, gap oracles and the full Vitest 4 framework suite pass. The Vitest 5 framework run passes 756/757; its remaining timeout-history determinism failure also reproduces on Vitest 4. The recorder retains timing-dependent post-timeout attribution outside the stated contract; a repair is in progress with late-error and per-invocation guarantees retained. The local full sweep was interrupted after both 48-unit campaigns; it is not a full-suite GREEN.Fresh oracle review also found diagnostic presentation assumptions. Scratch repairs accept alternate source layouts and retain exact selected names/cause across every active receiver; further review found an opaque-reason delimiter assumption, now under repair. No framework production change is indicated by these findings. Final combined-owner validation and independent review remain pending. The append-only record will carry the completed evidence before a readiness verdict. No dependency override or lockfile workaround is committed.