ASELSANMicrokernel
S352 · SOURCE-BOUND GATE EVIDENCE

S352 · Current-runtime-OOM arm production writer guard integration

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

S352Production writer guardOperations id exactsource SHA exacttest target exact

operation: g8l-s352-current-runtime-oom-arm-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 öğesiL5105–L5189
kernel/src/task/scheduler.rs::arm_current_runtime_oom_teardown

/// Move one live S129 authority bundle into the scheduler before its exact
/// Ready target becomes current. The target and one alternate switch target
/// must both exist before publication; no effect occurs in this arm phase.
pub unsafe fn arm_current_runtime_oom_teardown(
    monitor: crate::mm::RuntimePressureMonitor,
    coordinator: crate::mm::RuntimeOomCoordinator,
    ticket: crate::mm::RuntimeOomTeardownTicket,
    target_task_id: u64,
) -> Result<(), RuntimeOomTaskExecutionError> {
    let s352_irq_guard = crate::arch::aarch64::IrqGuard::new();
    #[cfg(feature = "board-rpi5")]
    let s259_deferred_carrier_scheduler_read_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s258_runtime_oom_arm_read_access_guard_expansion::acquire_s259_production_scheduler_read_access()
        .unwrap_or_else(|error| {
            panic!(
                "S259 runtime OOM deferred-carrier scheduler read access failed closed: {:?}",
                error
            )
        });
    let deferred_carrier_busy = (&*core::ptr::addr_of!(SCHEDULER))
        .deferred_current_runtime_oom
        .is_some();
    #[cfg(feature = "board-rpi5")]
    drop(s259_deferred_carrier_scheduler_read_access);
    if deferred_carrier_busy {
        return Err(RuntimeOomTaskExecutionError::DeferredCarrierBusy);
    }

    let ticket_preflight = crate::mm::with_boot_runtime_memory(|memory| {
        coordinator.preflight_teardown(&ticket, memory)
    })
    .map_err(|_| RuntimeOomTaskExecutionError::BootMemoryAuthority)?
    .map_err(RuntimeOomTaskExecutionError::CoordinatorPreflight)?;
    if monitor.instance_epoch() != ticket_preflight.domain.instance_epoch() {
        return Err(RuntimeOomTaskExecutionError::DeferredTargetMismatch);
    }

    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    let s352_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s352_current_runtime_oom_arm_writer_guard_integration::acquire_s352_production_scheduler_writer_access()
        .unwrap_or_else(|error| {
            panic!(
                "S352 current-runtime-OOM arm scheduler writer guard failed closed: {:?}",
                error
            )
        });
    let sched = &mut *core::ptr::addr_of_mut!(SCHEDULER);
    let binding = match sched.preflight_runtime_oom_task(ticket_preflight) {
        Ok(binding) => binding,
        Err(error) => {
            #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
            drop(s352_writer_access);
            drop(s352_irq_guard);
            return Err(error);
        }
    };
    if binding.location != RuntimeOomTaskLocation::Ready || binding.task_id != target_task_id {
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        drop(s352_writer_access);
        drop(s352_irq_guard);
        return Err(RuntimeOomTaskExecutionError::DeferredWrongLocation);
    }
    if !sched
        .ready_queue
        .iter()
        .any(|candidate| candidate.task.id != target_task_id)
    {
        #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
        drop(s352_writer_access);
        drop(s352_irq_guard);
        return Err(RuntimeOomTaskExecutionError::DeferredExitUnavailable);
    }
    sched.deferred_current_runtime_oom = Some(DeferredCurrentRuntimeOom {
        monitor,
        coordinator,
        ticket,
        binding,
        ipc_lifecycle_closed: false,
        ipc_teardown: None,
        witness: None,
    });
    #[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
    drop(s352_writer_access);
    drop(s352_irq_guard);
    Ok(())
}
snippet sha256: b6fd99507ad5file sha256: 838dd474448c
02 · Ortak exclusion üyeliği

