ASELSANMicrokernel
S149 · SOURCE-BOUND GATE EVIDENCE

K2: IPC deadline saturation, bounded drain ve slot recovery

Operations --test hedefi → focused test içindeki include_str!/#[path] bağı → kaynak kesiti Bu sayfa yalnız S149 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S149Focused kod testiOperations id exactsource SHA exacttest target exact

operation: k2-ipc-deadline-saturation-recovery-partial

uygulama/model · focused test · Operations · 3 exact excerpt

sequence-bound=true · implementation-bound=true
01 · Testin bağlı olduğu uygulama/model kodu

Kapının yürüttüğü gerçek kaynak

tam Rust öğesiL256–L275
kernel/src/ipc.rs::IPC_CALL_DEADLINE_CAPACITY

#[cfg(feature = "board-qemu")]
pub(crate) fn qemu_s150_deadline_sla_snapshot() -> QemuS150DeadlineSlaSnapshot {
    let _irq_guard = crate::arch::aarch64::IrqGuard::new();
    let fixture = QEMU_S150_DEADLINE_SLA.lock();
    let deadline = fixture.registry.snapshot();
    QemuS150DeadlineSlaSnapshot {
        armed: fixture.armed,
        complete: fixture.complete,
        start_tick: fixture.start_tick,
        services: fixture.services,
        active: deadline.active,
        registered: deadline.registered,
        timed_out: deadline.timed_out,
        first_service_tick: fixture.first_service_tick,
        first_service_count: fixture.first_service_count,
        last_service_tick: fixture.last_service_tick,
        last_service_count: fixture.last_service_count,
    }
}
snippet sha256: 5a8eab315b26file sha256: 4c1e27d8c6c4
02 · Doğrulayan test kodu

Operations komutuna bağlı focused test

tam Rust öğesiL188–L201
simulation/tests/ipc_deadline_saturation_runtime.rs::qemu_acceptance_requires_32_full_33rd_reject_one_by_one_drain_and_reuse

#[test]
fn qemu_acceptance_requires_32_full_33rd_reject_one_by_one_drain_and_reuse() {
    assert!(MAIN.contains("run_qemu_s149_ipc_deadline_saturation_recovery"));
    assert!(MAIN.contains("CAPACITY=32 ACTIVE_PEAK=32"));
    assert!(MAIN.contains("OVERFLOW_33=TABLE_FULL SNAPSHOT_UNCHANGED=YES"));
    assert!(MAIN.contains("SERVICE_BUDGET_PER_IRQ=1 DRAIN_TURNS=33"));
    assert!(MAIN.contains("ORDER=OLDEST_LATENESS_THEN_WAIT_KEY"));
    assert!(MAIN.contains("REUSE_EPOCH=33 STALE_RETRY=REJECTED"));
    assert!(MAIN.contains("ABI=UNCHANGED_V1_3"));
    assert!(SMOKE.contains("K2-S149"));
    assert!(ABI.contains("pub const ABI_MINOR: u16 = 3"));
    assert!(!ABI.contains("S149"));
}
snippet sha256: a33287560292file sha256: ff2fe2d9644d
03 · Kapı kimlik kaydı

Operations sıra, kimlik ve başlık bağı

