Mengapa
CI segfault (issue #235) di-mitigasi sementara dengan pin `tree-sitter<0.26` (PR #266). Root cause aktual: tree-sitter core 0.26.0 mengubah Node lifetime handling — binding tidak lagi buat Node objects hold strong reference ke Tree. `scripts/parsers/python_parser.py` (line ~135-165) sudah punya mitigasi `keep_alive` list + GC-disable, TAPI tidak cukup untuk 0.26: CI log (run 29244152939) menunjukkan native use-after-free SIGSEGV di `tree_sitter_python._binding` pada file shallow 250-baris (`test_file_above_old_threshold_is_parsed`), bukan yang deeply-nested.
Bukti: lokal (core 0.25.2) lolos; CI (core 0.26.0) crash. Delta = versi core.
Konteks
Selama cap `<0.26` aktif, CodeLens tidak bisa pakai tree-sitter 0.26+ (kehilangan perbaikan/grammar terbaru). Ini technical debt yang harus dilunasi.
Tujuan
Buat parsing (terutama `python_parser.py` iterative walk + keep_alive) aman terhadap perubahan Node lifetime di tree-sitter 0.26+, sehingga upper-bound `<0.26` di pyproject.toml + workflow bisa dilepas tanpa segfault.
Constraint
- Reproduksi WAJIB di Linux dengan tree-sitter core 0.26.0 (crash tidak muncul di Windows/0.25.2).
- Jangan cuma naikkan cap tanpa fix — harus buktikan test_large_file_parsing.py lolos di 0.26.
- Cek parser lain (js_backend, ts_backend, rust) yang pakai pola walk serupa — mungkin punya gap sama.
Definition of Done
Mengapa
CI segfault (issue #235) di-mitigasi sementara dengan pin `tree-sitter<0.26` (PR #266). Root cause aktual: tree-sitter core 0.26.0 mengubah Node lifetime handling — binding tidak lagi buat Node objects hold strong reference ke Tree. `scripts/parsers/python_parser.py` (line ~135-165) sudah punya mitigasi `keep_alive` list + GC-disable, TAPI tidak cukup untuk 0.26: CI log (run 29244152939) menunjukkan native use-after-free SIGSEGV di `tree_sitter_python._binding` pada file shallow 250-baris (`test_file_above_old_threshold_is_parsed`), bukan yang deeply-nested.
Bukti: lokal (core 0.25.2) lolos; CI (core 0.26.0) crash. Delta = versi core.
Konteks
Selama cap `<0.26` aktif, CodeLens tidak bisa pakai tree-sitter 0.26+ (kehilangan perbaikan/grammar terbaru). Ini technical debt yang harus dilunasi.
Tujuan
Buat parsing (terutama `python_parser.py` iterative walk + keep_alive) aman terhadap perubahan Node lifetime di tree-sitter 0.26+, sehingga upper-bound `<0.26` di pyproject.toml + workflow bisa dilepas tanpa segfault.
Constraint
Definition of Done