docsOverview

MemQL Proving Scorecard

What the platform measures about itself, and what it does not. Each number is a median with its spread and its N, stamped with the commit and date it came from. A figure that was not measured says so, in its own words, rather than reporting a zero -- an absent figure and a zero are different answers.

  • Scorecard 2026-09-27 at commit 9a93b7682
  • Corpus 7de1803c5d73266a -- two scorecards with different corpus fingerprints measured different things and are not a trend

The two tiers

TierArmedLast run
ciyes2026-09-27replayed on every pull request; it reaches no provider. Responses come from synthetic.
livenoneverdispatched by hand from proving-live.yml; it has not been run, so every live figure reads tierNotRun

What each tier can honestly measure

A CI run replays from recorded model responses, so it is deterministic by construction: pass-rate variance is trivially perfect and wall-clock belongs to the runner rather than to the product. Those figures are unmeasured in CI and stay that way until the live tier fills them.

FamilyMetricBlocks a mergeWhat it counts
amortizedCostamortizedCost.compileCallsOnCatalogHityesModel calls made while compiling a goal that exactly matches the catalog.
amortizedCostamortizedCost.providerCallsyesProvider calls one run made. A run served entirely from the journal makes none.
amortizedCostamortizedCost.replaysServedWithoutModelyesGoals a trusted learned procedure answered with no model and no app call.
amortizedCostamortizedCost.stepsServedFromJournalnoSteps answered from the journal rather than re-executed.
amortizedCostamortizedCost.tokensPerGoalnoTokens spent per goal, amortized over N runs with different variables.
amortizedCostamortizedCost.usdPerGoalnoDollars per goal, amortized over N runs with different variables.
reliabilityreliability.passRateyesRuns whose verifier passed, over runs attempted.
reliabilityreliability.passVariancenoSpread of the pass rate across K runs of one goal.
recoveryrecovery.modelCallsnoModel calls spent recovering from an injected failure.
recoveryrecovery.rateyesRuns that reached a passing verifier after an injected failure.
recoveryrecovery.repairStepsVsRestartStepsnoSteps a repair ran, over steps a restart from the beginning would have run.
recoveryrecovery.stepsReExecutedyesAlready-completed steps re-executed while recovering. Repair from the failed step re-executes none.
recoveryrecovery.wallClockMsnoWall-clock from the injected failure to a passing verifier.
durabilitydurability.duplicatedSideEffectsyesSide effects delivered twice across a mid-run kill and a resume. Must be zero.
durabilitydurability.duplicatedSideEffectsAcrossDivergenceyesSide effects delivered twice when a replay diverged and the app took over. Must be zero.
durabilitydurability.resumedOnAnotherNodeyesKilled runs that resumed on a different node from the journal alone.
durabilitydurability.resumedStepsReExecutedyesCompleted steps a resumed run executed again. Must be zero.
learningCurvelearningCurve.catalogServedFractionnoSteps served by the catalog, across a sequence of related goals.
learningCurvelearningCurve.usdPerGoalnoDollars per goal as the catalog fills across a related sequence.
speedspeed.firstRunVsReplayRationoA replayed run's wall-clock over the first run's.
speedspeed.journalPerStepOverheadMsnoMilliseconds the journal itself adds per step, measured in one process against the same steps unjournaled.
speedspeed.wallClockPerGoalMsnoWall-clock for one goal, end to end.
governancegovernance.approvalsBoundToArtifactHashyesApprovals carrying the hash of the artifact approved. Must be 1.
governancegovernance.effectsWithReceiptsyesSide-effecting steps that left a receipt. Must be 1.
governancegovernance.modelCallsJournaledyesModel calls the run journaled, over model calls it made. Must be 1.

The numbers

Amortized cost

