PRICE-02: pin the modes-off identity with a digest that hides only the changed words
test_price_run_fixes.py part 5 and test_modes_p3.py part 1 compare the modes-off replay with digests printed on older trees. The trade sentence now says "price period", and a sale quotes another "above the cheapest" figure once the first cheap period is over. ident.trade_digest() hides exactly those two things; re-measured one3e4ba6,7a00f12,90bc901and this tree, the digests are the same, so every command is unchanged. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
parent
4297f7f3f1
commit
ecd9822861
@@ -17,6 +17,7 @@ test_modes_p3.py part 1 holds this tree to the digests printed on 7a00f12.
|
||||
import functools
|
||||
import hashlib
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
@@ -117,6 +118,28 @@ def digest(rows) -> str:
|
||||
return hashlib.sha256(repr(rows).encode()).hexdigest()
|
||||
|
||||
|
||||
def _trade_words(text):
|
||||
"""PRICE-02: the trade sentence as release/1.0 before it printed it. The
|
||||
plan now drops price periods that have ended, so a sale's "above the
|
||||
cheapest" figure is a different number once the first cheap period is
|
||||
over, and the sentences say "price period" where they said "hour". Both
|
||||
maps are applied to both sides, so only those two things are hidden."""
|
||||
text = text.replace("this hour is neither the buy hour nor the sell hour",
|
||||
"now is not the cheapest or the dearest price period")
|
||||
text = re.sub(r"[0-9]+\.[0-9]+ above the cheapest",
|
||||
"N above the cheapest", text)
|
||||
return text.replace("firm hour at", "firm price period at")
|
||||
|
||||
|
||||
def trade_digest(rows) -> str:
|
||||
"""`digest()` with the trade sentence passed through `_trade_words()`:
|
||||
every command, integrator and allocation, and the action, watts and the
|
||||
rest of the sentence, byte for byte."""
|
||||
return digest([r[:-1] + (None if r[-1] is None else
|
||||
(r[-1][0], r[-1][1], _trade_words(r[-1][2])),)
|
||||
for r in rows])
|
||||
|
||||
|
||||
def digests() -> dict:
|
||||
return {k: digest(run(**v)[0]) for k, v in SCENARIOS.items()}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user