asepharyana 045cdf1f75 fix(gateway): align stuck-recovery threshold with batch timeout (300s→120s)
recovery-worker used a hardcoded STUCK_PROCESSING_AGE_MS=300_000 while
messagesCleanup's default and AI_ANALYSIS_PROCESSING_TIMEOUT_MS are both
120s. Rows stuck between 2 and 5 minutes were never reverted by the
recovery worker — they looked permanently stuck (and accumulated under
load) even though the batch budget had long passed. Now derives the
threshold from config so the two knobs can never drift again.
2026-09-24 17:52:17 +07:00

docs/ — Spec-Driven Development Hub

Direktori ini adalah pusat dari workflow spec-driven development di GMW. Semua perubahan signifikan dimulai dari satu spec, sebelum kode ditulis, dan setiap tugas yang berjalan dilacak lewat todo.md.

Struktur

docs/
├── README.md                 # Dokumen ini
├── spec-template.md          # Template standar untuk semua spec
├── todo-template.md          # Template todo list
└── specs/                    # Semua spec dan implementation plan
    ├── YYYY-MM-DD_<slug>-spec.md   # Spec (apa & mengapa)
    └── YYYY-MM-DD_<slug>.md        # Plan/fix (bisa langsung spec+plan)

Naming convention

YYYY-MM-DD_<slug>-spec.md     # Spec baru untuk fitur/fix
YYYY-MM-DD_<slug>.md          # Plan yang sudah include spec di dalamnya

Contoh:

  • 2026-08-30_recordings-v2-features-spec.md — spec untuk Recordings v2
  • 2026-08-24-attachment-delay-fix.md — spec + plan untuk attachment delay fix

Service-specific docs

services/<service>/docs/specs/  # Spec yang spesifik untuk 1 service

Workflow: Spec-Driven Development

Prinsip utama

No code without a spec. Semua perubahan signifikan harus punya spec terlebih dahulu. Spec adalah kontrak: apa yang akan dibangun, mengapa, dan bagaimana memverifikasinya.

Todo list (todo.md) — WAJIB

Setiap tugas berjalan (implementasi fitur/fix) harus punya todo.md:

# Todo — <judul tugas>

## Task
- [ ] Tulis spec
- [ ] Verifikasi facts (baca kode: file:line)
- [ ] Implementasi tahap 1: ...
- [ ] Implementasi tahap 2: ...
- [ ] Verifikasi: pnpm typecheck / lint / build / test
- [ ] Commit + push

Aturan todo.md:

  • Task konkret & verifiable — "ubah X di file Y", bukan "fix bug".
  • Satu task [in_progress] pada satu waktu; ceklis [x] segera setelah selesai.
  • Gunakan docs/todo-template.md sebagai template.
  • Simpan todo.md di docs/ (tugas lintas-service) atau di services/<service>/docs/ (tugas satu service).

Kapan perlu spec + todo

Perlu spec + todo Tidak perlu
Fitur baru Typo fix
Bug fix non-trivial Dependency bump (dependabot)
Refactor yang mengubah behavior Format/lint auto-fix
Perubahan DB schema Test-only change
Perubahan API contract README/doc update
Perubahan arsitektur Variable rename

Workflow step-by-step

  1. Tulis spec — Salin docs/spec-template.md, isi semua section yang relevan.

    • Verified facts: baca kode yang terpengaruh, catat temuan dengan file:line.
    • Root cause: analisis sebab (jangan hanya describe symptom).
    • Decisions: pilih pendekatan, jelaskan alternatif yang ditolak.
    • Verification: command executable, bukan "should work".
    • Simpan sebagai docs/specs/YYYY-MM-DD_<slug>-spec.md.
  2. Tulis todo.md — Pecah spec jadi task konkret yang bisa diceklis (gunakan docs/todo-template.md), dengan urutan implementasi yang logis.

  3. Review spec — Baca ulang spec sendiri. Cek:

    • Apakah verified facts benar-benar verified (bukan asumsi)?
    • Apakah file changes lengkap (tidak ada yang terlewat)?
    • Apakah verification steps executable?
    • Jika spec untuk user request: pastikan user setuju dengan approach.
  4. Implement — Ikuti spec + todo step-by-step. Ceklis [x] setiap task yang selesai. Jika menemukan sesuatu yang berubah dari asumsi spec, update spec dulu, baru implement.

  5. Verify — Jalankan semua verification steps di spec. Catat hasilnya.

  6. Commit — Reference spec di commit message:

    feat(module): deskripsi singkat
    
    Ref: docs/specs/YYYY-MM-DD_<slug>-spec.md
    

Tips menulis spec yang baik

  • Evidence-based: setiap klaim harus ada sumbernya (file:line, log, error).
  • Actionable: orang lain (atau AI agent) harus bisa implementasi dari spec saja.
  • Verifiable: setiap requirement harus bisa di-test secara eksplisit.
  • Scoped: satu spec = satu perubahan terfokus. Jangan campur 3 fitur dalam 1 spec.
  • Bahasa campuran: narrative boleh Indonesia/English, istilah teknis pakai English.

Role of AI agents

AI coding agents (Shiro Neko / Hermes) harus:

  • Membaca spec sebelum menulis kode
  • Membuat & meng-update todo.md untuk setiap tugas berjalan
  • Verifikasi fakta dari kode aktual (bukan dari asumsi training data)
  • Update spec jika temuan baru mengubah approach
  • Jalankan verification steps setelah implementasi
  • Reference spec di commit message

AI agents tidak boleh:

  • Langsung implement tanpa membaca/menulis spec
  • Mengabaikan verified facts yang bertentangan dengan asumsi
  • Skip verification steps
  • Mengerjakan tugas tanpa todo list yang jelas
S
Description
Bete Discord moderation watcher
Readme
29 MiB
Languages
TypeScript 95.8%
CSS 1.4%
Shell 1%
Nix 0.9%
PLpgSQL 0.5%
Other 0.4%