S552 · R1 ekran: input focus ve dokunma olayı yönlendirme modeli
S552 kaynak/host model kapısı PASS'tir: GT911-benzeri decoder soyutlamasından gelen dokunma frame'lerini, capability ile korunan bir focus stack'i (owner task INPUT WAIT hakkını verir; GRANT/REVOKE yalnız owner'dadır), z-sıralı dikdörtgen surface hit-testing'ini ve track başına Down/Move/Up olay dönüşümünü modelleyen saf bir durum makinesi eklendi. Her task için kapasitesi 32 olan sınırlı olay kuyruğu taşmada en eski olayı düşürüp sayar; olay sıra numaraları kesin monoton artar; focus revoke kuyruğu boşaltıp aktif track'leri bırakır ve odaksız task'a hiçbir olay teslim edilmez. Bilinmeyen task/surface, eksik hak, bozuk frame (5'ten fazla nokta, tekrar eden track id, panel dışı koordinat, monoton olmayan frame sırası) ve yayın sonrası sapma 21 ayrı nonzero diagnostic kodla fail-closed reddedilir. Focused 19/19 PASS'tir; S540 ve S543 fiziksel RED immutable kalır; physical observation=0, donanım yok, production callsite yok ve RUNBOOK_EXECUTED_IN_S552=NO'dur. S553 yönlendirilen olayları tüketen sistem UI kilit/durum/ayarlar sahne akışı modelidir.
Doğrulanan kanıt
- S552, S551'den ayrı kaynak modülü, 19-test focused binary, proof, status manifest, Operations kaydı ve complete Code kartına sahiptir; hiçbir production callsite, IRQ, scheduler veya sürücü yoluna bağlanmaz.
- Dar S552 source-model status=PASS; R1 umbrella=PARTIAL, R1 stage=2 (Ekran, dokunma ve temel UI) ve S540/S543 physical gate status=RED olarak ayrı tutulur.
- Focus stack derinliği 8'dir; focus grant, granter'da GRANT ve hedef task'ta WAIT hakkı ister; hedef stack'in tepesine taşınır ve dolu stack FocusStackFull ile reddedilir.
- Input hakları ipc.rs/ui/capability.rs notification sözlüğüyle hizalı SIGNAL/WAIT/GRANT/REVOKE bitleridir; yalnız WAIT grant edilebilir; NONE veya 4-bit maske dışı bitler InvalidRightsMask, GRANT/REVOKE/SIGNAL istekleri NonGrantableRights verir.
- Surface tablosu 8 dikdörtgenle sınırlıdır; kayıt checked add ile 720x1280 panel sınırını, boş olmayan boyutu, benzersiz id ve benzersiz z'yi zorlar; aynı id altında farklı dikdörtgen SurfaceDrift'tir.
- Frame doğrulaması mutasyondan önce yapılır: en fazla 5 nokta, track id 0..=9, panel içi koordinat, tekrar eden track id yok ve frame sırası son yönlendirilen frame'den kesin büyük.
- Yeni track en yüksek z'li kapsayan surface'a hit-test edilir; Down yalnız o surface odaklı task'a aitse teslim edilir, aksi halde unfocused_drops (surface yoksa missed_hits) sayılır; tutulan track odak sürdükçe Move üretir; frame'de bulunmayan track son konumunda Up üretip bırakılır.
- Task başına kuyruk kapasitesi 32'dir; taşmada en eski olay düşürülür ve overflow_drops hem frame özetinde hem receipt'te sayılır; 40 ardışık olayda 8 drop ve en eski kalan sıra=9 doğrulanmıştır.
- Olay sıra numarası u64 olarak 1'den başlar, checked add ile kesin monoton artar ve tükenme EventSequenceExhausted verir.
- Focus revoke REVOKE hakkı ister; hedef stack'ten çıkar, kuyruğu flushed_events sayacıyla boşaltılır, tuttuğu track'ler bırakılır ve önceki stack girdisi yeniden odak olur.
- Yayınlanan routing receipt tüm sayaçları anlık görüntüler; exact replay Retained döner, sonraki her sayaç veya tablo değişikliği PublishedStateDrift ile fail-closed reddedilir.
- 21 hata varyantı 1..=21 aralığında nonzero ve benzersiz diagnostic kod taşır.
- Kaynakta unsafe, asm!, write_volatile, crate::uart, crate::arch, #[no_mangle], spin:: veya std:: yoktur; yalnız core ve alloc kullanılır.
- Focused target 1 grup / 19 passed / 0 failed / 0 ignored / 0 filtered verdi.
- Implementation 24732 B / 53f16cdfed1fb4a35d28657a6f1f7b89e8340598b1d2ca7757a3d6d84b23df03; focused test 24345 B / de18a23774933496cdfa181c6ea5e8d22eefd98370e12225f6fa9e23f8d96f9f SHA-256'dır.
- Proof 4753 B'dir.
- S540 immutable raw 20525 B ve S543 immutable raw 20509 B fiziksel RED olarak byte-exact korunur; automatic promotion=false ve rerun=false'dur.
- S552 sırasında SD write/read-back/eject, UART open/capture, power transition, dokunma denetleyicisi, panel, I2C veya board gözlemi yapılmadı; S546 kararı varsayılmaz.
- RUNBOOK_EXECUTED_IN_S552=NO; supported-profile runtime observations=0, physical observations=0, hardware present=false, Boot-to-UI physically observed=false ve R1 acceptance=false'dur.
- S553 yönlendirilen input olaylarını tüketen sistem UI kilit/durum/ayarlar sahne akışını yalnız host üzerinde modelleyecektir; aygıt veya fiziksel koşu yetkisi değildir.
Sınır / bekleyen kanıt
- S552 yalnız host üzerinde derlenen ve focused testle sürülen bir modeldir; hiçbir donanım/panel/modem/board gözlemi yoktur.
- Model hiçbir production boot, IRQ, scheduler veya sürücü yoluna bağlanmamıştır; gerçek GT911 decoder veya I2C trafiği ile beslenmemiştir.
- S540 ve S543 fiziksel RED immutable kalır; otomatik yükseltme yoktur ve S546 kararı varsayılmaz.
- Boot-to-UI fiziksel gözlemi false ve R1 acceptance false kalır.
- S553 sistem UI kilit/durum/ayarlar sahne akışı modelini yalnız host üzerinde ekler; yeni SD/UART/power koşusu ayrı kapı, fresh target revalidation ve açık operatör yetkisi ister.
Terminal komutları ve gerçek yanıtlar
S552 kaynak/host model PASS'tir; supported-profile runtime veya fiziksel PASS değildir. S540 ve S543 RED raw ve kararları değişmez.
$ CARGO_INCREMENTAL=0 cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s552_r1_input_focus_touch_event_routing_model -- --test-threads=1test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
S552 focused=1 group / 19 passed / 0 failed
hardware=none physical=0 runbook=NO