{
  "generated_at_utc": "2026-07-16T03:59:36.939Z",
  "repository": "univcorp2-ctrl/Shinchiku_Land_Searcher",
  "root_file_count": 340,
  "viewer": {
    "url": "https://shinchiku-land-viewer.univcorp2.workers.dev/",
    "reachable": true,
    "status": 200,
    "body_bytes": 289106,
    "shows_zero_items": true,
    "displayed_count": 0,
    "new_count": 0,
    "has_no_properties_message": true
  },
  "findings": [
    {
      "severity": "critical",
      "code": "VIEWER_ZERO",
      "message": "公開Viewerは0件です。データ供給元が空、未投入、または読込先不一致です。"
    },
    {
      "severity": "high",
      "code": "GITHUB_RUNNER_DEPENDENCY",
      "message": "主要ワークフローにGitHub-hosted runner依存があります。runner起動前失敗時は生成処理が一切実行されません。"
    },
    {
      "severity": "high",
      "code": "LOCAL_WINDOWS_DEPENDENCY",
      "message": "TERASS取得・夜間処理にWindowsローカル常駐スクリプト依存があります。PC、タスクスケジューラ、同期フォルダ、ログインセッション停止で全体が止まります。"
    },
    {
      "severity": "medium",
      "code": "AI_WIRING_PRESENT",
      "message": "AI CLI関連コードは3ファイルにありますが、上流データ生成またはrunner停止時は到達しません。"
    }
  ],
  "authentication_dependency_names_only": [],
  "local_windows_automation_files": [
    "scripts/1.rawdata_downloader/install_terass_automation_tasks.ps1",
    "scripts/1.rawdata_downloader/keep_terass_session_alive.ps1",
    "scripts/1.rawdata_downloader/open_terass_login_session.ps1",
    "scripts/1.rawdata_downloader/open_url_with_terass_profile.ps1",
    "scripts/nightly_launcher.ps1",
    "scripts/register_excel_scheduled_tasks.ps1",
    "scripts/run_nightly_pipeline.bat",
    "scripts/run_nightly_pipeline.ps1",
    "scripts/sync_and_run_local.ps1"
  ],
  "workflows": [
    {
      "path": ".github/workflows/analyzer-refresh.yml",
      "bytes": 5579,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [
        "0 6 * * *"
      ],
      "workflow_dispatch": true,
      "secret_names": [
        "YIELD_RESULT_URL"
      ],
      "run_commands": [
        "|",
        "|",
        "|",
        "|",
        "python scripts/2.analyzer/dedup_master_properties.py",
        "|",
        "|"
      ]
    },
    {
      "path": ".github/workflows/daily-build.yml",
      "bytes": 9020,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [
        "0 23 * * *"
      ],
      "workflow_dispatch": true,
      "secret_names": [
        "TELEGRAM_BOT_TOKEN",
        "TELEGRAM_CHAT_ID",
        "TERASS_AUTH_STATE_JSON",
        "TERASS_AUTH_STATE_JSON_GZ"
      ],
      "run_commands": [
        "|",
        "|",
        "|",
        "|",
        "|",
        "|",
        "|",
        "|",
        "|"
      ]
    },
    {
      "path": ".github/workflows/daily-candidates.yml",
      "bytes": 4978,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [
        "0 23 * * *"
      ],
      "workflow_dispatch": true,
      "secret_names": [
        "CLOUDFLARE_WORKER_URL",
        "DIGEST_PING_SECRET",
        "TELEGRAM_BOT_TOKEN",
        "TELEGRAM_CHAT_ID",
        "TELEGRAM_PROXY_SECRET",
        "WORKER_URL"
      ],
      "run_commands": [
        "pip install openpyxl pyyaml requests",
        "|",
        "|",
        "|",
        "|"
      ]
    },
    {
      "path": ".github/workflows/daily-digest.yml",
      "bytes": 7403,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [
        "0 22 * * *"
      ],
      "workflow_dispatch": true,
      "secret_names": [
        "DIGEST_PING_SECRET",
        "GDRIVE_FOLDER_ID",
        "GOOGLE_SERVICE_ACCOUNT_JSON",
        "MASTER_XLSX_URL",
        "TELEGRAM_BOT_TOKEN",
        "TELEGRAM_CHAT_ID",
        "WORKER_URL"
      ],
      "run_commands": [
        "|",
        "|",
        "|",
        "|",
        "|",
        "|",
        "|"
      ]
    },
    {
      "path": ".github/workflows/deploy-shinchiku-self-hosted.yml",
      "bytes": 1178,
      "runs_on": [
        "self-hosted"
      ],
      "schedules": [],
      "workflow_dispatch": true,
      "secret_names": [],
      "run_commands": [
        "|",
        ">-",
        "|"
      ]
    },
    {
      "path": ".github/workflows/drain-callbacks.yml",
      "bytes": 6788,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [
        "*/15 * * * *"
      ],
      "workflow_dispatch": true,
      "secret_names": [
        "EVENT_NAME",
        "GITHUB_TOKEN",
        "RUN_NUMBER",
        "TELEGRAM_AUTHORIZED_CHAT_IDS",
        "TELEGRAM_BOT_TOKEN",
        "TELEGRAM_CHAT_ID"
      ],
      "run_commands": [
        "|",
        "|",
        "|",
        "|"
      ]
    },
    {
      "path": ".github/workflows/email-campaign.yml",
      "bytes": 8023,
      "runs_on": [
        "ubuntu-latest",
        "ubuntu-latest"
      ],
      "schedules": [
        "0 22 * * 1"
      ],
      "workflow_dispatch": true,
      "secret_names": [
        "EMAIL_FOLLOWUP_DAYS",
        "EMAIL_MAX_DISCOUNT_RATE",
        "EMAIL_SENDER_EMAIL",
        "EMAIL_SENDER_NAME",
        "EMAIL_SENDER_PHONE",
        "EMAIL_SMTP_HOST",
        "EMAIL_SMTP_PASSWORD",
        "EMAIL_SMTP_PORT",
        "EMAIL_SMTP_USERNAME",
        "GDRIVE_FOLDER_ID",
        "GOOGLE_SERVICE_ACCOUNT_JSON",
        "MASTER_XLSX_URL"
      ],
      "run_commands": [
        "|",
        "|",
        "|",
        "|",
        "|",
        "|",
        "|",
        "|",
        "|"
      ]
    },
    {
      "path": ".github/workflows/local-automation-snapshot.yml",
      "bytes": 780,
      "runs_on": [
        "ubuntu-latest",
        "ubuntu-latest"
      ],
      "schedules": [],
      "workflow_dispatch": true,
      "secret_names": [],
      "run_commands": [
        "|"
      ]
    },
    {
      "path": ".github/workflows/local-worker-deploy-tests.yml",
      "bytes": 1691,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [],
      "workflow_dispatch": true,
      "secret_names": [],
      "run_commands": [
        "python -m pip install --upgrade pip pytest openpyxl",
        "python -m pytest tests/test_private_cloudflare_loader.py tests/test_cloudflare_worker_proxy.py -q",
        "node --check cloudflare-viewer/src/index.js",
        "|"
      ]
    },
    {
      "path": ".github/workflows/recovery-daily.yml",
      "bytes": 1855,
      "runs_on": [
        "- self-hosted"
      ],
      "schedules": [
        "15 18 * * *"
      ],
      "workflow_dispatch": true,
      "secret_names": [],
      "run_commands": [
        "|",
        "python -m pytest tests/recovery -q",
        "./scripts/recovery/register_windows_tasks.ps1 -RepoRoot $env:GITHUB_WORKSPACE",
        "python tools/recovery_pipeline.py --repo-root $env:GITHUB_WORKSPACE --publish-git"
      ]
    },
    {
      "path": ".github/workflows/telegram-debug.yml",
      "bytes": 2368,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [],
      "workflow_dispatch": true,
      "secret_names": [
        "TELEGRAM_BOT_TOKEN",
        "TELEGRAM_CHAT_ID",
        "TG_BOT_TOKEN",
        "TG_CHAT_ID"
      ],
      "run_commands": [
        "|"
      ]
    },
    {
      "path": ".github/workflows/top30-digest.yml",
      "bytes": 2228,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [
        "15 22 * * *"
      ],
      "workflow_dispatch": true,
      "secret_names": [
        "TELEGRAM_BOT_TOKEN",
        "TELEGRAM_CHAT_ID"
      ],
      "run_commands": [
        "pip install openpyxl",
        "|",
        "python scripts/notify/send_top30_digest.py",
        "|"
      ]
    },
    {
      "path": ".github/workflows/viewer-sync.yml",
      "bytes": 4635,
      "runs_on": [
        "ubuntu-latest"
      ],
      "schedules": [],
      "workflow_dispatch": true,
      "secret_names": [
        "CLOUDFLARE_API_TOKEN"
      ],
      "run_commands": [
        "python -m pip install --upgrade pip openpyxl pandas requests",
        "python scripts/web_viewer/export_static.py",
        "python tools/verify_excel_web_sync.py --report artifacts/excel-web-sync-report.json",
        "python -m unittest discover -s tests -p 'test_viewer_static_export.py' -v",
        "|",
        "echo \"Existing Worker deployment skipped because repository secret CLOUDFLARE_API_TOKEN is not configured; the Pages production mirror remains authoritative.\"",
        ">-",
        "|"
      ]
    },
    {
      "path": ".github/workflows/worker-source-snapshot.yml",
      "bytes": 771,
      "runs_on": [
        "ubuntu-latest",
        "ubuntu-latest"
      ],
      "schedules": [],
      "workflow_dispatch": true,
      "secret_names": [],
      "run_commands": [
        "|"
      ]
    }
  ],
  "critical_source_inventory": [
    {
      "path": "scripts/1.rawdata_downloader/check_terass_session.py",
      "exists": true,
      "bytes": 10658,
      "sha256_16": "7460e26d043f7515",
      "env_or_secret_names": [],
      "keywords": [
        "terass",
        "cookie",
        "playwright"
      ],
      "relevant_lines": []
    },
    {
      "path": "scripts/1.rawdata_downloader/download_terass_via_api.py",
      "exists": true,
      "bytes": 5919,
      "sha256_16": "51b2542770140925",
      "env_or_secret_names": [],
      "keywords": [
        "terass",
        "cookie",
        "playwright",
        "csv"
      ],
      "relevant_lines": [
        "\"\"\"download_terass_via_api.py — Pipeline-side wrapper around the"
      ]
    },
    {
      "path": "scripts/1.rawdata_downloader/run_all.py",
      "exists": true,
      "bytes": 16621,
      "sha256_16": "1a6241ddb331d02b",
      "env_or_secret_names": [],
      "keywords": [
        "terass",
        "codex",
        "subprocess",
        "final_output",
        "xlsx",
        "csv"
      ],
      "relevant_lines": [
        "help=\"Skip the TERASS download step and continue from existing final_output\\\\output_middle_files\\\\1 CSVs.\",",
        "return False, \"step 2 left CSV files in final_output\\\\output_middle_files\\\\1\"",
        "Step(\"Download TERASS data with links\", \"1. download_terass_data_with_links_v3.py\", validate_step1, retries=1),",
        "\"1. download_terass_data.py\",",
        "\"1. download_terass_data_with_links.py\",",
        "\"1. download_terass_data_with_links_v2.py\",",
        "\"1. download_terass_data_with_links_v3.py\",",
        "env[\"CODEX_TERASS_PROFILE_DIR\"] = str(TERASS_PROFILE_DIR)",
        "env.pop(\"CODEX_TERASS_PROFILE_DIR\", None)",
        "log(\"Skip-download requested, but no CSVs were found in final_output\\\\output_middle_files\\\\1.\")",
        "\"message\": \"skip-download requested, but no CSVs were found in final_output\\\\output_middle_files\\\\1\",",
        "log(f\"Skip-download enabled; found {len(existing_csvs)} CSV file(s) in final_output\\\\output_middle_files\\\\1.\")"
      ]
    },
    {
      "path": "scripts/1.rawdata_downloader/outer_pipeline_loop.py",
      "exists": true,
      "bytes": 4137,
      "sha256_16": "1ad0970406896626",
      "env_or_secret_names": [],
      "keywords": [
        "terass",
        "subprocess",
        "final_output",
        "csv",
        "github"
      ],
      "relevant_lines": [
        "r\"\\final_output\\output_middle_files\\1\\terass_data_checkpoint_meta.json\""
      ]
    },
    {
      "path": "scripts/sync_terass_cookie_to_github.py",
      "exists": true,
      "bytes": 3507,
      "sha256_16": "b6616f4638c5d4c7",
      "env_or_secret_names": [],
      "keywords": [
        "terass",
        "cookie",
        "subprocess",
        "github"
      ],
      "relevant_lines": []
    },
    {
      "path": "scripts/run_nightly_staged.py",
      "exists": true,
      "bytes": 4976,
      "sha256_16": "830e8df89185aadd",
      "env_or_secret_names": [
        "NIGHTLY_GENERIC_SLEEP",
        "NIGHTLY_RATE_LIMIT_SLEEP",
        "NIGHTLY_RUN_ALL_ATTEMPTS"
      ],
      "keywords": [
        "terass",
        "subprocess",
        "xlsx",
        "csv"
      ],
      "relevant_lines": [
        "2. Run run_staged_pipeline.py  (local yield + analyzer + atomic publish).",
        "STAGED = REPO_ROOT / \"scripts\" / \"run_staged_pipeline.py\"",
        "def run_staged() -> int:",
        "rc = run_staged()"
      ]
    },
    {
      "path": "scripts/run_staged_pipeline.py",
      "exists": true,
      "bytes": 18144,
      "sha256_16": "bc60eb44545af55b",
      "env_or_secret_names": [],
      "keywords": [
        "terass",
        "codex",
        "claude",
        "subprocess",
        "final_output",
        "xlsx",
        "csv"
      ],
      "relevant_lines": [
        "GDRIVE_MID = REPO_ROOT / \"final_output\" / \"output_middle_files\"",
        "GDRIVE_OUT = REPO_ROOT / \"final_output\"",
        "# Keep the defaults bounded so Codex/Claude CLI calls fit inside the 03:00 task window.",
        "env.setdefault(\"APARTMENT_AI_CLI\", \"codex\")"
      ]
    },
    {
      "path": "scripts/2.analyzer/URL_Checker/ai_check_via_cli.py",
      "exists": true,
      "bytes": 16702,
      "sha256_16": "42f71f8ef56fd9de",
      "env_or_secret_names": [
        "APARTMENT_AI_CLI",
        "APARTMENT_AI_FRESHNESS_DAYS",
        "APARTMENT_AI_MAX_ROWS",
        "APARTMENT_AI_MIN_YIELD",
        "APARTMENT_AI_TIMEOUT"
      ],
      "keywords": [
        "codex",
        "claude",
        "openai",
        "subprocess",
        "final_output",
        "xlsx"
      ],
      "relevant_lines": [
        "# 既存の master を 6% 以上の行だけ Claude CLI で判定（既存 AI 結果が",
        "# codex CLI で判定",
        "python ai_check_via_cli.py --cli codex",
        "- API ではなく CLI（``claude`` / ``codex``）を ``subprocess.run`` で呼ぶ。",
        "DEFAULT_CLI             = os.environ.get(\"APARTMENT_AI_CLI\", \"codex\").lower()",
        "\"AIモデル\",      # 'claude' / 'codex' / etc.",
        "The operator sometimes says/writes \"Cortex\" when referring to the Codex CLI;",
        "return \"codex\"",
        "if cli == \"claude\":",
        "# Claude Code CLI: -p prompt → headless print mode, stdout = response",
        "return [\"claude\", \"-p\", prompt]",
        "if cli == \"codex\":",
        "# OpenAI Codex CLI: `codex exec` non-interactive mode",
        "return [\"codex\", \"exec\", prompt]",
        "raise ValueError(f\"unknown CLI: {cli!r} (use 'claude', 'codex', or 'cortex')\")",
        "default=REPO_ROOT / \"final_output\" / \"Apartment_Investment_Master.xlsx\")",
        "p.add_argument(\"--cli\", choices=[\"claude\", \"codex\", \"cortex\"], default=DEFAULT_CLI)"
      ]
    },
    {
      "path": "scripts/2.analyzer/build_top_proposals.py",
      "exists": true,
      "bytes": 5632,
      "sha256_16": "eed103738fa6cd60",
      "env_or_secret_names": [],
      "keywords": [
        "final_output",
        "xlsx"
      ],
      "relevant_lines": [
        "default=\"final_output/Apartment_Investment_Master.xlsx\","
      ]
    },
    {
      "path": "scripts/2.analyzer/update_master_excel.py",
      "exists": true,
      "bytes": 51926,
      "sha256_16": "f50e9ac437233f9b",
      "env_or_secret_names": [
        "APARTMENT_FAR_CONSTRAINT_VERSION",
        "APARTMENT_LATEST_ONLY",
        "APARTMENT_RAWDATA_STATUS",
        "APARTMENT_SELECTED_SOURCE",
        "APARTMENT_SOURCE_FILE"
      ],
      "keywords": [
        "terass",
        "final_output",
        "xlsx"
      ],
      "relevant_lines": [
        "project_root / \"final_output\" / \"output_middle_files\" / \"3_final\" / \"yield_result.xlsx\","
      ]
    },
    {
      "path": "scripts/3.final_checker/run_final_checker.py",
      "exists": true,
      "bytes": 36354,
      "sha256_16": "4c6e50cb59158e22",
      "env_or_secret_names": [],
      "keywords": [
        "playwright",
        "final_output",
        "xlsx",
        "csv"
      ],
      "relevant_lines": [
        "DEFAULT_WORKBOOK = PROJECT_ROOT / \"final_output\" / \"Apartment_Investment_Master.xlsx\"",
        "DEFAULT_SOURCE_DIR = PROJECT_ROOT / \"final_output\" / \"output_middle_files\" / \"3_final\""
      ]
    },
    {
      "path": "scripts/web_viewer/data_source.py",
      "exists": true,
      "bytes": 6843,
      "sha256_16": "9e82b6ce0d3e8f61",
      "env_or_secret_names": [],
      "keywords": [
        "terass"
      ],
      "relevant_lines": []
    },
    {
      "path": "scripts/web_viewer/export_static.py",
      "exists": true,
      "bytes": 3725,
      "sha256_16": "9cb4ada855a76d70",
      "env_or_secret_names": [],
      "keywords": [
        "cloudflare"
      ],
      "relevant_lines": []
    },
    {
      "path": "cloudflare-viewer/src/index.js",
      "exists": true,
      "bytes": 3064,
      "sha256_16": "b5b2e4849789779e",
      "env_or_secret_names": [],
      "keywords": [
        "cloudflare",
        "kv"
      ],
      "relevant_lines": []
    },
    {
      "path": "cloudflare-viewer/wrangler.toml",
      "exists": true,
      "bytes": 528,
      "sha256_16": "061f981523f4125c",
      "env_or_secret_names": [],
      "keywords": [
        "kv"
      ],
      "relevant_lines": []
    },
    {
      "path": "cloudflare-worker/src/index.ts",
      "exists": true,
      "bytes": 33999,
      "sha256_16": "782072ed230c65ff",
      "env_or_secret_names": [],
      "keywords": [
        "cloudflare",
        "d1",
        "github"
      ],
      "relevant_lines": []
    },
    {
      "path": "cloudflare-worker/wrangler.toml",
      "exists": true,
      "bytes": 2137,
      "sha256_16": "69fd272f6e474c00",
      "env_or_secret_names": [],
      "keywords": [
        "cloudflare",
        "d1"
      ],
      "relevant_lines": []
    },
    {
      "path": "artifacts/excel-web-sync-report.json",
      "exists": true,
      "bytes": 852,
      "sha256_16": "da2a71b34229bd43",
      "env_or_secret_names": [],
      "keywords": [
        "final_output",
        "xlsx",
        "cloudflare"
      ],
      "relevant_lines": [
        "\"source_workbook\": \"final_output/Apartment_Investment_Master.xlsx\","
      ]
    }
  ],
  "data_files": [
    {
      "path": "artifacts/excel-web-sync-report.json",
      "bytes": 852,
      "sha256_16": "da2a71b34229bd43",
      "type": "object",
      "count": 7,
      "top_level_keys": [
        "ok",
        "verified_at_utc",
        "source_workbook",
        "source_row_count",
        "source_hash",
        "html",
        "errors"
      ],
      "detected_dates": [
        "2026-07-14T03:18:29"
      ]
    },
    {
      "path": "final_output/Apartment_Investment_Master.xlsx",
      "bytes": 1620727,
      "sha256_16": "1873f364b24a108d",
      "parse_error": "XLSX.readFile is not a function"
    },
    {
      "path": "recovery-viewer/package.json",
      "bytes": 184,
      "sha256_16": "c9d1dd311c596dc1",
      "type": "object",
      "count": 5,
      "top_level_keys": [
        "name",
        "private",
        "type",
        "scripts",
        "dependencies"
      ],
      "detected_dates": []
    },
    {
      "path": "scripts/1.rawdata_downloader/state/yield_marks_persistent.json",
      "bytes": 81,
      "sha256_16": "2ba89c5ccf9fe247",
      "type": "object",
      "count": 3,
      "top_level_keys": [
        "version",
        "marks",
        "updated_at"
      ],
      "detected_dates": [
        "2026-07-14T08:57:07"
      ]
    },
    {
      "path": "scripts/1.rawdata_downloader/suumo_data/suumo_rentals_ml_ready.csv",
      "bytes": 17134968,
      "sha256_16": "f21f113846d6fb20",
      "rows_including_header": 137017,
      "header": "﻿Property Name,住所,Nearest Station,駅徒歩_分,築年数_年,所在階,総階数,間取り,部屋の広さ_m2,家賃_円,管理費_円,総家賃_円,平米家賃_円,Link",
      "detected_dates": []
    },
    {
      "path": "scripts/1.rawdata_downloader/templates/terass_output_template.xlsx",
      "bytes": 673423,
      "sha256_16": "ef2b0280985f3438",
      "parse_error": "XLSX.readFile is not a function"
    },
    {
      "path": "scripts/2.analyzer/URL_Checker/output/properties.json",
      "bytes": 314151,
      "sha256_16": "abd4f45be1547613",
      "type": "array",
      "count": 8,
      "top_level_keys": [],
      "detected_dates": [
        "2026-04-16 01:09:27",
        "2026-04-16 01:10:04",
        "2026-04-16T01:08:36",
        "2026-04-16T01:08:49",
        "2026-04-16T01:09:03",
        "2026-04-16T01:09:15",
        "2026-04-16T01:09:27",
        "2026-04-16T01:09:38",
        "2026-04-16T01:09:51",
        "2026-04-16T01:10:03"
      ]
    },
    {
      "path": "scripts/2.analyzer/state/_Apartment_Investment_Analyzer_Output_llm_review_queue.json",
      "bytes": 8440,
      "sha256_16": "6561694dac374890",
      "type": "object",
      "count": 6,
      "top_level_keys": [
        "generated_at",
        "workbook",
        "review_limit",
        "total_candidates",
        "exported_candidates",
        "items"
      ],
      "detected_dates": [
        "2026-04-16"
      ]
    },
    {
      "path": "scripts/2.analyzer/state/far_audit_latest.json",
      "bytes": 109,
      "sha256_16": "55a23eda92495281",
      "type": "object",
      "count": 5,
      "top_level_keys": [
        "stage",
        "version",
        "audited_rows",
        "violation_count",
        "violations"
      ],
      "detected_dates": []
    },
    {
      "path": "scripts/2.analyzer/state/master_far_audit_latest.json",
      "bytes": 107,
      "sha256_16": "4944dbdb9e815b6c",
      "type": "object",
      "count": 5,
      "top_level_keys": [
        "stage",
        "version",
        "audited_rows",
        "violation_count",
        "violations"
      ],
      "detected_dates": []
    },
    {
      "path": "scripts/2.analyzer/state/master_publish_manifest_latest.json",
      "bytes": 1266,
      "sha256_16": "ef6be9b5ee2c0031",
      "type": "object",
      "count": 11,
      "top_level_keys": [
        "generated_at",
        "master_file",
        "source_file",
        "selected_source",
        "rawdata_status",
        "far_constraint_version",
        "analyzer_far_audit_file",
        "master_far_audit_file",
        "final_region_counts",
        "history_region_counts",
        "published_with_shortfall"
      ],
      "detected_dates": [
        "2026-07-14T08:55:51"
      ]
    },
    {
      "path": "scripts/2.analyzer/state/permanent_blocklist.json",
      "bytes": 12431,
      "sha256_16": "e8e753c2d79c69ae",
      "type": "object",
      "count": 3,
      "top_level_keys": [
        "version",
        "updated_at",
        "entries"
      ],
      "detected_dates": [
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13T07:00:09"
      ]
    },
    {
      "path": "scripts/2.analyzer/state/user_judgments_persistent.json",
      "bytes": 124502,
      "sha256_16": "f3d402d31edc633c",
      "type": "object",
      "count": 4,
      "top_level_keys": [
        "version",
        "judgments",
        "log",
        "updated_at"
      ],
      "detected_dates": [
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13",
        "2026-07-13T07:00:09",
        "2026-07-13T07:00:09",
        "2026-07-13T07:03:49"
      ]
    },
    {
      "path": "scripts/3.final_checker/output/final_checker_report.xlsx",
      "bytes": 399102,
      "sha256_16": "7cb868f9c6f124fa",
      "parse_error": "XLSX.readFile is not a function"
    },
    {
      "path": "scripts/3.final_checker/output/llm_recheck_queue.json",
      "bytes": 29217,
      "sha256_16": "9522d753a22b9cc3",
      "type": "array",
      "count": 50,
      "top_level_keys": [],
      "detected_dates": []
    },
    {
      "path": "state/callbacks.json",
      "bytes": 45,
      "sha256_16": "b9a1246884b4aa44",
      "type": "object",
      "count": 2,
      "top_level_keys": [
        "offset",
        "favorites"
      ],
      "detected_dates": []
    }
  ],
  "workbook_files": [
    {
      "path": "final_output/Apartment_Investment_Master.xlsx",
      "bytes": 1620727,
      "sha256_16": "1873f364b24a108d",
      "parse_error": "XLSX.readFile is not a function"
    },
    {
      "path": "scripts/1.rawdata_downloader/templates/terass_output_template.xlsx",
      "bytes": 673423,
      "sha256_16": "ef2b0280985f3438",
      "parse_error": "XLSX.readFile is not a function"
    },
    {
      "path": "scripts/3.final_checker/output/final_checker_report.xlsx",
      "bytes": 399102,
      "sha256_16": "7cb868f9c6f124fa",
      "parse_error": "XLSX.readFile is not a function"
    }
  ],
  "web_related_data_files": [
    {
      "path": "recovery-viewer/package.json",
      "bytes": 184,
      "sha256_16": "c9d1dd311c596dc1",
      "type": "object",
      "count": 5,
      "top_level_keys": [
        "name",
        "private",
        "type",
        "scripts",
        "dependencies"
      ],
      "detected_dates": []
    }
  ],
  "existing_excel_web_sync_report": {
    "ok": true,
    "verified_at_utc": "2026-07-14T03:18:29.622182+00:00",
    "source_workbook": "final_output/Apartment_Investment_Master.xlsx",
    "source_row_count": 231,
    "source_hash": "fec0affd0e7b3c1449732326c12170834e79d5da6c69d6eeef231a5452e65c9d",
    "html": [
      {
        "path": "scripts/web_viewer/master_view.html",
        "row_count": 231,
        "content_hash": "fec0affd0e7b3c1449732326c12170834e79d5da6c69d6eeef231a5452e65c9d",
        "assignment_before_boot": true,
        "valid_source_urls": 231,
        "invalid_source_urls": []
      },
      {
        "path": "cloudflare-viewer/public/index.html",
        "row_count": 231,
        "content_hash": "fec0affd0e7b3c1449732326c12170834e79d5da6c69d6eeef231a5452e65c9d",
        "assignment_before_boot": true,
        "valid_source_urls": 231,
        "invalid_source_urls": []
      }
    ],
    "errors": []
  },
  "limitations": [
    "G:ドライブ実体、Windowsタスクスケジューラ、ローカルブラウザCookieはCloudflare build環境から直接参照できません。",
    "秘密値は収集・表示していません。設定名だけを報告しています。",
    "GitHub Actionsの課金・利用制限メッセージ本文はGitHub APIのジョブメタデータとは別確認が必要です。"
  ]
}