Add durable configurable hypothesis budget accounting

This commit is contained in:
Nico committed 2026-10-13 23:53:15 +02:00
1 parent e8b87d6725
commit af18f36c24
14 files changed
+1889 -1

No files matched your search

+15
View File
@@ -78,4 +78,19 @@ def test_full_bug20_package_pair(tmp_path):
assert before.read_bytes(name) == after.read_bytes(name)
assert asyncio.run(HypothesisBuilder(store, gateway(hypotheses_adapter)).build("regression-case", "regression-package")).reused
assert len(hypotheses_adapter.requests) == 1
from viano_bug_analysis.budget import BudgetManager
budget = BudgetManager(store)
identity = ("regression-case", "regression-package")
budget.initialize(*identity)
budget.reserve(*identity, "H1", "offline-query", "source.read_context")
source_ref = case["source_context"]["refs"][0]["path"]
budget.record_result(*identity, "H1", "offline-query", {"fixture_observation":"Stored context is available"}, source_refs=[source_ref])
accounted = budget.settle(*identity, "H1", "offline-query", semantic_score=50, reason="Simulated assessment, no diagnosis")
assert accounted.state["accounts"]["H1"]["remaining"] == 94
assert PackageValidator().validate(accounted.package).valid
with PackageReader(generated.package) as before, PackageReader(accounted.package) as after:
for name in before.files:
if name != "manifest.json":
assert before.read_bytes(name) == after.read_bytes(name)
assert CaseBuilder(store).build(*identity).reused
assert [hashlib.sha256(path.read_bytes()).hexdigest() for path in (diag, src)] == original_hashes