ASELSANMicrokernel
S345 · SOURCE-BOUND GATE EVIDENCE

S345 · Current-runtime-OOM final commit production writer guard integration

production acquire → S247 guard modülü → Operations-bound focused test Bu sayfa yalnız S345 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S345Production writer guardOperations id exactsource SHA exacttest target exact

operation: g8l-s345-current-runtime-oom-final-commit-writer-guard-integration-partial

production · S247 guard · focused test · Operations · 4 exact excerpt

sequence-bound=true · implementation-bound=true
01 · Test edilen uygulama/model kodu

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

tam Rust öğesiL5190–L5420
kernel/src/task/scheduler.rs::execute_armed_current_runtime_oom_if_target

/// If the armed S131 target is current, re-audit both authority boundaries,
/// close IPC, publish Dead, move the carrier back into static scheduler
/// storage, quiesce the address space and switch away. The active task and its
/// stack are deliberately never detached or reaped in this function.
pub unsafe fn execute_armed_current_runtime_oom_if_target(
) -> Result<(), RuntimeOomTaskExecutionError> {
    #[cfg(feature = "board-rpi5")]
    let s258_identity_scheduler_read_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s257_runtime_oom_preflight_read_access_guard_expansion::acquire_s258_production_scheduler_read_access()
        .unwrap_or_else(|error| {
            panic!(
                "S258 current OOM identity scheduler read access failed closed: {:?}",
                error
            )
        });
    let (armed_target, current_task_id) = {
        let sched = &*core::ptr::addr_of!(SCHEDULER);
        (
            sched
                .deferred_current_runtime_oom
                .as_ref()
                .map(|carrier| carrier.binding.task_id),
            sched.current_task.as_ref().map(|task| task.id),
        )
    };
    #[cfg(feature = "board-rpi5")]
    drop(s258_identity_scheduler_read_access);
    let Some(armed_target) = armed_target else {
        return Ok(());
    };
    if current_task_id != Some(armed_target) {
        return Ok(());
    }

    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    let s351_irq_guard = crate::arch::aarch64::IrqGuard::new();
    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    let s351_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s351_current_runtime_oom_carrier_take_writer_guard_integration::acquire_s351_production_scheduler_writer_access()
        .unwrap_or_else(|error| {
            panic!(
                "S351 current-runtime-OOM carrier-take writer guard failed closed: {:?}",
                error
            )
        });
    let carrier_result = (&mut *core::ptr::addr_of_mut!(SCHEDULER))
        .deferred_current_runtime_oom
        .take();
    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    drop(s351_writer_access);
    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    drop(s351_irq_guard);
    let mut carrier = carrier_result.ok_or(RuntimeOomTaskExecutionError::DeferredTargetMismatch)?;
    let ticket_preflight = match crate::mm::with_boot_runtime_memory(|memory| {
        carrier
            .coordinator
            .preflight_teardown(&carrier.ticket, memory)
    }) {
        Ok(Ok(preflight)) => preflight,
        Ok(Err(error)) => {
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            let s350_irq_guard = crate::arch::aarch64::IrqGuard::new();
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            let s350_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s350_current_runtime_oom_coordinator_preflight_error_restore_writer_guard_integration::acquire_s350_production_scheduler_writer_access()
                .unwrap_or_else(|access_error| {
                    panic!(
                        "S350 current-runtime-OOM coordinator-preflight error carrier restore writer guard failed closed: {:?}",
                        access_error
                    )
                });
            (&mut *core::ptr::addr_of_mut!(SCHEDULER)).deferred_current_runtime_oom = Some(carrier);
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s350_writer_access);
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s350_irq_guard);
            return Err(RuntimeOomTaskExecutionError::CoordinatorPreflight(error));
        }
        Err(_) => {
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            let s349_irq_guard = crate::arch::aarch64::IrqGuard::new();
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            let s349_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s349_current_runtime_oom_boot_memory_error_restore_writer_guard_integration::acquire_s349_production_scheduler_writer_access()
                .unwrap_or_else(|error| {
                    panic!(
                        "S349 current-runtime-OOM boot-memory error carrier restore writer guard failed closed: {:?}",
                        error
                    )
                });
            (&mut *core::ptr::addr_of_mut!(SCHEDULER)).deferred_current_runtime_oom = Some(carrier);
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s349_writer_access);
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s349_irq_guard);
            return Err(RuntimeOomTaskExecutionError::BootMemoryAuthority);
        }
    };
    #[cfg(feature = "board-rpi5")]
    let s258_binding_scheduler_read_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s257_runtime_oom_preflight_read_access_guard_expansion::acquire_s258_production_scheduler_read_access()
        .unwrap_or_else(|error| {
            panic!(
                "S258 current OOM binding scheduler read access failed closed: {:?}",
                error
            )
        });
    let binding_result =
        (&*core::ptr::addr_of!(SCHEDULER)).audit_runtime_oom_task_binding(ticket_preflight);
    #[cfg(feature = "board-rpi5")]
    drop(s258_binding_scheduler_read_access);
    let binding = match binding_result {
        Ok(binding) => binding,
        Err(error) => {
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            let s348_irq_guard = crate::arch::aarch64::IrqGuard::new();
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            let s348_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s348_current_runtime_oom_binding_audit_error_restore_writer_guard_integration::acquire_s348_production_scheduler_writer_access()
                .unwrap_or_else(|access_error| {
                    panic!(
                        "S348 current-runtime-OOM binding-audit error carrier restore writer guard failed closed: {:?}",
                        access_error
                    )
                });
            (&mut *core::ptr::addr_of_mut!(SCHEDULER)).deferred_current_runtime_oom = Some(carrier);
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s348_writer_access);
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s348_irq_guard);
            return Err(error);
        }
    };
    if binding.location != RuntimeOomTaskLocation::Current
        || binding.task_id != carrier.binding.task_id
        || binding.domain != carrier.binding.domain
        || binding.asid != carrier.binding.asid
        || binding.frame_count != carrier.binding.frame_count
    {
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        let s347_irq_guard = crate::arch::aarch64::IrqGuard::new();
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        let s347_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s347_current_runtime_oom_binding_mismatch_restore_writer_guard_integration::acquire_s347_production_scheduler_writer_access()
            .unwrap_or_else(|error| {
                panic!(
                    "S347 current-runtime-OOM binding-mismatch carrier restore writer guard failed closed: {:?}",
                    error
                )
            });
        (&mut *core::ptr::addr_of_mut!(SCHEDULER)).deferred_current_runtime_oom = Some(carrier);
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        drop(s347_writer_access);
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        drop(s347_irq_guard);
        return Err(RuntimeOomTaskExecutionError::DeferredTargetMismatch);
    }

    let ipc_teardown = match crate::ui::capability::teardown_task_ipc_lifecycle(binding.task_id) {
        Ok(lifecycle) => RuntimeOomIpcTeardown::from_lifecycle(lifecycle),
        Err(_) => {
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            let s346_irq_guard = crate::arch::aarch64::IrqGuard::new();
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            let s346_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s346_current_runtime_oom_ipc_lifecycle_restore_writer_guard_integration::acquire_s346_production_scheduler_writer_access()
                .unwrap_or_else(|error| {
                    panic!(
                        "S346 current-runtime-OOM IPC-lifecycle carrier restore writer guard failed closed: {:?}",
                        error
                    )
                });
            (&mut *core::ptr::addr_of_mut!(SCHEDULER)).deferred_current_runtime_oom = Some(carrier);
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s346_writer_access);
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s346_irq_guard);
            return Err(RuntimeOomTaskExecutionError::IpcLifecycle);
        }
    };
    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    let s345_irq_guard = crate::arch::aarch64::IrqGuard::new();
    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    let s345_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s345_current_runtime_oom_commit_writer_guard_integration::acquire_s345_production_scheduler_writer_access()
        .unwrap_or_else(|error| {
            panic!(
                "S345 current-runtime-OOM final scheduler commit writer guard failed closed: {:?}",
                error
            )
        });
    let sched = &mut *core::ptr::addr_of_mut!(SCHEDULER);
    let Some(task) = sched.current_task.as_mut() else {
        sched.deferred_current_runtime_oom = Some(carrier);
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        drop(s345_writer_access);
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        drop(s345_irq_guard);
        return Err(RuntimeOomTaskExecutionError::SchedulerCommitMismatch);
    };
    if task.id != binding.task_id
        || task.runtime_allocation_domain() != Some(binding.domain)
        || task.asid != binding.asid
        || task
            .runtime_user_frames
            .as_ref()
            .map_or(0, |ledger| ledger.frame_count())
            != binding.frame_count
    {
        sched.deferred_current_runtime_oom = Some(carrier);
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        drop(s345_writer_access);
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        drop(s345_irq_guard);
        return Err(RuntimeOomTaskExecutionError::SchedulerCommitMismatch);
    }

    task.finished.store(true, Ordering::Release);
    task.state = TaskState::Dead;
    task.user_sp = 0;
    task.saved_user_elr = 0;
    task.saved_user_spsr = 0;
    task.saved_user_gprs = [0; 31];
    carrier.binding = binding;
    carrier.ipc_lifecycle_closed = true;
    carrier.ipc_teardown = Some(ipc_teardown);
    sched.deferred_current_runtime_oom = Some(carrier);
    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    drop(s345_writer_access);
    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    drop(s345_irq_guard);

    retire_current_asid_after_kernel_switch();
    yield_now();
    crate::arch::aarch64::disable_irqs();
    loop {
        core::arch::asm!("wfe", options(nomem, nostack));
    }
}
snippet sha256: ae9e4955a1e0file sha256: 838dd474448c
02 · Ortak exclusion üyeliği

