Allow explicit operator resume after technical response repairs
This commit is contained in:
1 parent
ecec96ce14
commit
167d8d5f5e
4 files changed
+85
-2
No files matched your search
@@ -270,3 +270,39 @@ def test_empty_array_details_rejected(admitted):
|
||||
with pytest.raises(LifecycleError):
|
||||
store.advance("case-A", "stable-package", State.BUILDING_CASE, step_id="bad", details=[])
|
||||
assert store.latest("case-A", "stable-package") == original
|
||||
|
||||
|
||||
@pytest.mark.parametrize("reason", ["INVALID_LLM_RESPONSES", "RESEARCH_UNAVAILABLE", "AWAITING_TEST_FEEDBACK"])
|
||||
def test_manual_repair_retry_is_explicit_scoped_and_preserves_content(admitted,reason):
|
||||
_, store, _ = admitted
|
||||
blocked = store.advance("case-A", "stable-package", State.BLOCKED, step_id="repair-block",
|
||||
reason=reason, retry_not_before="2099-01-01T00:00:00Z")
|
||||
with pytest.raises(LifecycleError):
|
||||
store.advance("case-A", "stable-package", State.VALIDATED, step_id="automatic-too-early")
|
||||
if reason != "INVALID_LLM_RESPONSES":
|
||||
with pytest.raises(LifecycleError):
|
||||
store.advance("case-A", "stable-package", State.VALIDATED, step_id="not-repairable",manual_retry=True)
|
||||
assert store.latest("case-A", "stable-package") == blocked
|
||||
return
|
||||
with PackageReader(blocked) as reader:
|
||||
before = reader.manifest
|
||||
resumed = store.advance("case-A", "stable-package", State.VALIDATED, step_id="operator-repaired",manual_retry=True)
|
||||
assert store.advance("case-A", "stable-package", State.VALIDATED, step_id="operator-repaired",manual_retry=True) == resumed
|
||||
with PackageReader(resumed) as reader:
|
||||
assert reader.read_bytes("unknown") == b"keep"
|
||||
assert reader.manifest["analysis_revision"] == before["analysis_revision"]
|
||||
assert reader.manifest["artifacts"].keys() == before["artifacts"].keys()
|
||||
assert reader.manifest["routing"]["retry_not_before"] is None
|
||||
assert checkpoint_chain(reader)[0][1]["details"]["manual_retry"] is True
|
||||
assert PackageValidator().validate(resumed).valid
|
||||
|
||||
|
||||
@pytest.mark.parametrize("changes", [{"additions":{"other":b"no"}}, {"artifacts":{"case":"other"}}, {"manual_retry":1}])
|
||||
def test_manual_repair_retry_cannot_mutate_artifacts(admitted,changes):
|
||||
_, store, _ = admitted
|
||||
blocked = store.advance("case-A", "stable-package", State.BLOCKED, step_id="block-repair",
|
||||
reason="INVALID_LLM_RESPONSES",retry_not_before="2099-01-01T00:00:00Z")
|
||||
with pytest.raises(LifecycleError):
|
||||
store.advance("case-A", "stable-package", State.VALIDATED, step_id="bad-repair",
|
||||
**{**{"manual_retry":True},**changes})
|
||||
assert store.latest("case-A", "stable-package") == blocked
|
||||
Reference in new issue
Block a user