S247 production writer guard

tam Rust öğesiL157–L169
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s352_current_runtime_oom_arm_writer_guard_integration.rs::acquire_s352_production_scheduler_writer_access

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

Operations komutuna bağlı focused test

tam Rust öğesiL290–L299
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s352_current_runtime_oom_arm_writer_guard_integration.rs::arm_boundary_has_exactly_one_s352_acquire

#[test]
fn arm_boundary_has_exactly_one_s352_acquire() {
    assert_eq!(
        arm_boundary()
            .matches("acquire_s352_production_scheduler_writer_access")
            .count(),
        1
    );
}
snippet sha256: 83341a4710c7file sha256: c0acf7a037c2
04 · Kapı kimlik kaydı

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

tam Operations kaydıL12905–L12983
website/src/lib/operations.ts::g8l-s352-current-runtime-oom-arm-writer-guard-integration-partial
  {
    id: "g8l-s352-current-runtime-oom-arm-writer-guard-integration-partial",
    date: "2026-08-28",
    sequence: 352,
    status: "passed",
    umbrella_status: "partial",
    title: "S352 · Current-runtime-OOM arm production writer guard integration",
    summary:
      "S352, arm_current_runtime_oom_teardown içindeki tek mutable scheduler transaction'ını S351 ve 44 production reader'ın kullandığı aynı statik S247 state word'e bağlar. Mevcut IRQ guard önce S259 busy-reader'ı korur; reader owned busy sonucunu çıkartıp explicit bırakılır, RuntimeMemory ticket preflight ile monitor epoch kararı writer'dan önce tamamlanır. Yalnız ardından gerçek per-CPU kimliğiyle CPU0-only S352 exclusive writer alınır. Exact tek mutable SCHEDULER aliası binding audit, Ready target, alternate switch target ve deferred carrier publication'ını kapsar. Binding error, wrong location, missing alternate ve success yollarının dördünde writer ardından IRQ explicit bırakılır. Guarded writer 25/69, açık writer 44 ve provider authority 0'dır. main.rs içinde altı source callsite vardır fakat RPi5-only wrapper supported-profile runtime observation=0'dır. Spawn-raw-user-ELF writer sınırı S353 için ayrı açık kalır.",
    evidence: [
      "Focused S352 arm writer-integration kapısı ilk koşuda 39/39 PASS verdi. S351–S346'nın her biri 36/36, S345 37/37, S258 11/11, S341 31/31, S334 26/26 ve altı Runtime-OOM regresyon paketiyle seçili tur 17 grup / 392/392 PASS'tir.",
      "Tarihsel S351 testi RED üretmeden daha güçlü sözleşmeye taşındı: artık 'S352 açık' etiketi yerine S352 acquire'ın mutable alias öncesinde olduğu, yalnız bir kez alındığı ve S351 lease'inin arm transaction'ına taşınmadığı doğrulanır. İlk ve final S351 sonucu 36/36 PASS; semantik assertion zayıflatılmadı.",
      "Production kaynak sırası mevcut S352 IrqGuard → S259 reader acquire → owned busy snapshot → reader drop → busy rejection → RuntimeMemory/coordinator ticket preflight → monitor epoch rejection → CPU0-only S352 writer acquire → tek mutable Scheduler aliası → binding/Ready/alternate doğrulaması → exact carrier publication olarak kaynak-kilitlidir.",
      "Busy, BootMemory/coordinator preflight ve epoch mismatch yolları S352 writer almaz. Writer alındıktan sonraki binding error, wrong location ve missing alternate kolları writer→IRQ explicit drop yapıp yalnız sonra özgün error döndürür; success de publication→writer drop→IRQ drop→Ok sırasını korur.",
      "Writer altında exact bir mutable scheduler aliası vardır. Bu alias `preflight_runtime_oom_task`, Ready-only target equality, başka ready switch target'ı ve monitor/coordinator/ticket/binding/ipc=false/ipc_teardown=None/witness=None carrier publication'ını kapsar; RuntimeMemory closure'ı writer dışında kalır.",
      "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 S351→S352 token monotonluğu doğrulandı.",
      "S352 preflight önce S351'in 44 guarded reader / 24 guarded writer / 45 open envanterini exact doğrular; yalnız sonra 25/69 guarded writer ve 44 open sonucu üretir. Inventory drift fail-closed reddedilir. S245 request yalnız non-consuming pending view ile incelenir; take edilmez, S244 admission veya provider authority üretilmez.",
      "kernel/src/main.rs içinde arm_current_runtime_oom_teardown için altı direct source callsite sayıldı. Production S352 wrapper exact AArch64 none + board-rpi5 cfg altındadır; 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. Build logları: board-qemu 111543 B / 04e08288910cff4fea836a4110ed642123636896eb2ad649edf4c982da02128b / 293 warning header; board-rpi4 150268 B / 459541c63593a4e6b9f98732ed1762b847564cd3b78deb2dcc719e237d1f3dab / 391; board-rpi5 561716 B / a2c58e2d1994e738ad609a24a03d480bc5c66ae64fd479b7d902e0eaf55b2e38 / 1260; board-rpi5+smp 561658 B / 78da7427b95bccbb6bdc393a9b5c5de72dd5103b3ae7c3b2c140a7e8296c35d3 / 1260. Zero-warning iddiası yoktur.",
      "Log ölçüsü ELF ölçüsü gibi sunulmaz. Fresh ELF artifact'leri ayrıca board-qemu 12605768 B / b4fdec96e4033398ea93db3d11b9e2de5c3454e20c072066c1e109666bd2181d; board-rpi4 7722576 B / e0c80eaa376a132561f9e9278977cf16b1b0ea6f6737e8a99e6af99682db57a9; board-rpi5 13095272 B / 6c565f6a5cf5c970049ded47d835ebf2c3be0e1d14172857b99911f92f837344 ve board-rpi5+smp 13105568 B / 0e7ec59ce9379bda17b44cbb9e7676330ec377e1320e92f1ced142fdb7ec5b6f olarak ölçüldü.",
      "S238–S352 dependency matrisi S351'in exact 115 hedeflik listesine yalnız S352 eklenerek iki bağımsız seri koşuda 116 grup / 2018/2018 PASS verdi. Ham özetler 27212 B ve be9039b8b36f4d0f021440ab144e52a33e905c23b843106c832a62a01f397e92 / a253246c19385490033a638328d5064154639545dfeb8a3c85105f55ed3e38af; süre alanları nedeniyle 40 diff satırı vardır. 27328 B normalize özetler 717a790a986e756aba5cf8ceed1ae4932270b7fe82ef4e529e4c7b39bde2a4a7 ile byte-eşittir.",
      "Exact yedi tarihsel frozen assertion dışındaki seri workspace 314 sonuç grubu / 3859 PASS / 0 fail / 7 filtered verdi; 68366 B log SHA-256 658963d56f6b27b7fe09d9b6bbf60e14e10e80cad4214295d27ff2078bef4c6e'dir.",
      "Filtresiz workspace exit 101 ile yalnız frozen S96 wiring_does_not_mutate_timer_gic_boot_or_expand_runtime_scope source-identity reddinde durdu; 267 sonuç grubunda 3604 PASS / 1 fail, 63588 B log SHA-256 83a57720985cb44314b8b3f1cc98f3d5a51e17f3b03e756e67197d1cec71a952'dir ve global workspace GREEN iddia edilmez.",
      "make verify-qemu 114974 B / ba0a6328071630c3dbe7556d1922a7a87d05a1d06c7e872cb89d3924b1700660 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 S352 writer bu board-qemu koşusunda runtime-observed değildir.",
      "Website ilk kabulü 557/557 test, lint, boş çıktılı TypeScript ve 23/23 static route PASS verdi; 194 dosya ile Timeline/yol-haritasi üzerinde 191 ayrı gate-policy kartı üretildi. S352 politika metni 8861 karakterdir ve 1573 karakterlik S324 yoğunluk tabanının üstündedir.",
      "İlk production/main içerik yayını 7cd09f1a-6cd9-4e48-a9a5-38bee0bcb1bc kimliğiyle 110 upload + 84 mevcut = 194 dosya olarak tamamlandı. Cache-busted custom-domain Operations 11008519 B / ed546b0440a2ff9b81c92e020a930999979e73e53b75270088eaa71b9e18bcfa, Timeline 3151548 B / ddd48f4c54552b7edc0777965a28589a78c78992fe723148365478912eb88d14 ve yol-haritasi 3151296 B / 37df7573c1a6a1ee4c5e76903cc99acdbd3332e8c58b37c679d9de8a1cd1c685 artifact'leri HTTP 200 ve ilgili yerel out ile byte-exact PASS verdi. Immutable 7cd09f1a hostname probe'u 10 saniyede curl exit 28 / HTTP 000 verdi; custom-domain PASS bu erişim sınırını gizlemez.",
      "S352 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_S352=NO.",
    ],
    commands: [
      "cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s352_current_runtime_oom_arm_writer_guard_integration -- --test-threads=1",
      "cargo build -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-rpi5",
      "cargo build -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-s352-focused-current-runtime-oom-arm-writer-guard",
        title: "S352 focused arm writer membership",
        commandLines: [
          "cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s352_current_runtime_oom_arm_writer_guard_integration -- --test-threads=1",
        ],
        outputLines: [
          "test result: ok; S352 focused 1 group / 39 passed; 0 failed",
          "shared S247 gate: 44 guarded readers + 25/69 guarded writers; 44 writers open",
          "S259 reader/ticket/epoch < S352 writer < one mutable alias < binding/Ready/alternate/publication < writer/IRQ release",
          "production source callsites=6; RPi5 runtime observations=0; provider authority=0",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8l-s352-operations-timeline-production-publication",
        title: "S352 Operations / Timeline / phone production publication",
        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 --max-time 10 https://7cd09f1a.aselsan-microkernel.pages.dev/operations/",
        ],
        outputLines: [
          "website 557/557 PASS; lint PASS; TypeScript PASS; static routes 23/23 PASS",
          "deployment 7cd09f1a-6cd9-4e48-a9a5-38bee0bcb1bc; 110 uploaded + 84 existing = 194 files",
          "Timeline cards=191; S352 policy=8861 chars; S324 baseline=1573 chars",
          "custom domain Operations/Timeline/yol-haritasi HTTP 200 and byte-exact PASS",
          "immutable deployment hostname: curl exit 28 / HTTP 000 after 10 seconds",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
    ],
    terminalSessionsNote:
      "S352 yirmi beşinci production writer'ın dar kaynak entegrasyonudur. Yalnız arm transaction'ındaki scheduler audit/Ready/alternate/publication sınırı guarded'dır; S351 later take ayrı kalır ve S353 spawn-raw-user-ELF writer bu kapıda tamamlanmış sayılmaz.",
    limitations: [
      "44 production writer aynı shared gate dışında kaldığı için whole-scheduler exclusion ve provider authority açık kalır.",
      "Altı main.rs source callsite wiring kanıtıdır; RPi5-only S352 wrapper için supported-profile invocation/observation kanıtı yoktur.",
      "spawn_raw_user_elf_task writer sınırı sıradaki ayrı S353 kapısıdır.",
      "Default-parallel PTY determinism, transient-contention liveness/soak, Generic SMP ve fiziksel RPi kabulü açık kalır.",
    ],
  },
snippet sha256: 29cbd0a5ced4file sha256: 9726dbf00f84
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s352_current_runtime_oom_arm_writer_guard_integration -- --test-threads=1
proof: docs/M8.1-RPi5-G8l-S352-Current-Runtime-OOM-Arm-Writer-Guard-Integration-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9