diff --git a/CHANGELOG.md b/CHANGELOG.md index 729376c..30e973d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ versi mengikuti [SemVer](https://semver.org/). Belum ada rilis publik (`0.1.0`, ### Added +- **Persiapan repo publik — berkas komunitas + metadata (demo-only posture).** `CONTRIBUTING.md`: menyatakan repo = artefak demonstrasi solo/non-komersial yang **tidak menerima PR eksternal rutin** (fork & pakai-ulang Apache 2.0 dipersilakan; keamanan → `SECURITY.md`; tracker kerja internal = `docs/ISSUES.md`, bukan GitHub Issues). `package.json`: tambah field `repository` (URL git kanonik) + `keywords` (discoverability); `bugs` sengaja dikosongkan (tak ada public bug tracker — keamanan lewat PVR). Reading-guide 1-baris di header `docs/CONTEXT.md` & `docs/ISSUES.md` untuk mengarahkan pengunjung pertama ke README/PROJECT (doc-doc itu = jurnal/tracker internal padat jargon). Sapuan akhir kerahasiaan pra-flip: metadata commit author/committer diverifikasi **100% noreply** (cek manual `git log --all --format='%ae %ce'`, gate file-based tak menjangkaunya — G-61). - **README: `## English summary` + `## Metodologi doc-first`** — entry point berbahasa Inggris (apa itu acca, tiga constraint desain, status pra-rilis, pointer ke SECURITY/LICENSE/DECISIONS) + **disclaimer non-afiliasi** dengan Anthropic/Google, karena acca mengemudikan CLI milik dua vendor itu. Section metodologi menjelaskan repo ini sebagai **artefak demonstrasi doc-first** (ADR immutable, GOTCHAS, threat-model ter-gate, CONTEXT per sesi, `.claude/skills/` sengaja publik) berikut ongkosnya yang jujur (docs > kode). - **CI GitHub Actions lintas-OS** — `.github/workflows/ci.yml`: `npm ci` + `npm run check` di matrix `ubuntu-latest` + `windows-latest` (Node dari `.nvmrc`), `permissions: contents: read`, concurrency cancel-in-progress. Action **dipin ke SHA 40-hex** (bukan tag mutable) sebagai kontrol supply-chain. Gate artefak kelas I-34: `test/ci-workflow.test.ts` memverifikasi pinning SHA, cakupan matrix dua-OS, `npm run check` terpanggil, dan least-privilege — supaya klaim lintas-OS proyek benar-benar dieksekusi, bukan sekadar diklaim di docs. - **`SECURITY.md`** — kanal disclosure (GitHub private vulnerability reporting; **bukan** issue publik), pernyataan jujur best-effort tanpa SLA, **model kepercayaan** (kredensial dibaca read-only, spawn CLI via PTY, state SQLite lokal, listener loopback hanya saat `acca web`, egress whitelist, nol telemetry, injection firewall ADR-013 + human-in-the-loop ADR-008), dan **batasan yang diketahui & diterima** (single-user desktop R-5/R-7, DACL named pipe Windows terbuka by design ADR-023/G-41, `acca web` tanpa auth by design ADR-028). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d899be6 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,51 @@ +# Contributing + +> **English:** `acca` is a solo-maintained, non-commercial project published mainly as a +> **worked example** of a doc-first workflow (see [README §Metodologi](README.md#metodologi-doc-first-repo-ini-sebagai-demonstrasi)). +> It is not looking for routine external contributions. You are very welcome to **read, fork, and +> reuse it** under the [Apache 2.0 license](LICENSE). For **security issues**, use private reporting — +> see [`SECURITY.md`](SECURITY.md), not a public issue. + +Terima kasih sudah menengok repo ini. Perlu jujur di depan soal apa yang repo ini *adalah* dan *bukan*, +supaya waktumu tak terbuang. + +## Apa repo ini + +`acca` di-maintain **solo**, **non-komersial**, dan dipublikasikan terutama sebagai **artefak +demonstrasi** dari metode kerja *doc-first* yang dibahas di [kampusmerah.com](https://kampusmerah.com). +Nilai utamanya buat pembaca luar bukan "alat siap-pakai untuk semua orang", tapi **jejak keputusan yang +bisa diperiksa apa adanya** — ADR, gotcha, threat model, dan ritual kerja yang ikut di-version-control. + +## Kontribusi eksternal + +Repo ini **tidak menerima pull request eksternal secara rutin.** Bukan karena tak menghargai — tapi +karena arah, scope, dan keputusan arsitekturnya sengaja dipegang satu orang sebagai bagian dari +eksperimen metode (setiap keputusan lewat ADR; lihat [`docs/DECISIONS.md`](docs/DECISIONS.md)). PR yang +tak diminta kemungkinan besar tidak di-merge. + +Yang **dipersilakan** dan justru diharapkan: + +- **Fork & pakai ulang.** Lisensi Apache 2.0 (+ patent grant) memang untuk itu — lihat [`NOTICE`](NOTICE) + untuk atribusi yang wajib ikut terdistribusi (§4d). +- **Belajar dari metodenya.** Kalau kamu datang dari tulisan di kampusmerah.com, mulai dari + [`README.md`](README.md) → [`docs/PROJECT.md`](docs/PROJECT.md) → [`docs/DECISIONS.md`](docs/DECISIONS.md). +- **Melaporkan kerentanan keamanan** — lewat jalur privat, **bukan** issue publik. Lihat + [`SECURITY.md`](SECURITY.md). + +## Kalau tetap ingin mengusulkan sesuatu + +Buka **diskusi dulu** (bukan langsung PR besar) dan jaga harapan tetap rendah soal merge. Sertakan +konteks yang cukup: masalah apa, kenapa, dan bagaimana ia cocok/berbenturan dengan keputusan yang sudah +*Locked* di [`docs/DECISIONS.md`](docs/DECISIONS.md) (ADR ber-status *Accepted* itu immutable — perubahan = +ADR baru yang men-supersede, bukan edit di tempat). + +## Tracker + +Pelacakan kerja **internal** ada di [`docs/ISSUES.md`](docs/ISSUES.md) (ID `I-`/`W-`/`F-`) dan status +per-sesi di [`docs/CONTEXT.md`](docs/CONTEXT.md) — bukan di GitHub Issues. Ini bagian dari metode +doc-first: keputusan dan status hidup di dokumen ter-version-control, bukan di tracker eksternal. + +## Lisensi kontribusi + +Dengan mengirim materi apa pun ke repo ini, kamu setuju materi itu dilisensikan di bawah +[Apache License 2.0](LICENSE) yang sama dengan proyek ini. diff --git a/docs/CONTEXT.md b/docs/CONTEXT.md index e0ca884..c98888c 100644 --- a/docs/CONTEXT.md +++ b/docs/CONTEXT.md @@ -1,11 +1,21 @@ # CONTEXT.md — status proyek > Update **tiap sesi**. Baca ini dulu sebelum kerja — jangan asumsikan status. +> **Baru di repo ini?** Doc ini = **jurnal status per-sesi** (catatan internal, padat jargon `ADR-`/`G-`/`I-`). +> Untuk memahami proyeknya, mulai dari [`../README.md`](../README.md) lalu [`PROJECT.md`](PROJECT.md) — bukan dari sini. --- ## Status saat ini +- **Terakhir diupdate:** 2026-07-20 (sesi **Linux, dgn owner** — **rapih-rapih dokumentasi pra-publik**). Step 0: sinkron `origin/main` (0/0), tree bersih, di branch `claude/new-session-sw1q2i`. Bukan sesi kode — persiapan berkas komunitas + metadata + sapuan akhir. **Tahapan yang dijalankan (usulan 4-tahap, disetujui owner):** + **(Tahap 0 — sapuan akhir kerahasiaan, verifikasi):** metadata commit author/committer diperiksa manual (`git log --all --format='%ae %ce'|sort -u`) → **100% noreply** (`noreply@anthropic.com` co-author + `ziffan@users.noreply.github.com` + `noreply@github.com`); nol email domain-pribadi. Ini jalur yang **tak terjangkau gate file-based** (G-61) — satu-satunya cara = cek manual metadata. Nol file rahasia tracked; path personal cuma fixture yang memang mencolok (`/home/ziffan/secret-project` dll). + **(Tahap 1 — metadata `package.json`):** temuan = `repository`/`bugs`/`keywords` semua `undefined`. Tambah `repository` (URL git kanonik `github.com/ziffan/auto-continue-cli-agent`) + `keywords`. **`bugs` sengaja dikosongkan** (kontribusi tertutup → tak ada public bug tracker; keamanan lewat PVR SECURITY.md; URL `/issues` yang salah lebih buruk drpd tak ada). `"private": true` tetap. + **(Tahap 2 — berkas komunitas, keputusan owner = TERTUTUP/demo-only):** `CONTRIBUTING.md` baru — repo = artefak demonstrasi solo/non-komersial, **PR eksternal tak diterima rutin** (fork & pakai-ulang Apache 2.0 dipersilakan; keamanan → SECURITY.md; tracker internal = docs/ISSUES.md, bukan GitHub Issues). **Tanpa** CODE_OF_CONDUCT / issue-PR template (sesuai posture tertutup). + **(Tahap 3 — keterbacaan docs, keputusan owner = reading-guide ringan):** 1-baris pointer di header `CONTEXT.md` & `ISSUES.md` ("baru di repo ini? mulai dari README/PROJECT — ini jurnal/tracker internal"). Additive, nol hard-delete, nol ubah isi. Semua link relatif file yang disentuh diverifikasi resolve. + **Verifikasi:** `npm install` (prepare→build sukses, 0 vuln) + `npm run check` HIJAU **704 pass / 54 file** (703 CI + 1 = file baru CONTRIBUTING ikut ter-enumerasi gate working-tree, persis perilaku bergantung-mesin D-5). Gate `no-canonical-limit-literals` + `ci-workflow` (email) lolos atas file baru. + **Tahap 4 = tetap tangan owner (P-1, tak berubah):** flip visibility → aktifkan PVR → tag `v0.1.0`+Release; set GitHub About (description+topics+website); **⚠️ hapus & clone-ulang repo di mesin Windows** sebelum kerja berikutnya (G-61 — `git pull` biasa menghidupkan commit ber-email lama). `.claude/skills/*` tetap sengaja publik. + - **Terakhir diupdate:** 2026-07-20 (sesi **Linux, dgn owner** — **lisensi Apache 2.0 (ADR-029) + kesiapan repo publik**). Step 0: sinkron dgn `origin/main` (0/0), tree bersih. Bukan sesi milestone — tak ada milestone aktif; ini kerja kesiapan rilis. **(1) Lisensi di-LOCK → ADR-029 (Accepted, owner Ziffany Firdinal).** Menutup Pending "Lisensi repo" yang menganggur sejak M0. Premis lama ("terkait rencana komersialisasi") **gugur** — owner menyatakan acca non-komersial; yang diinginkan = atribusi ke lab payung **kampusmerah.com** + author `ziffany.firdinal.my.id`. **Challenge dijalankan:** AGPL-3.0 + dual-license ditawarkan eksplisit (owner pemegang copyright tunggal → bisa jual lisensi komersial terpisah) → **ditolak owner**. **Apache 2.0 > MIT** krn patent grant §3 + klausa merek §6 + **§4(d): NOTICE wajib ikut terdistribusi** = atribusi melekat pada lisensi, bukan cuma README. Realisasi: `LICENSE` (teks kanonik apache.org **verbatim**, sha256 `cfc7749b…`, 202 baris — **di-`cp`, tidak digenerate model**; hanya placeholder appendix diisi) · `NOTICE` · `package.json` (`license`/`author`/`homepage`; **`"private": true` DIPERTAHANKAN**) · README `## Lisensi & dukungan`. **Tanpa header copyright per-file** (appendix = rekomendasi; 100+ file = noise, nol nilai hukum tambahan utk pemegang hak cipta tunggal). **(2) Audit kesiapan publik — NOL temuan kerahasiaan.** Dipindai working tree **+ seluruh git history** (186 file, `.git` 6.8 MB): nol secret (semua hit `sk-ant-…`/`ya29.` = fixture test palsu + 1 baris prosa ADR yang menjelaskan ruleset redaksi), nol email, nol UUID sesi nyata, nol data usage akun. Satu-satunya path personal = string fixture `'/home/ziffan/secret-project'` (disengaja mencolok). `.gitignore` sudah menutup `.env`/`*.db`/`data/`/`.internal/`. diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 3ab1f7e..91a4b36 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -1,5 +1,7 @@ # ISSUES.md — issue terbuka & indeks tertutup +> **Baru di repo ini?** Doc ini = **pelacak kerja internal** (ID `I-`/`W-`/`F-`, referensi `ADR-`/`G-`), **bukan** +> GitHub Issues. Untuk gambaran proyek mulai dari [`../README.md`](../README.md) & [`PROJECT.md`](PROJECT.md). > Prioritas: P0 (blocker) · P1 (penting) · P2 (mengganggu) · P3 (nanti). Ditutup = tulis solusinya. > **Writeup LENGKAP semua issue tertutup** (termasuk `
` bukti) → [`.archived/ISSUES-closed.md`](.archived/ISSUES-closed.md) (greppable, di luar jalur session-start). diff --git a/package.json b/package.json index c7a9f78..aedf70c 100644 --- a/package.json +++ b/package.json @@ -2,12 +2,25 @@ "name": "auto-continue-cli-agent", "version": "0.1.0", "description": "Supervisor lokal untuk memonitor usage & auto-continue sesi Claude Code / Antigravity CLI", + "keywords": [ + "claude-code", + "antigravity", + "cli", + "usage-limit", + "auto-continue", + "supervisor", + "developer-tools" + ], "license": "Apache-2.0", "author": { "name": "Ziffany Firdinal", "url": "https://ziffany.firdinal.my.id" }, "homepage": "https://kampusmerah.com", + "repository": { + "type": "git", + "url": "git+https://github.com/ziffan/auto-continue-cli-agent.git" + }, "type": "module", "private": true, "bin": {