Minor Changes
-
85517b8: Tutup empat temuan analisis graph: wire resolusi asset theming, lengkapi
deklarasi permissionemail, jujurkan graf dependensi lintas-modul, dan
tambahkan gate batas modul yang selama ini SUDAH DIASUMSIKAN ADA.Logo tema akhirnya tampil.
src/lib/theming/theme-media.tsmengembalikan
map kosong tanpa syarat. Itu jujur saat ditulis — ADR-0034 Fase 3 mem-port
theminglebih dulu danmedia_librarybelum ada — tapi header-nya tetap
berkata begitu setelah ADR-0036 mendaratkan modulnya, sehingga no-op itu terbaca
sebagai desain, bukan wiring yang belum selesai. Akibatnya tak pernah tercatat:
tenant mengunggah logo, id-nya tersimpan dan valid, danPublicThemeLayout
selamanya merender fallback nama-tema. Kini resolusi lewatMediaLibraryPort
— capability yang sama yang sudah dikonsumsiblog_contentdannews_portal.
Slot yang tidak resolve tetap DIHILANGKAN, bukan melempar: halaman tema publik
tidak boleh 500 karena satu id asset basi.themingsekarang mendeklarasikan
capabilities.consumesuntukmedia_library.emailmendeklarasikan 12 permission-nya, verbatim dari seedsql/014.
Ia satu-satunya dari 21 modul yang belum, sehingga seluruh barisnya permanen
tampilorphaneddiGET /api/v1/modules/email/permissions— false positive
menetap yang melatih pembaca mengabaikan laporan drift. Kini 21/21.Enam edge lintas-modul tak-terdeklarasi dijujurkan.
seo_distribution,
site_search, dancommentsmeng-import modul yang tidak ada di descriptor-nya;
semuanya kini dideklarasikan, tanpa satu pun cycle.
domain_event_runtime -> reportingTIDAK bisa dideklarasikan —reporting
sudah mendeklarasikan arah sebaliknya, jadi mendeklarasikannya = cycle — dan
menjadi satu-satunya pengecualian tercatat, dengan alasan yang bisa dibantah
reviewer.tests/module-boundary.test.ts.capability-contract-versions.tsselama
ini membenarkan capability tanpa versi dengan kalimat "a source-boundary test
(tests/unit/module-boundary.test.ts) is enough to keep provider and consumer
in sync". Berkas itu tidak pernah ada di repo ini — kalimatnya ikut ter-port
dari awcms-mini, test-nya tidak. Jaring pengaman yang dinyatakan untuk seluruh
model capability itu imajiner. Sekarang nyata: tiap import lintas-modul wajib
dideklarasikan sebagai dependency, sebagai capability consumption, atau
dikecualikan eksplisit dengan alasan.
Patch Changes
-
1d49f37: Sinkronkan docs/skill dengan #251/#252, dan catat satu split-brain
navigation
yang ditemukan lewat graph.Lima skill mengklaim hal yang sudah tidak benar setelah #251:
awcms-themingmasih menyebut resolusi URL asset "masih no-op" (sudah ter-wire
lewatMediaLibraryPort);awcms-module-managementmasih menyebut "20 dari 21
modul" mendeklarasikanpermissions(kini 21/21, sehinggaorphanedbukan lagi
kondisi normal dan setiap kemunculannya adalah sinyal nyata); dan
awcms-comments/awcms-site-search/awcms-seo-distributionmasih mengiklankan
deps "Core-only" padahal ketiganya kini mendeklarasikan modul yang memang mereka
import.ARCHITECTURE.mdkini menyebuttests/module-boundary.test.tsdi sebelah tiga
gate modul lainnya, dengan alasannya: ketiganya memvalidasi graf yang
DIDEKLARASIKAN dan tak satu pun membaca satu barisimport.
13_final_master_index_traceability.mdmenyatakan "23 modul terdaftar" — angka
awcms-mini; nyatanya 21.Temuan graph —
navigationpunya dua sumber yang tidak pernah
direkonsiliasi.ModuleDescriptor.navigationnyata dikonsumsi (disinkronkan
keawcms_module_navigation, disajikannavigation-registry.ts, divalidasi
module-composition.ts) dan lima modul mendeklarasikannya — tetapi sidebar
admin merendernavSections, array statis diAdminLayout.astro. Jadi
mendeklarasikannavigationmenghasilkan baris DB dan entri API, bukan link
menu; sebaliknya/admin/tenanttampil di sidebar tanpa descriptor apa pun.
Dicatat di skill pemiliknya, tidak "diperbaiki" sepihak: sisi API sudah punya
konsumen, jadi menyatukannya adalah keputusan desain.Graph di-refresh ke
deb43028(7534 node, 21084 edge, 435 community, nol import
cycle level-berkas). -
deb4302: Refresh knowledge graph ke
85517b8b(7534 node, 21084 edge, 434 community; nol
import cycle level-berkas) dan koreksi satu klaim usang diPROJECT_STATE.md.Dokumen itu masih menyatakan emisi purge cache tepi "belum" terpasang untuk
theming— padahal #246 sudah memasangnya di publish/rollback/retire. Sekaligus
menjelaskan kenapanews_portal/media_librarysengaja TIDAK: keduanya tidak
memiliki surface ter-deklarasi, jadi ban untuk key-nya tak akan cocok apa pun
sementara antrean tetap melapor sukses — dan gateedge-cache:surfaces:check
akan memunculkan kewajibannya sendiri begitu salah satunya mendeklarasikan
surface.