ASELSANMicrokernel
S351 · SOURCE-BOUND GATE EVIDENCE

S351 · Current-runtime-OOM carrier-take production writer guard integration

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

S351Production writer guardOperations id exactsource SHA exacttest target exact

operation: g8l-s351-current-runtime-oom-carrier-take-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 öğesiL156–L168
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s351_current_runtime_oom_carrier_take_writer_guard_integration.rs::acquire_s351_production_scheduler_writer_access

#[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
pub fn acquire_s351_production_scheduler_writer_access(
) -> Result<G8lS351ProductionSchedulerWriterAccess, 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(G8lS351ProductionSchedulerWriterAccess { _access: access })
}
snippet sha256: f35d0e8e6b68file sha256: c0a7137dc635
03 · Doğrulayan test kodu

Operations komutuna bağlı focused test

tam Rust öğesiL283–L292
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s351_current_runtime_oom_carrier_take_writer_guard_integration.rs::carrier_take_boundary_has_exactly_one_s351_acquire

#[test]
fn carrier_take_boundary_has_exactly_one_s351_acquire() {
    assert_eq!(
        carrier_take_boundary()
            .matches("acquire_s351_production_scheduler_writer_access")
            .count(),
        1
    );
}
snippet sha256: a1170357a51efile sha256: fa83041c4f51
04 · Kapı kimlik kaydı

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

