Recognize zero-sweep gravity benchmark controls

This commit is contained in:
2026-09-17 16:28:42 -04:00
parent 30b94b75b3
commit 7f7d7b1cfa
2 changed files with 22 additions and 1 deletions

View File

@@ -120,7 +120,9 @@ def inspect_case_artifacts(folder):
check('action_checks_present', len(action_rows) == 2 and
{row['role'] for row in action_rows} == {'baseline', 'candidate'})
for row in action_rows:
expected = by_role[row['role']]['variant'] == 'independent'
measured = by_role[row['role']]
expected = measured['variant'] == 'independent' or (
measured['variant'] == 'gravity-schur' and int(measured['schur_correction_sweeps']) == 0)
check(row['role'] + '_action_variant_matches', row['variant'] == by_role[row['role']]['variant'])
check(row['role'] + '_equivalence_requirement_recorded',
row['context_equivalence_required'] == ('1' if expected else '0'))

View File

@@ -206,6 +206,25 @@ class BenchmarkCheckerTests(unittest.TestCase):
lambda data: data[0].update(context_equivalence_required=0))
self.assert_no_claim(checker.inspect_case(self.folder))
def test_zero_sweep_gravity_control_requires_default_equivalence(self):
for variant, sweeps, equivalent in (('gravity-schur', 0, True),
('gravity-schur', 1, False),
('stellar-ldu-gravity-schur', 0, False)):
with self.subTest(variant=variant, sweeps=sweeps):
self.make_case()
def summary(data):
data[0]['schur_correction_sweeps'] = 0
data[1].update(variant=variant, schur_correction_sweeps=sweeps)
self.alter_rows('preconditioner_summary.csv', summary)
self.alter_rows('preconditioner_actions.csv', lambda data:
data[1].update(variant=variant, context_equivalence_required=int(equivalent)))
result = checker.inspect_case(self.folder)
self.assertTrue(result['passed'], result)
if equivalent:
self.alter_rows('preconditioner_actions.csv', lambda data:
data[1].update(context_equivalence_required=0))
self.assert_no_claim(checker.inspect_case(self.folder))
def test_omitted_input_or_output_hash_cannot_support_speedup(self):
for key, remove in [('input_state_hashes', str(self.snapshot)),
('output_hashes', 'candidate_normalized_linear_defect.txt')]: