ASELSANMicrokernel
S357 · SOURCE-BOUND GATE EVIDENCE

S357 · QEMU parked-IPC CALL production writer guard integration

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

S357Production writer guardOperations id exactsource SHA exacttest target exact

operation: g8l-s357-qemu-parked-ipc-call-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 öğesiL3601–L3743
kernel/src/task/scheduler.rs::install_qemu_parked_ipc_call

#[cfg(feature = "board-qemu")]
pub(crate) unsafe fn install_qemu_parked_ipc_call(
    caller_task: u64,
    target_endpoint: crate::ui::capability::CapId,
    expected_generation: u64,
    reply_cap_id: crate::ui::capability::CapId,
    message: crate::ui::capability::IpcMessage,
) -> Result<QemuParkedIpcCall, &'static str> {
    use crate::ipc_rendezvous::{CallOutcome, FinishOutcome};

    if caller_task == 0 || target_endpoint == 0 || reply_cap_id == 0 {
        return Err("S132 live IPC fixture requires non-zero identities");
    }
    let s357_irq_guard = crate::arch::aarch64::IrqGuard::new();
    let s357_transaction = IPC_TRANSACTION_LOCK.lock();
    #[cfg(feature = "board-rpi5")]
    let s272_scheduler_read_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s270_qemu_parked_ipc_call_install_read_access_guard_expansion::acquire_s272_production_scheduler_read_access()
        .unwrap_or_else(|error| panic!("S272 QEMU parked-IPC install scheduler read access failed closed: {:?}", error));
    let (caller_is_ready, caller_authority_is_live) = {
        let sched = &*core::ptr::addr_of!(SCHEDULER);
        let caller_is_ready = sched.ready_queue.iter().any(|candidate| {
            candidate.task.id == caller_task && candidate.task.state == TaskState::Ready
        });
        let caller_authority_is_live = sched
            .capability_for_task(caller_task, target_endpoint)
            .is_some_and(|capability| {
                capability.generation == expected_generation
                    && capability.owner == caller_task
                    && capability.parent == Some(target_endpoint)
                    && capability
                        .rights
                        .contains(crate::ui::capability::CapabilityRights::ENDPOINT_SEND)
            })
            && sched
                .capability_for_task(caller_task, reply_cap_id)
                .is_some_and(|capability| {
                    capability.owner == caller_task
                        && capability.parent.is_none()
                        && capability.kind == crate::ui::capability::CapabilityKind::Endpoint
                });
        (caller_is_ready, caller_authority_is_live)
    };
    #[cfg(feature = "board-rpi5")]
    drop(s272_scheduler_read_access);
    if !caller_is_ready || !caller_authority_is_live {
        return Err("S132 caller authority is not live in the Ready task");
    }

    #[cfg(feature = "board-rpi5")]
    let s357_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s357_qemu_parked_ipc_call_writer_guard_integration::acquire_s357_production_scheduler_writer_access()
        .unwrap_or_else(|error| panic!("S357 QEMU parked-IPC CALL writer guard failed closed: {:?}", error));
    let sched = &mut *core::ptr::addr_of_mut!(SCHEDULER);
    let caller_is_still_valid = sched.ready_queue.iter().any(|candidate| {
        candidate.task.id == caller_task && candidate.task.state == TaskState::Ready
    }) && sched
        .capability_for_task(caller_task, target_endpoint)
        .is_some_and(|capability| {
            capability.generation == expected_generation
                && capability.owner == caller_task
                && capability.parent == Some(target_endpoint)
                && capability
                    .rights
                    .contains(crate::ui::capability::CapabilityRights::ENDPOINT_SEND)
        })
        && sched
            .capability_for_task(caller_task, reply_cap_id)
            .is_some_and(|capability| {
                capability.owner == caller_task
                    && capability.parent.is_none()
                    && capability.kind == crate::ui::capability::CapabilityKind::Endpoint
            });
    if !caller_is_still_valid {
        #[cfg(feature = "board-rpi5")]
        drop(s357_writer_access);
        return Err("S132 caller authority changed before parked CALL commit");
    }
    let mut endpoints = crate::ui::capability::ENDPOINT_REGISTRY.lock();
    let target_index = endpoints
        .iter()
        .position(|endpoint| endpoint.id == target_endpoint && !endpoint.is_reply_cap)
        .ok_or("S132 target endpoint missing")?;
    if endpoints[target_index]
        .rendezvous
        .waiting_receiver()
        .is_some()
        || !endpoints.iter().any(|endpoint| {
            endpoint.id == reply_cap_id
                && endpoint.is_reply_cap
                && endpoint.owner == caller_task
                && endpoint.reply_target == Some(target_endpoint)
        })
    {
        return Err("S132 reply object is not uniquely linked to a queued CALL");
    }
    let mut blocked = sched.ipc_blocked_tasks.lock();
    blocked
        .try_reserve(1)
        .map_err(|_| "S132 blocked-task capacity unavailable")?;

    let outcome = endpoints[target_index]
        .rendezvous
        .call(caller_task, reply_cap_id, message)
        .map_err(|_| "S132 rendezvous CALL publication failed")?;
    if !matches!(outcome, CallOutcome::Queued) {
        panic!("S132 fixture unexpectedly delivered instead of queueing CALL");
    }
    if !matches!(
        endpoints[target_index]
            .rendezvous
            .finish_call_park(caller_task, reply_cap_id),
        Ok(FinishOutcome::Park)
    ) {
        panic!("S132 fixture failed to park its published CALL");
    }

    let ready = core::mem::take(&mut sched.ready_queue);
    let mut ready_tasks = ready.into_vec();
    let caller_position = ready_tasks
        .iter()
        .position(|candidate| candidate.task.id == caller_task)
        .expect("preflighted S132 caller disappeared from Ready queue");
    let mut caller = ready_tasks.swap_remove(caller_position).task;
    sched.ready_queue = BinaryHeap::from(ready_tasks);
    caller.state = TaskState::BlockedOnIpc {
        endpoint_id: reply_cap_id,
        is_call: true,
    };
    blocked.push(caller);

    let parked = QemuParkedIpcCall {
        caller_task,
        endpoint_id: target_endpoint,
        reply_cap_id,
    };
    drop(blocked);
    drop(endpoints);
    #[cfg(feature = "board-rpi5")]
    drop(s357_writer_access);
    drop(s357_transaction);
    drop(s357_irq_guard);
    Ok(parked)
}
snippet sha256: 005dcbc5b672file sha256: 838dd474448c
02 · Ortak exclusion üyeliği

