feat(iq): U7 ABTester prompt-version offline comparison (R14)
- EpisodicMemory.list_prompt_reflections_by_hash(task_hash): exact
query for all prompt_reflection records matching task_hash.
ponytail: O(N) scan with N<100 typical; GIN index upgrade path noted.
- ABTester.__init__: accepts optional episodic_memory parameter.
- ABTester.compare_prompt_versions(task_hash) -> dict: retrieves all
versions for a task_hash, sorts by score descending, returns
{versions, best_version, recommendation, total_versions}.
Offline-only — no online bandit. Non-blocking on retrieval failure.
- 8 unit tests covering no-episodic, multi-version sort, single version,
empty result, retrieval failure, field completeness, low-score
retention, task_hash echo.