Mengapa (falsifiable — diverifikasi 2026-07-17, di main)
context <ws> --check <any> --format markdown mencetak "Symbol not found" walau datanya ada, dan --format ai mengembalikan items: [] kosong. Terjadi untuk SEMUA sub-check context, bukan satu.
Repro di main (sub-check overview yang sudah lama ada):
$ codelens context . --check overview --format markdown
## Context: ``
Symbol not found.
$ codelens context . --check overview --format ai # -> items: 0, stats: {}
Sedangkan --format json dan --format compact benar (envelope + semua data utuh).
Mekanisme
Umbrella context (sejak #195) membungkus hasil dalam envelope {s, st, r:[...]} (lihat commands/context.py:execute). Tapi:
Kedua formatter belum pernah di-update ke shape umbrella. json/compact lolos karena keduanya passthrough struktur apa adanya.
Konteks
Tujuan
--format markdown dan --format ai merender isi envelope {s,st,r} untuk umbrella context (dan umbrella lain kalau kena gejala sama), bukan mencetak "Symbol not found"/kosong.
Constraint
- Perbaiki di formatter (baca
r[]), JANGAN ubah shape envelope — json/compact/consumer lain bergantung padanya.
- Deteksi envelope (
"r" in data and "st" in data) lalu render tiap sub-result per _check-nya.
- Jangan regres format lama yang non-umbrella masih pakai.
Definition of Done
Mengapa (falsifiable — diverifikasi 2026-07-17, di
main)context <ws> --check <any> --format markdownmencetak "Symbol not found" walau datanya ada, dan--format aimengembalikanitems: []kosong. Terjadi untuk SEMUA sub-check context, bukan satu.Repro di
main(sub-checkoverviewyang sudah lama ada):Sedangkan
--format jsondan--format compactbenar (envelope + semua data utuh).Mekanisme
Umbrella
context(sejak #195) membungkus hasil dalam envelope{s, st, r:[...]}(lihatcommands/context.py:execute). Tapi:formatters/markdown.py:_md_context(baris ~241) membacadata.get("context", {})— key format LAMA (pra-refactor(commands): consolidate 78 commands → 12 focused commands #195). Envelope tak punya key itu → jatuh ke "Symbol not found".formatters/__init__.py:_normalize_to_aitidak mengekstrak darir[]→itemskosong.Kedua formatter belum pernah di-update ke shape umbrella. json/compact lolos karena keduanya passthrough struktur apa adanya.
Konteks
--check tags --format markdownkena gejala yang sama; ternyata bukan bug fitur baru, tapi umbrella-wide. Bukan scope feat(context): tag audit — inventory @FLOW/@ENTRY/@PART headers, list untagged files and stale/orphan flows #305.aimendapat output kosong/menyesatkan. Agent yang pakai json/compact aman.deps,audit,security,impact,api-map) punya envelope sama — cek apakah markdown/ai mereka juga kosong sebelum menganggap ini khusus context.Tujuan
--format markdowndan--format aimerender isi envelope{s,st,r}untuk umbrella context (dan umbrella lain kalau kena gejala sama), bukan mencetak "Symbol not found"/kosong.Constraint
r[]), JANGAN ubah shape envelope — json/compact/consumer lain bergantung padanya."r" in data and "st" in data) lalu render tiap sub-result per_check-nya.Definition of Done
context --check overview --format markdownmerender simbol, bukan "Symbol not found"context --check tags --format markdownmerender flow inventory + coverage + untagged (setelah feat(context): tag audit — inventory @FLOW/@ENTRY/@PART headers, list untagged files and stale/orphan flows #305 merged)--format aimengisiitems/statsdari envelope