Vigil
← All news

v0.5.0 — ### Added

- **T-005** Event normalization (`ingest/events.py`): `ingest_events_for_report` walks all 7 PLAN §7 dataTypes (DamageDone, DamageTaken, Casts, Buffs, Debuffs, Deaths, CombatantIn…

  • T-005 Event normalization (ingest/events.py): ingest_events_for_report walks all 7 PLAN §7 dataTypes (DamageDone, DamageTaken, Casts, Buffs, Debuffs, Deaths, CombatantInfo), paginates on nextPageTimestamp, stores each event as a row keyed on ability_game_id. Resumable via ingestion_ledger.last_event_ts. Death events use killingAbilityGameID as the ability-id source when present.
  • CombatantInfo events backfill combatants.stats JSONB (left null by T-004).
  • 6 unit tests covering all-dataTypes, pagination, resume cursor, missing ledger, unknown-fight skipping, cursor-stuck break. 31 tests total.
  • scripts/verify_events.py live AC harness: 244k events ingested over a 34-fight M5S report, 100% ability_game_id coverage.

Changed

  • scripts/verify_delta.py now prefers non-frozen FFLogs zones (archived reports paywall events() behind the paid /user endpoint).

Fixed

  • Test isolation bug in tests/test_schema.py::test_report_fight_event_roundtrip — query for ability id 7535 (Reprisal) wasn't scoped to the test's fight; clashed with real Reprisal events committed by verify_events. Now scoped to fight_id.