fix(mcp): recover truncated prepared proposals
CI / quality (push) Canceled after 0s

This commit is contained in:
vasily committed 2026-10-15 12:09:04 +08:00
1 parent 34f4923566
commit 146aa3a281
3 files changed
+98 -10

No files matched your search

+34 -1
View File
@@ -252,6 +252,38 @@ def test_mcp_source_to_citation_vertical_slice(tmp_path: Path) -> None:
assert prepared_proposal.payload_digest == proposal_payload_digest(
prepared_proposal
)
truncated_evaluation = await mcp.call_tool(
"proposal_evaluate",
{"proposal_json": prepared_payload["proposal_json"][:-1]},
)
assert not truncated_evaluation.is_error, truncated_evaluation.content
truncated_evaluation_payload = json.loads(
_text_payload(truncated_evaluation)
)
assert truncated_evaluation_payload["proposal_id"] == (
prepared_proposal.proposal_id
)
assert truncated_evaluation_payload["input_repaired"] is True
malformed_prepare = await mcp.call_tool(
"proposal_prepare", {"proposal_json": '{"schema_version":'}
)
assert not malformed_prepare.is_error, malformed_prepare.content
malformed_prepare_payload = json.loads(_text_payload(malformed_prepare))
assert malformed_prepare_payload["status"] == "invalid"
assert malformed_prepare_payload["issues"][0]["code"] == (
"invalid_proposal_draft"
)
malformed_evaluation = await mcp.call_tool(
"proposal_evaluate", {"proposal_json": '{"schema_version":'}
)
assert not malformed_evaluation.is_error, malformed_evaluation.content
malformed_evaluation_payload = json.loads(
_text_payload(malformed_evaluation)
)
assert malformed_evaluation_payload["status"] == "invalid"
assert malformed_evaluation_payload["findings"][0]["code"] == (
"PROPOSAL_JSON_INVALID"
)
invalid_draft = json.loads(json.dumps(draft))
invalid_evidence = invalid_draft["operations"][1]["node"]["claims"][0][
"evidence"
@@ -928,12 +960,13 @@ def test_mcp_source_to_citation_vertical_slice(tmp_path: Path) -> None:
submitted = await mcp.call_tool(
"proposal_submit",
{"proposal_json": candidate.model_dump_json()},
{"proposal_json": candidate.model_dump_json()[:-1]},
)
assert not submitted.is_error, submitted.content
outcome = json.loads(_text_payload(submitted))
assert outcome["status"] == "accepted"
assert outcome["validation_status"] == "eligible"
assert outcome["input_repaired"] is True
assert outcome["receipt"] is not None
accepted_head = repository.head()
retried = await mcp.call_tool(