Riwayat rilis dan status eksekusi — dibangkitkan dari PLAN.md saat build.
AUDIT KEAMANAN 2026-09-22 — F-CRIT (bypass kunci owned-state via link
internal) DIPERBAIKI: write_file linkdir/config.json menembus .minicode/ lewat junction/symlink karena cek owned-state membaca STRING argumen, bukan target nyata. Kunci kini ganda: (1) isOwnedStateReal di src/policy/jail.ts (realpath sinkron ke induk terdekat yang ADA + rekonstruksi ekor) dipakai semua tool tulis di src/policy/permission.ts, dengan carve-out string lebih dulu (restore .trash/, skrip hooks/) dan symlink internal SAH ke berkas biasa tetap bisa ditulis; (2) bash-guard menahan PEMBUATAN link yang operannya sensitif/owned-state — SEMUA operand non-flag dicek (bukan satu slot posisi), sehingga urutan terbalik fsutil hardlink create LINK TARGET, reshuffle flag (ln --symbolic, ln -s --), dan nilai menempel New-Item ... -Target:.minicode ikut tertahan. Regresi permanen: test/deny-reason.test.ts (tulis via junction deny / link jinak & hooks allow), test/bash-guard-escaping.test.ts (14 bentuk serangan + 5 tetangga jinak), korpus gate:bash 62 pola serangan + 24 perintah sah (0 bypass / 0 over-block).
INTEGRASI fix/setup-wizard-spinner → main
branch dibubarkan, kerja terbaiknya dipindah selektif ke main 0.10.0 (TUI branch sudah digantikan fullscreen+popup+i18n): fix bash-guard caret/%VAR%/for (security), hold layar interaktif + spinner createSpinner (wizard tak lagi macet di "Menyiapkan sesi…"), minicode acp (JSON-RPC stdio), kontrak exit 0/1/2 + envelope exec --json, F1 token (Turn: + totalTokens per baris trace), F2 bench harness beku + taksonomi gagal, F3 MINICODE_COMPACT_KEEP_TURNS + anti-thrash kompaksi, F4.1 skills disable-model-invocation + aset sibling, F4.2 gate:fast/gate:slow + slow.yml, vendor shipped hash, dan invalidasi jangkar render askLine saat geometri berubah (I30, test/input-resize.test.ts).
SATU FOKUS DI main
seluruh branch pengembangan dibubarkan setelah kerja terbaiknya diadopsi — fix/setup-wizard-spinner, fix/input-resize-invalidation (adopsi terakhir: 7ec12b3), dan fix/uiux-audit-findings (sudah jadi bagian main 0.10.0) dihapus di lokal DAN origin; tag backup/* dihapus setelah tiap perubahan terverifikasi ada di main. Pembersihan lanjutan: 12 branch remote sisa (blog/query-gratis, docs-sync, docs/sitemap-attributes-review, docs/solution-explorer-decisions, feat/indexnow-weekly, feat/seo-audit-fixes, feat/sitemap-lastmod, feat/url-integrity-guard, release/0.9.29, release/0.10.0, freebuff/…, fix/input-resize-invalidation) diverifikasi dulu (git merge-base --is-ancestor → semuanya bagian main; satu-satunya branch ber-commit unik sudah diadopsi sebagai d4133ef) lalu dihapus. Sekarang git ls-remote --heads origin hanya refs/heads/main dan lokal hanya main + origin/main: tak ada branch paralel yang bisa saling tindih lagi.
SCRIPT `web
indexnow + CHECKLIST GSC (2026-09-17): submit indeks tidak lagi curl manual di sesi — bun run web:indexnow baca site/sitemap.xml, validasi host (CNAME), tolak URL asing, cek key file LIVE di produksi (syarat protokol), POST urlList; --dry-run utk QA. Checklist Search Console manual (submit sitemap, request indexing, pantau Pages/Performance) terdokumentasi di web/README.md — langkah browser-only pemilik. Otomatis (2026-09-18): workflow web.yml menambah job indexnow (needs: deploy) — tiap deploy sukses langsung submit sitemap ke IndexNow tanpa langkah manual; jalur manual jadi fallback ad-hoc. Guard integritas URL (2026-09-18): web:check + test web-build kini memvalidasi SEMUA URL absolut minicode.fun di llms.txt/llms-full.txt/ rss.xml menunjuk file site/ yang ada (±160 kemunculan) — lahir dari audit yang menemukan tautan ke ../PLAN.md` lolos mapper (404 konteks root). Jadwal mingguan (2026-09-18): web.yml cron Senin 03:17 UTC — tanpa deploy pun sitemap tetap dikirim (build/deploy di-skip saat schedule, indexnow jalan utk deploy sukses ATAU skipped); concurrency grup pages dipindah ke job deploy agar run terjadwal tak bisa membatalkan deploy push yang sedang berjalan. Sitemap lastmod (2026-09-18): tiap URL kini bawa <lastmod> — post blog dari frontmatter (sumber sama via blogLastmod, tak maju tiap deploy), halaman lain stempel waktu build; guard test mengunci 34 entri + silang-cek tanggal post vs sumber. Atribut lain DITINJAU & DITOLAK (2026-09-18): priority/changefreq diabaikan Google (docs Search Central dicek langsung), hreflang tak relevan utk situs satu bahasa — keputusan dicatat web/README.md. Audit UI/UX (2026-09-18): 6 temuan terukur diperbaiki — (1) caption panel gelap memakai token tetap --term-dim (7,1:1/7,9:1; dulu --mut ikut tema = 3,12:1 di light); (2) tap target hero-links & link kartu 29–30px (dulu 16–22px); (3) nav ≤520px wrap, NOL display:none — sistem .keep lama menyembunyikan Blog/Changelog dan menambah keep terbukti overflow 360px (terukur ±374px); (4) aria-current nav utama via skrip layout (exact > prefix, satu mark); (5) intro paragraf di bawah h2 'Kapan cocok'; (6) badge hero: MIT→LICENSE, Bun→bun.sh. Guard test navigasi mobile direvisi ke strategi wrap. Solution Explorer pasca-audit (2026-09-18): mekanisme perbaikan dipertahankan setelah eksplorasi alternatif-material dgn gate terukur — (F-1) token tetap dipilih atas override spesifisitas, !important, dan duplikasi selector (gate: kegagalan baru harus lebih spesifik & eksplisit); (F-2) padding dipilih atas min-height, wrapper, dan pseudo-element besar (gate: tanpa box baru, layout konten tak geser); (F-3) wrap dipilih atas keep-plus (overflow 360px terukur), menu sheet (butuh JS+state utk 5 link), dan sticky-secondary (nol bukti scroll depth); (F-4) skrip exact>prefix dipilih atas build-time attr (butuh plumb baru) dan CSS-only (tak bisa exact-match). Upgrade path tercatat: media pointer:coarse & validasi user nyata.
AUDIT SEO + EKSEKUSI TEMUAN
full crawl 36 URL + 3 SERP + probe authority — fondasi teknis sehat (nol orphan, canonical↔sitemap 34/34 konsisten, 404 benar, BreadcrumbList 32/32); risiko utama di observabilitas Bing & authority nol (brand SERP "minicode" tak muncul — normal utk domain 3 hari). Diperbaiki dari sisi repo: (1) plumb BingSiteAuth.xml — file hasil download bing.com/webmasters diletakkan di web/, build menyalinnya utuh (pola key IndexNow) + guard test; klik verifikasi BWT tetap tanggung jawab browser pemilik; (2) 3 judul post dipangkas <=65 char TERMASUK sufiks " — Minicode" dari layout — web:check kini menjaga (title kepanjangan = FAIL deploy); (3) blok "Postingan terkait" di tiap permalink via relatedPosts() (tag-share dulu, fallback post terbaru, max 3; dulu 4 post hanya 1 inbound dari index); (4) Article JSON-LD + author Organization + inLanguage id-ID; (5) homepage npm -> https://minicode.fun (kanal authority; field repository tetap ke repo). Temuan terkoreksi saat eksekusi: post ternyata SUDAH ber-JSON-LD Article + FAQPage SUDAH ada — crawl extractor awal melewati @graph. Peluang tercatat (belum dieksekusi): SERP query kategori berbahasa Indonesia 100% berbahasa Inggris = celah konten ID (Wave 2–3).
AUDIT DOKUMENTASI
inventaris 38 file md + cek link relatif (semua resolve) + ref lama (bersih; sisa nama lama hanya di dokumen historis — tempat yang benar) + deteksi orphan. TEMUAN utama: 5 dokumen internal kontributor (TERMINAL_CONTRACT, CONTROL-PLANE-MAP, UI_RENDER_PIPELINE, HARNESS, PLAN_UIUX_V6) TAK TERJANGKAU dari navigasi mana pun (SUMMARY/docs index/sidebar web/llms) — semuanya aktif dirawat (2 di-update hari ini), jadi KEEP + integrasi nav, BUKAN hapus. Eksekusi: grup baru "Internal & Arsitektur (untuk kontributor)" di SUMMARY (sidebar web + llms-full ikut otomatis — satu sumber), DOC_META desc web per dokumen (dari isi sebenarnya), baris nav di docs/README.md. KASKADE yang ditangkap guard: (a) mapper link md diperluas menerima nama kapital/ underscore + bentuk ../CHANGELOG (baris 1 PLAN_UIUX_V6 memuat tautan ke ../CHANGELOG.md yang dulu lolos TANPA rewrite — kelas bug tautan ke ../PLAN.md); (b) guard rahasia web:check false-positive pada id heading "risiko- disengaja" (kata Indonesia kebetulan pola sk-…) → scan kini konten tanpa atribut id/href (teks nyata tetap penuh); (c) test count sitemap 34 → floor >=34 (halaman tumbuh; invariant lastmod tetap dijaga). Gate: tsc OK, biome bersih, 2166 test 0 fail, web:check lolos (39 halaman).
ARTIKEL #2 QUERY GRATIS
"Apakah ada alternatif Claude Code yang gratis?" — target kueri ID dari celah SERP audit SEO (10/10 hasil berbahasa Inggris). Angle beda dr artikel #1 (open source): bedah 3 lapis "gratis" (tool MIT / bayar-per-pakai API / nol rupiah via Ollama lokal) + trade-off model lokal ditulis terbuka; pengalaman first-hand (/undo, --budget fail-closed, biaya tampil per langkah, doctor); anti-kanibal via cross-link dua arah dgn artikel #1. Title 57 char (guard 65), desc 156. Post ke-6 → build 40 halaman; RSS/sitemap/Article LD+inLanguage otomatis dari builder. Gate: web:check lolos, tsc OK, web test 52/52.
FIX relatedPosts slice
verifikasi produksi menemukan bug desain — slice(-max) mengambil kandidat PALING TUA; post tag-share paling relevan terbuang begitu kandidat >3 (terbukti: post baru tak muncul di blok artikel #1). Kini slice(0, max) — relevan didahulukan, fallback mengisi sisa. Guard unit test relatedPosts tetap hijau (premisnya tidak menyentuh urutan).
DISCOVERABILITY AI/AGENT
situs mudah ditemukan & dipelajari AI-assistant/agent yang browsing: (1) llms-full.txt — korpus seluruh docs dalam satu markdown (±140 KB) digenerate dari SUMBER sama dgn sitemap (SUMMARY) + status PLAN; komplemen llms.txt (peta, sudah ada); (2) robots.txt menyebut 14 crawler AI eksplisit (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, Google-Extended, dst) semua di-ALLOW — kebijakan situs terbaca sendiri oleh tiap bot; (3) FAQPage JSON-LD di landing dari SATU sumber FAQ (diekspor FAQS, HTML & JSON-LD tak bisa saling stale) — jawaban FAQ = konten paling sering dikutip assistant; (4) metadata GitHub: description + homepage minicode.fun + 10 topics; (5) keywords npm diperluas (terminal, llm-agent, openai, anthropic, ollama). Guard test menjaga llms-full urut vs SUMMARY, robots AI, dan @graph FAQPage+SoftwareApplication.
RENAME PAKET NPM 0.9.26 — @miniroom/minicode → minicode-ai
(2026-09-17): akar gagal rilis 0.9.24/0.9.25 = PUT ke registry → 404 (scope @miniroom tak lagi bisa publish); minicode-cli sudah diambil pihak lain; nama bare minicode ditolak aturan kemiripan registry (403 "too similar to mini-code") — terbukti saat publish, bukan asumsi. Kontrak instalasi: npm install -g minicode-ai (bin tetap minicode, config/state ~/.minicode/ tak berubah). Referensi diganti di package.json, update-check/auto-update (notifikasi + auto-update), README, docs/getting-started, landing, blog; guard release-readiness kini MENYEGAL nama scoped lama di permukaan install. Tag v0.9.26 → Publish → minicode-ai@0.9.26 TERBIT (workflow hijau, tarball terverifikasi dari registry). Pengumuman publik: blog rename-paket-npm-minicode-ai + changelog.
UJI A/B URUTAN LANDING + ANALITIK LOKAL
varian A = "Cara kerja" dulu, B = "Serahkan tugas" dulu. Ditukar lewat CSS order dari data-order di <html> yang dipasang pre-paint di web/layout.html — DOM tetap kanonik (SEO, urutan tab, screen reader, tanpa-JS = A), tanpa kedip. Dua section bersebelahan dibungkus .pair (build-web.ts). Bug ditemukan saat verifikasi preview: percobaan pertama memakai main { display: flex } + main > * { order: 10 } dan MENGANGKAT semua section lain ke atas (nilai order sama menang atas posisi dokumen) — sudah diganti dan dijaga test ("body.home main {" dilarang). Penetapan 50/50 sticky per browser + override
?order=a|b (tidak dipersistenkan; pengukuran dilewati agar sampel bersih). Metrik lokal (minicode-exp-v1): kunjungan, kedalaman gulir maks, jangkauan section (band tengah viewport), aksi di bagian Tugas, waktu aktif; flush idempoten per sesi (milestone 25%, ganti-tab, pagehide) sehingga bacaan panjang tidak hilang. Laporan /?exp=report (tabel per varian + jangkauan + peringatan n<30 + salin JSON), ?exp=reset, opt-out ?exp=off/DNT=1. NOL request keluar — dijaga test (fetch/XHR/sendBeacon/cookie dilarang di app.js), sesuai janji "tanpa analitik keluar". Konsekuensi jujur: agregasi lintas pengunjung manual (salin JSON per penguji), bukan otomatis. Section landing #cocok/#batasan/#faq diberi id agar jangkauan bisa dilaporkan. Guard: 3 test baru. Gate 46 pass 0 fail / tsc / lint 0 warn / web:check 12/12.
SCROLLBAR DISEMBUNYIKAN
permintaan desain — trek+thumb native (termasuk versi "tipis" lama) tidak flat. * { scrollbar-width: none; -ms-overflow-style: none } + *::-webkit-scrollbar { width:0; height:0; display:none } di part-01-base.css; aturan lama (thin + scrollbar-color + thumb/track) dihapus, bukan ditumpuk. Fungsi TIDAK dikorbankan: overflow container tak disentuh, jadi roda mouse, trackpad, sentuh, keyboard (PageUp/Down, spasi, Home/End), drag-select, dan gulir internal pre/tabel/menu docs tetap jalan — diverifikasi di preview: scrollbar-width computed none, dokumen scrollTop=700 terpasang, pre mencapai batas gulir (26/26px). Konsekuensi sadar: indikator posisi halaman & drag bar hilang. Guard: 1 test baru (aturan ada + aturan lama absen + container gulir tak dimatikan) + test lama "design language flat" disinkronkan dari scrollbar-width: thin → none. Gate 43 pass 0 fail / tsc / lint 0 warn / web:check 12/12.
ROMBAK HALAMAN DOCS + PROSA JUSTIFY
seluruh halaman docs kini memakai bahasa desain landing — <header class="doc-head"> dengan kicker kelompok SUMMARY + judul mono skala display; daftar isi halaman panjang jadi ledger bernomor (nomor bawaan heading di-strip dari label agar tak dobel); prev/next di bawah memawa judul halaman tujuan. Hub /docs/ jadi "landing dokumentasi": tanpa sidebar, direktori <nav class="doc-grid"> digenerate dari SUMMARY (judul + desc DOC_META) di bawah header, dan section ## Navigasi README dibuang DI WEB saja (stripMdSection; README tetap utuh untuk repo). Paragraf prosa dijustify site-wide (hanya paragraf — heading, daftar, tabel, kode tetap rata kiri) + hyphens: auto + baris terakhir rata kiri; --w-doc 720→640px dan --fs-doc 12.5→14px karena baris ±115 karakter bikin celah antarkata menganga; text-wrap: pretty dibuang (diabaikan saat justify). Bug nyata yang ketemu saat verifikasi preview: menu docs ponsel terbuka di ATAS konten (kini ditutup app.js hanya di layar kecil), scrollbar horizontal di dalam menu, dan prev/next bertajuk yang tidak muat berdampingan di kolom ±342px (kini ditumpuk di ≤900px). Guard baru: header docs, TOC tanpa nomor dobel, hub (grid ⊇ SUMMARY, tanpa sidebar, tabel Navigasi absen), justifier base CSS, menu ponsel tertutup. Gate 2039 pass 0 fail / tsc / lint 0 warn / web:check 12/12.
SEO Riset+Eval+Fix
audit live minicode.fun (robots+sitemap ok, www/http 301 ke apex-https, 404 code benar) + riset gallery rich-result Google 2026 (SoftwareApp butuh rating — TIDAK difabrikasi; Article/ Breadcrumb masih hidup). Fix: llms.txt digenerate dari SUMMARY (404 → peta AI-crawler), BreadcrumbList JSON-LD di docs/blog/changelog, dedup judul "Minicode — X — Minicode". Search API mati saat riset — kompetitor SERP belum diverifikasi; lainnya dari dokumen Google langsung.
CHECKLIST RILIS WEB
checklist pasca-deploy 3 fase di web/README.md (verifikasi deploy → lab CWV → CrUX field p75 pada +2/6/12 minggu) + skrip web:vitals (PSI API, nol dependensi; tandai [field] vs [lab], jatuh ke Lighthouse bila CrUX "no data", pesan 429 actionable). Baseline CWV dibiarkan kosong-jujur: butuh Chrome/trafik, diisi di tabel README saat pengukuran pertama.
CHANGELOG WEB
halaman /docs/changelog.html kini digenerate otomatis dari section ini saat build (marker guard test: GUARD-CHLOG-SATU); docs/changelog.md jadi stub anchor SUMMARY.
AUDIT LAB CWV FASE 2
Lighthouse 13.4.1 mobile vs minicode.fun — score 98, LCP 1,9 s, TBT 0 ms, CLS 0,002, 0 error konsol. Satu kriteria gagal lalu diperbaiki: entrance hero menyembunyikan H1 sehingga LCP element = glif ikon, bukan H1 — H1 kini dikecualikan dari rise (part-06-motion.css), terverifikasi LCP = H1 di lab ulang DAN di produksi pasca-deploy (2,4 s, satu kandidat H1, score 95). Baseline tercatat di web/README.md. Field CrUX tetap menunggu fase 3 (+2/6/12 minggu).
ARTIKEL #1 RISET KEYWORD
"Alternatif Claude Code yang open source: Minicode di terminal" — perbandingan jujur (tabel 8 baris berkait ke docs), sisi yang belum dimiliki ditulis terbuka, migrasi kebiasaan CLAUDE.md → AGENTS.md, target kueri "claude code alternative open source". Tabel markdown kini ikut distyle di .article.
KONTEN LANDING "SERAHKAN TUGAS"
riset inventaris konten landing kompetitor (aider, Claude Code docs, OpenCode, Codex CLI) menemukan pemuat konversi yang hilang: contoh tugas nyata yang bisa disalin. Section baru: 4 perintah nyata (fix test, upgrade deps, --plan, commit) + tombol salin per baris (data-copy), link ke docs/exec. Angka skala ala kompetitor sengaja TIDAK dipalsukan — kejujuran tetap pembeda.
ROMBAK LANDING
konsep "Bukti, bukan janji" — hero kini klaim → install-bar (CTA primer, blok gelap prompt) → transkrip nyata sebagai objek hero; section "Kenapa berbeda" dihapus (duplikat janji hero + safety); "Cara kerja" jadi strip 5 kolom bernomor di band --soft; guard test proof disinkronkan (class boleh bertambah, tetap tepat satu).
AUDIT WEB + FIX P0–P2
hanya lapisan web (web/, scripts/web*, workflow, test web) — runtime minicode tak disentuh. P0: token GitHub admin tak lagi dipersist ke sessionStorage (+ autocomplete=new-password, publish disabled saat request, beforeunload draf); RSS & di link/guid ter-escape + lastBuildDate + id-ID. P1: ordered list md dirender <ol> sungguhan (dulu <p>); delay reveal via custom property --d (bukan inline transitionDelay); reset CSS selektif (list/table/details tak lagi dipatuhin *{margin:0}); job CI web-check untuk PR (dulu hanya push main). P2: subset ikon Material Symbols via icon_names (verifikasi curl: 1 @font-face); og:image dirasterisasi ke PNG 1200×630 via @resvg/resvg-js (dev-dep; gagal render → SVG fallback, build tak gagal); text-wrap: balance/pretty, tabular-nums, … tipografis text-node-only; web:build tak lagi double-run CSS assembler; layoutCache per-path. Guard baru: <ol>, ellipsis href-utuh, RSS escape, admin bebas-storage-token, subset ikon, og PNG, docs-tanpa- nested-list. Gate: web:check 12/12, test/web-build.test.ts 29/29, bun test 2025 pass 0 fail, tsc + lint 0 warn. PERF (skill performance, static — tanpa trace di env ini): Inter statis 5 instance → variable wght@400..700 (1 file/subset); ikon axis variable → pin statis @24,400,0,0 (1 @font-face); JBM admin cukup 600;700; font-weight 650 → 600 (cakup rentang variabel, tanpa sintesis); Speculation Rules prerender /docs/* eagerness moderate (progresif). DITOLAK sadar: inline critical CSS (total CSS ±4–5 KB gzip — satu request render-blocking lebih murah daripada dobel HTML); preload URL kit gstatic (URL kit berubah per subset — rapuh); Cache-Control custom (GitHub Pages tidak mengizinkan header custom).
RE-ENVISION NAV DOCS
subsistem terlemah = nav docs mobile (27 link men-stack di atas konten). Dibangun ulang ke <details> collapsible sticky di bawah topbar: konten selalu pertama, menu satu tap; desktop selalu-terbuka (sinkron toggle di app.js, summary disembunyikan CSS); no-JS mobile = terdegradasi terbuka (dulu), desktop utuh dari markup. Scroll-margin anchor mobile naik ke 116px (topbar+summary). Link, highlight aktif, kelompok SUMMARY, sticky — semua dari draft lama dipertahankan. Verifikasi permukaan nyata: harness inline css+js hasil build dieksekusi preview (desktopLock=true, 27 entri, active="Tools (37)", mobile rules 8), bukan hanya grep. Harness dihapus setelah uji.
ADVERSARIAL REVIEW
4 bug hasil review ditemukan + diperbaiki (a) nav hilang di desktop: user tutup menu di mobile → lebarkan layar, CSS pindah branch tanpa event toggle → kini matchMedia('change') membuka ulang (+ fallback addListener Safari lama); (b) sticky no-op mobile: aside = grid item satu baris → containing block setinggi dirinya → .doc-layout mobile jadi display:block; (c) pemecah <ol>: baris indentasi lanjutan item jatuh ke <p> → list pecah, penomoran restart (75 lokasi di docs, security.md dst.) → renderer menyambung ke <li> sebelumnya; blank TETAP memutus (kontrak lama); (d) tanggal blog tanpa timeZone UTC → geser mundur sehari di mesin TZ negatif → timeZone:'UTC'. Ketiganya diverifikasi live (harness inline css +js build asli): matchMedia path, sticky posisi, <ol> utuh, fonts 200 dari gstatic (Inter variable, JBM, ikon subset).
GUARD ADVERSARIAL
4 test baru di web-build.test.ts menjaga bug adversarial agar tak kembali — masing-masing TERBUKTI GAGAL via mutasi kode lama (hapus listener change / blok lanjutan / timeZone non-UTC / CSS grid+top:0), lalu sumber dipulihkan: (1) lock nav docs di DUA jalur (matchMedia change + toggle, addListener fallback); (2) baris lanjutan list menyambung <li>, <ol> tak pecah (blank tetap memutus); (3) blogDateFmt diekspor (pola diekspor-untuk-test), timeZone UTC + format "5 Jan 2026"; (4) mobile display:block + sticky top:60px, desktop grid + summary:none. Gate 2045 pass 0 fail / tsc / lint 0 warn / web:check 12/12.
P0-P9 tuntas dan dihapus dari plan (commit e143db2 0.9.0 + b8b5749 0.9.1)
guardrail, coverage, overlay, English-only, tema, data-at-rest, session, tool-layer, env/command, CLI hardening, memory/RAG P0-P2.
P12 UI Shell-Max DIEKSEKUSI b8b5749 (9.3/10)
/copy OSC52, Ctrl+R/Ctrl+J, statusline rich, wrap/table/diff/picker, harness output-driven. Gate tsc PASS / lint 9 warn / 1224 pass 0 fail / coverage 81.44/83.65 / pack 22/22.
P13 P0 + P10 P0 + P11 P0 DIEKSEKUSI (ff70d65 0.9.2 + e1c7839/346a932 0.9.3/0.9.4)
--cwd repo-wide, O_NOFOLLOW, pricing refresh, max_tokens 8192, thought_signature side-map, 4 tool, memori kategori/scope, code_run tanpa shell, trash bersama.
P13 P1 + P11 P1 + P10 P1 DIEKSEKUSI (ff70d65 0.9.2 + 0.9.5)
submit_result, ask_user (gated+DI), plan artifact, snippet verify, branchSession, TTL hierarkis + accessCount, Responses chaining, reasoningEffort map, retry-after honori + coba-ulang-di-tempat, probe /responses, harness TUI 10/10, SWE-bench Lite (dataset 20 pin + test_patch + fake 0/20), doctor, lint 0 warning, coverage-min 80/84.
AUDIT UX DIEKSEKUSI (d69fbec 0.9.6)
Tab kosong toggle plan/build, did-you-mean (≤2), banner konteks, /thinking on-off, sync jujur {updated,failed}, doctor warn 0-model, error tunggal, sandbox notice tepat, models --match bersih, auth non-TTY fail-fast, English-only + regex penjaga, /quit dihapus, USAGE lengkap. Opsi A konsolidasi: /cost & /usage → /status, /resume → /sessions; /undo /redo /clear /copy /history tetap mandiri, tampil di /help tapi TIDAK di dropdown. Gate 1284 pass 0 fail / tsc / lint 0 warn / 80.77/84.56 / pack 22/22 / bash 0.
HARNESS P0–P3 DIEKSEKUSI
P0 jail simetris move/delete, MINICODE_SANDBOX_STRICT, allowlist bun run/bun x, scrub exec --json + overBudget; P1 budgetStatus + --budget-strict (sekaligus perbaiki exec yang mengabaikan --budget), step-traces.jsonl + klasifikasi deny, audit:harness 60 cek, --verify+self-heal terverifikasi existing; P2 baseline-first + --tool-scope explore; P3 stats deny-rate + validasi resume. Uji live 7 model gateway (21 run, 20/21 execution-verified; multifile ketat 4/7). Gate 1336 pass 0 fail / 81.68/85.37 / pack 22/22 / audit 60/60. DITOLAK sadar: verify default-on, evaluator inferential.
SESI UX MODEL+INPUT
alur thinking effort DIKUNCI (Enter = pilih + picker effort, Esc = batal total; t dihapus; badge effort; berlaku sesi berikutnya); effort anti-hilang (detectAndSave/auth login preserve reasoningEffort; mutasi /model ditulis ke scope asal — hapus fallback race + saveProvider di controller); audit UX lain: Esc batal prompt kosong + askSecret null = batal, search keys diperbaiki (Ctrl+D/Ctrl+U, onKey tak membajak), Gateway > kosong = batal, konfirmasi timpa provider, umpan balik ✓/✗ menyeluruh, picker clamp/footer/sanitasi, /sync restart kondisional, help/keys akurat. Struktur path-guard: resolveSafePath = tool PENULIS, safeOpenRead = pembaca (read_file/read_image single-open, tanpa verifikasi ganda). Gate 1357 pass 0 fail / 81.84/84.26 / pack 22/22; min dikunci 80 funcs / 85 lines (lines dikunci 85 setelah journal 82.42/85.17 dua run identik; funcs berayun 80.6–81.8 antar run — menaikkan ke 81 membuat gate flaky).
SINKRON DOK 0.9.19
ledger › hijau/merah di docs/architecture.md + docs/terminal.md (sebelumnya ✓/✗ era 0.9.16), ambang coverage docs/contributing.md 80/85, badge ARCHITECTURE.html v0.9.19, web rebuild 32 halaman + web:check lolos. Vendor sync DITUNDA sadar (seam lokal cwd/permissionMode belum dihilirkan; delta upstream hanya cap retryAfter yang sudah ditutup lapis-app).
AUDIT-FIX + CLEANUP + WEB
sanitasi ANSI reasoning/thinking/preview-bash/label-tool, bash-guard (pwsh, wrapper su/runuser/cmd, reader baru, rm //), isDangerousLink sadar-direktori, pembaca O_NOFOLLOW, budget mid-turn, forget dual-scope, assertSafeWriteTarget live, ekspektasi footer disinkronkan, guard BOM diperluas, EOL worktree dinormalisasi LF, 5 berkas + 8 fungsi mati dihapus, docs distrukturkan ulang (USAGE.md jadi pointer, angka mesin dibuang dari markdown), website direbuild (ledger ›, invariant 14). Gate 2014 pass 0 fail / tsc / lint 0 warn / coverage 82.48/84.37 (min tetap 80/84) / pack 22/22.