# Catatan koreksi

Setiap perubahan angka atau klasifikasi setelah publikasi dicatat di sini, dengan tanggal, apa yang salah, dan apa yang diubah. Entri tidak pernah dihapus.

Publikasi yang tidak pernah mencatat koreksi bukan publikasi yang tidak pernah salah — ia publikasi yang tidak memeriksa.

---

### 2026-08-16 — Lapis fiskal: dari estimasi IMF ke realisasi resmi Kemenkeu

**Sebelumnya:** Ruang fiskal APBN ditarik otomatis dari IMF WEO (SDMX) — cakupan *general government*, angka tahun berjalan berupa estimasi/proyeksi (mis. rasio utang 41,48% PDB, defisit 2,94%).

**Masalah:** Untuk data fiskal Indonesia, sumber primer yang otoritatif adalah Kemenkeu/DJPPR/BPS — lembaga yang memproduksi APBN. IMF adalah sumber sekunder dengan batas akuntansi lebih luas (general vs central government), sehingga rasionya cenderung sedikit lebih tinggi dari angka resmi. Memakai sumber sekunder padahal ada sumber primer resmi bukan praktik terbaik.

**Diubah menjadi:** Angka **realisasi resmi** Kemenkeu/DJPPR/BPS, bersumber dan bertanggal — defisit audited 2025 2,81% PDB (Rp670,34 T), target APBN 2026 2,68%, rasio utang 41,26% PDB (posisi Juni 2026), tax ratio 9,31% (2025), keseimbangan primer −Rp155,94 T (2025). Karena portal resmi tidak menyediakan API keyless yang bisa ditarik dari CI, lapis ini diperbarui **manual** tiap rilis, bukan otomatis — konsekuensi yang diterima demi memakai sumber primer, bukan demi angka yang lebih enak.

---

### 2026-08-16 — Pilar ekonomi & composite: rata-rata datar diganti rata-rata tertimbang

**Sebelumnya:** Pilar ekonomi dihitung sebagai rata-rata datar enam sub-indikator (kurs, IHSG, IKK, cadangan devisa, plus skor tetap inflasi & PDB). Run otomatis pertama menaikkan pilar ekonomi dari 67 (penilaian manual pada seed) ke 79, dan composite dari 51 ke 55 — padahal tidak ada satu pun angka input yang berubah; penarikan pasar hari itu justru gagal total.

**Masalah:** Dua kesalahan bertumpuk. (1) Rata-rata datar membiarkan indikator kecil menutupi indikator besar — cadangan devisa yang turun 1,5% (skor 96,4) mengangkat rata-rata setara IHSG yang anjlok 19,3% (skor 53,7). (2) Rumus otomatis tidak pernah dikalibrasi untuk mereproduksi angka manual 67, sehingga run pertama diam-diam "mengoreksi" 67→79 tanpa data baru. Gate 5 (aritmetika) meloloskannya karena composite 55 memang konsisten secara aritmetika dengan pilar 79 — yang tidak diperiksa satu gate pun adalah apakah pergeseran itu punya sebab.

**Diubah menjadi:** Rata-rata **tertimbang** dengan bobot yang mencerminkan seberapa langsung tiap indikator dirasakan — kurs 0,30, IHSG 0,25, IKK 0,20, inflasi 0,10, PDB 0,10, cadangan devisa 0,05 (∑ = 1,0; dijabarkan di METHODOLOGY §3). Pada input yang sama, rumus ini menghasilkan pilar ekonomi **74** dan composite **53** (menggantikan 79 dan 55). Titik pembanding Februari 2026 dihitung ulang dengan rumus yang sama, dari **68** (penilaian manual) menjadi **70** — membandingkan angka hasil rumus dengan angka hasil tangan membuat delta menyesatkan; input pasar Feb 2026 kini ditandai estimasi.

**Ditutup permanen oleh:** Gate 7 baru (sidik-jari input) di `scripts/validate.mjs`. Ia menghitung sidik jari dari seluruh input — nilai & asof tiap series pasar, skor pilar manual, jumlah & nilai tiap rilis survei — dan menyimpannya di `data/meta.json`. Bila sidik jari tidak berubah tetapi composite berubah, publish dibatalkan. Lubang yang meloloskan pergeseran tanpa sebab ini tidak bisa terulang.

---

### 2026-08-16 — Tier A (Wikipedia) diperbaiki; tiga rilis approval yang terlewat masuk

**Sebelumnya:** Parser Tier A melaporkan **0 rilis tertangkap** pada setiap run. Regex-nya mengasumsikan sel dipisah `||` dengan urutan kolom lembaga–tanggal–sampel–nilai; tabel approval Wikipedia sebenarnya memakai sel per-baris, kolom Link berisi `<ref>` di antara tanggal dan Approve, dan sel bergaya `style=...|nilai`. Cocok nol baris.

**Masalah:** Ini bug parser, bukan "memang tidak ada rilis baru" — ambiguitas yang berbahaya. Tiga rilis yang sudah ada di agregasi Wikipedia tak pernah masuk grafik: IPO 27 Jul–3 Agu 2026 (63%), Poltracking 11–17 Mei 2026 (72,2%), SMRC 26 Feb–5 Mar 2026 (66,4%).

**Diubah menjadi:** Parser tabel terstruktur — tabel dikenali dari header Approve/Disapprove, kolom dipetakan dari baris header, tiap sel dibersihkan dari ref/template/wikilink/style, tanggal diparsing beragam format, dan nama lembaga dinormalisasi (mis. "Indonesia Political Opinion" → "IPO") agar tidak menduplikasi rilis yang sudah ada. Ketiga rilis kini masuk dan lolos seluruh gate. Konfirmasi Tier A ini mempromosikan empat item IPO keluar dari antrean karantina — siklus karantina → konfirmasi → promosi bekerja sebagaimana dirancang.

---

### 2026-08-16 — Sumber angka pasar mengikuti provider penarikan

**Sebelumnya:** `source_url` untuk IHSG dan USD/IDR menunjuk artikel berita lama (mis. artikel IHSG bernilai "6.261 per 11 Agustus") meski nilai di halaman diperbarui otomatis ke angka berbeda. Selain itu penarikan bergantung pada satu sumber per metrik yang gagal total (frankfurter.dev timeout, simbol Stooq IHSG 404).

**Diubah menjadi:** Penarikan kini multi-provider dengan fallback berurutan (USD/IDR: Yahoo → frankfurter.app → open.er-api → frankfurter.dev; IHSG: Yahoo query1 → query2), timeout 20 detik per provider, tiap percobaan dicatat. `source_url` tiap series otomatis mengikuti provider yang benar-benar dipakai, sehingga angka selalu bisa ditelusuri ke sumbernya. Kegagalan tarik tetap tidak pernah menulis angka palsu: nilai lama dipertahankan, `marketAsof` tidak maju, dan Gate 4 menandai stale dari umur data — bukan umur run.

---

### 2026-08-16 — Median (Januari 2026) diklasifikasi ulang sebagai divergen

**Sebelumnya:** ditampilkan berstatus normal dan ikut menentukan median periode Januari 2026.

**Masalah:** bacaan 54,5% menyimpang 24,7 poin dari median periodenya (Indikator 79,9%; Indekstat 79,2%) tanpa satu pun lembaga lain yang mengonfirmasi dalam rentang 5 poin. Bacaan Median berikutnya pada Maret–April 2026 justru naik ke 71,8% ketika seluruh lembaga lain turun — inkonsistensi internal yang tidak dapat dijelaskan oleh margin of error.

**Diubah menjadi:** status `divergent`. Tetap ditampilkan sebagai titik pada grafik dengan penanda berongga dan flag penjelas, dikeluarkan dari perhitungan median periode.

**Terdeteksi oleh:** Gate 3 (karantina outlier) pada `scripts/validate.mjs`, bukan oleh tinjauan manual.

---

### 2026-08-16 — Inflasi dan pertumbuhan PDB dikeluarkan dari grafik perubahan makro

**Sebelumnya:** ditampilkan pada grafik batang yang sama dengan perubahan IHSG dan kurs.

**Masalah:** grafik itu mengukur perubahan level dalam persen sejak pelantikan. Inflasi 2,88% adalah level tahunan, dan −0,3 pada pertumbuhan PDB adalah perubahan poin persentase pada laju pertumbuhan. Ketiganya satuan berbeda yang dibaca sebagai satu skala.

**Diubah menjadi:** grafik hanya memuat indikator perubahan level yang sebanding — IHSG, kurs, indeks keyakinan konsumen, cadangan devisa. Inflasi dan PDB tetap tampil pada tabel watchlist dengan satuan aslinya.

---

### 2026-08-16 — Perubahan nilai rupiah disatukan definisinya

**Sebelumnya:** grafik makro menampilkan −14,8% sementara kartu KPI menghitung −12,9% untuk indikator yang sama.

**Masalah:** keduanya benar tetapi mengukur hal berbeda. Rp15.500 → Rp17.797 berarti dolar menjadi 14,8% lebih mahal dalam rupiah, sekaligus berarti rupiah kehilangan 12,9% nilainya. Menampilkan keduanya sebagai satu angka berlabel "Rupiah vs USD" menyesatkan.

**Diubah menjadi:** seluruh halaman memakai satu definisi — kehilangan nilai rupiah, −12,9% — sesuai label indikatornya. Rumus di `scripts/fetch-macro.mjs` sudah memakai definisi ini, sehingga refresh otomatis konsisten.