S247 production writer guard

tam Rust öğesiL158–L170
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s345_current_runtime_oom_commit_writer_guard_integration.rs::acquire_s345_production_scheduler_writer_access

#[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
pub fn acquire_s345_production_scheduler_writer_access(
) -> Result<G8lS345ProductionSchedulerWriterAccess, G8lS247WholeSchedulerAccessError> {
    let caller_cpu =
        crate::percpu::try_current_cpu_id().ok_or(G8lS247WholeSchedulerAccessError::InvalidCpu)?;
    if caller_cpu != crate::g8l_runtime_contract::CPU0 {
        return Err(G8lS247WholeSchedulerAccessError::InvalidCpu);
    }
    let access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s246_whole_scheduler_read_access_guard::S247_PRODUCTION_WHOLE_SCHEDULER_ACCESS_GATE
        .try_acquire_exclusive_for_valid_cpu(caller_cpu)?;
    Ok(G8lS345ProductionSchedulerWriterAccess { _access: access })
}
snippet sha256: 9234525cb922file sha256: a67b2d95776e
03 · Doğrulayan test kodu

Operations komutuna bağlı focused test

tam Rust öğesiL410–L422
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s345_current_runtime_oom_commit_writer_guard_integration.rs::earlier_carrier_take_and_restore_aliases_remain_open_for_s346_to_s351

#[test]
fn earlier_carrier_take_and_restore_aliases_remain_open_for_s346_to_s351() {
    let target = executor_boundary();
    let writer = target.find("let s345_writer_access").unwrap();
    let prefix = &target[..writer];
    assert!(prefix.matches("addr_of_mut!(SCHEDULER)").count() >= 6);
    assert!(!prefix.contains("acquire_s345_production_scheduler_writer_access"));
    assert!(prefix.contains("DeferredTargetMismatch"));
    assert!(prefix.contains("CoordinatorPreflight"));
    assert!(prefix.contains("BootMemoryAuthority"));
    assert!(prefix.contains("IpcLifecycle"));
}
snippet sha256: fd63d287bc17file sha256: c936e6b45e24
04 · Kapı kimlik kaydı

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

tam Operations kaydıL13489–L13573
website/src/lib/operations.ts::g8l-s345-current-runtime-oom-final-commit-writer-guard-integration-partial
  {
    id: "g8l-s345-current-runtime-oom-final-commit-writer-guard-integration-partial",
    date: "2026-08-28",
    sequence: 345,
    status: "passed",
    umbrella_status: "partial",
    title:
      "S345 · Current-runtime-OOM final commit production writer guard integration",
    summary:
      "S345, execute_armed_current_runtime_oom_if_target içindeki kaynak sırasına göre son mutable SCHEDULER commit sınırını S344 ve 44 production reader'ın kullandığı aynı statik S247 state word'e bağlar. İki S258 immutable audit ve IPC lifecycle teardown tamamlandıktan sonra ayrı IrqGuard kurulur; CPU0-only S345 writer herhangi bir mutable alias yaratılmadan önce alınır. Lease current-task/binding revalidation, iki fail-closed carrier restore yolu, finished Release → Dead → context zeroing (SP/ELR/SPSR/31 GPR), binding ve IPC teardown receipt attachment ile deferred carrier publication'ını kapsar. İki error ve success yolundaki üç explicit drop IRQ restore'dan, ayrı S341 retirement'tan, S334 yield_now'dan ve terminal WFE'den önce gelir. Guarded writer 18/69, açık writer 51 ve provider authority 0'dır. exceptions.rs içinde iki board-qemu source callsite vardır, fakat RPi5-only wrapper supported-profile runtime observation=0'dır. Daha erken IPC/mismatch/binding/memory/preflight restore aliasları ile carrier take S346–S351 için ayrı ayrı açık tutulur; sıradaki mantıksal kapı S346 IPC-lifecycle error restore writer entegrasyonudur.",
    evidence: [
      "Focused current-runtime-OOM final-commit writer-integration kapısı 37/37 PASS verdi. Önceki S344 29/29; S258 reader 11/11; current-deferred 5/5; effect 5/5; lifecycle recovery 7/7; live IPC teardown 5/5; scheduler executor 5/5; timer trigger 5/5; S341 31/31 ve S334 26/26 regresyonları ayrıca geçti.",
      "Aynı S247 state word üzerinde CPU0-only writer membership, non-CPU0 pre-commit rejection, reader→writer, writer→reader ve writer→writer exclusion, callback-error sonrası release ve S344→S345 token monotonluğu doğrulandı.",
      "Production kaynak sırası S258 identity reader acquire/copy/drop → armed/current check → tarihsel carrier take → coordinator preflight → S258 binding reader acquire/owned audit/drop → binding comparison → IPC lifecycle teardown → S345 IRQ guard → S345 writer → tek final mutable alias olarak kilitlendi.",
      "S345 lease altında current_task exact yeniden seçilir. Current-task yokluğu ve task/domain/ASID/frame-count binding uyuşmazlığı iki ayrı fail-closed yoldur; ikisi de carrier'ı deferred_current_runtime_oom slotuna geri yayınlar, writer'ı ve sonra IRQ guard'ı explicit bırakır, yalnız ardından SchedulerCommitMismatch döner.",
      "Başarı sırası task.finished.store(true, Ordering::Release) → TaskState::Dead → user_sp=0 → saved_user_elr=0 → saved_user_spsr=0 → saved_user_gprs=[0;31] → carrier.binding exact update → ipc_lifecycle_closed=true → ipc_teardown receipt attachment → carrier publication'dır.",
      "Üç production writer-drop noktası source-audit ile sayıldı: missing-current rollback, binding-mismatch rollback ve success publication. Success drop carrier yeniden scheduler storage'a konduktan sonra, fakat retire_current_asid_after_kernel_switch, yield_now, IRQ disable ve WFE'den önce gelir.",
      "S345 yalnız final commit aliasını kapsar. Carrier take, coordinator-preflight restore, boot-memory restore, binding-audit restore, binding-mismatch restore ve IPC-lifecycle restore için writer üyeliği bu kapıda geriye genişletilmedi; bu aliaslar kaynak sırasıyla S346–S351 kapılarında tek tek işlenecektir.",
      "kernel/src/arch/aarch64/exceptions.rs içinde execute_armed_current_runtime_oom_if_target için iki direct board-qemu source callsite sayıldı. Bu çağrılar RPi5-only S345 production wrapper'ın runtime invocation kanıtı değildir; supported-profile runtime observations=0 olarak kalır.",
      "Fresh ve birbirinden yalıtılmış AArch64 profilleri 4/4 exit 0 verdi: board-qemu build 111543 B / 3b1a6a5d…6932 / 293 warning header; board-rpi4 build 150268 B / 3f01f5d0…0aa / 391; board-rpi5 build 540180 B / 1dd57fc5…da19 / 1204; board-rpi5+smp check 540122 B / 1f02aa44…a42 / 1204. Warning başlıkları sayılmıştır; zero-warning iddiası yoktur.",
      "S238–S345 dependency matrisi düzeltilmiş exact sıra listesiyle iki bağımsız seri koşuda 109 ayrı grup / 1763/1763 PASS verdi. İki ham özet 25325 B ve 09e94b4d…49ae ile byte-eşittir; iki süre-normalize kanonik özet 25870 B ve cef24656…92c0 ile byte-eşittir.",
      "İlk liste kurucu tanısında g8l_s262_qemu_profile_cfg_closure iki kez seçildi ve 110 satır üretildi; bu sayı kabul kanıtı olarak kullanılmadı. Filtre daraltıldı, her distinct hedefi tam bir kez ve doğru sıra konumunda çalıştıran iki 109-grup koşu yeniden alındı.",
      "Exact yedi tarihsel assertion adı dışlanıp --test-threads=1 kabulü kullanıldığında workspace 307 sonuç grubu / 3596 PASS / 0 fail / 7 filtered verdi; 67639 B log ce119d3b…a0f'dur.",
      "Filtresiz workspace exit 101 ile yalnız frozen S96 wiring_does_not_mutate_timer_gic_boot_or_expand_runtime_scope source-identity reddinde durdu; 260 sonuç grubunda 3341 PASS / 1 fail, 62861 B log 72332866…ead'dir ve global workspace GREEN iddia edilmez.",
      "make verify-qemu ortak regresyonu 116447 B / 2c390b14…d21e ile strict ELF W^X 31/31, S130–S154, IPC reply 20/20, scheduler SEC5 ve kernel fault marker 0 PASS verdi. RPi5-only S345 writer bu QEMU koşusunda runtime-observed değildir.",
      "Website 538/538 test, lint, boş çıktılı TypeScript ve 23/23 static route build PASS verdi; çıktı 193 dosya ve Timeline 184 ayrı karttır. İlk Cloudflare Pages production/main yayını 43c18877-0451-4f86-8493-b6ec8ebd9edd kimliğiyle tamamlandı. Cache-busted custom-domain Operations 10670919 B / 54fce1ff…564e, Timeline 2836796 B / d793c21c…6841 ve yol haritası 2836544 B / 2f565a63…9ff artifact'leri ilgili yerel out dosyalarıyla byte-exact PASS verdi. Immutable deployment hostname probe'u 10 saniyede curl exit 28 / HTTP 000 verdi; custom-domain kabulü bu sınırı gizlemez.",
      "S245 request yalnız non-consuming incelenir; S244 admission dokunulmadan kalır. Production provider authority=0, whole-scheduler exclusion=false ve toplam 51 production writer açık kalır.",
      "S345 için güç, SD kart, Mac kart erişimi, UART capture, raw validation, archive veya promotion işlemi yapılmadı: physical/device operations=0 ve RUNBOOK_EXECUTED_IN_S345=NO.",
    ],
    commands: [
      "cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s345_current_runtime_oom_commit_writer_guard_integration -- --test-threads=1",
      "cargo build -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-rpi5",
      "cargo check -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-rpi5,smp",
      "cargo test --workspace --quiet -- --test-threads=1 [seven exact historical --skip filters]",
      "make verify-qemu",
      "npm run deploy",
    ],
    terminalSessions: [
      {
        id: "g8l-s345-current-runtime-oom-final-commit-writer-guard-integration",
        title:
          "G8l S345 current-runtime-OOM final commit writer guard integration",
        commandLines: [
          "cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s345_current_runtime_oom_commit_writer_guard_integration -- --test-threads=1",
        ],
        outputLines: [
          "test result: ok; S345 focused 1 group / 37 passed; 0 failed",
          "shared S247 gate: 44 guarded readers + 18/69 guarded writers; 51 writers open",
          "S258 audits/drop < IPC teardown < S345 IRQ/writer < revalidation < death/context zero < IPC receipt/carrier publish < writer/IRQ drop < S341/S334/WFE",
          "production source callsites=2 board-qemu; supported-profile RPi5 runtime observations=0",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8l-s345-operations-timeline-production-publication",
        title: "S345 Operations/Timeline production publication",
        commandLines: [
          "npm run deploy",
          "curl --cache-busted https://aselsan.kerege.net/{operations,timeline}/ and compare with local out",
        ],
        outputLines: [
          "Website 538/538 PASS; lint PASS; tsc PASS; static build 23/23 routes; 193 files; Timeline 184 cards",
          "initial production/main deployment=43c18877-0451-4f86-8493-b6ec8ebd9edd; uploaded=109; existing=84",
          "custom Operations HTTP 200; 10670919 B; SHA-256 54fce1ff78a5d9e9b399ba06f73c92c518d6b6a2f55a5d8eb1b2675ae58a564e; local byte-exact PASS",
          "custom Timeline HTTP 200; 2836796 B; SHA-256 d793c21c62fc3c3fd583d73d641908933cd593ae177a9349f6ab8af6f97d6841; local byte-exact PASS",
          "custom yol-haritasi HTTP 200; 2836544 B; SHA-256 2f565a63e04f572942708ec7f4834640cccfae90eb49d596334bb376e194b9ff; local byte-exact PASS",
          "immutable 43c18877 hostname probe: curl exit 28; HTTP 000 after 10 seconds",
        ],
        exitCode: 0,
        outputMode: "selected",
        outputNote:
          "İlk S345 içerik yayını ve üç custom-domain artifact'i byte-exact ölçüldü. Bu ölçümleri taşıyan son yayın kimliği kalıcı proof/status kapanışında ayrıca kaydedilir.",
      },
    ],
    terminalSessionsNote:
      "S345 on sekizinci production writer'ın dar kaynak entegrasyonudur. Final commit iki source callsite tarafından çağrılır, fakat supported-profile RPi5 runtime/cihaz gözlemi yoktur; global exclusion ya da provider authority oluşmadı.",
    limitations: [
      "51 production writer aynı shared gate dışında kaldığı için whole-scheduler exclusion ve provider authority açık kalır.",
      "İki board-qemu source callsite wiring kanıtıdır; RPi5-only S345 wrapper için supported-profile invocation/observation kanıtı yoktur.",
      "execute_armed_current_runtime_oom_if_target içindeki IPC-lifecycle error restore writer entegrasyonu sıradaki ayrı S346 kapısıdır.",
      "Daha erken mismatch/binding/memory/preflight restore aliasları ile carrier take S347–S351 için açık bırakılmıştır.",
      "Default-parallel PTY determinism, transient-contention liveness/soak, Generic SMP ve fiziksel RPi kabulü açık kalır.",
    ],
  },
snippet sha256: ac61de52d282file sha256: 9726dbf00f84
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s345_current_runtime_oom_commit_writer_guard_integration -- --test-threads=1
proof: docs/M8.1-RPi5-G8l-S345-Current-Runtime-OOM-Final-Commit-Writer-Guard-Integration-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 91d38c7b6222f0b4c117be786454853543da55a160e543d9b951057cc20dcc06