ScenarioMetricArmFigure
amortizedCost.a-catalog-hit-makes-no-model-callamortizedCost.compileCallsOnCatalogHitplatform0 (0-0, N=1)
amortizedCost.control-a-catalog-miss-reaches-a-modelamortizedCost.compileCallsOnCatalogHitplatform1 (1-1, N=1)
amortizedCost.a-corrected-step-teaches-the-procedureamortizedCost.providerCallsbaseline1 (1-1, N=1)
amortizedCost.a-corrected-step-teaches-the-procedureamortizedCost.providerCallsplatform0 (0-0, N=1)
amortizedCost.a-local-fleet-serves-every-callamortizedCost.providerCallsbaseline0 (0-0, N=1)
amortizedCost.a-local-fleet-serves-every-callamortizedCost.providerCallsplatform0 (0-0, N=1)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.providerCallsbaseline2 (2-2, N=1)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.providerCallsplatform1 (1-1, N=1)
amortizedCost.a-trusted-procedure-replays-without-a-modelamortizedCost.providerCallsbaseline1 (1-1, N=1)
amortizedCost.a-trusted-procedure-replays-without-a-modelamortizedCost.providerCallsplatform0 (0-0, N=1)
amortizedCost.control-a-fresh-goal-reaches-a-modelamortizedCost.providerCallsbaseline1 (1-1, N=1)
amortizedCost.control-a-fresh-goal-reaches-a-modelamortizedCost.providerCallsplatform1 (1-1, N=1)
amortizedCost.control-a-reasoning-step-does-reach-a-provideramortizedCost.providerCallsbaseline1 (1-1, N=1)
amortizedCost.control-a-reasoning-step-does-reach-a-provideramortizedCost.providerCallsplatform1 (1-1, N=1)
amortizedCost.a-corrected-step-teaches-the-procedureamortizedCost.replaysServedWithoutModelbaseline0 (0-0, N=1)
amortizedCost.a-corrected-step-teaches-the-procedureamortizedCost.replaysServedWithoutModelplatform1 (1-1, N=1)
amortizedCost.a-trusted-procedure-replays-without-a-modelamortizedCost.replaysServedWithoutModelbaseline0 (0-0, N=1)
amortizedCost.a-trusted-procedure-replays-without-a-modelamortizedCost.replaysServedWithoutModelplatform1 (1-1, N=1)
amortizedCost.control-a-disliked-recording-teaches-nothingamortizedCost.replaysServedWithoutModelbaseline0 (0-0, N=1)
amortizedCost.control-a-disliked-recording-teaches-nothingamortizedCost.replaysServedWithoutModelplatform0 (0-0, N=1)
amortizedCost.control-a-shadow-procedure-serves-no-goalamortizedCost.replaysServedWithoutModelbaseline0 (0-0, N=1)
amortizedCost.control-a-shadow-procedure-serves-no-goalamortizedCost.replaysServedWithoutModelplatform0 (0-0, N=1)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.stepsServedFromJournalbaseline5 (5-5, N=1)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.stepsServedFromJournalplatform5 (5-5, N=1)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.tokensPerGoalbaseline-- (a replayed run's tokens are the cassette's recorded tokens, not this run's)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.tokensPerGoalplatform-- (a replayed run's tokens are the cassette's recorded tokens, not this run's)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.usdPerGoalbaseline-- (a replayed run spends nothing; the recorded cost belongs to the capture)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.usdPerGoalplatform-- (a replayed run spends nothing; the recorded cost belongs to the capture)

Platform against the bare-loop baseline:

