Status: dikunci 2026-09-26 (default plan DS; override hanya via PR). Fase B (Flutter SQLite) tidak dimulai sampai gate DS hijau.
Legenda: [x] dikunci.
- Repo:
sambasku/database= satu-satunya sumber publik dataset (bukan monorepo, bukan backup). - Sumber export pertama: staging. Production belakangan (channel sama / Release berikutnya setelah siap).
- Lisensi: MIT di root cukup untuk v1; notice data bisa menyusul di README bila legal minta.
- Trigger Release DS: maintainer CLI /
workflow_dispatchsaja. Console = Fase D.
- Allowlist
v1.mdcukup untuk search + detail + list A-Z v1. - Count sosial / vote / komentar: tetap API (bukan snapshot).
-
discussionspermanen di luar dataset (API + L1). - Referensi (
languages,dialects,word_classes,categories): export semua baris aktif (deleted_at IS NULL).
-
users: Tidak diekspor (tabel penuh). - Atribusi offline: (A) kosong di L2 (tanpa "dibuat oleh").
- N/A (karena A).
- Semua FK
*_bystrip. - Metadata takedown / soft-delete strip (baris sudah di-filter).
-
notespada words/meanings/examples: ikut (anggap publik). -
lemma_allows_comma/translation_allows_comma: tidak masuk L2. - Images/audios:
url+ metadata tampilan;provider/provider_file_id/shatidak masuk.
- Anak:
status = 'published'+deleted_at IS NULL(jika kolom ada). - Meaning placeholder (
-/is_have_definition = false): tetap masuk. - Relasi: kedua ujung published; lag takedown sampai release berikutnya = OK.
- Browse A-Z filter
kasar/diskriminatif: di query konsumen (Fase B); export tetap full published.
- Tokenizer FTS5:
unicode61. - Kolom FTS: lemma + variant forms + translation text (bukan definition/examples di v1).
- Search lokal v1: FTS (kontrak); hybrid LIKE boleh ditambah di B bila parity kurang.
- Ranking lokal boleh beda dari API di v1 (dokumentasikan).
-
matched_variant/matched_translation: wajib diusahakan parity di konsumen B; export cukup data sumber (variants + translations).
- Kolom non-breaking (nullable): tetap
schema_version = 1+ release data. - Breaking (wajib/rename/hapus): naik
schema_version+min_app_version. - Tabel baru production: default tidak masuk sampai allowlist + tes.
- App lama tolak schema lebih tinggi: copy "Perbarui aplikasi" (Fase B); diam di DB lama sampai update.
- Device: selalu full replace (bukan ALTER).
- Pointer:
metadata/active.json. - Gzip > ~12 MB: warning saja, boleh lanjut.
- SLA: on-demand (maintainer); sensitif takedown = release segera.
- Sha256 sama dengan aktif: jangan buat Release baru.
- Satu repo; field opsional
channeldi manifest nanti bila perlu (v1 = staging dulu).
- Tes forbidden wajib. Assert minimal: tabel
users,auth_identities,refresh_tokens,contributions,audit_logs,votes,comments,bookmarks,discussions; kolomcreated_by,updated_by,deleted_by,verified_by,taken_down_by,takedown_reason_code,takedown_note,password_hash,email. - Larangan keras sudah di README; CODEOWNERS opsional menyusul.
- Search-miss analytics: hanya jalur remote (kontrak B).
- Hybrid A tetap (search CTA; feed/deep-link remote-once + badge).
- Remote-once tidak ditulis ke file SQLite release.
- First-run B: URL dari
https://raw.githubusercontent.com/sambasku/database/main/metadata/active.json
| # | Jawaban |
|---|---|
| 1-4 | Repo database; staging dulu; MIT; CLI trigger |
| 5-8 | Allowlist v1; sosial/TH = API; ref = semua aktif |
| 9-16 | No users; atribusi kosong; strip *_by/takedown; no comma flags; media URL only |
| 17-20 | Child published; placeholder OK; browse filter di konsumen |
| 21-25 | unicode61; lemma+variant+translation; ranking beda OK |
| 26-30 | Non-breaking = v1; breaking naik schema; full replace |
| 31-35 | active.json; warning ukuran; on-demand; skip bila sha sama |
| 36-41 | Tes forbidden; Hybrid A kontrak; active.json raw URL |