Skip to content

fix(trace,impact): module-level callers invisible due to synthetic source_id, inconsistent with rc #223

Description

@Wolfvin

Mengapa

Follow-up dari PR #219 (fix issue #210) — didokumentasikan eksplisit di PR body sebagai "Found, not fixed" item #1, BOS diminta putuskan apakah perlu issue terpisah.

Verifikasi konkret di KDS backend real: search "requirePermission" --mode symbol menunjukkan rc:49 (setelah fix #219 — module-level calls sekarang ter-track), tapi context --check trace --name requirePermission --direction up menunjukkan HANYA 1 entry (dirinya sendiri) — 0 real caller ditemukan. Inkonsistensi ini berbahaya: orang yang pakai trace untuk cek "aman gak kalau symbol ini diubah/dihapus" akan salah simpul "aman, tidak ada caller" padahal rc bilang dipakai 49 kali.

Konteks

Root cause (dari PR #219): module-level call edges pakai synthetic source_id = "<file>:0:<module>" yang TIDAK punya entry di graph_nodes. trace/impact JOIN graph_edges.source_id ke graph_nodes.node_id — synthetic source_id ini selalu gagal JOIN, jadi caller dari module-level calls tidak pernah muncul di hasil trace/impact walau edge-nya ada di database.

Tujuan

trace/impact harus bisa menampilkan module-level caller (misal "called at module level in src/routes/accounting.ts", tanpa perlu nama fungsi spesifik karena memang tidak ada fungsi pembungkus) — supaya konsisten dengan rc yang sudah benar dari fix #219.

Constraint

  • Jangan buat node_graphs entry palsu untuk <module> (PR fix(callgraph): extract module-top-level calls to fix rc undercount (closes #210) #219 sengaja menghindari ini supaya tidak polusi list/search output dengan entry fake) — cari cara lain, misal: fallback query yang follow dangling source_id dan render sebagai "module-level caller" tanpa perlu match ke node asli
  • Baca dulu trace_engine.py dan impact_engine.py untuk paham query JOIN yang dipakai sebelum ubah apapun

Definition of Done

  1. trace --direction up --name requirePermission di KDS backend menunjukkan minimal beberapa module-level caller (bukan cuma 1/dirinya sendiri)
  2. impact --name requirePermission menunjukkan dependent count yang konsisten dengan rc dari search
  3. Tidak ada regresi di list/search --mode symbol (tidak ada entry <module> palsu muncul di situ)
  4. Test suite 0 regresi baru

Checklist Laporan Worker

  • Before/after trace output untuk requirePermission di KDS backend
  • Konfirmasi rc dan trace caller count sekarang konsisten (atau dijelaskan kenapa masih beda by design)
  • Hasil test suite lengkap

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions