Measure reuse against a controlled baseline (story 4.4) - #16
Merged
Merged
Conversation
Add a pre-registered comparative experiment: memory-enabled against memory-disabled trials over a versioned task set, with one gate expression evaluated once and a verdict of NoDemonstratedBenefit when it does not hold. This story cannot measure real-model benefit and says so in its own headline. There is no model credential in this repository and every IChatClient is a fake, so the size of any difference is a property of the fixture that produced it. What is measured is mechanical and worth measuring: whether an injected Historical Reference reaches the agent's context and changes the action taken, whether the authorization boundary holds when it does, and whether the gate says no. The gate has now been observed saying no in two structurally different ways. A negative control, whose injected records name approaches the exploring agent would have reached anyway, reports 2.500 against 2.500. A wrong-strategy arm, whose records name an approach that does not resolve the task, reports 3.000 against 2.000 -- memory that misleads costs an attempt, and the gate charges it. The harness refuses to report a measurement it cannot attribute. Before the gate is evaluated, every trial's failed attempts are reconciled against what the task set implies for the strategies that trial actually read out of its injected block. An agent handed the answer by any route other than the block fails that reconciliation with a message naming the trial. Learning and evaluation tasks are disjoint in substance, not only in identifier: the evaluation tasks carry the learning tasks' failure modes in a different system, content-word overlap is zero on every pair, and the task set refuses any evaluation task that repeats a learning task's wording. Elapsed time is reported and deliberately excluded from the gate. Two serial paths -- the one-string embedding port and the per-candidate eligibility re-read -- are charged only to the memory-enabled condition, and a biased measure must not decide a verdict. The pre-registration records its own amendments, including that three were made after results existed, and the report prints them above the numbers. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
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.
A pre-registered comparative experiment: memory-enabled against memory-disabled trials, one gate expression evaluated once, and
NoDemonstratedBenefitwhen it does not hold.What this does not claim
It measures the harness, not a model — that is line 3 of the report, not a footnote. There is no model credential in this repository and every
IChatClientis a fake, so the size of any difference between conditions is a property of the fixture that produced it. The report lists what a real result would require, none of which exists here.The gate has been observed saying no
BenefitDemonstrated(harness-level, simulated agent)NoDemonstratedBenefitNoDemonstratedBenefitThe negative control injects records naming approaches the exploring agent would have reached anyway. The wrong-strategy arm injects an approach that does not resolve the task — memory that misleads costs an attempt, and the gate charges it. A harness that has never been observed to say no is not evidence when it says yes.
The harness refuses a measurement it cannot attribute
Before the gate runs, every trial's failed attempts are reconciled against what the task set independently implies for the strategies that trial actually read out of its injected block. An agent handed the answer by any route other than the block fails that reconciliation by name:
This exists because a reviewer proved it was needed: a mutation that fed the agent the ground-truth answer — while still retrieving, injecting and recording the block, merely ignoring its content — passed all 85 original tests with both golden reports byte-identical.
Separation is in substance, not identifiers
The evaluation tasks originally shared their sentences with the learning tasks (content-word overlap 1.00 and 0.88) while passing an ID-only disjointness check. Retrieval is word-overlap, so the headline was measuring a near-verbatim lookup. They are rewritten to carry the same failure modes in a different system — overlap is now 0.00 on every pair — the task set refuses wording repeats, and the report prints the task text so a reader can judge for themselves. The primary metric moved from
0.000to0.500as a result.Honesty mechanisms
sdis not sampling variance.Review
Three reviewers. 22 mutations; 11 survived the original suite, including the planted answer, a cached pre-registration reader defeating the tamper check, validation moved after all twelve trials, and every ledger row mislabelled. All now fail.
Tests: 1128 → 1295, zero warnings under
TreatWarningsAsErrors.🤖 Generated with Claude Code