ScenarioMetricPlatform vs baseline
amortizedCost.a-catalog-hit-makes-no-model-callamortizedCost.compileCallsOnCatalogHitnot comparable: the baseline arm produced no figure
amortizedCost.control-a-catalog-miss-reaches-a-modelamortizedCost.compileCallsOnCatalogHitnot comparable: the baseline arm produced no figure
amortizedCost.a-corrected-step-teaches-the-procedureamortizedCost.providerCallsimproved (-100.0%)
amortizedCost.a-local-fleet-serves-every-callamortizedCost.providerCallsunchanged
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.providerCallsimproved (-50.0%)
amortizedCost.a-trusted-procedure-replays-without-a-modelamortizedCost.providerCallsimproved (-100.0%)
amortizedCost.control-a-fresh-goal-reaches-a-modelamortizedCost.providerCallsunchanged
amortizedCost.control-a-reasoning-step-does-reach-a-provideramortizedCost.providerCallsunchanged
amortizedCost.a-corrected-step-teaches-the-procedureamortizedCost.replaysServedWithoutModelimproved (+1 absolute; no relative figure, the earlier value was zero)
amortizedCost.a-trusted-procedure-replays-without-a-modelamortizedCost.replaysServedWithoutModelimproved (+1 absolute; no relative figure, the earlier value was zero)
amortizedCost.control-a-disliked-recording-teaches-nothingamortizedCost.replaysServedWithoutModelunchanged
amortizedCost.control-a-shadow-procedure-serves-no-goalamortizedCost.replaysServedWithoutModelunchanged
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.stepsServedFromJournalunchanged
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.tokensPerGoalundecidable (the earlier figure is notMeasurableOnReplay)
amortizedCost.a-resume-does-not-recall-the-modelamortizedCost.usdPerGoalundecidable (the earlier figure is notMeasurableOnReplay)

Reliability

ScenarioMetricArmFigure
reliability.an-unrecoverable-failure-stays-failedreliability.passRatebaseline0.0% (0.0%-0.0%, N=1)
reliability.an-unrecoverable-failure-stays-failedreliability.passRateplatform100.0% (100.0%-100.0%, N=1)
reliability.the-same-goal-run-repeatedlyreliability.passRatebaseline100.0% (100.0%-100.0%, N=1)
reliability.the-same-goal-run-repeatedlyreliability.passRateplatform100.0% (100.0%-100.0%, N=1)
reliability.the-same-goal-run-repeatedlyreliability.passVariancebaseline-- (a replay is deterministic, so its variance is zero by construction rather than by measurement)
reliability.the-same-goal-run-repeatedlyreliability.passVarianceplatform-- (a replay is deterministic, so its variance is zero by construction rather than by measurement)

Platform against the bare-loop baseline:

ScenarioMetricPlatform vs baseline
reliability.an-unrecoverable-failure-stays-failedreliability.passRateimproved (+1 absolute; no relative figure, the earlier value was zero)
reliability.the-same-goal-run-repeatedlyreliability.passRateunchanged
reliability.the-same-goal-run-repeatedlyreliability.passVarianceundecidable (the earlier figure is notMeasurableOnReplay)

Recovery