tam Operations kaydıL12984–L13067
website/src/lib/operations.ts::g8l-s351-current-runtime-oom-carrier-take-writer-guard-integration-partial
  {
    id: "g8l-s351-current-runtime-oom-carrier-take-writer-guard-integration-partial",
    date: "2026-08-28",
    sequence: 351,
    status: "passed",
    umbrella_status: "partial",
    title:
      "S351 · Current-runtime-OOM carrier-take production writer guard integration",
    summary:
      "S351, execute_armed_current_runtime_oom_if_target içindeki deferred_current_runtime_oom.take() taşıyıcı-sahiplik geçişini S350 ve 44 production reader'ın kullandığı aynı statik S247 state word'e bağlar. S258 reader exact target/current kimliğini owned scalar değerlere çıkarıp explicit bırakıldıktan ve target kararı verildikten sonra ayrı IrqGuard kurulur; gerçek per-CPU kimliğiyle CPU0-only S351 exclusive writer tek mutable SCHEDULER aliasından önce alınır. Scheduler slotundaki authority bundle local owned carrier değerine exact bir kez taşınır; writer ve ardından IRQ guard explicit bırakılır. Missing-carrier hata dönüşümü, RuntimeMemory/coordinator preflight ve S350–S345 restore/commit transaction'ları yalnız bu iki release sonrasında başlar. Guarded writer 24/69, açık writer 45 ve provider authority 0'dır. İki board-qemu source callsite vardır fakat RPi5-only wrapper supported-profile runtime observation=0'dır. Arm-current writer sınırı S352 için ayrı açık kalır; sıradaki kapı S352 arm_current_runtime_oom_teardown entegrasyonudur.",
    evidence: [
      "Focused carrier-take writer-integration kapısı ilk koşuda 36/36 PASS verdi. S350/S349/S348/S347/S346 36/36, S345 37/37, tarihsel 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 olmak üzere seçili regresyon turu 317/317 PASS'tir.",
      "İlk tarihsel S350 regresyon turu 35/36 RED oldu; eski assertion S351 carrier-take sınırının açık kalmasını bekliyordu. Assertion kaldırılmadı veya gevşetilmedi: S351 acquire → take → explicit release işleminin S350'den önce başlayan ayrı, iç içe geçmeyen transaction olduğunu doğrulayacak biçimde ileri taşındı; taze tur 36/36 ve birleşik regresyon 317/317 PASS verdi.",
      "Production kaynak sırası S258 reader acquire → owned target/current kopyaları → reader drop → armed-target kararı → S351 IrqGuard → CPU0-only exclusive acquire → exact tek mutable SCHEDULER aliası → deferred carrier take → writer drop → IRQ drop → local owned carrier/error dönüşümü olarak kaynak-kilitlidir.",
      "S351 üyeliği yalnız slot-to-owned take mutation'ını kapsar. Missing-carrier DeferredTargetMismatch dönüşümü, with_boot_runtime_memory, coordinator preflight, ikinci S258 binding reader ve S350/S349/S348/S347/S346/S345 writer transaction'ları membership dışındadır; nested reader veya writer lease oluşmaz.",
      "Exact carrier-take sınırında bir S351 acquire, bir mutable scheduler aliası ve bir explicit writer drop vardır. Writer sonra IRQ release'i missing-carrier error conversion ve RuntimeMemory preflight'tan önce tamamlanır; local carrier yalnız release sonrasında kullanılabilir.",
      "Aynı S247 state word üzerinde CPU0-only membership, non-CPU0 callback-öncesi rejection, reader→writer, writer→reader ve writer→writer exclusion, callback-error sonrası exact release ve S350→S351 token monotonluğu doğrulandı.",
      "S351 preflight önce S350'nin 44 guarded reader / 23 guarded writer / 46 open envanterini exact doğrular; yalnız sonra 24/69 guarded writer ve 45 open sonucu üretir. Inventory drift fail-closed reddedilir. S245 request yalnız pending view ile non-consuming incelenir; take edilmez, S244 admission veya provider authority üretilmez.",
      "kernel/src/arch/aarch64/exceptions.rs içinde execute_armed_current_runtime_oom_if_target için iki direct board-qemu source callsite vardır. Production S351 wrapper exact AArch64 none + board-rpi5 cfg altındadır; bu source callsite sayısı supported-profile invocation, runtime telemetry veya fiziksel kabul değildir ve runtime observations=0'dır.",
      "Fresh izole AArch64 profilleri 4/4 exit 0 verdi. Derleme logları: board-qemu 112236 B / 5fe324f1be375d142f9caaf8af98e158bde9beb9977e97e3a9fa6168599cc27e / 293 warning header; board-rpi4 150700 B / 6f44f9932464dee785461545c5813bede54f7958bfb2d0766a5ccc67a053ae7b / 391; board-rpi5 559343 B / 9de4d0f428878a4181e94c3f4547782bc396e55b43f4f685b0e13bd1355fcc09 / 1252; board-rpi5+smp 559285 B / 08899a45175f04b50aff784ff6462f78f8b089835cace50b80a968f81ca1ddd4 / 1252. Warning başlıkları ölçülmüştür; zero-warning iddiası yoktur.",
      "Log ölçüsü ELF ölçüsü gibi sunulmaz. Aynı fresh koşuların gerçek ELF artifact'leri ayrıca board-qemu 17319040 B / 469f79f22c9715952c7421546f5726f0111308fc9025debec4b7e007d4d15aa2; board-rpi4 12315440 B / eea3adf363629e58f12b59b37420375ac6a8914494128b540bc405fc3e152604; board-rpi5 17547712 B / 5f535cebb836b975f38e634ba9313d61fb3f429af6c9b02167cf1e09d34b6bb4 ve board-rpi5+smp 17549856 B / 38144aff7bd31fca0ff8f259a3b88dc76186b8d52f5978e518c09e1c9f590afb olarak ölçüldü.",
      "S238–S351 dependency matrisi S350'nin exact 114 hedeflik listesine yalnız S351 eklenerek iki bağımsız seri koşuda 115 grup / 1979/1979 PASS verdi. Ham özetler 26976 B, SHA-256 değerleri 23aa22d2c0470037bbc54d2c661ffcbae3c55fcb0649e91bc94204aebb41e336 ve 209f04ab163998fedf6332ec03d094d6facaa4be5ab65e0116cd37b8c950b14a; süre alanları nedeniyle 70 diff satırı vardır. 27091 B normalize özetler d641a3438a21063c9ea5132547ac1c19560bab129ae8e832ecfd40dc9812d9af ile byte-eşittir.",
      "Exact yedi tarihsel frozen assertion adı dışlanıp --test-threads=1 kabulü kullanıldığında workspace 313 sonuç grubu / 3818 PASS / 0 fail / 7 filtered verdi; 68551 B log SHA-256 5bcfa95e761c6284b7e096fdb31f507a97762ffd85d7b4e751fd0ae15049fc75'tir.",
      "İlk filtreli workspace denemesinde skip adları yanlışlıkla test-binary modül adıyla fazla nitelendiği için S96 filtreden geçmedi ve exit 101 oldu. Frozen assertion değiştirilmedi; harness'ın exact fonksiyon adlarıyla taze koşu 313/3818/7 sonucunu verdi. Bu komut-kurulum RED'i gizlenmez.",
      "Filtresiz workspace exit 101 ile yalnız frozen S96 wiring_does_not_mutate_timer_gic_boot_or_expand_runtime_scope source-identity reddinde durdu; 266 sonuç grubunda 3563 PASS / 1 fail, 63773 B log SHA-256 cb57d29c71d6e56d5ea316939874b044dda41ed9116154efab4cde0b63e3c9cd'dir ve global workspace GREEN iddia edilmez.",
      "make verify-qemu 116447 B / f56b5f5d91d5fcecacf8f6c88a30a0d48abf27148e3d1fa9e50c9c64d0e7e648 ile strict ELF W^X 31/31, S130–S154 Runtime-OOM/deadline zinciri, IPC reply 20/20, scheduler SEC5 ve kernel fault/panic marker 0 PASS verdi. RPi5-only S351 writer bu board-qemu koşusunda runtime-observed değildir.",
      "Website S351 kaynak kabulü 554/554 test, lint, boş çıktılı TypeScript ve 23/23 static route build PASS verdi; çıktı 193 dosya ve Timeline 190 ayrı gate-policy kartıdır. İlk production/main içerik yayını 2e2534a1-d269-4bf4-9aac-6759ec76e36c kimliğiyle 109 upload + 84 mevcut = 193 dosya olarak tamamlandı. Cache-busted custom-domain Operations HTTP 200 / 10958575 B / 63f0d1a7cc4a31cdb8df5048bb94b5eeb0d8bbe5e2ecb7a1ce4c1397e3911896, Timeline HTTP 200 / 3106798 B / d578f08fd5a8280685da17d27e7d798ebf74a79ff5bcb4ce67deb906ec79d2c3 ve yol-haritasi HTTP 200 / 3106546 B / d11cac95e8addb6e05967d9e69dbba2b153c5872949e0013f5591cb3d5277a59 artifact'leri deployment build yerel out'u ile byte-exact PASS verdi. Immutable 2e2534a1 hostname probe'u 10 saniyede curl exit 28 / HTTP 000 verdi; custom-domain PASS bu erişim sınırını gizlemez.",
      "S351 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_S351=NO.",
    ],
    commands: [
      "cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s351_current_runtime_oom_carrier_take_writer_guard_integration -- --test-threads=1",
      "cargo check -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",
      "make verify-qemu",
      "npm test && npm run lint && npx tsc --noEmit && npm run build && npm run deploy",
    ],
    terminalSessions: [
      {
        id: "g8l-s351-focused-current-runtime-oom-carrier-take-writer-guard",
        title: "S351 focused carrier-take writer membership",
        commandLines: [
          "cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s351_current_runtime_oom_carrier_take_writer_guard_integration -- --test-threads=1",
        ],
        outputLines: [
          "test result: ok; S351 focused 1 group / 36 passed; 0 failed",
          "shared S247 gate: 44 guarded readers + 24/69 guarded writers; 45 writers open",
          "S258 reader drop < S351 IRQ/writer < one carrier take < writer/IRQ drop < RuntimeMemory/S350",
          "production source callsites=2 board-qemu; RPi5 runtime observations=0; provider authority=0",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8l-s351-operations-timeline-production-publication",
        title:
          "S351 ayrı Operations/Timeline/telefon kartları ve production yayını",
        commandLines: [
          "npm test",
          "npm run lint",
          "npx tsc --noEmit",
          "npm run build",
          "npx wrangler pages deploy out --project-name=aselsan-microkernel --branch=main --commit-dirty=true",
          "curl + cmp custom-domain operations/timeline/yol-haritasi ve immutable deployment probe",
        ],
        outputLines: [
          "website tests=554/554 PASS; lint=PASS; TypeScript=PASS; static routes=23/23; files=193; Timeline cards=190",
          "production deployment=2e2534a1-d269-4bf4-9aac-6759ec76e36c; uploaded=109; existing=84",
          "operations HTTP 200 / 10958575 B / 63f0d1a7…1896 / cmp 0",
          "timeline HTTP 200 / 3106798 B / d578f08f…d2c3 / cmp 0; yol-haritasi HTTP 200 / 3106546 B / d11cac95…7a59 / cmp 0",
          "immutable 2e2534a1 hostname: curl exit 28 / HTTP 000 after 10 seconds",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
    ],
    terminalSessionsNote:
      "S351 yirmi dördüncü production writer'ın dar kaynak entegrasyonudur. Yalnız deferred carrier slotundan local owned değere exact take guarded'dır; S350–S345 restore/commit yolları ayrı kalır ve S352 arm-current writer bu kapıda tamamlanmış sayılmaz.",
    limitations: [
      "45 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 S351 wrapper için supported-profile invocation/observation kanıtı yoktur.",
      "arm_current_runtime_oom_teardown writer sınırı sıradaki ayrı S352 kapısıdır.",
      "Default-parallel PTY determinism, transient-contention liveness/soak, Generic SMP ve fiziksel RPi kabulü açık kalır.",
    ],
  },
snippet sha256: 9afef21a3f30file sha256: 9726dbf00f84
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s351_current_runtime_oom_carrier_take_writer_guard_integration -- --test-threads=1
proof: docs/M8.1-RPi5-G8l-S351-Current-Runtime-OOM-Carrier-Take-Writer-Guard-Integration-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 91d38c7b6222f0b4c117be786454853543da55a160e543d9b951057cc20dcc06