{
  "date_timezone": "Asia/Seoul (KST, UTC+09:00)",
  "items": [
    {
      "current_sha256": "62a5985fdf233d87c1b2365db621f1b213586b7b3d24d576b5ae10d880ad66e6",
      "history": [
        {
          "date": "2026-10-26",
          "event": "recorded",
          "sha256": "0cfbe643e4bbd890ac843010681c5be5c11e38150b56927363af770462370f21"
        },
        {
          "date": "2026-10-26",
          "event": "replaced",
          "new_sha256": "7390ef4ceac2a14529018979e15fb23d264647bc2ce80ccf4b8f880903d9dfac",
          "previous_sha256": "0cfbe643e4bbd890ac843010681c5be5c11e38150b56927363af770462370f21"
        },
        {
          "date": "2026-10-26",
          "event": "replaced",
          "new_sha256": "12879e5c303bbbe0f772ea928adfad034952e4e9f2e9ba5b7bd544b33a38e36f",
          "previous_sha256": "7390ef4ceac2a14529018979e15fb23d264647bc2ce80ccf4b8f880903d9dfac"
        },
        {
          "date": "2026-10-29",
          "event": "replaced",
          "new_sha256": "1d123c00ec157640ae8f801917906eed4e4aba185749cafe2322c65caa001b55",
          "previous_sha256": "12879e5c303bbbe0f772ea928adfad034952e4e9f2e9ba5b7bd544b33a38e36f"
        },
        {
          "date": "2026-11-07",
          "event": "replaced",
          "new_sha256": "62a5985fdf233d87c1b2365db621f1b213586b7b3d24d576b5ae10d880ad66e6",
          "previous_sha256": "1d123c00ec157640ae8f801917906eed4e4aba185749cafe2322c65caa001b55"
        }
      ],
      "logical_id": "src/content/blog.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "_BLOG_CHANNEL",
          "_BLOG_LINK_MARK",
          "_DAILY_SOURCE_FIELDS",
          "_HEADINGS",
          "_IMAGE",
          "_INTERNAL_TIMELINE_TERM",
          "_LIMITS",
          "_NUMBER",
          "_STRUCTURE"
        ],
        "function_sources": [
          "blog_prompt"
        ]
      }
    },
    {
      "current_sha256": "32bfea488b7dd25c8956adb275e9fce678f65056d25fcd34eb3f9aa3bc1a68dd",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "methodology_versions": [
            "PROMPT_VERSION=content_draft_v1"
          ],
          "sha256": "831bd43fc77e3abe292436f78dc742c1b01f1f8e8dc5d138790ec9024e23e6c3"
        },
        {
          "date": "2026-10-22",
          "event": "replaced",
          "methodology_versions": [
            "PROMPT_VERSION=content_draft_v1"
          ],
          "new_sha256": "5f8160fa5bd6112750bd6b058de5b6603df317856914bab739fb64bd2fd78351",
          "previous_sha256": "831bd43fc77e3abe292436f78dc742c1b01f1f8e8dc5d138790ec9024e23e6c3"
        },
        {
          "date": "2026-10-28",
          "event": "replaced",
          "methodology_versions": [
            "PROMPT_VERSION=content_draft_v1"
          ],
          "new_sha256": "81552871556992b5778a943905337869be9ec0ee01019df9b7d47a1585b0030f",
          "previous_sha256": "5f8160fa5bd6112750bd6b058de5b6603df317856914bab739fb64bd2fd78351"
        },
        {
          "date": "2026-10-31",
          "event": "replaced",
          "methodology_versions": [
            "PROMPT_VERSION=content_draft_v1"
          ],
          "new_sha256": "b1529a0fa93cc296ff5bcfc4277c49a7715c580ebc3989a6cbc0601d4ed23516",
          "previous_sha256": "81552871556992b5778a943905337869be9ec0ee01019df9b7d47a1585b0030f"
        },
        {
          "date": "2026-11-02",
          "event": "replaced",
          "methodology_versions": [
            "PROMPT_VERSION=content_draft_v1"
          ],
          "new_sha256": "2197808522384e3a69ecb03bdd834c03cc73fd9a8cf43633bbb8dcf189b96d2c",
          "previous_sha256": "b1529a0fa93cc296ff5bcfc4277c49a7715c580ebc3989a6cbc0601d4ed23516"
        },
        {
          "date": "2026-11-11",
          "event": "replaced",
          "methodology_versions": [
            "PROMPT_VERSION=content_draft_v1"
          ],
          "new_sha256": "32bfea488b7dd25c8956adb275e9fce678f65056d25fcd34eb3f9aa3bc1a68dd",
          "previous_sha256": "2197808522384e3a69ecb03bdd834c03cc73fd9a8cf43633bbb8dcf189b96d2c"
        }
      ],
      "logical_id": "src/content/generator.py",
      "methodology_versions": [
        "PROMPT_VERSION=content_draft_v1"
      ],
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [
          "report_prompt",
          "shorts_prompt",
          "thread_prompt"
        ],
        "constants": [
          "ARTIFACTS",
          "PROMPT_VERSION",
          "_COMMON_RULES",
          "_FENCE_RE"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "93587ef8df6a58ad659921f8a421cdc842d1fb343e67b2e0494579848b222a24",
      "history": [
        {
          "date": "2026-10-26",
          "event": "recorded",
          "sha256": "5257080167ca978a0d9711dbf991f3194ce20ba1b1f114b11235df953dd1b6bc"
        },
        {
          "date": "2026-10-26",
          "event": "replaced",
          "new_sha256": "5458269b59e4061c13497fc37335d81d38d274e2905b211e6950a61e85c7f401",
          "previous_sha256": "5257080167ca978a0d9711dbf991f3194ce20ba1b1f114b11235df953dd1b6bc"
        },
        {
          "date": "2026-10-26",
          "event": "replaced",
          "new_sha256": "809921f60253efa302a43c4b8f0a44cfcb94dbb43a4f5501e12b7683b64a8e2c",
          "previous_sha256": "5458269b59e4061c13497fc37335d81d38d274e2905b211e6950a61e85c7f401"
        },
        {
          "date": "2026-10-26",
          "event": "replaced",
          "new_sha256": "9ee9777e95c0a65419b05374f397a7fc52735f8a258ccfdc2e7b0202b9358100",
          "previous_sha256": "809921f60253efa302a43c4b8f0a44cfcb94dbb43a4f5501e12b7683b64a8e2c"
        },
        {
          "date": "2026-10-27",
          "event": "replaced",
          "new_sha256": "93587ef8df6a58ad659921f8a421cdc842d1fb343e67b2e0494579848b222a24",
          "previous_sha256": "9ee9777e95c0a65419b05374f397a7fc52735f8a258ccfdc2e7b0202b9358100"
        }
      ],
      "logical_id": "src/content/video.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "_VEO_FORBIDDEN"
        ],
        "function_sources": [
          "video_prompt"
        ]
      }
    },
    {
      "current_sha256": "b273f5b183fd719983e3d581660ebdf5f56b408f33eeac80eb790d2d6f5f4522",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "ef8d2c91beca130b25b321c6207e1e23b36149a3f13cebd015ae26bf7a02555e"
        },
        {
          "date": "2026-11-07",
          "event": "replaced",
          "new_sha256": "b273f5b183fd719983e3d581660ebdf5f56b408f33eeac80eb790d2d6f5f4522",
          "previous_sha256": "ef8d2c91beca130b25b321c6207e1e23b36149a3f13cebd015ae26bf7a02555e"
        }
      ],
      "logical_id": "src/metrics/analysis_llm.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "LABELING_SAMPLE_SELECTOR",
          "NDI_LEGACY_DEFAULT",
          "_JSON_OBJECT",
          "_LABEL_WORD_BOUNDARY_SUFFIXES"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "519e0c86ec3356e129e43fb8328abc728e3e0b5b8b4785bd8cfc12c6fd6ef3a1",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "519e0c86ec3356e129e43fb8328abc728e3e0b5b8b4785bd8cfc12c6fd6ef3a1"
        }
      ],
      "logical_id": "src/metrics/clickbait.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [
          "build_prompt"
        ],
        "constants": [
          "CHUNK_SIZE",
          "MAX_TITLE_LEN",
          "SCORE_MAX",
          "SCORE_MIN",
          "UNEXPECTED_SAMPLE"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "c92c131d6ab81546fa67655a6ef215cdc676e02d84c862bea381ab0c7d7d5d00",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "c92c131d6ab81546fa67655a6ef215cdc676e02d84c862bea381ab0c7d7d5d00"
        }
      ],
      "logical_id": "src/metrics/collection_filter.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "CATEGORY_WEIGHT",
          "COLLECT_WEIGHT",
          "DEFAULT_TOKENIZER",
          "EXCLUDE_WEIGHT",
          "NEWS_CATEGORY_ID",
          "PASS_SCORE",
          "SHORTS_DURATION_THRESHOLD",
          "SUPER_COLLECT_SCORE",
          "TOKENIZER",
          "TOKENIZER_AUTO",
          "TOKENIZER_KONLPY",
          "TOKENIZER_REGEX",
          "_UNAVAILABLE",
          "_WORD_RE"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "d4627e00032483d5aa1dc8dd17e8593a61e7c5a7641347f9f2339f5cf14c45be",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "d4627e00032483d5aa1dc8dd17e8593a61e7c5a7641347f9f2339f5cf14c45be"
        }
      ],
      "logical_id": "src/metrics/deletion.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "CAMP_CENTER",
          "CAMP_LEFT",
          "CAMP_RIGHT",
          "RETENTION_DAYS",
          "STATUS_ACTIVE",
          "STATUS_DELETED",
          "STATUS_PRIVATE",
          "_LEFT_WORDS",
          "_RIGHT_WORDS"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "49722dd439b19ae5c7ed582c003143c7121dca414ba140dafdf669039382951e",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "378dd60488e2c9d449aeb015c74f056af65770c3d46c2ff967b2aa90807fa640"
        },
        {
          "date": "2026-10-24",
          "event": "replaced",
          "new_sha256": "49722dd439b19ae5c7ed582c003143c7121dca414ba140dafdf669039382951e",
          "previous_sha256": "378dd60488e2c9d449aeb015c74f056af65770c3d46c2ff967b2aa90807fa640"
        }
      ],
      "logical_id": "src/metrics/domains.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "POLITICAL",
          "PROFILES",
          "REALESTATE",
          "_ALIASES"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "c14fc8f58b7540da299384a12b39bf2d1a7c6cafb3f9b62ac02854fc7b11da93",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "methodology_versions": [
            "NORMALIZATION_VERSION=1.0.0"
          ],
          "sha256": "68ef584f506244d24f89f39df09cb4b31fd2ace9ae1948685d750518cf1576c0"
        },
        {
          "date": "2026-11-03",
          "event": "replaced",
          "methodology_versions": [
            "NORMALIZATION_VERSION=1.1.0"
          ],
          "new_sha256": "90488926d8ad2375d14a6d5d1cfd6a1c2d51556d0ecb8f6d15021fa24dbe0aaa",
          "previous_sha256": "68ef584f506244d24f89f39df09cb4b31fd2ace9ae1948685d750518cf1576c0"
        },
        {
          "date": "2026-11-03",
          "event": "replaced",
          "methodology_versions": [
            "NORMALIZATION_VERSION=1.1.0"
          ],
          "new_sha256": "a6b40ecba615810e95ecfe74f148a668b70be6e65fd8af5f99034f3cf43d6020",
          "previous_sha256": "90488926d8ad2375d14a6d5d1cfd6a1c2d51556d0ecb8f6d15021fa24dbe0aaa"
        },
        {
          "date": "2026-11-03",
          "event": "replaced",
          "methodology_versions": [
            "NORMALIZATION_VERSION=1.1.0"
          ],
          "new_sha256": "f3042d039c11c799b20c9289cd82e1f7d54c053b6dc4e9d7b1abbb727a7bc9e5",
          "previous_sha256": "a6b40ecba615810e95ecfe74f148a668b70be6e65fd8af5f99034f3cf43d6020"
        },
        {
          "date": "2026-11-04",
          "event": "replaced",
          "methodology_versions": [
            "NORMALIZATION_VERSION=1.1.1"
          ],
          "new_sha256": "c14fc8f58b7540da299384a12b39bf2d1a7c6cafb3f9b62ac02854fc7b11da93",
          "previous_sha256": "f3042d039c11c799b20c9289cd82e1f7d54c053b6dc4e9d7b1abbb727a7bc9e5"
        }
      ],
      "logical_id": "src/metrics/entities.py",
      "methodology_versions": [
        "NORMALIZATION_VERSION=1.1.1"
      ],
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "NORMALIZATION_VERSION",
          "_COMMON_NOUN_SUFFIXES",
          "_EN_KO_ENTITY_MAP",
          "_EVENT_EXACT",
          "_EVENT_SUFFIXES",
          "_EXTRA_TITLE_RE",
          "_KNOWN_TYPO_MAP",
          "_KO_ALIAS_MAP",
          "_MEDIA_NOISE_KEYS",
          "_MEDIA_NOISE_NAMES",
          "_MEDIA_NOISE_SUFFIXES",
          "_MINISTRY_AGENCY_NAMES",
          "_NOT_PERSON",
          "_ORG_EXACT",
          "_ORG_EXACT_TYPO_CANDIDATES",
          "_ORG_SUFFIXES",
          "_PAREN_RE",
          "_PARTY_NAMES",
          "_PERSON_EXACT",
          "_PERSON_ONLY_TITLE_RE",
          "_PLACE_SUFFIXES_LONG",
          "_PLACE_SUFFIXES_SHORT",
          "_SURNAMES",
          "_TITLE_PERSON_ALIAS",
          "_TITLE_SUFFIX_RE",
          "_YEAR_SUFFIX_RE"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "1110609d12e4256824a4bc7e3c323eff5f225773a16d81f3a1f369788739d12b",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "1110609d12e4256824a4bc7e3c323eff5f225773a16d81f3a1f369788739d12b"
        }
      ],
      "logical_id": "src/metrics/keywords.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "CONTEXT_TOP_RELATED",
          "KEYWORD_CONTEXT_NOTE",
          "TREND_LIMIT",
          "_NOT_PERSON",
          "_SURNAMES"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "44db408e032fcbee8507dde4c63f7b0cabf795f41d915beb162f33a5fd62e1ad",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "44db408e032fcbee8507dde4c63f7b0cabf795f41d915beb162f33a5fd62e1ad"
        }
      ],
      "logical_id": "src/metrics/lexicon.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "AFI_CRITICAL",
          "AFI_CRITICAL_BLOCK",
          "AFI_SUPPORT",
          "AFI_SUPPORT_BLOCK",
          "COLLECT_KEYWORDS",
          "CTS_TITLE_KEYWORDS",
          "MPS_TRIGGERS",
          "NOISE_EXCLUDE_KEYWORDS",
          "SUPER_COLLECT_KEYWORDS",
          "SUPER_EXCLUDE_KEYWORDS"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "2ba4ce8f3f772ed75b7f31d164fb06b79fc6a625d54df99b078cdfddb93781fb",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "2ba4ce8f3f772ed75b7f31d164fb06b79fc6a625d54df99b078cdfddb93781fb"
        }
      ],
      "logical_id": "src/metrics/lexicon_realestate.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "AFI_CRITICAL",
          "AFI_CRITICAL_BLOCK",
          "AFI_SUPPORT",
          "AFI_SUPPORT_BLOCK",
          "COLLECT_KEYWORDS",
          "CTS_TITLE_KEYWORDS",
          "MPS_TRIGGERS",
          "NOISE_EXCLUDE_KEYWORDS",
          "PROFANITY_PATTERNS",
          "SUPER_COLLECT_KEYWORDS",
          "SUPER_EXCLUDE_KEYWORDS"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "f8c0603a25104c5a4b67b462da8f8ac63791d436d9197882857e532e63f51df7",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "f8c0603a25104c5a4b67b462da8f8ac63791d436d9197882857e532e63f51df7"
        }
      ],
      "logical_id": "src/metrics/mps.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "ALERT_CRITICAL",
          "ALERT_WARNING",
          "ALERT_WATCH",
          "DENSITY_CEILING",
          "LLM_WEIGHT",
          "QUANT_WEIGHT",
          "_WORD"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "9adc1086938087345004e28a380c569b2bfe6b1e92d68109d5e0f4d7e9730f11",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "a6f2f9cce295cb587252011c6f8fdbe80141022266b9cde6f9c67ea5ecfd4f78"
        },
        {
          "date": "2026-10-17",
          "event": "replaced",
          "new_sha256": "9adc1086938087345004e28a380c569b2bfe6b1e92d68109d5e0f4d7e9730f11",
          "previous_sha256": "a6f2f9cce295cb587252011c6f8fdbe80141022266b9cde6f9c67ea5ecfd4f78"
        }
      ],
      "logical_id": "src/metrics/narrative.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "DIRECTION_SCALE",
          "MPI_AXIS_CAMPS",
          "MPS_TRIGGER_TERMS",
          "NPA_MIN_VIDEOS",
          "NPA_THRESHOLD",
          "TSI_TOP_K"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "a92af3ffc97813e504cc549d71ae61fe92be0bf848f54467c1777574ee949d7a",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "a92af3ffc97813e504cc549d71ae61fe92be0bf848f54467c1777574ee949d7a"
        }
      ],
      "logical_id": "src/metrics/propaganda.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "AGITATION_MAX",
          "CLICKBAIT_MAX",
          "CLOSED_DOOR_SCORE",
          "ENGAGEMENT_BASELINE",
          "ENGAGEMENT_CEILING",
          "ENGAGEMENT_MAX_SCORE",
          "FACTCHECK_MAX",
          "HATE_MAX",
          "KCG_UNCOMPARABLE_DISTANCE",
          "MH_WEIGHT_CLOSED",
          "MH_WEIGHT_FACTCHECK",
          "MH_WEIGHT_HATE",
          "QUICK_CLICKBAIT_KEYWORDS",
          "QUICK_CLICKBAIT_PER_HIT"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "5ea6d8fcf2df56251f2b40e7e26db29ad537d65139094e981f5dc5bf3f17f83a",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-10-04-r2",
            "_COHORT_FINAL_VERSION=2026-10-v15"
          ],
          "sha256": "be5fbec2b205d2e9d27636b80dc0e55ee3b98868bb141b3f0df24d661679046f"
        },
        {
          "date": "2026-10-27",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-10-27-r1",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_MPS_UNIFIED_VERSION=2026-10-v16"
          ],
          "new_sha256": "f3c600e19d32d08b510fb5c2fe3f8ade092c1c0cf70128d0c741aeb4320c77ac",
          "previous_sha256": "be5fbec2b205d2e9d27636b80dc0e55ee3b98868bb141b3f0df24d661679046f"
        },
        {
          "date": "2026-10-27",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-10-27-r2",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_MPS_UNIFIED_VERSION=2026-10-v16"
          ],
          "new_sha256": "a766f884fd02a27771c583be95cfb9fc79784e17176ae8c46e092a29680c96c7",
          "previous_sha256": "f3c600e19d32d08b510fb5c2fe3f8ade092c1c0cf70128d0c741aeb4320c77ac"
        },
        {
          "date": "2026-10-27",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-10-27-r3",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_MPS_UNIFIED_VERSION=2026-10-v16"
          ],
          "new_sha256": "e683ecf583bdc531d8e278c8a08a43132979dc788abd715610331971d2f0c038",
          "previous_sha256": "a766f884fd02a27771c583be95cfb9fc79784e17176ae8c46e092a29680c96c7"
        },
        {
          "date": "2026-10-28",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-10-27-r3",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_MPS_UNIFIED_VERSION=2026-10-v16"
          ],
          "new_sha256": "83b35a3d0793d8011e87420635d648996ceb22704ca2dfda58ae849cecd1ab73",
          "previous_sha256": "e683ecf583bdc531d8e278c8a08a43132979dc788abd715610331971d2f0c038"
        },
        {
          "date": "2026-10-31",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-10-31-r4",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_MPS_UNIFIED_VERSION=2026-10-v16",
            "_V17_VERSION=2026-10-v17"
          ],
          "new_sha256": "92fe5b8dab27d9c15a767da7f0874a0d3789f88e562e5fcf9bdfffb2d04612c7",
          "previous_sha256": "83b35a3d0793d8011e87420635d648996ceb22704ca2dfda58ae849cecd1ab73"
        },
        {
          "date": "2026-11-01",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-10-31-r4",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_MPS_UNIFIED_VERSION=2026-10-v16",
            "_V17_VERSION=2026-10-v17"
          ],
          "new_sha256": "90334db89bf811da5e3f2aab4314ec432e41042fb940e7b609009ceaf2514868",
          "previous_sha256": "92fe5b8dab27d9c15a767da7f0874a0d3789f88e562e5fcf9bdfffb2d04612c7"
        },
        {
          "date": "2026-11-03",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-11-03-r5",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_KCG_NORM_VERSION=2026-11-v18",
            "_MPS_UNIFIED_VERSION=2026-10-v16",
            "_V17_VERSION=2026-10-v17"
          ],
          "new_sha256": "b41e697a34fa06789c563bb59f3fbf2c7ae73cfc388dad95785637bb1c5b5774",
          "previous_sha256": "90334db89bf811da5e3f2aab4314ec432e41042fb940e7b609009ceaf2514868"
        },
        {
          "date": "2026-11-03",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-11-03-r5",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_KCG_NORM_VERSION=2026-11-v18",
            "_MPS_UNIFIED_VERSION=2026-10-v16",
            "_V17_VERSION=2026-10-v17"
          ],
          "new_sha256": "08d2dc355fce9107b10abb4c8b9b8dacf0baa983da20532a2451a8afc3973e25",
          "previous_sha256": "b41e697a34fa06789c563bb59f3fbf2c7ae73cfc388dad95785637bb1c5b5774"
        },
        {
          "date": "2026-11-10",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-11-10-r6",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_EAD_LLM_VERSION=2026-11-v19",
            "_KCG_NORM_VERSION=2026-11-v18",
            "_MPS_UNIFIED_VERSION=2026-10-v16",
            "_V17_VERSION=2026-10-v17"
          ],
          "new_sha256": "cd92bc6e798e1f252e8cfb82cc12799e1b3f5ceb2f3670e143c1a7a41eeb95d4",
          "previous_sha256": "08d2dc355fce9107b10abb4c8b9b8dacf0baa983da20532a2451a8afc3973e25"
        },
        {
          "date": "2026-11-10",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-11-10-r6",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_EAD_LLM_VERSION=2026-11-v19",
            "_KCG_NORM_VERSION=2026-11-v18",
            "_MPS_UNIFIED_VERSION=2026-10-v16",
            "_V17_VERSION=2026-10-v17"
          ],
          "new_sha256": "ee12d85191fffab4f2a7f3b8a3e19cf4cc42ea2e083203c11806fd53ff25f4a6",
          "previous_sha256": "cd92bc6e798e1f252e8cfb82cc12799e1b3f5ceb2f3670e143c1a7a41eeb95d4"
        },
        {
          "date": "2026-11-11",
          "event": "replaced",
          "methodology_versions": [
            "REGISTRY_VERSION=2026-11-11-r7",
            "_COHORT_FINAL_VERSION=2026-10-v15",
            "_EAD_LLM_VERSION=2026-11-v19",
            "_KCG_NORM_VERSION=2026-11-v18",
            "_MPS_UNIFIED_VERSION=2026-10-v16",
            "_TSI_ANALYZED_VERSION=2026-11-v20",
            "_V17_VERSION=2026-10-v17"
          ],
          "new_sha256": "5ea6d8fcf2df56251f2b40e7e26db29ad537d65139094e981f5dc5bf3f17f83a",
          "previous_sha256": "ee12d85191fffab4f2a7f3b8a3e19cf4cc42ea2e083203c11806fd53ff25f4a6"
        }
      ],
      "logical_id": "src/metrics/registry.py",
      "methodology_versions": [
        "REGISTRY_VERSION=2026-11-11-r7",
        "_COHORT_FINAL_VERSION=2026-10-v15",
        "_EAD_LLM_VERSION=2026-11-v19",
        "_KCG_NORM_VERSION=2026-11-v18",
        "_MPS_UNIFIED_VERSION=2026-10-v16",
        "_TSI_ANALYZED_VERSION=2026-11-v20",
        "_V17_VERSION=2026-10-v17"
      ],
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "METRIC_REGISTRY",
          "METRIC_REGISTRY",
          "REGISTRY_VERSION",
          "_COHORT_FINAL_ENTRY",
          "_COHORT_FINAL_VERSION",
          "_EAD_LLM_IMPLEMENTATION_COMMIT",
          "_EAD_LLM_VERSION",
          "_KCG_NORM_IMPLEMENTATION_COMMIT",
          "_KCG_NORM_VERSION",
          "_LEGACY",
          "_MPS_UNIFIED_ENTRY",
          "_MPS_UNIFIED_VERSION",
          "_TSI_ANALYZED_IMPLEMENTATION_COMMIT",
          "_TSI_ANALYZED_VERSION",
          "_V17_IMPLEMENTATION_COMMIT",
          "_V17_NOTES",
          "_V17_VERSION",
          "_V2"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "391662e88ca5b7529989390ad57e3965a6ab255a53bbe2e449b35ebbe79768ca",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "ffa5e618137cb631d51ba95d2e8dc57bee6bfce1287c84d5373ac0910f153681"
        },
        {
          "date": "2026-10-17",
          "event": "replaced",
          "new_sha256": "cc9fb22a6e25ac9e1dcb7a752e65dae6ffda3e9491be49cc115bc6f6ffff76d7",
          "previous_sha256": "ffa5e618137cb631d51ba95d2e8dc57bee6bfce1287c84d5373ac0910f153681"
        },
        {
          "date": "2026-10-27",
          "event": "replaced",
          "new_sha256": "dec0276e8a10b1d8e61a9807dc96864092976e01e6a8711839f8bb598f9554d4",
          "previous_sha256": "cc9fb22a6e25ac9e1dcb7a752e65dae6ffda3e9491be49cc115bc6f6ffff76d7"
        },
        {
          "date": "2026-10-27",
          "event": "replaced",
          "new_sha256": "e95cbad5b56992a7e0bab81f6eb196a956ab6762685dde995a6fe3e440ed9943",
          "previous_sha256": "dec0276e8a10b1d8e61a9807dc96864092976e01e6a8711839f8bb598f9554d4"
        },
        {
          "date": "2026-10-27",
          "event": "replaced",
          "new_sha256": "391662e88ca5b7529989390ad57e3965a6ab255a53bbe2e449b35ebbe79768ca",
          "previous_sha256": "e95cbad5b56992a7e0bab81f6eb196a956ab6762685dde995a6fe3e440ed9943"
        }
      ],
      "logical_id": "src/metrics/summary_fields.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "ALLOWED_SUB_CATEGORIES",
          "ARGUMENT_CAMPS",
          "AUDIO_INLINE_LIMIT_SEC",
          "ECONOMIC_VALUES",
          "MPS_SOURCE_AUDIO",
          "MPS_SOURCE_NO_LLM",
          "MPS_SOURCE_PRECOMPUTED",
          "MPS_SOURCE_TEXT_PATH",
          "MPS_SOURCE_UNKNOWN_PATH",
          "NEUTRAL",
          "POLITICAL_VALUES",
          "_CAMP_AXIS",
          "_LEGACY_CAMP_AXIS_DOMAIN",
          "_USABLE_STATUSES"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "c704dae9b14a5d9e3000247187718fc2b13022735bb86b202e03ebe998f8a15d",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "methodology_versions": [
            "BRIEFING_VERSION=briefing_v1",
            "LABELING_VERSION=labeling_v1",
            "NDI_VERSION=ndi_v1"
          ],
          "sha256": "c1c11e9576284ba2da53125b9ede822d79f13dbd154ef8beef7fb4d5903fa7ed"
        },
        {
          "date": "2026-10-22",
          "event": "replaced",
          "methodology_versions": [
            "BRIEFING_VERSION=briefing_v1",
            "LABELING_VERSION=labeling_v1",
            "NDI_VERSION=ndi_v1"
          ],
          "new_sha256": "7c526808b14ea8b419fbfb408239fafc3ea6d9a6940662a4cf24a181729e35e4",
          "previous_sha256": "c1c11e9576284ba2da53125b9ede822d79f13dbd154ef8beef7fb4d5903fa7ed"
        },
        {
          "date": "2026-10-23",
          "event": "replaced",
          "methodology_versions": [
            "BRIEFING_VERSION=briefing_v1",
            "LABELING_VERSION=labeling_v2",
            "NDI_VERSION=ndi_v1"
          ],
          "new_sha256": "564784b07399c1221d75694df0be41790bcfc92809e484a97a72975027c2d0e7",
          "previous_sha256": "7c526808b14ea8b419fbfb408239fafc3ea6d9a6940662a4cf24a181729e35e4"
        },
        {
          "date": "2026-11-07",
          "event": "replaced",
          "methodology_versions": [
            "BRIEFING_VERSION=briefing_v1",
            "LABELING_VERSION=labeling_v3",
            "NDI_VERSION=ndi_v1"
          ],
          "new_sha256": "c704dae9b14a5d9e3000247187718fc2b13022735bb86b202e03ebe998f8a15d",
          "previous_sha256": "564784b07399c1221d75694df0be41790bcfc92809e484a97a72975027c2d0e7"
        }
      ],
      "logical_id": "src/prompts/analysis.py",
      "methodology_versions": [
        "BRIEFING_VERSION=briefing_v1",
        "LABELING_VERSION=labeling_v3",
        "NDI_VERSION=ndi_v1"
      ],
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "BRIEFING_ARG_LIMIT",
          "BRIEFING_BLINDSPOT_LIMIT",
          "BRIEFING_PROMPT",
          "BRIEFING_PROMPTS",
          "BRIEFING_VERSION",
          "LABELING_CAMP_LIMIT",
          "LABELING_MARKET_LIMIT",
          "LABELING_PROMPT",
          "LABELING_VERSION",
          "NDI_ARG_LIMIT",
          "NDI_PROMPT",
          "NDI_SCHEMA",
          "NDI_VERSION",
          "REAL_ESTATE_BRIEFING_PROMPT"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "49eef57591ee583ee85566237b1e3bfd236545828f3557dbde4e52bd335e1b6c",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "methodology_versions": [
            "BATCH_SUMMARY_VERSION=rss_batch_v1"
          ],
          "sha256": "49eef57591ee583ee85566237b1e3bfd236545828f3557dbde4e52bd335e1b6c"
        }
      ],
      "logical_id": "src/prompts/rss_summary.py",
      "methodology_versions": [
        "BATCH_SUMMARY_VERSION=rss_batch_v1"
      ],
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "ANALYSIS_PROMPT_BATCH_HEADER",
          "BATCH_RESPONSE_SCHEMA",
          "BATCH_SIZE",
          "BATCH_SUMMARY_VERSION"
        ],
        "function_sources": [
          "build_discrepancy_briefing_prompt"
        ]
      }
    },
    {
      "current_sha256": "22cb8d8289d1244ecea5e6399df66c2bb005ae556c8073176b0710c6c8f8fe1f",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "methodology_versions": [
            "AUDIO_SUMMARY_VERSION=audio_summary_v4",
            "BATCH_SUMMARY_VERSION=batch_summary_v3",
            "CLICKBAIT_BATCH_VERSION=clickbait_batch_v1",
            "TEXT_SUMMARY_VERSION=text_summary_v5"
          ],
          "sha256": "22cb8d8289d1244ecea5e6399df66c2bb005ae556c8073176b0710c6c8f8fe1f"
        }
      ],
      "logical_id": "src/prompts/summary.py",
      "methodology_versions": [
        "AUDIO_SUMMARY_VERSION=audio_summary_v4",
        "BATCH_SUMMARY_VERSION=batch_summary_v3",
        "CLICKBAIT_BATCH_VERSION=clickbait_batch_v1",
        "TEXT_SUMMARY_VERSION=text_summary_v5"
      ],
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "AUDIO_SUMMARY_PROMPT",
          "AUDIO_SUMMARY_VERSION",
          "BATCH_SUMMARY_PROMPT",
          "BATCH_SUMMARY_VERSION",
          "CLICKBAIT_BATCH_PROMPT",
          "CLICKBAIT_BATCH_VERSION",
          "PLACEHOLDER_AUDIENCE_COMMENTS",
          "PLACEHOLDER_BATCH",
          "PLACEHOLDER_CLICKBAIT_BLOCK",
          "PLACEHOLDER_CLICKBAIT_COUNT",
          "PLACEHOLDER_TEXT",
          "TEXT_SUMMARY_PROMPT",
          "TEXT_SUMMARY_VERSION"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "577d90840017ad4ad2c49f70a340f1dd0f9815f23d0103273ea8d47c45a5c345",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "methodology_versions": [
            "AUDIO_SUMMARY_VERSION=audio_summary_v5_realestate",
            "BATCH_SUMMARY_VERSION=batch_summary_v4_realestate",
            "TEXT_SUMMARY_VERSION=text_summary_v5_realestate"
          ],
          "sha256": "577d90840017ad4ad2c49f70a340f1dd0f9815f23d0103273ea8d47c45a5c345"
        }
      ],
      "logical_id": "src/prompts/summary_realestate.py",
      "methodology_versions": [
        "AUDIO_SUMMARY_VERSION=audio_summary_v5_realestate",
        "BATCH_SUMMARY_VERSION=batch_summary_v4_realestate",
        "TEXT_SUMMARY_VERSION=text_summary_v5_realestate"
      ],
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "AUDIO_SUMMARY_PROMPT",
          "AUDIO_SUMMARY_VERSION",
          "BATCH_SUMMARY_PROMPT",
          "BATCH_SUMMARY_VERSION",
          "TEXT_SUMMARY_PROMPT",
          "TEXT_SUMMARY_VERSION"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "17f01a3d95e27aff7f255572a6fab29da8ab09f50dc9d19c69ef1fc34d50332d",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "0b8a35392b154b0ad0d9d41320fa1d6417938eee8d2ae0cbdafa1187985afb04"
        },
        {
          "date": "2026-10-24",
          "event": "replaced",
          "new_sha256": "5954160f64e835545431c7e37f0f187e95c4122376615cda892e24b21b083b2d",
          "previous_sha256": "0b8a35392b154b0ad0d9d41320fa1d6417938eee8d2ae0cbdafa1187985afb04"
        },
        {
          "date": "2026-10-25",
          "event": "replaced",
          "new_sha256": "72f42522d027aca3260884cc131a3a3a81b1f5477e84b29d528cbc5beffde610",
          "previous_sha256": "5954160f64e835545431c7e37f0f187e95c4122376615cda892e24b21b083b2d"
        },
        {
          "date": "2026-10-25",
          "event": "replaced",
          "new_sha256": "17f01a3d95e27aff7f255572a6fab29da8ab09f50dc9d19c69ef1fc34d50332d",
          "previous_sha256": "72f42522d027aca3260884cc131a3a3a81b1f5477e84b29d528cbc5beffde610"
        }
      ],
      "logical_id": "src/rss/sources.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "AGGREGATOR_SOURCE_KEYWORDS",
          "ALLOWED_RSS_DOMAINS",
          "DOMESTIC_SOURCE_KEYWORDS",
          "FOREIGN_LABEL_MARK",
          "FOREIGN_MEDIA_MAP",
          "MEDIA_DOMESTIC",
          "MEDIA_FOREIGN",
          "_DOMAIN_SUFFIX_RE",
          "_KOREAN",
          "_NORMALIZED_FOREIGN_MEDIA_MAP",
          "_PUNCT_RE",
          "_WHITESPACE_RE"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "f665db98174beca9eb5ef8dce22e877901a9a9df8556dd1c39be11bd792236e8",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "f665db98174beca9eb5ef8dce22e877901a9a9df8556dd1c39be11bd792236e8"
        }
      ],
      "logical_id": "src/rss/summarize.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [
          "build_prompt"
        ],
        "constants": [
          "ANALYSIS_FIELDS",
          "FALLBACK_ENTITY_LIMIT",
          "FALLBACK_REASON",
          "TONE_DEFAULT",
          "TONE_VALUES",
          "UNEXPECTED_ID_SAMPLE",
          "_QUOTED",
          "_QUOTE_CHARS"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "ce34144febc9e9dbfb37b908e31d57b7bdcd9506246389e17b62ed116244fd4b",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "methodology_versions": [
            "METHODOLOGY_VERSION=2026-10-v15"
          ],
          "sha256": "7206498ce3081de30c2f989c7dd1b6b92321fa35b540fb43f0fcd1a1920fc29b"
        },
        {
          "date": "2026-10-22",
          "event": "replaced",
          "methodology_versions": [
            "METHODOLOGY_VERSION=2026-10-v15"
          ],
          "new_sha256": "2fa9ffa237806c0d6d00dd75f40f309c911abfb607b425eefd3f543f6bd4a21f",
          "previous_sha256": "7206498ce3081de30c2f989c7dd1b6b92321fa35b540fb43f0fcd1a1920fc29b"
        },
        {
          "date": "2026-10-27",
          "event": "replaced",
          "methodology_versions": [
            "METHODOLOGY_VERSION=2026-10-v16"
          ],
          "new_sha256": "3065d3e4ad44a8ff0950935294c89d4b8584d31e5bf86f39d52d16013a7047b7",
          "previous_sha256": "2fa9ffa237806c0d6d00dd75f40f309c911abfb607b425eefd3f543f6bd4a21f"
        },
        {
          "date": "2026-10-31",
          "event": "replaced",
          "methodology_versions": [
            "METHODOLOGY_VERSION=2026-10-v17"
          ],
          "new_sha256": "e012bd505734bc7a42eb7ea4d50c98fe2e722e8b6a38427fd6cafbb7edd11565",
          "previous_sha256": "3065d3e4ad44a8ff0950935294c89d4b8584d31e5bf86f39d52d16013a7047b7"
        },
        {
          "date": "2026-11-03",
          "event": "replaced",
          "methodology_versions": [
            "METHODOLOGY_VERSION=2026-11-v18"
          ],
          "new_sha256": "39960e03969d3fbb3ac665d73e3d752fe1d3ddce71766c3cd239cbef02fa50a7",
          "previous_sha256": "e012bd505734bc7a42eb7ea4d50c98fe2e722e8b6a38427fd6cafbb7edd11565"
        },
        {
          "date": "2026-11-10",
          "event": "replaced",
          "methodology_versions": [
            "METHODOLOGY_VERSION=2026-11-v19"
          ],
          "new_sha256": "bccc0155cdd5f67160725c1415bfb6f9e3730c4223bb832152bb81407c01081a",
          "previous_sha256": "39960e03969d3fbb3ac665d73e3d752fe1d3ddce71766c3cd239cbef02fa50a7"
        },
        {
          "date": "2026-11-11",
          "event": "replaced",
          "methodology_versions": [
            "METHODOLOGY_VERSION=2026-11-v20"
          ],
          "new_sha256": "ce34144febc9e9dbfb37b908e31d57b7bdcd9506246389e17b62ed116244fd4b",
          "previous_sha256": "bccc0155cdd5f67160725c1415bfb6f9e3730c4223bb832152bb81407c01081a"
        }
      ],
      "logical_id": "src/utils/legal.py",
      "methodology_versions": [
        "METHODOLOGY_VERSION=2026-11-v20"
      ],
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "DISPLAY_NAME_MAP",
          "EXCLUSION_ENV",
          "EXCLUSION_FILE",
          "METHODOLOGY_VERSION"
        ],
        "function_sources": []
      }
    },
    {
      "current_sha256": "42d03df0bf8a5b3c45cb89a0e42c814c2b666b4549d1eeeb02c5dab976af71d6",
      "history": [
        {
          "date": "2026-10-15",
          "event": "recorded",
          "sha256": "42d03df0bf8a5b3c45cb89a0e42c814c2b666b4549d1eeeb02c5dab976af71d6"
        }
      ],
      "logical_id": "src/utils/toxicity.py",
      "normalization_rule_ids": [
        "constants",
        "assembled_function_output",
        "function_source",
        "digest"
      ],
      "target_scope": {
        "assembled_functions": [],
        "constants": [
          "LEGACY_SAMPLE_SIZE",
          "PROFANITY_PATTERNS",
          "_COMPILED"
        ],
        "function_sources": []
      }
    }
  ],
  "limitations": [
    "이 지문은 판본의 동일성을 확인하는 수단이며 산식의 정확성을 보증하지 않는다.",
    "원문이 공개되지 않는 동안 외부에서는 지문을 독립적으로 재계산할 수 없다.",
    "기록 시점의 근거는 비공개 git 이력이며 독립적인 시점 증명은 아니다."
  ],
  "normalization_rules": {
    "assembled_function_output": "고정된 비식별 대표 입력으로 조립 함수를 실행한 출력 문자열을 사용한다.",
    "constants": "모듈의 대문자 상수 값을 JSON으로 정규화한다. dict 키와 set/frozenset은 정렬하고, list/tuple 순서는 보존하며, 정규식은 pattern과 flags만 남긴다.",
    "digest": "정규화한 constants/functions/function_sources 객체를 키 정렬 JSON UTF-8 바이트로 직렬화한 뒤 SHA-256을 계산한다.",
    "function_source": "함수 소스에서 독스트링과 주석을 제외하고 Python AST를 ast.unparse로 정규화한다."
  },
  "schema_version": "1.0",
  "summary": {
    "first_recorded_on": "2026-10-15",
    "replacement_event_count": 47,
    "tracked_item_count": 25
  }
}