ScenarioMetricArmFigure
recovery.a-transient-failure-is-retriedrecovery.modelCallsbaseline0 (0-0, N=1)
recovery.a-transient-failure-is-retriedrecovery.modelCallsplatform0 (0-0, N=1)
recovery.an-environment-failure-is-classified-by-rulesrecovery.modelCallsbaseline0 (0-0, N=1)
recovery.an-environment-failure-is-classified-by-rulesrecovery.modelCallsplatform0 (0-0, N=1)
recovery.control-a-novel-failure-reaches-the-classifierrecovery.modelCallsbaseline0 (0-0, N=1)
recovery.control-a-novel-failure-reaches-the-classifierrecovery.modelCallsplatform2 (2-2, N=1)
recovery.repair-runs-from-the-failed-steprecovery.modelCallsbaseline2 (2-2, N=1)
recovery.repair-runs-from-the-failed-steprecovery.modelCallsplatform1 (1-1, N=1)
recovery.a-stalled-loop-escalates-instead-of-retryingrecovery.ratebaseline0.0% (0.0%-0.0%, N=1)
recovery.a-stalled-loop-escalates-instead-of-retryingrecovery.rateplatform100.0% (100.0%-100.0%, N=1)
recovery.a-transient-failure-is-retriedrecovery.ratebaseline100.0% (100.0%-100.0%, N=1)
recovery.a-transient-failure-is-retriedrecovery.rateplatform100.0% (100.0%-100.0%, N=1)
recovery.an-environment-failure-is-classified-by-rulesrecovery.ratebaseline100.0% (100.0%-100.0%, N=1)
recovery.an-environment-failure-is-classified-by-rulesrecovery.rateplatform100.0% (100.0%-100.0%, N=1)
recovery.repair-runs-from-the-failed-steprecovery.ratebaseline100.0% (100.0%-100.0%, N=1)
recovery.repair-runs-from-the-failed-steprecovery.rateplatform100.0% (100.0%-100.0%, N=1)
recovery.repair-runs-from-the-failed-steprecovery.repairStepsVsRestartStepsbaseline180.0% (180.0%-180.0%, N=1)
recovery.repair-runs-from-the-failed-steprecovery.repairStepsVsRestartStepsplatform120.0% (120.0%-120.0%, N=1)
recovery.a-transient-failure-is-retriedrecovery.stepsReExecutedbaseline1 (1-1, N=1)
recovery.a-transient-failure-is-retriedrecovery.stepsReExecutedplatform0 (0-0, N=1)
recovery.repair-runs-from-the-failed-steprecovery.stepsReExecutedbaseline3 (3-3, N=1)
recovery.repair-runs-from-the-failed-steprecovery.stepsReExecutedplatform0 (0-0, N=1)
recovery.repair-runs-from-the-failed-steprecovery.wallClockMsbaseline-- (wall-clock on a shared CI runner belongs to the runner)
recovery.repair-runs-from-the-failed-steprecovery.wallClockMsplatform-- (wall-clock on a shared CI runner belongs to the runner)

Platform against the bare-loop baseline:

ScenarioMetricPlatform vs baseline
recovery.a-transient-failure-is-retriedrecovery.modelCallsunchanged
recovery.an-environment-failure-is-classified-by-rulesrecovery.modelCallsunchanged
recovery.control-a-novel-failure-reaches-the-classifierrecovery.modelCallsregressed (+2 absolute; no relative figure, the earlier value was zero)
recovery.repair-runs-from-the-failed-steprecovery.modelCallsimproved (-50.0%)
recovery.a-stalled-loop-escalates-instead-of-retryingrecovery.rateimproved (+1 absolute; no relative figure, the earlier value was zero)
recovery.a-transient-failure-is-retriedrecovery.rateunchanged
recovery.an-environment-failure-is-classified-by-rulesrecovery.rateunchanged
recovery.repair-runs-from-the-failed-steprecovery.rateunchanged
recovery.repair-runs-from-the-failed-steprecovery.repairStepsVsRestartStepsimproved (-33.3%)
recovery.a-transient-failure-is-retriedrecovery.stepsReExecutedimproved (-100.0%)
recovery.repair-runs-from-the-failed-steprecovery.stepsReExecutedimproved (-100.0%)
recovery.repair-runs-from-the-failed-steprecovery.wallClockMsundecidable (the earlier figure is notMeasurableOnReplay)

Durability

