You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
trace --direction up --name requirePermission di KDS backend menunjukkan minimal beberapa module-level caller (bukan cuma 1/dirinya sendiri)
impact --name requirePermission menunjukkan dependent count yang konsisten dengan rc dari search
Tidak ada regresi di list/search --mode symbol (tidak ada entry <module> palsu muncul di situ)
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)
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 symbolmenunjukkanrc:49(setelah fix #219 — module-level calls sekarang ter-track), tapicontext --check trace --name requirePermission --direction upmenunjukkan HANYA 1 entry (dirinya sendiri) — 0 real caller ditemukan. Inkonsistensi ini berbahaya: orang yang pakaitraceuntuk cek "aman gak kalau symbol ini diubah/dihapus" akan salah simpul "aman, tidak ada caller" padahalrcbilang dipakai 49 kali.Konteks
Root cause (dari PR #219): module-level call edges pakai synthetic
source_id = "<file>:0:<module>"yang TIDAK punya entry digraph_nodes.trace/impactJOINgraph_edges.source_idkegraph_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/impactharus 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 denganrcyang sudah benar dari fix #219.Constraint
<module>(PR fix(callgraph): extract module-top-level calls to fix rc undercount (closes #210) #219 sengaja menghindari ini supaya tidak polusilist/searchoutput 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 aslitrace_engine.pydanimpact_engine.pyuntuk paham query JOIN yang dipakai sebelum ubah apapunDefinition of Done
trace --direction up --name requirePermissiondi KDS backend menunjukkan minimal beberapa module-level caller (bukan cuma 1/dirinya sendiri)impact --name requirePermissionmenunjukkan dependent count yang konsisten denganrcdari searchlist/search --mode symbol(tidak ada entry<module>palsu muncul di situ)Checklist Laporan Worker