"""Additive draft lineage must preserve legacy persisted evidence shapes.""" import pytest from jarca_ledger_mcp.application.assets_service import _closed_run_metadata @pytest.mark.parametrize('field,public_field', [ ('excluded_evidence', 'excluded_items'), ('carried_evidence', 'carried_items'), ]) def test_legacy_run_evidence_does_not_gain_draft_identity_keys(field, public_field): evidence = {'source_type': 'manual_asset', 'source_id': 'synthetic', 'reason': 'missing_valuation_amount', 'currency': 'KRW'} metadata = {'snapshot_run_id': 'legacy-run', 'draft_id': '', 'draft_version': 0, 'review_fingerprint': '', field: [evidence]} result = _closed_run_metadata(metadata) assert result[public_field] == [evidence] assert 'blocking' not in result[public_field][0] assert not {'draft_id', 'draft_version', 'review_fingerprint'} & result[public_field][0].keys() def test_draft_evidence_retains_its_persisted_lineage_and_selection_reason(): evidence = {'source_type': 'account', 'source_id': 'synthetic', 'draft_id': 'draft', 'draft_version': 2, 'review_fingerprint': 'fingerprint', 'selection_mode': 'manual_substitute', 'selection_reason': 'synthetic statement', 'item_version': 2} metadata = {'snapshot_run_id': 'draft-run', 'applied_evidence': [evidence]} result = _closed_run_metadata(metadata) assert result['applied_evidence'] == [evidence] assert result['contains_substitutions']