ScenarioMetricArmFigure
durability.a-script-step-on-a-machine-survives-a-stopdurability.duplicatedSideEffectsbaseline1 (1-1, N=1)
durability.a-script-step-on-a-machine-survives-a-stopdurability.duplicatedSideEffectsplatform0 (0-0, N=1)
durability.a-stopped-run-resumes-with-no-duplicated-effectdurability.duplicatedSideEffectsbaseline1 (1-1, N=1)
durability.a-stopped-run-resumes-with-no-duplicated-effectdurability.duplicatedSideEffectsplatform0 (0-0, N=1)
durability.a-divergence-duplicates-no-side-effectdurability.duplicatedSideEffectsAcrossDivergencebaseline1 (1-1, N=1)
durability.a-divergence-duplicates-no-side-effectdurability.duplicatedSideEffectsAcrossDivergenceplatform0 (0-0, N=1)
durability.control-a-divergence-without-guidance-duplicatesdurability.duplicatedSideEffectsAcrossDivergencebaseline1 (1-1, N=1)
durability.control-a-divergence-without-guidance-duplicatesdurability.duplicatedSideEffectsAcrossDivergenceplatform0 (0-0, N=1)
durability.a-resume-re-executes-no-completed-stepdurability.resumedOnAnotherNodeplatform100.0% (100.0%-100.0%, N=1)
durability.a-stopped-run-resumes-with-no-duplicated-effectdurability.resumedOnAnotherNodeplatform100.0% (100.0%-100.0%, N=1)
durability.a-resume-re-executes-no-completed-stepdurability.resumedStepsReExecutedbaseline2 (2-2, N=1)
durability.a-resume-re-executes-no-completed-stepdurability.resumedStepsReExecutedplatform0 (0-0, N=1)
durability.a-script-step-on-a-machine-survives-a-stopdurability.resumedStepsReExecutedbaseline1 (1-1, N=1)
durability.a-script-step-on-a-machine-survives-a-stopdurability.resumedStepsReExecutedplatform0 (0-0, N=1)
durability.a-stopped-run-resumes-with-no-duplicated-effectdurability.resumedStepsReExecutedbaseline2 (2-2, N=1)
durability.a-stopped-run-resumes-with-no-duplicated-effectdurability.resumedStepsReExecutedplatform0 (0-0, N=1)

Platform against the bare-loop baseline:

ScenarioMetricPlatform vs baseline
durability.a-script-step-on-a-machine-survives-a-stopdurability.duplicatedSideEffectsimproved (-100.0%)
durability.a-stopped-run-resumes-with-no-duplicated-effectdurability.duplicatedSideEffectsimproved (-100.0%)
durability.a-divergence-duplicates-no-side-effectdurability.duplicatedSideEffectsAcrossDivergenceimproved (-100.0%)
durability.control-a-divergence-without-guidance-duplicatesdurability.duplicatedSideEffectsAcrossDivergenceimproved (-100.0%)
durability.a-resume-re-executes-no-completed-stepdurability.resumedOnAnotherNodenot comparable: the baseline arm produced no figure
durability.a-stopped-run-resumes-with-no-duplicated-effectdurability.resumedOnAnotherNodenot comparable: the baseline arm produced no figure
durability.a-resume-re-executes-no-completed-stepdurability.resumedStepsReExecutedimproved (-100.0%)
durability.a-script-step-on-a-machine-survives-a-stopdurability.resumedStepsReExecutedimproved (-100.0%)
durability.a-stopped-run-resumes-with-no-duplicated-effectdurability.resumedStepsReExecutedimproved (-100.0%)

Learning curve

ScenarioMetricArmFigure
learningCurve.a-deterministic-plan-needs-no-model-at-alllearningCurve.catalogServedFractionbaseline100.0% (100.0%-100.0%, N=1)
learningCurve.a-deterministic-plan-needs-no-model-at-alllearningCurve.catalogServedFractionplatform100.0% (100.0%-100.0%, N=1)
learningCurve.a-sequence-of-related-goalslearningCurve.catalogServedFractionbaseline83.3% (83.3%-83.3%, N=1)
learningCurve.a-sequence-of-related-goalslearningCurve.catalogServedFractionplatform83.3% (83.3%-83.3%, N=1)
learningCurve.a-sequence-of-related-goalslearningCurve.usdPerGoalbaseline-- (dollars per goal need a live provider; a replay spends nothing)
learningCurve.a-sequence-of-related-goalslearningCurve.usdPerGoalplatform-- (dollars per goal need a live provider; a replay spends nothing)

Platform against the bare-loop baseline:

ScenarioMetricPlatform vs baseline
learningCurve.a-deterministic-plan-needs-no-model-at-alllearningCurve.catalogServedFractionunchanged
learningCurve.a-sequence-of-related-goalslearningCurve.catalogServedFractionunchanged
learningCurve.a-sequence-of-related-goalslearningCurve.usdPerGoalundecidable (the earlier figure is notMeasurableOnReplay)

Speed

