{
  "schemaVersion": 1,
  "checkedOn": "2026-09-22",
  "dataType": "authored-synthetic-only",
  "productVersion": "0.2.3",
  "readerEngineVersion": "0.2.2",
  "productZipSha256": "0bd8fd4e76a3697908f7f70664a60e985f38f9fceff92c975974224bf94aa639",
  "coreSha256": "d5cf9e1a7297d31a0446dbcadcc017a1eef0de3796b4e895ff61af9f2dd66eb5",
  "limits": [
    "架空入力をローカルのJavaScript実行環境で処理した確認です。実利用者の明細・契約・節約実績ではありません。",
    "全カード形式、実ブラウザー・全端末の互換性を保証しません。契約状態や次回請求は確認していません。"
  ],
  "title": "無料CSV確認の3行を現行読込処理で再現",
  "sourceCsv": "/csv-check/fictional-reader-example.csv",
  "csvSha256": "6f29092d16e6089af7b065287356023a05fb50ca21b34c1b9697a104e608be04",
  "method": "販売ZIP由来の読込処理と現行Web Workerを、外部接続APIを記録して停止するローカル実行環境で実行。未改変の画面イベント処理も模擬DOM/Workerで通し、結果表示と消去を確認。実ブラウザー操作とは区別する。",
  "settings": {
    "encoding": "",
    "defaultYear": "",
    "expenseSign": "positive",
    "headerIndex": 0,
    "columns": {
      "date": 0,
      "merchant": 1,
      "amount": 2
    }
  },
  "result": {
    "ok": true,
    "width": 3,
    "headerIndex": 0,
    "headers": [
      "利用日",
      "利用店名",
      "利用金額"
    ],
    "columns": {
      "date": 0,
      "merchant": 1,
      "amount": 2
    },
    "preview": [
      [
        "利用日",
        "利用店名",
        "利用金額"
      ],
      [
        "2026/01/08",
        "架空ストレージ",
        "1000"
      ],
      [
        "2026/02/08",
        "架空ストレージ",
        "1000"
      ]
    ],
    "headerChoices": 4,
    "accepted": 2,
    "rejected": 1,
    "reasons": {
      "返金・入金側の符号": 1
    },
    "missingYear": false,
    "first": "2026-01-08",
    "last": "2026-02-08",
    "spanDays": 31,
    "warnings": [
      "1行は日付・利用先・金額の不備、返金・入金、または重複により除外しました。"
    ],
    "encoding": "UTF-8 / Shift_JIS 自動判定"
  },
  "counterexample": {
    "changedSetting": {
      "expenseSign": "negative"
    },
    "result": {
      "ok": true,
      "width": 3,
      "headerIndex": 0,
      "headers": [
        "利用日",
        "利用店名",
        "利用金額"
      ],
      "columns": {
        "date": 0,
        "merchant": 1,
        "amount": 2
      },
      "preview": [
        [
          "利用日",
          "利用店名",
          "利用金額"
        ],
        [
          "2026/01/08",
          "架空ストレージ",
          "1000"
        ],
        [
          "2026/02/08",
          "架空ストレージ",
          "1000"
        ]
      ],
      "headerChoices": 4,
      "accepted": 1,
      "rejected": 2,
      "reasons": {
        "返金・入金側の符号": 2
      },
      "missingYear": false,
      "first": "2026-02-10",
      "last": "2026-02-10",
      "spanDays": 0,
      "warnings": [
        "2行は日付・利用先・金額の不備、返金・入金、または重複により除外しました。"
      ],
      "encoding": "UTF-8 / Shift_JIS 自動判定"
    },
    "interpretation": "符号が反対の設定では元の返金1行が支出側になる。列と符号は利用者が元明細と照合する必要がある。"
  },
  "uiHandlerReplay": {
    "environment": "local VM with bounded DOM/Worker harness",
    "output": {
      "title": "読み取れました。除外行も確認してください。",
      "summary": [
        "文字コード",
        "UTF-8 / Shift_JIS 自動判定",
        "読み取れた支出",
        "2行",
        "除外された行",
        "1行",
        "支出の期間",
        "2026-01-08 〜 2026-02-08（31日間）"
      ],
      "reasons": [
        "返金・入金側の符号：1行",
        "1行に複数の理由が付く場合があります。"
      ]
    },
    "clearResult": {
      "resultHidden": true,
      "mappingHidden": true,
      "readDisabled": true,
      "previewCount": 0,
      "summaryCount": 0,
      "message": "読み込んだ内容を消しました。"
    }
  },
  "executionObservation": {
    "networkApiAttempts": 0,
    "persistentStorageAttempts": 0,
    "localWorkerScriptLoads": 2,
    "scope": "この合成CSVを処理するローカル実行内。通常のページ/スクリプト取得や販売ページ通信、実ブラウザーのネットワーク観測ではない。"
  },
  "sourceHashes": {
    "public/csv-check/check.js": "832b45d9a736ab5ee32de19bea75268274181da78cc1df739d39fd88a9428489",
    "public/csv-check/check-worker.js": "92dff91ee1cd3416d7fc3dff09f39a5f9b45ed79855d8cf1f7ff37057c69da92",
    "public/csv-check/product-reader.js": "e36fe6fce7198ec84286f55468d8de0bbac13aee5ea41ac89ad13e46c3c30cd9"
  }
}
