Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
51 changes: 51 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -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.
10 changes: 10 additions & 0 deletions docs/CONTEXT.md
Original file line number Diff line number Diff line change
@@ -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/`.
Expand Down
2 changes: 2 additions & 0 deletions docs/ISSUES.md
Original file line number Diff line number Diff line change
@@ -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 `<details>` bukti) → [`.archived/ISSUES-closed.md`](.archived/ISSUES-closed.md) (greppable, di luar jalur session-start).

Expand Down
13 changes: 13 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down