ScenarioMetricArmFigure
speed.a-first-run-against-a-replayspeed.firstRunVsReplayRatiobaseline-- (the first run and the replay would both be replays here)
speed.a-first-run-against-a-replayspeed.firstRunVsReplayRatioplatform-- (the first run and the replay would both be replays here)
speed.what-the-journal-costs-per-stepspeed.journalPerStepOverheadMsplatform20ms (20ms-20ms, N=1)
speed.a-first-run-against-a-replayspeed.wallClockPerGoalMsbaseline-- (wall-clock on a shared CI runner belongs to the runner)
speed.a-first-run-against-a-replayspeed.wallClockPerGoalMsplatform-- (wall-clock on a shared CI runner belongs to the runner)
speed.what-the-journal-costs-per-stepspeed.wallClockPerGoalMsbaseline-- (wall-clock on a shared CI runner belongs to the runner)
speed.what-the-journal-costs-per-stepspeed.wallClockPerGoalMsplatform-- (wall-clock on a shared CI runner belongs to the runner)

Platform against the bare-loop baseline:

ScenarioMetricPlatform vs baseline
speed.a-first-run-against-a-replayspeed.firstRunVsReplayRatioundecidable (the earlier figure is notMeasurableOnReplay)
speed.what-the-journal-costs-per-stepspeed.journalPerStepOverheadMsnot comparable: the baseline arm produced no figure
speed.a-first-run-against-a-replayspeed.wallClockPerGoalMsundecidable (the earlier figure is notMeasurableOnReplay)
speed.what-the-journal-costs-per-stepspeed.wallClockPerGoalMsundecidable (the earlier figure is notMeasurableOnReplay)

Governance

ScenarioMetricArmFigure
governance.an-approval-does-not-carry-to-a-changed-artifactgovernance.approvalsBoundToArtifactHashplatform100.0% (100.0%-100.0%, N=1)
governance.every-side-effect-leaves-a-receiptgovernance.effectsWithReceiptsplatform100.0% (100.0%-100.0%, N=1)
governance.an-approval-does-not-carry-to-a-changed-artifactgovernance.modelCallsJournaledplatform-- (the CI tier's model responses come from a cassette through a fake step registry, so no call reaches the journal seam; the live tier calls a provider down the real path and can count it)

Platform against the bare-loop baseline:

ScenarioMetricPlatform vs baseline
governance.an-approval-does-not-carry-to-a-changed-artifactgovernance.approvalsBoundToArtifactHashnot comparable: the baseline arm produced no figure
governance.every-side-effect-leaves-a-receiptgovernance.effectsWithReceiptsnot comparable: the baseline arm produced no figure
governance.an-approval-does-not-carry-to-a-changed-artifactgovernance.modelCallsJournalednot comparable: the baseline arm produced no figure

Governance

Pass or fail, with no score. A failure here blocks a merge.

PropertyScenarioResult
approvalsBoundToArtifactHashgovernance.an-approval-does-not-carry-to-a-changed-artifactpass
everyEffectHasAReceiptgovernance.every-side-effect-leaves-a-receiptpass

Method

The baseline is the same model, the same tools and the same scenarios in a plain bounded tool loop, with the platform's machinery switched off: no catalog, no journal, no replay, no symptom classifier, no healing. It gets the same retry allowance and the same wall-clock ceiling. What it does not get is a memory of having done this before, which is the whole thesis.

No other framework is named or measured. The comparison is the platform against a model on its own, which is the only comparison this suite is equipped to make fairly.

What a synthetic model id in the CI row means. A CI run has no provider, so both arms replay from a recorded tape. Where that tape holds PLACEHOLDER responses, every figure above is still a fact about the plan and the platform -- how many model exchanges a plan needs, how many steps a resume re-executes, whether an effect duplicated -- because none of those depends on the words a model said. Nothing model-dependent is published from it: tokens, dollars and answer quality all read unmeasured, and they stay that way until the live tier runs.

Design record: the proving suite.