S247 production writer guard

tam Rust öğesiL166–L178
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s357_qemu_parked_ipc_call_writer_guard_integration.rs::acquire_s357_production_scheduler_writer_access

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

Operations komutuna bağlı focused test

tam Rust öğesiL467–L478
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s357_qemu_parked_ipc_call_writer_guard_integration.rs::boundary_has_exactly_one_s357_acquire_and_success_release

#[test]
fn boundary_has_exactly_one_s357_acquire_and_success_release() {
    let boundary = parked_call_boundary();
    assert_eq!(
        boundary
            .matches("acquire_s357_production_scheduler_writer_access")
            .count(),
        1
    );
    assert_eq!(boundary.matches("drop(s357_writer_access)").count(), 2);
}
snippet sha256: b9b153976126file sha256: 5e811f4730ec
04 · Kapı kimlik kaydı

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

tam Operations kaydıL12402–L12524
website/src/lib/operations.ts::g8l-s357-qemu-parked-ipc-call-writer-guard-integration-partial
  {
    id: "g8l-s357-qemu-parked-ipc-call-writer-guard-integration-partial",
    date: "2026-08-28",
    sequence: 357,
    status: "passed",
    umbrella_status: "partial",
    title: "S357 · QEMU parked-IPC CALL production writer guard integration",
    summary:
      "S357, install_qemu_parked_ipc_call içindeki exact scheduler/rendezvous transaction'ını S356 ile 44 production reader'ın kullandığı aynı statik S247 state word'e bağlar. IRQ ve IPC transaction kurulduktan sonra tarihsel S272 immutable reader caller Ready membership ile target/reply capability authority'sini owned bool'lara çıkarır ve lease'ini bırakır; invalid caller writer almadan döner. Eligible yolda CPU0-only S357 writer herhangi bir mutable scheduler aliasından önce alınır. Caller readiness ve capability authority lease altında yeniden doğrulanır; endpoint CALL publication, park finish, Ready-queue withdrawal, exact BlockedOnIpc geçişi ve blocked-queue publication aynı writer sınırında tamamlanır. Blocked ve endpoint lock'ları writer'dan önce, writer da IPC transaction/IRQ ve receipt dönüşünden önce explicit bırakılır. Guarded writer 30/69, açık writer 39, provider authority 0 ve whole-scheduler exclusion false'dur. Bir QEMU source callsite vardır; board-qemu outer helper ile board-rpi5 production acquire cfg kesişimi supported-profile runtime invocation üretmez ve runtime observations=0'dır. Notification-grant revoke writer sınırı S358 için ayrı açık kalır.",
    evidence: [
      "Focused S357 parked-IPC CALL writer-integration kapısının ilk koşusu 29/46 PASS ve 17 RED verdi. RED'ler gerçek production wiring eksikleriydi: S357 acquire/revalidation/release yoktu, mutable scheduler aliası exclusive membership'ten önceydi, endpoint/blocked lock kapsamı ile CALL/park/Ready→Blocked transaction'ı shared gate'e üye değildi ve CPU1 coverage service'i bağlı değildi. Entegrasyon bu eksikleri kapattı; taze focused koşu 46/46 PASS verdi.",
      "Bir source assertion tarihsel fixture fonksiyon adını run_qemu_runtime_oom_smoke sanıyordu; gerçek sınır run_qemu_live_ipc_runtime_oom_smoke ve downstream arm call arm_current_runtime_oom_teardown olarak hizalandı. Diğer assertion satır kırılmış `.try_reserve(1)` ifadesini bitişik `blocked.try_reserve(1)` sanıyordu; semantik reserve-before-CALL sırası korunarak gerçek kaynak şekline taşındı. Ürün, coverage, authority veya exclusion assertion'ı zayıflatılmadı.",
      "İlk birlikte regresyonda tarihsel S356 testi S357 acquire'ın henüz bulunmamasını beklediği için 44/45 RED verdi. Assertion daha güçlü güncel sözleşmeye taşındı: S356 kapanış snapshot'ı 29/69 guarded ve 40 open olarak korunur; S357 parked-CALL boundary'sinde ayrı acquire→revalidate→CALL/park→Ready withdrawal→Blocked publication→release transaction'ıdır. Final S356+S357 koşusu 91/91 PASS'tir.",
      "S270/S272 tarihsel reader testi reader dilimindeki exact iki capability_for_task okumasını korurken writer-altı revalidation ile bütün fonksiyondaki toplam dört okumayı ayrıca sayacak biçimde güçlendirildi. Reader drop < S357 acquire < mutable alias < revalidation < endpoint registry sırası exact doğrulanır.",
      "Seçili regresyon 8 grup / 135/135 PASS'tir: S357 46/46, S356 45/45, S270/S272 parked-call reader 12/12, S276 writer-authority audit 15/15, runtime live-IPC teardown 5/5, runtime EL0 IPC teardown 5/5, task lifecycle source 5/5 ve task publication source 2/2.",
      "Production kaynak sırası nonzero identity preflight → s357_irq_guard → s357_transaction → S272 production reader → owned Ready/authority bool'ları → reader drop → invalid early error veya CPU0-only S357 writer → exact tek mutable SCHEDULER aliası → lease-altı caller/capability revalidation → endpoint registry → linked reply validation → blocked capacity reserve → CALL publish → finish_call_park → ready_queue mem::take/owned withdrawal/restore → BlockedOnIpc state → blocked push → owned receipt → nested lock drops → writer drop → transaction drop → IRQ drop → Ok(receipt) olarak kaynak-kilitlidir.",
      "S272 reader ile S357 writer aynı S247 state word'ünü paylaşır fakat aynı anda canlı değildir. Reader iki owned doğrulama sonucu çıkarıp bırakılmadan exclusive lease alınmaz; invalid Ready membership, target generation/owner/parent/SEND authority veya reply owner/root/Endpoint niteliği writer acquisition'dan önce kapanır. Reader→writer upgrade ve nested membership yoktur.",
      "Writer alındıktan sonra exact Ready membership ile target/reply capability sözleşmesi yeniden doğrulanır. Preflight/commit aralığında caller veya authority değişmişse stale kabul edilmez; S357 writer explicit bırakılır ve endpoint/rendezvous/scheduler mutation başlamadan error döner.",
      "Endpoint registry ve scheduler-owned ipc_blocked_tasks lock'ları yalnız writer altında alınır. Normal target endpoint, waiting receiver absence ve exact caller-owned linked reply object doğrulanır. Blocked queue kapasitesi rendezvous CALL publication'dan önce reserve edilir; allocation failure RAII ile bütün üyelikleri fail-closed bırakır.",
      "Rendezvous call exact caller/reply/message tuple'ını yayınlar ve yalnız CallOutcome::Queued kabul edilir. finish_call_park aynı caller/reply tuple'ında yalnız FinishOutcome::Park kabul eder. Bu iki IPC state değişimi scheduler Ready→Blocked mutation'ından önce ve aynı IRQ/IPC transaction altında tamamlanır.",
      "Ready queue exact bir kez core::mem::take ile owned vector'e taşınır. Exact caller position ile swap_remove edilir; caller dışındaki bütün PriorityTask öğeleri BinaryHeap::from ile geri yüklenir. Caller state yalnız BlockedOnIpc { endpoint_id: reply_cap_id, is_call: true } yapılır ve exact bir kez blocked queue'ya push edilir.",
      "Success receipt yalnız caller_task, target endpoint ve reply capability id'sini owned olarak taşır. Blocked guard, endpoint guard, S357 writer, IPC transaction ve IRQ guard bu sırada explicit bırakılır; receipt ancak transaction tamamlandıktan sonra döner. Fallible writer yolları RAII ile aynı ters sırayı korur ve gate sızıntısı üretmez.",
      "Host-testable execute_s357_guarded_parked_call_commit gerçek CPU0 sabitini şart koşar, access reddinde callback'i çalıştırmaz, callback error sonrasında exclusive membership'i exact bırakır ve success receipt'te token/output döndürür. Live reader writer'ı; live writer ikinci writer ile yeni reader'ı reddeder; release sonrasında gate yeniden alınabilir.",
      "Bütün non-CPU0 kimlikleri callback ve mutable alias öncesi fail-closed InvalidCpu alır. S356→S357 token monotonluğu aynı shared state word üzerinde doğrulanır; önceki x0 commit lease'i parked-CALL transaction'ına taşınmaz ve iki ayrı exclusive transaction olarak kalır.",
      "S357 preflight önce S356'nın 44 guarded reader / 29 guarded writer / 40 open envanterini exact doğrular; drift fail-closed InventoryDrift olur. Yalnız doğru zincir 30/69 guarded writer ve 39 open sonucu üretir. Pending S245 request yalnız non-consuming pending_view ile incelenir; request take edilmez, request id değişmez, S244 admission yayınlanmaz ve provider authority üretilmez.",
      "CPU1 service source order'da S356 service'inden sonra ve tarihsel S242 consumer'dan önce bağlıdır. Bu service yalnız non-consuming coverage/preflight observation'ıdır; S247 writer edinmez, S245 request tüketmez ve provider/admission authority üretmez.",
      "Outer install_qemu_parked_ipc_call board-qemu cfg'sinde, production S357 acquire ise AArch64 none + board-rpi5 cfg'sindedir. Bu cfg kesişimi supported profile'da production invocation oluşturmaz. Bir main.rs source callsite wiring kanıtıdır; runtime telemetry, RPi5 cihaz gözlemi veya product acceptance değildir ve runtime observations=0 olarak kalır.",
      "Fresh izole AArch64 profilleri 4/4 exit 0 verdi. Build logları board-qemu 112039 B / 2f08f2edb13b5adee87e0b81c9997779a237fac329c3292a357ee69902977486 / 293 warning header; board-rpi4 150943 B / 556480f6b01a8e27a9abdf836af0cb3c5acd2a77cc0cf2f843982e1c73e54a99 / 391; board-rpi5 574604 B / 23fa916ce8aced06d184f2290b2f14ae9b6c406abaab03b849692cb9a2fa06f0 / 1294 ve board-rpi5+smp 574442 B / 4d7e36bbdd569def02059b799e9070dfe25624af797945719a2ef44f9362856c / 1294. Zero-warning iddiası yoktur.",
      "Build log ölçüsü ELF ölçüsü gibi sunulmaz. Fresh ELF artifact'leri ayrıca board-qemu 17319824 B / 0558988f26a18a52bd1547aec07ef483ad8e8c5655746a6a2ac79f8c2803cfea; board-rpi4 12324472 B / f4b6fd35876e269cf0182b25aba787c40773694a376a8a8643d710b4c9c45c2e; board-rpi5 17880536 B / 91ed9426afc779834765e8858c97308d1ade3730f6680c01f16a8b29556fdee7 ve board-rpi5+smp 17881872 B / 4b6e7b1b81e05230e6048f03a171c83277f56897764d94f99b2841b9aa5fb8e8 olarak ölçüldü.",
      "S238–S357 dependency matrisi S356'nın exact 120 hedeflik listesine yalnız S357 eklenerek iki bağımsız seri koşuda 121 grup / 2238/2238 PASS verdi. Ham özetler 28377 B ve cb69446ffadc8d192e9bf9eab2ceaaaddfcc9bc17004156ac870006ebf691892 / cbb4b725b831b725ef21d381d9c37eab6e425ef4bef231fb6c97163dcf835934; timing alanları nedeniyle 55 diff satırı vardır. 28619 B normalize özetler 55862f969ea3003b961d8e4484ce754352289835a47da3e358b4ba18437827ea ile byte-eşittir.",
      "Exact yedi tarihsel frozen assertion dışındaki seri workspace 319 sonuç grubu / 4083 PASS / 0 fail / 7 filtered verdi; 69506 B log SHA-256 935dce8586e3d825f49b8ee11962c5b785608231bf1dd0fa634bd7303b137dd2'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; 272 sonuç grubunda 3828 PASS / 1 fail, 64728 B log SHA-256 6faa10608bac12d6fb249204ccbd01ade1b27cb7296614b2408fc26802bbeaff'tir ve global workspace GREEN iddia edilmez.",
      "make verify-qemu 116354 B / 74dd2e63757b338241625a46a47d5c46ed461eb7af363b2b03933c1bbb715701 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 S357 writer bu board-qemu koşusunda runtime-observed değildir.",
      "İlk scoped rustfmt check 8808 B / 721e5c9595006facf2a8a51cdd3bca05759d548f374468fe596090b63b2614c0 ile yalnız yeni modül/test farklarını gösterdi. Yalnız bu iki yeni dosya formatlandı; final scoped check boş çıktılı PASS'tir. Global cargo fmt 67506 B / 98676e83e262afeb0e5bb50994443c700d692e598f61bad3344f96c1696deccd ile miras farklarda RED'dir; global format GREEN iddia edilmez.",
      "S357 web/publication kabulü çekirdek transaction'ından ayrı yürütüldü. Website 572/572 test, lint, boş çıktılı TypeScript ve 23/23 static route build PASS verdi. Export 195 dosyadır; Timeline ve yol-haritasi S357 dahil 196 ayrı data-gate-policy kartı taşır. S357 promotion policy yayın kanıtı eklenmeden önce 11008 karakter / 11485 UTF-8 byte ölçüldü ve S356'nın 10350 karakterlik yoğunluk tabanının üstünde kaldı.",
      "İlk Cloudflare Pages production/main içerik yayını 8eb7cb9c-105b-481c-ab3f-1092879480ef kimliğiyle 111 upload + 84 existing = 195 dosya olarak tamamlandı. Cache-busted custom-domain doğrulamasında Operations HTTP 200 / 11335216 B / c083661ffe98948c92c559adbd675cf10acba5a90352dcd3c326d1e847ddd73d, Timeline HTTP 200 / 3417523 B / e6195698a843a509740cc8828df4f7147c9be213c4ef034debb9d4bfa326d904 ve yol-haritasi HTTP 200 / 3417271 B / 3f945aed5fd175ed5a320df9ea09fd0e37fec35bc17b54713c673abc906c647d ile ilgili yerel out dosyasına byte-exact PASS verdi. Immutable 8eb7cb9c hostname probe'u connection reset nedeniyle curl exit 35 / HTTP 000 verdi; custom-domain PASS bu erişim sınırını gizlemez.",
      "S357 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_S357=NO.",
      "S357 bazlı bağlayıcı olmayan planlama görünümü R1 S357–S387, R2 S412–S462, R3 S541+, kaba S517–S567 ve risk paylı merkez ≈S542'dir. Bu projeksiyon yeni sıra veya ürün taahhüdü oluşturmaz.",
    ],
    commands: [
      "cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s357_qemu_parked_ipc_call_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-s357-focused-qemu-parked-ipc-call-writer-guard",
        title: "S357 focused QEMU parked-CALL writer membership",
        commandLines: [
          "cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s357_qemu_parked_ipc_call_writer_guard_integration -- --test-threads=1",
        ],
        outputLines: [
          "initial test result: RED; S357 focused 29 passed; 17 failed; production boundary/service not yet wired",
          "final test result: ok; S357 focused 1 group / 46 passed; 0 failed",
          "shared S247 gate: 44 guarded readers + 30/69 guarded writers; 39 writers open",
          "S357 IRQ/IPC transaction < S272 reader/drop < S357 writer/revalidation < CALL/park < Ready withdrawal/Blocked publication < nested locks/writer/transaction/IRQ release",
          "production source callsites=1; supported-profile runtime observations=0; provider authority=0",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8l-s357-selected-regression",
        title: "S357 selected parked-CALL/Ready→Blocked regression",
        commandLines: [
          "run S357, S356, S270/S272, S276, runtime live-IPC teardown, runtime EL0 IPC teardown, task_lifecycle_source and task_publication_source serially",
        ],
        outputLines: [
          "initial historical assertion: S356 44/45 RED; obsolete S357-absent expectation",
          "strengthened contracts: historical S356 snapshot + distinct S357 writer transaction + reader-slice versus writer-revalidation counts",
          "final result: 8 groups / 135 passed / 0 failed",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8l-s357-core-acceptance",
        title: "S357 four-profile, dependency, workspace and QEMU acceptance",
        commandLines: [
          "run four fresh AArch64 profile builds",
          "run S238-S357 dependency list twice and normalize timing fields",
          "run filtered and unfiltered serial workspace audits",
          "make verify-qemu",
        ],
        outputLines: [
          "four profiles 4/4 exit 0; log and ELF byte/hash measurements recorded separately",
          "dependency 121 groups / 2238/2238 twice; normalized 28619-byte summaries are SHA-256 identical",
          "filtered workspace 319 groups / 4083 PASS / 7 filtered; unfiltered frozen-S96 remains RED",
          "QEMU W^X 31/31 + S130-S154 + IPC 20/20 + SEC5 PASS; not an S357 runtime observation",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8l-s357-production-publication",
        title: "S357 Operations/Timeline/phone production publication",
        commandLines: [
          "npm test && npm run lint && npx tsc --noEmit && npm run build",
          "npm run deploy",
          "cache-busted curl + cmp for /operations/, /timeline/ and /yol-haritasi/",
        ],
        outputLines: [
          "website tests 572/572 PASS; lint PASS; TypeScript exit 0 with empty output; static routes 23/23",
          "export files=195; Timeline/yol-haritasi gate cards=196; pre-publication S357 policy=11008 chars / 11485 bytes",
          "deployment 8eb7cb9c-105b-481c-ab3f-1092879480ef; 111 upload + 84 existing",
          "custom-domain routes HTTP 200 and byte-exact=true; immutable hostname curl exit 35 / HTTP 000",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
    ],
    terminalSessionsNote:
      "S357 otuzuncu production writer'ın dar kaynak entegrasyonudur. Yalnız exact parked-CALL publish/park ve Ready→Blocked scheduler transaction'ı guarded'dır; S358 notification-grant revoke ayrı kalır ve supported-profile runtime invocation uydurulmaz.",
    limitations: [
      "39 production writer aynı shared gate dışında kaldığı için whole-scheduler exclusion ve provider authority açık kalır.",
      "Bir QEMU source callsite wiring kanıtıdır; cfg kesişimi nedeniyle RPi5-only S357 wrapper için supported-profile invocation/observation yoktur.",
      "revoke_notification_grant writer sınırı sıradaki ayrı S358 kapısıdır.",
      "Global rustfmt ve unfiltered frozen-S96 workspace kontrolleri RED kalır.",
      "Default-parallel PTY determinism, transient-contention liveness/soak, Generic SMP ve fiziksel RPi kabulü açık kalır.",
    ],
  },
snippet sha256: abe0db201b50file sha256: 9726dbf00f84
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s357_qemu_parked_ipc_call_writer_guard_integration -- --test-threads=1
proof: docs/M8.1-RPi5-G8l-S357-QEMU-Parked-IPC-Call-Writer-Guard-Integration-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 91d38c7b6222f0b4c117be786454853543da55a160e543d9b951057cc20dcc06