Get started
Ingress çekirdeği silme planı
Giriş çekirdeği silme planı
Giriş yeniden düzenlemesi binlerce net satır eklerken sağlıklı değildir. Çekirdek merkezileştirme, yalnızca paketli Plugin üretim kodu küçüldüğünde ve eski üçüncü taraf SDK uyumluluğu SDK/çekirdek shim'lerine karantinaya alındığında sayılır.
İstenen çalışma zamanı şekli:
bundled plugin event
-> extract platform facts locally
-> resolve shared ingress once when facts are available
-> branch on generic ingress projections/outcomes
-> perform platform side effects locally
old third-party helper
-> SDK compatibility shim
-> shared ingress-compatible projection where possible
-> old return shape preserved
Paketli Plugin'ler, bu tür public Plugin API olmadıkça girişi yerel AccessResult,
GroupAccessDecision, CommandAuthDecision, DmCommandAccess veya
{ allowed, reasonCode } şekillerine geri çevirmemelidir.
Bütçe
İzlenmeyen dosyalar dahil olmak üzere PR merge-base'i origin/main ile
karşılaştırılarak ölçüldü.
merge-base 1671e7532adb
current:
core production +3,922 / -546 = +3,376
docs +601 / -17 = +584
other +145 / -2 = +143
plugin production +4,148 / -5,388 = -1,240
tests +2,326 / -2,414 = -88
total +11,142 / -8,367 = +2,775
required:
plugin production <= -1,500
core production <= +1,500, or paid for by larger plugin deletion
tests <= +1,000
total <= +2,000
stretch:
plugin production <= -2,500
core production <= +1,200
total <= 0
Minimum kalan temizlik:
plugin production needs 260 more net deleted lines
total needs 775 more net deleted lines
core production still +1,876 over standalone budget, unless paid down by plugin deletion
Yalnızca yorum silme temizlik sayılmaz. Önceki bütçe geçişi, geri yüklenen QQBot açıklayıcı yorumlarını içerdiği için fazla cömertti; bu belge yalnızca yürütülebilir/belge/test kodu hareketini izler.
Her temizlik dalgasından sonra yeniden ölçün:
base=$(git merge-base HEAD origin/main)
git diff --shortstat "$base"
git diff --numstat "$base" -- src/channels/message-access src/plugin-sdk extensions | sort -nr -k1 | head -n 80
pnpm lint:extensions:no-deprecated-channel-access
Tanı
İlk geçiş paylaşılan giriş çekirdeğini ekledi, ardından yanında çok fazla Plugin-yerel yetkilendirme bıraktı:
platform facts
-> shared ingress state and decision
-> plugin-local DTO or legacy projection
-> plugin-local if/else ladder
Bu, modeli yineler. Çekirdek üretim yaklaşık 3.376 satır büyürken paketli Plugin üretimi 1.240 satır küçüldü. Bu, ilk geçişten daha iyi, ancak minimum bütçenin içinde değil. Çözüm hâlâ silme önceliklidir:
- yalnızca giriş alanlarını yeniden adlandıran Plugin DTO'larını silin
- yalnızca sarmalayıcı şeklini doğrulayan testleri silin
- çekirdek yardımcılarını yalnızca aynı yama paketli Plugin kodunu sildiğinde ekleyin
- eski SDK uyumluluğunu yalnızca SDK/çekirdek shim'lerinde tutun
- sarmalayıcı silme kararlı şekli ortaya çıkardıktan sonra çekirdeği yeniden paketleyin
Sıcak Noktalar
Hâlâ küçülmesi gereken pozitif paketli üretim dosyaları:
extensions/telegram/src/ingress.ts +126
extensions/discord/src/monitor/dm-command-auth.ts +101
extensions/signal/src/monitor/access-policy.ts +92
extensions/feishu/src/policy.ts +85
extensions/slack/src/monitor/auth.ts +64
extensions/googlechat/src/monitor-access.ts +59
extensions/nextcloud-talk/src/inbound.ts +51
extensions/matrix/src/matrix/monitor/access-state.ts +49
extensions/irc/src/inbound.ts +44
extensions/imessage/src/monitor/inbound-processing.ts +36
extensions/qa-channel/src/inbound.ts +34
extensions/qqbot/src/bridge/sdk-adapter.ts +33
extensions/tlon/src/monitor/utils.ts +30
extensions/twitch/src/access-control.ts +22
extensions/qqbot/src/engine/commands/slash-command-handler.ts +20
extensions/telegram/src/bot-handlers.runtime.ts +19
Dal henüz minimum bütçenin içinde değil. Kalan incelemeyle ilgili çalışma, başka bir çekirdek soyutlaması eklemeden önce yinelenen yetkilendirme akışını, turn iskele kodunu veya sarmalayıcı testlerini silmelidir.
Geçerli Kod Okuması
Sağlıklı çekirdek dikişi zaten src/channels/message-access/runtime.ts içinde var:
kimlik bağdaştırıcıları, etkin izin listeleri, eşleştirme deposu okumaları, rota
tanımlayıcıları, komut/olay preset'leri, erişim grupları ve son çözümlenmiş
ResolvedChannelMessageIngress projeksiyonu ona aittir.
Kalan büyüme çoğunlukla bu dikişin üstüne katmanlanan Plugin yapıştırıcısıdır:
extensions/telegram/src/ingress.tsçekirdek kararlarını Telegram'a özgü komut/olay yardımcılarında sarmalar, ardından çağrı noktaları hâlâ önceden hesaplanmış normalleştirilmiş izin listelerini ve sahip listelerini geçirir.extensions/discord/src/monitor/dm-command-auth.ts,extensions/feishu/src/policy.ts,extensions/googlechat/src/monitor-access.tsveextensions/matrix/src/matrix/monitor/access-state.tshâlâ girişin yanında yerel ilke DTO'larını veya eski karar adlarını tutar.extensions/signal/src/monitor/access-policy.tsSignal kimlik normalleştirmesini ve eşleştirme yanıtlarını doğru biçimde yerel tutar, ancak hâlâ doğrudan giriş tüketimine çökmelidir.extensions/nextcloud-talk/src/inbound.ts,extensions/irc/src/inbound.ts,extensions/qa-channel/src/inbound.ts,extensions/zalo/src/monitor.tsveextensions/zalouser/src/monitor.tshâlâ giriş çekirdeği dışındaki paylaşılan turn yardımcılarına taşınabilecek rota/zarf/turn derlemesini yineler.
Sonuç: Çekirdeğe daha fazla kod taşımak, yalnızca aynı yamada bu Plugin sarmalayıcı katmanlarını silerse yararlıdır. Sarmalayıcı dönüşleri yerinde kalırken başka bir soyutlama eklemek aynı hatayı yineler.
Sınır
Çekirdek genel ilkeye sahiptir:
- izin listesi normalleştirmesi ve eşleştirmesi
- erişim grubu genişletmesi ve tanılamaları
- eşleştirme deposu DM izin listesi okumaları
- rota, gönderen, komut, olay ve aktivasyon geçitleri
- kabul eşlemesi: dispatch, drop, skip, observe, pairing
- redakte edilmiş durum, kararlar, tanılamalar ve SDK uyumluluk projeksiyonları
- kimlik, rota, komut, olay, aktivasyon ve sonuçlar için yeniden kullanılabilir genel tanımlayıcılar
Plugin'ler taşıma gerçeklerine ve yan etkilere sahiptir:
- Webhook/soket/istek özgünlüğü
- platform kimliği çıkarma ve API aramaları
- kanala özgü ilke varsayılanları
- eşleştirme sınaması teslimi, yanıtlar, ack'ler, tepkiler, yazıyor göstergesi, medya, geçmiş, kurulum, doctor, durum, günlükler ve kullanıcıya dönük kopya
Çekirdek kanal-bağımsız kalmalıdır: src/channels/message-access içinde
Discord, Slack, Telegram, Matrix, oda, sunucu, alan, API istemcisi veya
Plugin'e özgü varsayılan olmamalıdır.
Kabul Kuralı
Her yeni çekirdek yardımcısı paketli Plugin üretim kodunu hemen silmelidir.
one bundled caller reject; keep plugin-local
two bundled callers accept only if plugin production LOC drops
three or more callers plugin deletion must be at least 2x new core LOC
compatibility-only helper SDK/core shim only; never bundled hot paths
Şu durumlarda durun ve yeniden tasarlayın:
- Plugin üretim LOC'u artarsa
- testler üretimin küçülmesinden daha hızlı büyürse
- paketli bir sıcak yol yalnızca
ResolvedChannelMessageIngressöğesini yeniden adlandıran bir DTO döndürürse - çekirdek yardımcısı bir kanal id'si, platform nesnesi, API istemcisi veya kanala özgü varsayılan gerektirirse
Çalışma Paketleri
-
Bütçeyi dondurun. LOC'u PR'ye koyun, deprecated-ingress lint'i yeşil tutun ve temizlik commit'lerine önce/sonra LOC ekleyin.
-
İnce DTO dikişlerini silin. Plugin-yerel sarmalayıcı dönüşlerini doğrudan
ResolvedChannelMessageIngress,senderAccess,commandAccess,routeAccessveyaingressile değiştirin. QQBot, Telegram, Slack, Discord, Signal, Feishu, Matrix, iMessage ve Tlon ile başlayın. Sarmalayıcı-şekli testlerini silin; davranış testlerini koruyun. -
Sonuç sınıflandırmasını yalnızca silmelerle ekleyin. Genel bir sınıflandırıcı
dispatch,pairing-required,skip-activation,drop-command,drop-route,drop-sendervedrop-ingressaçığa çıkarabilir. Reason string'lerden değil karar grafiğinden türemeli ve aynı yamada en az üç Plugin'i taşımalıdır. -
Rota tanımlayıcı oluşturucularını yalnızca silmelerle ekleyin. Genel rota hedefi ve rota gönderen yardımcıları, yalnızca rota-ağırlıklı Plugin'leri hemen küçültürse kabul edilebilir: Google Chat, IRC, Microsoft Teams, Nextcloud Talk, Mattermost, Slack, Zalo ve Zalo Personal.
-
Komut/olay preset'lerini yalnızca silmelerle ekleyin. Metin-komutu, yerel-komut, callback ve origin-subject şekillerini merkezileştirin. Komut tüketicileri, komut geçidi çalışmadığında varsayılan olarak yetkisiz olmalıdır; olaylar eşleştirmeyi başlatmamalıdır.
-
Kimlik preset'lerini yalnızca kalıp kodu kaldırdıkları yerde paylaşın. Kararlı-id, kararlı-id-artı-takma-adlar, telefon/e164 ve çoklu-tanımlayıcı yardımcılarına, ham değerler yalnızca bağdaştırıcı girdisine girdiğinde ve redakte edilmiş durum opak id'leri/sayıları tuttuğunda izin verilir.
-
Yetkili turn derlemesini paylaşın. Giriş çekirdeği dışında, QA Channel, IRC, Nextcloud Talk, Zalo ve Zalo Personal'dan yinelenen rota/zarf/bağlam/yanıt iskele kodunu kaldırın. Çekirdek rota/oturum/zarf/dispatch sıralamasına sahip olabilir; Plugin'ler teslimi ve kanala özgü bağlamı tutar.
-
Uyumluluğu karantinaya alın. Kullanımdan kaldırılmış SDK yardımcıları kaynak-uyumlu kalır, ancak paketli sıcak yollar kullanımdan kaldırılmış giriş veya command-auth facade'larını içe aktarmamalıdır. Uyumluluk testleri paketli-Plugin internals yerine sahte üçüncü taraf Plugin'leri kullanmalıdır.
-
Çekirdeği yeniden paketleyin. Sarmalayıcı silmeden sonra tek-kullanımlı modülleri daraltın, kullanılmayan export'ları kaldırın, uyumluluk projeksiyonunu sıcak yolların dışına taşıyın ve kimlik, rota, komut/olay, aktivasyon, erişim grupları ve uyumluluk shim'leri için odaklı testleri koruyun.
Silme Dalgaları
Bunları sırayla çalıştırın. Her dalga paketli üretim LOC'unu azaltmalıdır.
-
Sarmalayıcı çökertme, beklenen Plugin deltası: -400 ile -600. Plugin-yerel
resolveXAccess,resolveXCommandAccessveaccessFromIngresssonuç türlerini doğrudanResolvedChannelMessageIngressokumalarıyla değiştirin. İlk hedefler: Discord DM command auth, Feishu policy, Matrix access state, Telegram ingress, Signal access policy, QQBot SDK adapter. -
Paylaşılan sonuç yardımcıları, beklenen Plugin deltası: -200 ile -350. Genel bir sınıflandırıcıyı yalnızca en az üç Plugin genelinde yinelenen
shouldBlockControlCommand, eşleştirme, aktivasyon atlama, rota engelleme ve gönderen engelleme merdivenlerini siliyorsa ekleyin. -
Rota tanımlayıcı oluşturucular, beklenen Plugin deltası: -200 ile -350. Yinelenen rota hedefi ve rota gönderen tanımlayıcı derlemesini çekirdek yardımcılara taşıyın. İlk hedefler: Google Chat, IRC, Microsoft Teams, Nextcloud Talk, Mattermost, Slack, Zalo, Zalo Personal.
-
Turn derlemesi paylaşımı, beklenen Plugin deltası: -250 ile -450. Basit gelen Plugin'ler için ortak rota/oturum/zarf/dispatch sıralamasını kullanın. İlk hedefler: QA Channel, IRC, Nextcloud Talk, Zalo, Zalo Personal.
-
Çekirdek yeniden paketleme, beklenen çekirdek deltası: -300 ile -700. Plugin'ler çalışma zamanı projeksiyonlarını doğrudan tükettikten sonra tek-kullanımlı modülleri silin, küçük dosyaları yeniden
runtime.tsiçine veya odaklı kardeşlere birleştirin ve SDK uyumluluk dosyalarını paketli sıcak yollardan ayrı tutun. -
Test budama, beklenen test deltası: -300 ile -600. Yalnızca kaldırılmış sarmalayıcı şekillerini doğrulayan testleri silin. Komut reddi, grup fallback'i, origin-subject eşleştirmesi, aktivasyon atlama, erişim grupları, eşleştirme ve redaksiyon için davranış testlerini koruyun.
Bu dalgalardan sonra beklenen minimum landing şekli:
plugin production <= -1,500
core production about +1,800 to +2,200 before final repack
tests <= +500
total <= +2,000
Taşımayın
Platform yapılandırma varsayılanlarını, kurulum kullanıcı deneyimini, doctor/fix kopyasını, API aramalarını, Slack sahip varlığı kontrollerini, Matrix takma ad/doğrulama işlemeyi, Telegram callback ayrıştırmasını, komut söz dizimi ayrıştırmasını, yerel komut kaydını, tepki yükü ayrıştırmasını, eşleştirme yanıtlarını, komut yanıtlarını, onayları, yazıyor durumunu, medyayı, geçmişi veya günlükleri taşımayın.
Doğrulama
Hedefli yerel döngü:
pnpm lint:extensions:no-deprecated-channel-access
pnpm test src/channels/message-access/message-access.test.ts src/plugin-sdk/channel-ingress-runtime.test.ts src/plugin-sdk/access-groups.test.ts
pnpm test extensions/<changed-plugin>/src/...
pnpm plugin-sdk:api:check
pnpm config:docs:check
pnpm check:docs
git diff --check
LOC eğilimi bütçe içinde olduğunda geniş değişiklik kapıları/tam paket kanıtı için Testbox kullanın.
Her iş paketi şunları kaydeder:
- kategoriye göre önce/sonra LOC
- silinen plugin sarmalayıcıları
- varsa yeni core yardımcı LOC
- çalıştırılan hedefli testler
- kalan etkin nokta listesi
Çıkış Kriterleri
- paketlenmiş üretim içe aktarımları, kullanımdan kaldırılmış channel-access veya command-auth cephelerini kullanmaz
- uyumluluk kodu SDK/core dikişleriyle sınırlandırılmıştır
- paketlenmiş plugin'ler ingress projeksiyonlarını veya genel sonuçları doğrudan tüketir
- plugin üretim LOC değeri
origin/mainkarşısında net en az 1.500 negatiftir - core üretim LOC değeri
<= +1,500olur veya toplam<= +2,000kalırken herhangi bir fazlalık telafi edilir - temsili testler redaksiyon, rota, komut/olay, aktivasyon, access-group ve kanala özgü geri dönüş davranışını kapsar