Skip to content

feat(impact): friendly 'simulate change' entry point, extend beyond delete to rename #241

Description

@Wolfvin

Mengapa

Ditemukan saat brainstorming "dream tool" — ide "sandbox: coba dulu perubahan sebelum benar-benar dilakukan". Investigasi menunjukkan impact_engine.py::analyze_impact(name, workspace, action="delete"|"modify") SUDAH melakukan sebagian besar ini untuk kasus delete/modify — infrastrukturnya ada, cuma belum dikenal sebagai "safe simulation" yang jelas dan belum cover kasus rename (padahal rename adalah operasi paling umum yang dilakukan AI agent saat refactor, dan paling gampang salah kalau dilakukan buta).

Konteks

impact --check impact --name X sudah bisa dipanggil dengan action tersirat (perlu dicek args aktual analyze_impact di impact.py command file — apakah action sudah exposed sebagai flag CLI). Issue ini BUKAN membangun ulang — ini mengekspos + melengkapi apa yang sudah ada.

Tujuan

  1. Pastikan impact --check impact --name X --action delete|modify|rename semua ter-expose dengan jelas di CLI (cek dulu apakah --action sudah ada; kalau belum, tambahkan).
  2. Tambah --action rename --new-name Y — analisis dampak rename: file mana yang perlu diupdate importnya, apakah ada string-based reference (dynamic import, reflection) yang tidak akan ter-catch static analysis (beri warning eksplisit soal ini, jangan overclaim completeness).

Constraint

  • Ini BUKAN implementasi rename engine yang benar-benar mengubah file — murni analisis "apa yang akan terpengaruh", bukan eksekusi perubahan. Eksekusi rename yang aman adalah scope issue [ARCH] Replace flat registry with true graph data model (nodes + edges) #7 (unified refactor engine) — issue ini cukup sampai ke "berikut daftar lengkap yang perlu diubah manual/oleh agent".

Definition of Done

  • --action flag terdokumentasi jelas di --help (bukan cuma tersembunyi di engine)
  • --action rename --new-name Y mengembalikan daftar semua call site + import statement yang perlu diupdate
  • Response eksplisit menyebut kalau ada risk dynamic/string-based reference yang tidak ter-cover
  • Regression test untuk rename simulation

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions