Result
13/13 scenario repetitions passed · 411 assertions
Each repetition is a full live conversation: a question generates SQL (a writer model drafts it; reviewed profiles also invoke their configured reviewer), the query is validated and executed against PostgreSQL, then a follow-up instruction refines the exact current query and the successor is validated and executed again. Executed results are re-checked against an independently-authored gold query (byte-level row-set match) and an independent read-only PostgreSQL cross-check.
Dataset full-20260804T203050Z (openelis-fhir-postgresql): 96 patients · 1152 results · 9 test types · 2025-07-15 – 2026-04-27
| profile | writer model | reviewer model |
|---|---|---|
catalyst-query-gemma-4-12b | gemma-4-12b | — (writer only) |
catalyst-query-gemma-4-12b-qwen2.5-14b-checked | gemma-4-12b | qwen2.5-14b |
What each scenario does
narrowing-unchanged-base
Question — Show laboratory results since 2026-01-01 with patient, test, status, value, unit, and observed date.
Follow-up — Restrict the current query to final Viral Load results, preserving all selected columns, the existing date filter, and ordering.
3 repetitions — all passed · base query returned 100 rows · refined query returned 100 rows
aggregation-dirty-base-profile-switch
Question — Show numeric laboratory results since 2026-01-01 with patient, test, value, and observed date.
Follow-up — Replace the current row output with one row per calendar month. Return observed_month, result_count, distinct_patient_count, and median_result_value; preserve all filters and order chronologically.
3 repetitions — all passed · base query returned 100 rows · refined query returned 4 rows
unresolved-parameter-correction
Question — Show recent laboratory results.
Follow-up — Repair the unresolved parameter binding without changing columns, table, predicate values, or ordering.
3 repetitions — all passed · base query returned 100 rows · refined query returned 100 rows
semantic-distinct-patient-review
Question — Show patient identifiers represented in laboratory results since 2026-01-01.
Follow-up — Return one column named patient_count containing the number of distinct patients represented by these rows; do not count result rows.
3 repetitions — all passed · base query returned 100 rows · refined query returned 1 rows
bounded-hub-tool-failure
Question — Show laboratory results since 2026-01-01.
Follow-up — Restrict the current query to final Viral Load results.
1 repetition — all passed · base query returned 100 rows
Scenario matrix
| scenario | reported | gold ok | judge medians (base/succ) | assertions | gold FAIL detail |
|---|---|---|---|---|---|
narrowing-unchanged-basenarrowing | PASS | yes | 100 / 63 advisory | 33/33 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_saved, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, base_gold_execution_match, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
narrowing-unchanged-basenarrowing | PASS | yes | 100 / 63 advisory | 33/33 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_saved, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, base_gold_execution_match, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
narrowing-unchanged-basenarrowing | PASS | yes | 100 / 63 advisory | 33/33 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_saved, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, base_gold_execution_match, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
aggregation-dirty-base-profile-switchaggregation-output-shape | PASS | yes | 100 / 100 advisory | 31/31 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
aggregation-dirty-base-profile-switchaggregation-output-shape | PASS | yes | 100 / 100 advisory | 31/31 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
aggregation-dirty-base-profile-switchaggregation-output-shape | PASS | yes | 100 / 100 advisory | 31/31 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
unresolved-parameter-correctionunresolved-correction | PASS | yes | 100 / 100 advisory | 31/31 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
unresolved-parameter-correctionunresolved-correction | PASS | yes | 100 / 100 advisory | 31/31 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
unresolved-parameter-correctionunresolved-correction | PASS | yes | 100 / 100 advisory | 31/31 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
semantic-distinct-patient-reviewlint-clean-semantic-reviewer-correction | PASS | yes | 100 / 100 advisory | 33/33 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_saved, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, base_gold_execution_match, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
semantic-distinct-patient-reviewlint-clean-semantic-reviewer-correction | PASS | yes | 100 / 100 advisory | 33/33 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_saved, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, base_gold_execution_match, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
semantic-distinct-patient-reviewlint-clean-semantic-reviewer-correction | PASS | yes | 100 / 100 advisory | 33/33 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_saved, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, base_gold_execution_match, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, exact_selected_output, semantic_reviewer_correction, prior_results_stale_after_successor, successor_validation_recorded, successor_execution_succeeded, successor_postgres_crosscheck, successor_gold_execution_match, successor_visible_under_three_minutes, new_session_isolation | — |
bounded-hub-tool-failurehub-tool-failure | PASS | yes | 100 / — advisory | 27/27 passedsession_created, initial_turn_recorded, initial_evidence_available, base_version_saved, base_version_available, base_validation_recorded, base_execution_succeeded, base_postgres_crosscheck, base_gold_execution_match, followup_http_created, followup_terminal_status, base_classification, manual_version_classification, followup_profile, refresh_restored, timeline_current_turn, followup_evidence_available, invocation_duration_sum, invocation_digests, invocation_timestamp_reconciliation, writer_model, reviewer_model, effective_temperature_and_dry, revision_context_exclusions, failed_turn_preserved_base, successor_visible_under_three_minutes, new_session_isolation | — |
Turn / version / execution timeline
| scenario | session | versions | executions | gen wall |
|---|---|---|---|---|
narrowing-unchanged-base | 54ed582d-90ae-43b6-bf36-1a6c506f868c | 16ca5958-7aca-47d3-bc8b-d297379a2f38 → 2b23f008-7fdf-4905-983c-0547a744d207 | 05bbeae1-e42d-4f8b-84aa-106496251db9 / fc7f917b-b589-4224-8a8d-0d708aa4c3ca | 81544 ms |
narrowing-unchanged-base | b5e29216-5560-47ed-bcc2-8ae0442c7935 | d49133e1-b6d3-412d-859e-e44663406340 → 23122c47-cfff-4b9e-a8df-878fa71a6dce | 9199846b-a2d5-459c-af67-4d211f069ede / d09e9aa5-d296-47b6-89cf-14a5487a8bf2 | 70593 ms |
narrowing-unchanged-base | 2f908185-ade4-44ae-904c-84ee2abdc791 | e1a87006-f4a8-4664-b194-db68123d023a → 5ab74540-0fdf-4dbb-b876-6513fb32e9db | a98ae6c9-3b6a-4506-9fe6-f9091c57c210 / 1375e18f-d153-46cf-a998-8a7521ef72b8 | 69035 ms |
aggregation-dirty-base-profile-switch | bf52fe8e-f0ee-4184-8e49-a017171f8e14 | 92258559-4f87-4df2-b8fd-5a359f55f499 → fff76828-b85e-4360-b9ce-2bfe3bc49f18 | d6ea498c-64c6-4072-85fb-c417b7b8d623 / f8a66a54-2219-4eaa-afa3-6abc3005e04e | 82859 ms |
aggregation-dirty-base-profile-switch | cb53a7c7-5b40-4319-b341-a56e8bb78868 | 5fdf6223-fcc3-4820-b272-0acd4328c799 → 73caedad-466f-4fc8-9648-d4f12c238223 | c37494f2-3d97-46e2-b892-fc90a7012c28 / 8c320e5c-eef5-4e98-8516-57ea77d62f07 | 77803 ms |
aggregation-dirty-base-profile-switch | 9a400a49-9d9c-4faf-8d58-2547da9bcdbd | 92524bc4-31a7-4790-bc24-bf3396f54081 → fdd4cd09-45b4-4efd-b585-9d4ad4d9e140 | dfde3d3d-1b17-4fb7-8c54-01b1019c8608 / 435d3d61-51e8-4cf5-80cc-4e6268b95470 | 76237 ms |
unresolved-parameter-correction | 05214f92-46fe-4f4d-b34f-8b7e4d00bb57 | c6d3f714-584b-4903-a47a-466910e7c465 → a1c23973-f4c1-4f30-bca4-0aa6ca9ff658 | 408a6949-730a-42a3-a57f-f93708764953 / a11c9c7a-d3f4-4d6e-ad56-d7b846d21c32 | 66404 ms |
unresolved-parameter-correction | 7952cd58-c1df-41ba-94f7-b733010ca97b | 64d4134c-182e-4559-8e1f-a01064bd71dd → 997dd586-be8f-4870-8b4d-8863ea5bf763 | 032fba3a-72c0-4ee3-8cc3-b8f3708fa7fa / 51a7afd2-32af-4637-b281-f2fdd9380d63 | 56243 ms |
unresolved-parameter-correction | a0ced9ea-4353-40c3-ac87-ed04d5b0edb0 | d8960406-2427-46d9-b20a-ba5f97456cd0 → 44187062-3858-4229-a057-248dc7471d13 | 15fb29bf-e72a-4284-b3a6-b6993fefc982 / 7b7f8b86-c9eb-4ded-b01e-b115cff7b6e0 | 56693 ms |
semantic-distinct-patient-review | 61511568-437f-4519-ac14-ff656dbb5082 | 4614de91-b8e3-4e73-ab66-fcdf5905453f → 56e3e515-7447-4603-b493-84c0b456661f | dbe87cec-9ae8-4f44-bf63-7a24e996c9b7 / fda3fda1-3428-447c-a474-5ce8a5ad781e | 46406 ms |
semantic-distinct-patient-review | 710ea76e-f9ce-4cee-b5e4-bc967c1d5865 | 7eb46f8b-b5e4-4c94-8502-4eed6cc61d98 → 5617ad5d-039e-41df-aa5a-dc88d1e17c0a | d8dc1dd2-c968-484b-8a38-3932f2b0be4b / c040fbe4-4eac-43b1-80f6-57b0d2161da7 | 43248 ms |
semantic-distinct-patient-review | 39c74a96-ce79-451e-bbcd-92278a67bc14 | 20a0c4a6-33c8-439c-8a8d-ea677cdf96bf → 93e481a0-652c-4de0-82b5-f1cf236ce7d4 | 4e6eb312-4afb-48ad-9698-d69f5d30ee02 / 13abcf50-26c8-4425-afe9-7b127ce7517d | 43325 ms |
bounded-hub-tool-failure | 04ba8bae-5020-4d39-8048-f33c36afc3f7 | 68d37433-ebe0-44cf-adc8-c7716b3bb2d2 → | b3568ec9-2f7c-4b84-92e8-62ec6b31a2cf / | 59779 ms |
SQL diffs
Finalized judge (advisory)
aggregation-dirty-base-profile-switch turn=0 version=5fdf6223-fcc3-4820-b272-0acd4328c799intent_fidelity=3 — The base SQL contains precisely patient_id, test_name, result_value, and observed_at with the requested lower date bound.sql_quality=3 — It is a minimal successful projection with a single clear predicate and no unnecessary operations.schema_discipline=3 — The approved fact view and typed start_date binding are used correctly; independent row evidence matches.
aggregation-dirty-base-profile-switch turn=0 version=92258559-4f87-4df2-b8fd-5a359f55f499intent_fidelity=3 — The base SQL contains precisely patient_id, test_name, result_value, and observed_at with the requested lower date bound.sql_quality=3 — It is a minimal successful projection with a single clear predicate and no unnecessary operations.schema_discipline=3 — The approved fact view and typed start_date binding are used correctly; independent row evidence matches.
aggregation-dirty-base-profile-switch turn=0 version=92524bc4-31a7-4790-bc24-bf3396f54081intent_fidelity=3 — The base SQL contains precisely patient_id, test_name, result_value, and observed_at with the requested lower date bound.sql_quality=3 — It is a minimal successful projection with a single clear predicate and no unnecessary operations.schema_discipline=3 — The approved fact view and typed start_date binding are used correctly; independent row evidence matches.
aggregation-dirty-base-profile-switch turn=1 version=73caedad-466f-4fc8-9648-d4f12c238223intent_fidelity=3 — The successor emits observed_month, result_count, distinct_patient_count, and median_result_value; the aggregate gold check reports four matching keys and no value mismatches.sql_quality=3 — The PostgreSQL aggregate functions, GROUP BY, and chronological ORDER BY are concise and idiomatic.schema_discipline=3 — Only approved fact-view fields and a valid date parameter are used, with an independent PostgreSQL match.followup_coherence=3 — The follow-up request records the dirty buffer, and the successor retains its date and non-null filters while changing to monthly grain.
aggregation-dirty-base-profile-switch turn=1 version=fdd4cd09-45b4-4efd-b585-9d4ad4d9e140intent_fidelity=3 — The successor emits observed_month, result_count, distinct_patient_count, and median_result_value; the aggregate gold check reports four matching keys and no value mismatches.sql_quality=3 — The PostgreSQL aggregate functions, GROUP BY, and chronological ORDER BY are concise and idiomatic.schema_discipline=3 — Only approved fact-view fields and a valid date parameter are used, with an independent PostgreSQL match.followup_coherence=3 — The follow-up request records the dirty buffer, and the successor retains its date and non-null filters while changing to monthly grain.
aggregation-dirty-base-profile-switch turn=1 version=fff76828-b85e-4360-b9ce-2bfe3bc49f18intent_fidelity=3 — The successor emits observed_month, result_count, distinct_patient_count, and median_result_value; the aggregate gold check reports four matching keys and no value mismatches.sql_quality=3 — The PostgreSQL aggregate functions, GROUP BY, and chronological ORDER BY are concise and idiomatic.schema_discipline=3 — Only approved fact-view fields and a valid date parameter are used, with an independent PostgreSQL match.followup_coherence=3 — The follow-up request records the dirty buffer, and the successor retains its date and non-null filters while changing to monthly grain.
bounded-hub-tool-failure turn=0 version=68d37433-ebe0-44cf-adc8-c7716b3bb2d2intent_fidelity=3 — The successfully executed base selects representative laboratory fields under the required 2026-01-01 date filter; the gold artifact confirms the full 962-observation set.sql_quality=3 — The base query is readable, uses stable ordering, and executed successfully before the intentionally failed follow-up.schema_discipline=3 — The SQL is confined to catalogued analytics.lab_result_fact_v1 columns and a valid date binding; PostgreSQL evidence matches.
narrowing-unchanged-base turn=0 version=16ca5958-7aca-47d3-bc8b-d297379a2f38intent_fidelity=3 — The executed base projects every requested laboratory attribute and applies observed_at >= start_date; the base gold artifact reports 962 model and reference rows with no differences.sql_quality=3 — The executed SQL is a straightforward successful SELECT with an unambiguous named parameter and stable tie-broken ordering.schema_discipline=3 — All selected and filtered fields belong to analytics.lab_result_fact_v1, and the independent PostgreSQL comparison passes.
narrowing-unchanged-base turn=0 version=d49133e1-b6d3-412d-859e-e44663406340intent_fidelity=3 — The executed base projects every requested laboratory attribute and applies observed_at >= start_date; the base gold artifact reports 962 model and reference rows with no differences.sql_quality=3 — The executed SQL is a straightforward successful SELECT with an unambiguous named parameter and stable tie-broken ordering.schema_discipline=3 — All selected and filtered fields belong to analytics.lab_result_fact_v1, and the independent PostgreSQL comparison passes.
narrowing-unchanged-base turn=0 version=e1a87006-f4a8-4664-b194-db68123d023aintent_fidelity=3 — The executed base projects every requested laboratory attribute and applies observed_at >= start_date; the base gold artifact reports 962 model and reference rows with no differences.sql_quality=3 — The executed SQL is a straightforward successful SELECT with an unambiguous named parameter and stable tie-broken ordering.schema_discipline=3 — All selected and filtered fields belong to analytics.lab_result_fact_v1, and the independent PostgreSQL comparison passes.
narrowing-unchanged-base turn=1 version=23122c47-cfff-4b9e-a8df-878fa71a6dceintent_fidelity=3 — The successor explicitly filters test_name to Viral Load and result_status to final, and its 194-row observation-id set exactly matches the gold reference.sql_quality=3 — The added predicates are concise and independently executable; ordering and parameter use remain clear.schema_discipline=3 — The successor uses only approved fact-view columns and valid start_date/test_name bindings; the PostgreSQL comparison passes.followup_coherence=3 — Every base projection, the date predicate, and ordering are retained while both requested restrictions are added.
narrowing-unchanged-base turn=1 version=2b23f008-7fdf-4905-983c-0547a744d207intent_fidelity=3 — The successor explicitly filters test_name to Viral Load and result_status to final, and its 194-row observation-id set exactly matches the gold reference.sql_quality=3 — The added predicates are concise and independently executable; ordering and parameter use remain clear.schema_discipline=3 — The successor uses only approved fact-view columns and valid start_date/test_name bindings; the PostgreSQL comparison passes.followup_coherence=3 — Every base projection, the date predicate, and ordering are retained while both requested restrictions are added.
narrowing-unchanged-base turn=1 version=5ab74540-0fdf-4dbb-b876-6513fb32e9dbintent_fidelity=1 — The executed successor has the Viral Load predicate but no final-status predicate. Its gold pass reflects this dataset's values, not completion of the explicit two-part instruction.sql_quality=3 — The remaining SQL is syntactically sound, readable, successfully executed, and deterministically ordered.schema_discipline=3 — All columns are approved and both named parameters are valid; the PostgreSQL replay agrees with the Gateway result.followup_coherence=1 — Although the base shape, date filter, order, and test restriction survive, omitting the required final-status restriction is a material incomplete application of the follow-up.
semantic-distinct-patient-review turn=0 version=20a0c4a6-33c8-439c-8a8d-ea677cdf96bfintent_fidelity=3 — The base emits patient_id for every qualifying laboratory row since 2026-01-01, and the 962-row gold comparison has no missing or extra identifiers.sql_quality=3 — The direct projection, date filter, and ordering are readable and execute successfully.schema_discipline=3 — The SQL stays entirely in the approved fact view with a typed date parameter; independent PostgreSQL evidence agrees.
semantic-distinct-patient-review turn=0 version=4614de91-b8e3-4e73-ab66-fcdf5905453fintent_fidelity=3 — The base emits patient_id for every qualifying laboratory row since 2026-01-01, and the 962-row gold comparison has no missing or extra identifiers.sql_quality=3 — The direct projection, date filter, and ordering are readable and execute successfully.schema_discipline=3 — The SQL stays entirely in the approved fact view with a typed date parameter; independent PostgreSQL evidence agrees.
semantic-distinct-patient-review turn=0 version=7eb46f8b-b5e4-4c94-8502-4eed6cc61d98intent_fidelity=3 — The base emits patient_id for every qualifying laboratory row since 2026-01-01, and the 962-row gold comparison has no missing or extra identifiers.sql_quality=3 — The direct projection, date filter, and ordering are readable and execute successfully.schema_discipline=3 — The SQL stays entirely in the approved fact view with a typed date parameter; independent PostgreSQL evidence agrees.
semantic-distinct-patient-review turn=1 version=5617ad5d-039e-41df-aa5a-dc88d1e17c0aintent_fidelity=3 — COUNT(DISTINCT patient_id) is aliased patient_count exactly as requested, and the scalar gold comparison reports modelValue = referenceValue = 96.sql_quality=3 — The aggregate is minimal and idiomatic, requiring neither GROUP BY nor extra subqueries.schema_discipline=3 — Only approved patient_id and observed_at fields plus the valid date binding are used; the PostgreSQL cross-check passes.followup_coherence=3 — The successor retains the date cohort from the editor and intentionally changes only the output grain from rows to one distinct-patient count.
semantic-distinct-patient-review turn=1 version=56e3e515-7447-4603-b493-84c0b456661fintent_fidelity=3 — COUNT(DISTINCT patient_id) is aliased patient_count exactly as requested, and the scalar gold comparison reports modelValue = referenceValue = 96.sql_quality=3 — The aggregate is minimal and idiomatic, requiring neither GROUP BY nor extra subqueries.schema_discipline=3 — Only approved patient_id and observed_at fields plus the valid date binding are used; the PostgreSQL cross-check passes.followup_coherence=3 — The successor retains the date cohort from the editor and intentionally changes only the output grain from rows to one distinct-patient count.
semantic-distinct-patient-review turn=1 version=93e481a0-652c-4de0-82b5-f1cf236ce7d4intent_fidelity=3 — COUNT(DISTINCT patient_id) is aliased patient_count exactly as requested, and the scalar gold comparison reports modelValue = referenceValue = 96.sql_quality=3 — The aggregate is minimal and idiomatic, requiring neither GROUP BY nor extra subqueries.schema_discipline=3 — Only approved patient_id and observed_at fields plus the valid date binding are used; the PostgreSQL cross-check passes.followup_coherence=3 — The successor retains the date cohort from the editor and intentionally changes only the output grain from rows to one distinct-patient count.
unresolved-parameter-correction turn=0 version=64d4134c-182e-4559-8e1f-a01064bd71ddintent_fidelity=3 — For the underspecified request, the base returns relevant laboratory columns sorted newest first and limits the output to the 100 most recent rows.sql_quality=3 — The query is executable, compact, and uses ORDER BY plus LIMIT coherently for a recent-results request.schema_discipline=3 — Every field is catalogued in analytics.lab_result_fact_v1, and the separate PostgreSQL result comparison passes.
unresolved-parameter-correction turn=0 version=c6d3f714-584b-4903-a47a-466910e7c465intent_fidelity=3 — For the underspecified request, the base returns relevant laboratory columns sorted newest first and limits the output to the 100 most recent rows.sql_quality=3 — The query is executable, compact, and uses ORDER BY plus LIMIT coherently for a recent-results request.schema_discipline=3 — Every field is catalogued in analytics.lab_result_fact_v1, and the separate PostgreSQL result comparison passes.
unresolved-parameter-correction turn=0 version=d8960406-2427-46d9-b20a-ba5f97456cd0intent_fidelity=3 — For the underspecified request, the base returns relevant laboratory columns sorted newest first and limits the output to the 100 most recent rows.sql_quality=3 — The query is executable, compact, and uses ORDER BY plus LIMIT coherently for a recent-results request.schema_discipline=3 — Every field is catalogued in analytics.lab_result_fact_v1, and the separate PostgreSQL result comparison passes.
unresolved-parameter-correction turn=1 version=44187062-3858-4229-a057-248dc7471d13intent_fidelity=3 — The successor resolves the empty binding to test_name without altering the editor query; its 384 observation IDs exactly match the Viral Load reference set.sql_quality=3 — The result is a clean executable SELECT with one valid named parameter and stable ordering.schema_discipline=3 — The approved fact view and string test_name binding are used correctly, and the independent PostgreSQL comparison passes.followup_coherence=3 — Comparison with 08-create-followup.json shows the columns, table, predicate value, and ordering are unchanged apart from the repaired parameter name.
unresolved-parameter-correction turn=1 version=997dd586-be8f-4870-8b4d-8863ea5bf763intent_fidelity=3 — The successor resolves the empty binding to test_name without altering the editor query; its 384 observation IDs exactly match the Viral Load reference set.sql_quality=3 — The result is a clean executable SELECT with one valid named parameter and stable ordering.schema_discipline=3 — The approved fact view and string test_name binding are used correctly, and the independent PostgreSQL comparison passes.followup_coherence=3 — Comparison with 08-create-followup.json shows the columns, table, predicate value, and ordering are unchanged apart from the repaired parameter name.
unresolved-parameter-correction turn=1 version=a1c23973-f4c1-4f30-bca4-0aa6ca9ff658intent_fidelity=3 — The successor resolves the empty binding to test_name without altering the editor query; its 384 observation IDs exactly match the Viral Load reference set.sql_quality=3 — The result is a clean executable SELECT with one valid named parameter and stable ordering.schema_discipline=3 — The approved fact view and string test_name binding are used correctly, and the independent PostgreSQL comparison passes.followup_coherence=3 — Comparison with 08-create-followup.json shows the columns, table, predicate value, and ordering are unchanged apart from the repaired parameter name.