fix(observatory): offer only uncalculated profiles without completion badges

This commit is contained in:
DCCONSTRUCTIONS
2026-09-03 10:16:01 +03:00
parent c2710b55a7
commit e436fb56d4
14 changed files with 420 additions and 368 deletions
+25
View File
@@ -202,6 +202,31 @@ def _reconciliation_request(
)
def test_list_filters_definition_before_page_limit(tmp_path: Path) -> None:
previous = _definitions().definitions[0]
current = replace(previous, definition_version=2, definition_sha256="0" * 64)
now = NOW
queue = ObservatoryRecordedJobQueue(
tmp_path, definitions=RecordedRunDefinitionRegistry((previous, current)),
clock=lambda: now,
)
first, _ = queue.submit(_intent())
now = "2026-08-30T21:01:00.000Z"
queue.submit(
replace(
_intent(idempotency_key="new-definition"),
definition_sha256=current.definition_sha256,
),
)
assert queue.list_jobs(limit=1)[0].definition_sha256 == current.definition_sha256
assert queue.list_jobs(
source_session_id=first.source_session_id, setup_id=previous.setup_id,
definition_sha256=previous.definition_sha256, limit=1,
) == (first,)
with pytest.raises(ValueError):
queue.list_jobs(definition_sha256="not-a-digest")
@pytest.mark.parametrize("enqueue", [False, True])
def test_portable_duplicate_guard_preserves_original_request(
tmp_path: Path,
@@ -228,6 +228,25 @@ def test_exact_m49_preflight_is_queueable_and_submit_is_idempotently_queued(
]
assert queue.admission_gate().blocked is False
for digest, count in ((definition.definition_sha256, 1), ("f" * 64, 0)):
exact = client.get(
"/api/v1/observatory/runs",
params={
"source_session_id": RAV00_SESSION_ID, "setup_id": SETUP_ID,
"definition_sha256": digest,
},
)
assert exact.status_code == 200
assert len(exact.json()["items"]) == count
malformed = client.get(
"/api/v1/observatory/runs",
params={
"source_session_id": RAV00_SESSION_ID, "setup_id": SETUP_ID,
"definition_sha256": "not-a-digest",
},
)
assert malformed.status_code == 422
def test_recorded_run_routes_fail_closed_when_queue_initialization_failed() -> None:
registry = LaboratorySetupRegistry.from_file(