fix: fail closed on missing DB fingerprints
This commit is contained in:
parent
2dfb608f51
commit
c2eebb9654
3 changed files with 12 additions and 4 deletions
|
|
@ -294,6 +294,11 @@ def build_turn_manifest(
|
||||||
database_tool_binding = _database_tool_binding(result)
|
database_tool_binding = _database_tool_binding(result)
|
||||||
fingerprint_before = db_fingerprint_before or {}
|
fingerprint_before = db_fingerprint_before or {}
|
||||||
fingerprint_after = db_fingerprint_after or {}
|
fingerprint_after = db_fingerprint_after or {}
|
||||||
|
fingerprint_unchanged = bool(
|
||||||
|
fingerprint_before.get("fingerprint_sha256")
|
||||||
|
and fingerprint_after.get("fingerprint_sha256")
|
||||||
|
and fingerprint_before.get("fingerprint_sha256") == fingerprint_after.get("fingerprint_sha256")
|
||||||
|
)
|
||||||
missing = _required_missing(
|
missing = _required_missing(
|
||||||
behavior=behavior_manifest,
|
behavior=behavior_manifest,
|
||||||
calls=calls,
|
calls=calls,
|
||||||
|
|
@ -356,8 +361,7 @@ def build_turn_manifest(
|
||||||
"database_tool_binding": database_tool_binding,
|
"database_tool_binding": database_tool_binding,
|
||||||
"fingerprint_before": fingerprint_before,
|
"fingerprint_before": fingerprint_before,
|
||||||
"fingerprint_after": fingerprint_after,
|
"fingerprint_after": fingerprint_after,
|
||||||
"fingerprint_unchanged": fingerprint_before.get("fingerprint_sha256")
|
"fingerprint_unchanged": fingerprint_unchanged,
|
||||||
== fingerprint_after.get("fingerprint_sha256"),
|
|
||||||
"suite_counts_before_sha256": canonical_sha256(db_counts_before or {}),
|
"suite_counts_before_sha256": canonical_sha256(db_counts_before or {}),
|
||||||
"suite_counts_after_sha256": canonical_sha256(db_counts_after or {}),
|
"suite_counts_after_sha256": canonical_sha256(db_counts_after or {}),
|
||||||
"suite_counts_changed": db_counts_changed,
|
"suite_counts_changed": db_counts_changed,
|
||||||
|
|
|
||||||
|
|
@ -617,8 +617,11 @@ async def run_suite():
|
||||||
report["db_counts_after"] = after_counts
|
report["db_counts_after"] = after_counts
|
||||||
report["db_counts_changed"] = after_counts != before_counts
|
report["db_counts_changed"] = after_counts != before_counts
|
||||||
report["db_fingerprint_after"] = after_fingerprint
|
report["db_fingerprint_after"] = after_fingerprint
|
||||||
report["db_fingerprint_unchanged"] = (
|
report["db_fingerprint_unchanged"] = bool(
|
||||||
before_fingerprint.get("fingerprint_sha256") == after_fingerprint.get("fingerprint_sha256")
|
before_fingerprint.get("status") == "ok"
|
||||||
|
and after_fingerprint.get("status") == "ok"
|
||||||
|
and before_fingerprint.get("fingerprint_sha256")
|
||||||
|
== after_fingerprint.get("fingerprint_sha256")
|
||||||
)
|
)
|
||||||
report["live_behavior_manifest_after"] = behavior_after
|
report["live_behavior_manifest_after"] = behavior_after
|
||||||
report["changed_live_profile"] = behavior_before["behavior_sha256"] != behavior_after["behavior_sha256"]
|
report["changed_live_profile"] = behavior_before["behavior_sha256"] != behavior_after["behavior_sha256"]
|
||||||
|
|
|
||||||
|
|
@ -168,3 +168,4 @@ def test_database_question_requires_a_stable_full_database_fingerprint() -> None
|
||||||
assert value["attribution"]["status"] == "incomplete"
|
assert value["attribution"]["status"] == "incomplete"
|
||||||
assert "database_fingerprint_before" in value["attribution"]["missing_required_bindings"]
|
assert "database_fingerprint_before" in value["attribution"]["missing_required_bindings"]
|
||||||
assert "database_fingerprint_after" in value["attribution"]["missing_required_bindings"]
|
assert "database_fingerprint_after" in value["attribution"]["missing_required_bindings"]
|
||||||
|
assert value["canonical_database"]["fingerprint_unchanged"] is False
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue