{
  "schema": 51,
  "source_files_unchanged": true,
  "before_digest": "2f902d9f179f75cc38c0fa40d6c807a36e9ec3237af75f7eaffcb0ac59e1a253",
  "after_first_confirm_digest": "f52e60edf3d5f15b1bfc8c1d829c088c9cb40e1fa1cd37bd652a6b0024d49eda",
  "replay_digest_unchanged": true,
  "household": {
    "preview_counts": {
      "files": 4,
      "rows": 1851,
      "candidates": 143,
      "safe_transfer_pairs": 0,
      "duplicates": 1708,
      "pending": 0,
      "review": 80,
      "receipt_links": 12,
      "proposals": 67,
      "decisions": 30,
      "special_cases": 46,
      "unmatched_neutral_transfers": 49,
      "credit_card_payments": 49,
      "linked_migros_receipts": 4,
      "unlinked_migros_receipts": 8
    },
    "expected_writes": {
      "import_batches": 1,
      "import_files": 4,
      "candidates": 143,
      "transactions": 55,
      "transfer_pairs": 0,
      "migros_links": 4
    },
    "confirm": {
      "status": "confirmed",
      "batch_id": "hhbatch_532668afcbef38370b4c1ba4",
      "idempotent": false,
      "counts": {
        "file_count": 4,
        "row_count": 1851,
        "candidate_count": 143,
        "transfer_pair_count": 0,
        "duplicate_count": 1708,
        "review_count": 80,
        "receipt_link_count": 4
      }
    },
    "fresh_replay_expected_writes": {
      "import_batches": 0,
      "import_files": 0,
      "candidates": 0,
      "transactions": 0,
      "transfer_pairs": 0,
      "migros_links": 0
    },
    "replay_idempotent": true
  },
  "snapshots": [
    {
      "label": "AKB Zinsbereitstellungskonto",
      "amount_chf": "2685.00",
      "date": "2026-08-26"
    },
    {
      "label": "AKB Aargauer-Sparkonto",
      "amount_chf": "60577.95",
      "date": "2026-08-26"
    },
    {
      "label": "AKB Haushaltskonto",
      "amount_chf": "11637.17",
      "date": "2026-08-26"
    },
    {
      "label": "Raiffeisen Mitglieder-Privatkonto",
      "amount_chf": "29062.37",
      "date": "2026-08-25"
    }
  ],
  "truewealth": {
    "total_chf": "156796.72",
    "activity_count": 54,
    "activity_counts": {
      "buy": 32,
      "sell": 12,
      "dividend": 8,
      "split_out": 1,
      "split_in": 1
    },
    "external_cashflows_complete": false,
    "replay_idempotent": true
  },
  "postfinance": {
    "total_chf": "318886.56",
    "securities_chf": "291048.07",
    "cash_chf": "27838.49",
    "event_count": 5,
    "event_counts": {
      "dividend": 2,
      "fee": 1,
      "fx": 2
    },
    "performance_available": false,
    "performance_blockers": [
      "partial_activity_components_present",
      "portfolio_overview_end_date_mismatch"
    ],
    "replay_idempotent": true,
    "projection_correction_rows": 2
  },
  "salary_9261_30_count": 1,
  "melanie_plan_values_remain_unset_count": 4,
  "table_deltas": {
    "account_value_snapshots": 2,
    "audit_log": 9,
    "budget_import_line_items": 331,
    "budget_transaction_candidates": 143,
    "budget_transactions": 55,
    "cash_account_snapshots": 4,
    "cash_balances": 2,
    "household_import_batches": 1,
    "household_import_files": 4,
    "household_import_items": 143,
    "household_migros_links": 4,
    "portfolio_valuation_snapshots": 2,
    "positions_snapshot": 22,
    "postfinance_batch_documents": 1,
    "postfinance_documents": 1,
    "postfinance_event_components": 20,
    "postfinance_import_batches": 1,
    "postfinance_ledger_events": 5,
    "postfinance_projection_corrections": 2,
    "postfinance_snapshot_cash": 2,
    "postfinance_snapshot_positions": 22,
    "postfinance_snapshots": 1,
    "transactions": 5,
    "truewealth_activities": 54,
    "truewealth_import_batches": 1,
    "truewealth_snapshot_cash": 4,
    "truewealth_snapshot_positions": 7,
    "truewealth_snapshots": 1
  },
  "cockpit_source_rows": [
    {
      "key": "cash-1",
      "as_of": "2026-08-26",
      "value_basis": "confirmed",
      "last_activity_day": "2026-08-25",
      "last_confirmed_snapshot": "2026-08-26",
      "coverage_from": "2025-09-01",
      "coverage_to": "2026-08-25",
      "coverage_status": "complete",
      "new_rows": 19,
      "duplicate_rows": 324,
      "review_rows": 9,
      "performance_status": "not_applicable",
      "performance_blocker": null
    },
    {
      "key": "cash-2",
      "as_of": null,
      "value_basis": "unavailable",
      "last_activity_day": "2026-08-25",
      "last_confirmed_snapshot": null,
      "coverage_from": "2025-09-01",
      "coverage_to": "2026-08-25",
      "coverage_status": "complete",
      "new_rows": 19,
      "duplicate_rows": 324,
      "review_rows": 9,
      "performance_status": "not_applicable",
      "performance_blocker": null
    },
    {
      "key": "cash-3",
      "as_of": "2026-08-26",
      "value_basis": "confirmed",
      "last_activity_day": "2026-08-25",
      "last_confirmed_snapshot": "2026-08-26",
      "coverage_from": "2025-09-01",
      "coverage_to": "2026-08-25",
      "coverage_status": "complete",
      "new_rows": 19,
      "duplicate_rows": 324,
      "review_rows": 9,
      "performance_status": "not_applicable",
      "performance_blocker": null
    },
    {
      "key": "cash-4",
      "as_of": null,
      "value_basis": "unavailable",
      "last_activity_day": "2026-08-25",
      "last_confirmed_snapshot": null,
      "coverage_from": "2025-09-01",
      "coverage_to": "2026-08-25",
      "coverage_status": "complete",
      "new_rows": 19,
      "duplicate_rows": 324,
      "review_rows": 9,
      "performance_status": "not_applicable",
      "performance_blocker": null
    },
    {
      "key": "cash-5",
      "as_of": null,
      "value_basis": "unavailable",
      "last_activity_day": "2026-07-31",
      "last_confirmed_snapshot": "2026-08-26",
      "coverage_from": "2026-07-01",
      "coverage_to": "2026-07-31",
      "coverage_status": "partial",
      "new_rows": 0,
      "duplicate_rows": 0,
      "review_rows": 0,
      "performance_status": "not_applicable",
      "performance_blocker": "PostFinance E-Trading-Kontoauszug oder vollständiger Transaktionsreport vom 01.08.–26.08.2026 fehlt; bei null Aktivitäten ist ein offizieller Nachweis erforderlich."
    },
    {
      "key": "cash-6",
      "as_of": "2026-08-26",
      "value_basis": "confirmed",
      "last_activity_day": "2026-07-31",
      "last_confirmed_snapshot": "2026-08-26",
      "coverage_from": "2026-07-01",
      "coverage_to": "2026-07-31",
      "coverage_status": "partial",
      "new_rows": 0,
      "duplicate_rows": 0,
      "review_rows": 0,
      "performance_status": "not_ready",
      "performance_blocker": "PostFinance E-Trading-Kontoauszug oder vollständiger Transaktionsreport vom 01.08.–26.08.2026 fehlt; bei null Aktivitäten ist ein offizieller Nachweis erforderlich."
    },
    {
      "key": "cash-7",
      "as_of": null,
      "value_basis": "unavailable",
      "last_activity_day": "2026-08-25",
      "last_confirmed_snapshot": null,
      "coverage_from": "2026-01-05",
      "coverage_to": "2026-08-25",
      "coverage_status": "complete",
      "new_rows": 19,
      "duplicate_rows": 55,
      "review_rows": 14,
      "performance_status": "not_applicable",
      "performance_blocker": null
    },
    {
      "key": "cash-8",
      "as_of": null,
      "value_basis": "unavailable",
      "last_activity_day": "2026-08-25",
      "last_confirmed_snapshot": null,
      "coverage_from": "2026-01-05",
      "coverage_to": "2026-08-25",
      "coverage_status": "complete",
      "new_rows": 19,
      "duplicate_rows": 55,
      "review_rows": 14,
      "performance_status": "not_applicable",
      "performance_blocker": null
    },
    {
      "key": "postfinance-investments",
      "as_of": "2026-08-26T16:57:34",
      "value_basis": "confirmed",
      "last_activity_day": "2026-07-31",
      "last_confirmed_snapshot": "2026-08-26",
      "coverage_from": "2026-07-01",
      "coverage_to": "2026-07-31",
      "coverage_status": "partial",
      "new_rows": 0,
      "duplicate_rows": 0,
      "review_rows": 0,
      "performance_status": "not_ready",
      "performance_blocker": "PostFinance E-Trading-Kontoauszug oder vollständiger Transaktionsreport vom 01.08.–26.08.2026 fehlt; bei null Aktivitäten ist ein offizieller Nachweis erforderlich."
    },
    {
      "key": "truewealth",
      "as_of": "2026-08-26",
      "value_basis": "confirmed",
      "last_activity_day": "2026-08-26",
      "last_confirmed_snapshot": "2026-08-26",
      "coverage_from": "2026-01-01",
      "coverage_to": "2026-08-26",
      "coverage_status": "partial",
      "new_rows": 0,
      "duplicate_rows": 0,
      "review_rows": 0,
      "performance_status": "not_ready",
      "performance_blocker": "Externe Ein- und Auszahlungen sind noch nicht vollständig belegt."
    },
    {
      "key": "crypto",
      "as_of": "2026-08-25T21:30:30+00:00",
      "value_basis": "modelled",
      "last_activity_day": "2026-08-25T21:30:30+00:00",
      "last_confirmed_snapshot": "2026-08-25T21:30:30+00:00",
      "coverage_from": null,
      "coverage_to": null,
      "coverage_status": "partial",
      "new_rows": 0,
      "duplicate_rows": 0,
      "review_rows": 0,
      "performance_status": "not_ready",
      "performance_blocker": "Mengen-, Aktivitäts-, Preis- oder Cashflow-Coverage ist weiterhin unvollständig."
    },
    {
      "key": "visa-liability",
      "as_of": null,
      "value_basis": "unavailable",
      "last_activity_day": "2026-08-13",
      "last_confirmed_snapshot": null,
      "coverage_from": "2024-07-11",
      "coverage_to": "2026-08-13",
      "coverage_status": "complete",
      "new_rows": 93,
      "duplicate_rows": 1253,
      "review_rows": 53,
      "performance_status": "not_applicable",
      "performance_blocker": "Aktueller Abrechnungssaldo ist nicht vollständig belegt."
    }
  ],
  "integrity": "ok",
  "fk_violations": 0
}