#!/usr/bin/env python3
"""Hand-built payloads the current Dart publisher never produces (legacy or
malformed), fed straight to the Swift and Kotlin harnesses to probe latent
native-vs-native disagreements. Output is in the Dart-harness results format,
so both native harnesses read it unchanged."""
import json, sys

T = 1_800_000_000  # 2027-01-15T08:00:00Z, seconds
def pool(n, tiers=None, ids=None):
    ids = ids or [f"q{i}" for i in range(n)]
    tiers = tiers or [0] * n
    return json.dumps([{"id": ids[i], "s": "s", "m": "m", "l": "l", "tier": tiers[i]} for i in range(n)])

def base(**kw):
    p = {"adelante_daily_minute": None, "adelante_schedule_dates": "[]",
         "adelante_authoritative_pool": True, "adelante_initial_quote_only": False,
         "adelante_configuration_id": "x", "adelante_schedule_anchor_epoch": T,
         "adelante_updated_epoch": T, "adelante_updated_at": "2027-01-15T08:00:00.000Z",
         "adelante_quote_pool": pool(5), "adelante_refresh_interval_seconds": 3600,
         "adelante_sync_lock_and_home": True}
    p.update(kw)
    return p

cases = [
    ("L1-unsorted-dates", base(adelante_schedule_dates=json.dumps([T + 7200, T + 3600, T + 10800]), adelante_daily_minute=480),
     [(T + 3600 + k * 600) * 1000 for k in range(0, 13)]),
    ("L2-anchor-zero", base(adelante_schedule_anchor_epoch=0, adelante_updated_epoch=0),
     [(T + k * 1800) * 1000 for k in range(0, 8)]),
    ("L3-fractional-interval", base(adelante_refresh_interval_seconds=90.5),
     [(T + k * 45) * 1000 for k in range(0, 40)]),
    ("L4-fractional-dates", base(adelante_schedule_dates="[%s]" % ",".join(f"{T + 3600 * k}.75" for k in range(1, 5)), adelante_daily_minute=480),
     [(T + 3600 * k) * 1000 + d for k in range(1, 5) for d in (0, 500, 749, 750, 751)]),
    ("L5-legacy-tiers-sync", base(adelante_authoritative_pool=False, adelante_quote_pool=pool(6, [0, 2, 1, 0, 2, 0])),
     [(T + k * 3600) * 1000 for k in range(0, 12)]),
    ("L6-legacy-tiers-nosync", base(adelante_authoritative_pool=False, adelante_sync_lock_and_home=False, adelante_quote_pool=pool(6, [0, 2, 1, 0, 2, 0])),
     [(T + k * 3600) * 1000 for k in range(0, 12)]),
    ("L7-unicode-ids", base(adelante_quote_pool=pool(3, ids=["café", "café", "tea"])),
     [(T + k * 3600) * 1000 for k in range(0, 6)]),
    ("L8-interval-as-string", base(adelante_refresh_interval_seconds="3600"),
     [(T + k * 3600) * 1000 for k in range(0, 6)]),
    ("L9-anchor-missing", {k: v for k, v in base().items() if k not in ("adelante_schedule_anchor_epoch", "adelante_updated_epoch")},
     [(T + k * 3600) * 1000 for k in range(0, 6)]),
]
results = [{"id": cid, "kind": "latent", "zone": "UTC", "t0": T * 1000, "n": len(json.loads(p["adelante_quote_pool"])),
            "payload": p, "queries": q, "dart_app": [], "dart_cpi": []} for cid, p, q in cases]
json.dump({"results": results}, open(sys.argv[1], "w"))
print(len(results), "latent payloads")