tam Operations kaydıL24167–L24283
website/src/lib/operations.ts::k2-ipc-deadline-saturation-recovery-partial
  {
    id: "k2-ipc-deadline-saturation-recovery-partial",
    date: "2026-08-24",
    sequence: 149,
    status: "passed",
    umbrella_status: "partial",
    title: "K2: IPC deadline saturation, bounded drain ve slot recovery",
    summary:
      "S149 dar kabulü, ortak allocation-free CALL/RECV/notification deadline registry'sini exact capacity=32 sınırında fail-closed yaptı. 11 CALL + 11 RECV + 10 notification ile dolu tabloda 33. admission TableFull/QueueFull döndürdü ve snapshot'ı değiştirmedi; timer IRQ başına servis bütçesi 1 kayıt, seçim kuralı en büyük modular lateness sonra exact WaitKey oldu. Bir retirement tek slot açtı, fresh epoch=33 kabul edildi ve eski snapshot reddedildi. ABI v1.3 değişmedi. Gerçek wall-clock/tick-rate SLA, uzun saturation soak ve Generic SMP cross-CPU arbitration açık olduğundan dar operasyon PASS, K2/K1/MEM0–MEM2 umbrella durumu PARTIAL'dır.",
    evidence: [
      "S149 fail-closed kaynak bring-up'ı 5/9 RED'den allocation-free shared registry tamamlandığında 9/9 PASS'e döndü.",
      "Exact mixed saturation CALL11/RECV11/NOTIFICATION10, ACTIVE_PEAK=32; OVERFLOW_33=TABLE_FULL ve syscall yüzeyinde QueueFull. Overflow öncesi/sonrası snapshot byte-anlamında değişmedi.",
      "SERVICE_BUDGET_PER_IRQ=1 ve yeni admission yokken full expired tablo için MAX_DRAIN_IRQS=32; deterministik sıra OLDEST_LATENESS_THEN_WAIT_KEY.",
      "Bir kayıt emekliye ayrılınca yalnız bir slot açıldı; REUSE_EPOCH=33 kabul edildi, eski snapshot STALE/REJECTED kaldı. REGISTERED=33, TIMED_OUT=33, ACTIVE_FINAL=0 ve GLOBAL_ACTIVE=0→0.",
      "ABI UNCHANGED_V1_3: yeni syscall veya error yok; CALL, RECV ve notification syscall failure mapping'lerinin üçü de registry TableFull sonucunu QueueFull olarak yüzeye çıkarır.",
      "S129–S149 exact focused envanteri 38 binary / 233/233 PASS; ortak ABI/IPC kapısı 10 binary / 95/95 PASS.",
      "QEMU marker'ı capacity=32, mixed saturation, non-mutating overflow, single-record drain, fresh epoch ve stale retry reddini doğruladı; strict ELF W^X 31/31, başarılı IPC reply 20/20, KERNEL_FAULTS=0 ve EXECUTOR=PASS.",
      "Manuel 8 saniyelik QEMU log'u 503256 B / SHA-256 0c0c5108a4a2889055f14031f00a3e50de7dfbbfc02807532117ed0894601cc0 olarak ölçüldü.",
      "AArch64 board-qemu, board-rpi4, board-rpi5 ve board-rpi5+smp applicability 4/4 PASS.",
      "Tam workspace exact yedi tarihsel frozen G8h identity/closure assertion'ında kırmızıdır. Yalnız bu yedi assertion dışlandığında kalan 110 result group / 706/706 PASS; assertion'lar gevşetilmedi ve full GREEN iddia edilmez.",
      "S124 fiziksel kanıtı yeniden uzlaştırıldı: immutable raw 20270 B / SHA-256 ee97d070741d5f7acd8ea7985d00ea54086e2fbaea54e1cc94619dd640bb4158, BOOT8H occurrence=1, leading NUL=3, strict validators 12/12, milestones 60/60, ARCHIVE/PROMOTION=PASS.",
      "Fiziksel runbook S124'te tarihsel olarak tamamlandı: Gücü kapat → SD kartı Pi'den çıkar → SD kartı Mac'e tak → yetkili write/verify/read-back → SD kartı Mac'ten güvenli çıkar → SD kartı güçsüz Pi'ye tak → UART capture pre-arm ve exact identity → Güç ver. Güç geçişleri kullanıcı bildirimi; UART/raw/kart kapanışları host gözlemidir.",
      "S149'da bu sıra tekrar edilmedi: physical/device operations=0 ve RUNBOOK_EXECUTED_IN_S149=NO. Güncel son fiziksel boot/runtime PASS S124 BOOT8H; son standalone storage/media PASS S119 ve S124 aday kart/package salt-okunur re-auth PASS.",
      "Güncel PASS-dışı denetimi S149 dahil 148 kaydı yeniden sayar: 21 Kısmi + 7 Başarısız + 7 Gözlem = 35 literal PASS-dışı tarihsel kayıt; 46 Passed + 58 Verified + 9 Fixed = 113 kapalı/yeşil kayıt. S111–S112 ve S125–S149 toplam 27 dar PASS kaydı umbrella_status=partial taşır; gerçek ileri çalışma 16 ana kabul bloğudur.",
      "Web doğrulaması: 249/249 içerik testi, ESLint ve TypeScript --noEmit PASS; Next.js statik üretim 23/23 route / 191 dosya PASS.",
      "Planlama tahmini S149 + (16 × 8–10 sıra) + 40–60 risk sırası = S317–369; risk-paylı merkez ≈S343. Bu tarihsel projeksiyon S150'yi kendiliğinden yetkilendirmedi; S150 ayrı runtime ve kanıt kaydıyla oluşturuldu.",
      "Kalıcı kapsam: `docs/K2-S149-IPC-Deadline-Saturation-Recovery-Proof.md` ve `evidence/rpi5/g8h/sequence-124-physical-pass/README.md`.",
    ],
    commands: [
      "cargo test -p aselsan_microkernel_simulation --test ipc_deadline_saturation_runtime -- --test-threads=1",
      "cargo test -p aselsan_microkernel_simulation [38 exact focused test binary] -- --test-threads=1",
      "cargo test -p aselsan_microkernel_simulation [10 exact ABI/IPC test binary] -- --test-threads=1",
      "cargo check -p aselsan_kernel --target aarch64-unknown-none [board-qemu, board-rpi4, board-rpi5, board-rpi5+smp]",
      "make verify-qemu",
      "cargo test --workspace --no-fail-fast",
      "cargo test --workspace -- --test-threads=1 [seven exact historical --skip filters]",
      "python3 scripts/render-project-status.py --check",
      "cd website && npm test && npm run lint && npx tsc --noEmit && npm run build",
    ],
    terminalSessions: [
      {
        id: "s149-red-before-shared-deadline-registry",
        title: "Shared deadline saturation kapısı: fail-closed bring-up",
        commandLines: [
          "cargo test -p aselsan_microkernel_simulation --test ipc_deadline_saturation_runtime -- --test-threads=1",
        ],
        outputLines: [
          "initial source/runtime contract: 5/9 PASS · shared capacity/service/recovery seams absent",
          "no partial saturation PASS accepted",
          "final allocation-free shared registry contract: 9/9 PASS",
        ],
        exitCode: 101,
        outputMode: "selected",
      },
      {
        id: "s149-green-focused-aarch64-qemu",
        title: "Capacity-32 overflow, bounded drain, epoch reuse ve QEMU",
        commandLines: [
          "cargo test -p aselsan_microkernel_simulation [38 exact focused test binary] -- --test-threads=1",
          "cargo test -p aselsan_microkernel_simulation [10 exact ABI/IPC test binary] -- --test-threads=1",
          "cargo check -p aselsan_kernel --target aarch64-unknown-none [4 profiles]",
          "make verify-qemu",
        ],
        outputLines: [
          "ipc_deadline_saturation_runtime: 9/9 PASS",
          "combined exact focused inventory: 233/233 PASS · 38 binaries",
          "focused ABI/IPC: 95/95 PASS · 10 binaries · AArch64 compile profiles: 4/4 PASS",
          "[K2-S149] ABI=UNCHANGED_V1_3 CAPACITY=32 ACTIVE_PEAK=32 MIXED=CALL11_RECV11_NOTIFICATION10 OVERFLOW_33=TABLE_FULL SNAPSHOT_UNCHANGED=YES SERVICE_BUDGET_PER_IRQ=1 DRAIN_TURNS=33 MAX_DRAIN_IRQS=32 ORDER=OLDEST_LATENESS_THEN_WAIT_KEY FIRST_RETIRED_TASK=1000 REUSE_EPOCH=33 STALE_RETRY=REJECTED REGISTERED=33 TIMED_OUT=33 ACTIVE_FINAL=0 GLOBAL_ACTIVE=0->0 ALLOCATION_FREE=YES CPU0_ONLY=YES KERNEL_FAULTS=0 EXECUTOR=PASS",
          "QEMU smoke PASS: strict ELF W^X 31/31 · IPC reply 20/20 · S149 PASS",
        ],
        exitCode: 0,
        outputMode: "selected",
      },
      {
        id: "s149-workspace-independent-history-red",
        title: "Tam workspace: exact yedi tarihsel G8h assertion kırmızısı",
        commandLines: [
          "cargo test --workspace --no-fail-fast",
          "cargo test --workspace -- --test-threads=1 [seven exact historical --skip filters]",
        ],
        outputLines: [
          "full workspace: FAIL-CLOSED · exactly 7 historical frozen G8h identity/closure assertions",
          "excluding only those seven exact assertion names: 110 result groups · 706/706 PASS",
          "historical assertions were not relaxed · full-workspace GREEN is not claimed",
        ],
        exitCode: 101,
        outputMode: "selected",
      },
      {
        id: "s149-s124-physical-evidence-reconciliation",
        title: "S124 immutable physical evidence: read-only reconciliation",
        commandLines: [
          "shasum -a 256 -c evidence/rpi5/g8h/sequence-124-physical-pass/EVIDENCE_SHA256SUMS",
          "shasum -a 256 -c evidence/rpi5/g8h/sequence-124-physical-pass/package/SHA256SUMS",
          "scripts/verify-rpi5-g8h-physical-raw.sh <archived-raw> 20270 ee97d070741d5f7acd8ea7985d00ea54086e2fbaea54e1cc94619dd640bb4158 <archive-device> <archive-inode>",
        ],
        outputLines: [
          "EVIDENCE_SHA256SUMS: all archived files OK",
          "candidate package manifest: 3/3 PASS",
          "G8h physical raw PASS: validators=12 milestones=60 exact_bytes=20270",
          "PHYSICAL_BOOT8H=PASS · ARCHIVE=PASS · PROMOTION=PASS",
          "S149 new physical/device operations=0",
        ],
        exitCode: 0,
        outputMode: "selected",
      },
    ],
    terminalSessionsNote:
      "S149 dar deadline saturation/recovery kabulünü PASS eder; üst K2/K1/MEM0–MEM2 kapsamı, wall-clock SLA ve Generic SMP açık olduğu için umbrella PARTIAL kalır. S124 fiziksel kanıtı yalnız read-only uzlaştırıldı; S149'da runbook tekrar edilmedi.",
    limitations: [
      "Gerçek wall-clock latency, tick-rate SLA, production workload boyutlandırması ve uzun saturation soak imzalanmadı.",
      "Generic SMP cross-CPU timer/signal/revoke/wake/IPI/TLB/reaper arbitration matrisi kapanmadı.",
      "Capability transferi, shared-memory loan, cross-subsystem rollback ve ortak frame/cap/endpoint/ASID reconciliation açıktır.",
      "Full workspace exact yedi tarihsel frozen G8h identity/closure assertion'ı nedeniyle GREEN değildir; yalnız bu yedi dışlandığında 706/706 PASS'tir.",
      "S149 fiziksel işlem yapmadı. S124 dar fiziksel PASS'in power-on/off geçişleri kullanıcı bildirimi, host closure kanıtı bağımsızdır.",
    ],
  },
snippet sha256: 71ad718bbdf3file sha256: 9726dbf00f84
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test ipc_deadline_saturation_runtime -- --test-threads=1
proof: docs/K2-S149-IPC-Deadline-Saturation-Recovery-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9