"""Calculate period changes from validated CLI results, not LLM mental math."""
import json
from decimal import Decimal
from pathlib import Path

EVIDENCE = Path(__file__).resolve().parents[1] / 'evidence/chapter-11'
manifest = json.loads((EVIDENCE / 'query-manifest.json').read_text(encoding='utf-8'))
case = next(c for c in manifest['queries'] if c['name'] == '02-october-november')
validation = json.loads(Path(case['validation']).read_text(encoding='utf-8'))
response = json.loads(Path(case['response']).read_text(encoding='utf-8'))
assert validation['success'] and response['success']
assert not response['data'].get('hasNext') and not response['data'].get('pagination', {}).get('hasMore')
rows = response['data']['items']
assert [r['invoiceDate$yearMonth'] for r in rows] == ['2012-10', '2012-11']
prior, current = (Decimal(str(r['totalAmount'])) for r in rows)
diff = current - prior
ratio = diff / prior if prior else None
out = dict(sourceResponse=case['response'], priorPeriod='2012-10', currentPeriod='2012-11',
           priorAmount=str(prior), currentAmount=str(current), difference=str(diff),
           changeRatio=str(ratio) if ratio is not None else None,
           changePercent=str((ratio * 100).quantize(Decimal('0.01'))) if ratio is not None else None,
           calculation='Python Decimal applied to returned CLI totals; outside Foggy timeWindow.')
(EVIDENCE / 'comparison.json').write_text(json.dumps(out, ensure_ascii=False, indent=2), encoding='utf-8')
print(json.dumps(out, ensure_ascii=False, indent=2))
