S356 · SOURCE-BOUND GATE EVIDENCE
S356 · QEMU ready-user initial-argument production writer guard integration
production acquire → S247 guard modülü → Operations-bound focused test Bu sayfa yalnız S356 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.
S356Production writer guardOperations id exactsource SHA exacttest target exact
operation: g8l-s356-qemu-ready-user-initial-arg-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 öğesiL3888–L3953
kernel/src/task/scheduler.rs::qemu_set_ready_user_initial_arg
/// Patch the sole initial x0 argument of an unpublished-in-practice Ready EL0
/// acceptance task. S133 spawns the caller before its endpoint owner so task
/// ids encode caller -> observer -> victim ordering; this helper is forbidden
/// once the user task has left the Ready container.
#[cfg(feature = "board-qemu")]
pub(crate) unsafe fn qemu_set_ready_user_initial_arg(task_id: u64, arg0: u64) -> bool {
let s356_irq_guard = crate::arch::aarch64::IrqGuard::new();
#[cfg(feature = "board-rpi5")]
let s273_scheduler_read_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s272_qemu_ready_user_initial_arg_preflight_read_access_guard_expansion::acquire_s273_production_scheduler_read_access()
.unwrap_or_else(|error| {
panic!(
"S273 QEMU Ready-task initial-arg preflight scheduler read access failed closed: {:?}",
error
)
});
let ready_task_is_eligible = {
let scheduler = &*core::ptr::addr_of!(SCHEDULER);
scheduler.ready_queue.iter().any(|candidate| {
let task = &candidate.task;
task.id == task_id
&& task.is_user
&& task.state == TaskState::Ready
&& task.saved_user_elr != 0
&& task.user_sp != 0
&& task.runtime_user_frames.is_none()
})
};
#[cfg(feature = "board-rpi5")]
drop(s273_scheduler_read_access);
if !ready_task_is_eligible {
return false;
}
#[cfg(feature = "board-rpi5")]
let s356_writer_access = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s356_qemu_ready_user_initial_arg_writer_guard_integration::acquire_s356_production_scheduler_writer_access()
.unwrap_or_else(|error| {
panic!(
"S356 QEMU Ready-task initial-arg writer guard failed closed: {:?}",
error
)
});
let scheduler = &mut *core::ptr::addr_of_mut!(SCHEDULER);
let ready = core::mem::take(&mut scheduler.ready_queue);
let mut tasks = ready.into_vec();
let patched = tasks
.iter_mut()
.find(|candidate| candidate.task.id == task_id)
.is_some_and(|candidate| {
let task = &mut candidate.task;
if !task.is_user
|| task.state != TaskState::Ready
|| task.saved_user_elr == 0
|| task.user_sp == 0
|| task.runtime_user_frames.is_some()
{
return false;
}
task.saved_user_gprs[0] = arg0;
true
});
scheduler.ready_queue = BinaryHeap::from(tasks);
#[cfg(feature = "board-rpi5")]
drop(s356_writer_access);
drop(s356_irq_guard);
patched
}snippet sha256: 69769f0fb756…file sha256: 838dd474448c…
02 · Ortak exclusion üyeliği
S247 production writer guard
tam Rust öğesiL159–L171
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s356_qemu_ready_user_initial_arg_writer_guard_integration.rs::acquire_s356_production_scheduler_writer_access
#[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
pub fn acquire_s356_production_scheduler_writer_access(
) -> Result<G8lS356ProductionSchedulerWriterAccess, 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(G8lS356ProductionSchedulerWriterAccess { _access: access })
}snippet sha256: d8efa764b20d…file sha256: 0c31f7609aff…
03 · Doğrulayan test kodu
Operations komutuna bağlı focused test
tam Rust öğesiL350–L361
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s356_qemu_ready_user_initial_arg_writer_guard_integration.rs::boundary_has_exactly_one_s356_acquire_and_release
#[test]
fn boundary_has_exactly_one_s356_acquire_and_release() {
let boundary = qemu_initial_arg_boundary();
assert_eq!(
boundary
.matches("acquire_s356_production_scheduler_writer_access")
.count(),
1
);
assert_eq!(boundary.matches("drop(s356_writer_access)").count(), 1);
}snippet sha256: a85d7575c744…file sha256: 81b161842cf8…
04 · Kapı kimlik kaydı
Operations sıra, kimlik ve başlık bağı
tam Operations kaydıL12525–L12626
website/src/lib/operations.ts::g8l-s356-qemu-ready-user-initial-arg-writer-guard-integration-partial
{
id: "g8l-s356-qemu-ready-user-initial-arg-writer-guard-integration-partial",
date: "2026-08-28",
sequence: 356,
status: "passed",
umbrella_status: "partial",
title:
"S356 · QEMU ready-user initial-argument production writer guard integration",
summary:
"S356, qemu_set_ready_user_initial_arg içindeki exact ready-queue round-trip ve saved_user_gprs[0] mutation'ını S355 ile 44 production reader'ın kullandığı aynı statik S247 state word'e bağlar. S356 IrqGuard kurulduktan sonra S273 immutable eligibility preflight'i task id, user niteliği, expected entry ve initial x0 koşullarını doğrular, owned sonuç üretir ve reader lease'ini bırakır. Ineligible yol writer almadan false döner. Eligible yolda CPU0-only exclusive S356 writer herhangi bir mutable scheduler aliasından önce alınır; ready queue exact bir kez owned vector'e taşınır, koşullar lease altında yeniden doğrulanır, yalnız exact target task'ın x0 register'ına arg0 yazılır ve bütün task'lar priority metadata korunarak kuyruğa geri yüklenir. Writer ve ardından IRQ guard explicit bırakılır. Guarded writer 29/69, açık writer 40, provider authority 0 ve whole-scheduler exclusion false'dur. Bir QEMU source callsite vardır; cfg kesişimi supported-profile runtime invocation üretmez ve runtime observations=0'dır. Parked IPC-call install writer sınırı S357 için ayrı açık kalır.",
evidence: [
"Focused S356 ready-user initial-arg writer-integration kapısının ilk koşusu 30/45 oldu. On beş RED gerçek production boundary/service'in henüz kaynakta bağlı olmamasını gösterdi: S356 acquire yoktu, S273 reader sonrası exclusive writer sırası kurulmamıştı, mutable scheduler aliası ile ready-queue round-trip guard kapsamına alınmamıştı, exact x0 commit/release ve CPU1 coverage service'i yoktu. Kaynak entegrasyonu bu gerçek RED'leri kapattı; taze koşu 45/45 PASS verdi.",
"Bir kaynak metni assertion'ı `task.id =` alt dizisini `task.id ==` karşılaştırmasında da eşleştiriyordu. Assertion yalnız exact assignment biçimlerini yasaklayacak şekilde semantik sözleşmeye hizalandı; ürün kodu, coverage, mutation veya exclusion assertion'ı zayıflatılmadı.",
"İlk birlikte regresyonda tarihsel S355 testi S356 boundary'sinin henüz bulunmamasını beklediği için 46/47 oldu. Tarihsel assertion daha güçlü güncel sözleşmeye taşındı: S355 kapanış snapshot'ı 28/69 guarded ve 41 open olarak korunur; S356 distinct transaction'da kendi acquire→alias→queue round-trip→x0 commit→release sırasını kurar. Final S355+S356 koşusu 92/92 PASS'tir.",
"Seçili regresyon 8 grup / 144/144 PASS'tir: S356 45/45, S355 47/47, S273 reader 12/12, S274 preflight 13/13, S275 writer-authority audit 15/15, runtime OOM EL0 IPC teardown 5/5, task lifecycle source 5/5 ve task publication source 2/2.",
"Production kaynak sırası S356 IrqGuard → S273 production reader eligibility preflight → owned eligibility sonucu → reader drop → ineligible early false veya CPU0-only S356 writer → exact tek mutable SCHEDULER aliası → exact tek ready_queue mem::take → owned task scan → id/is_user/entry/x0 revalidation → exact saved_user_gprs[0] = arg0 → bütün priority task'ların queue restore'u → writer drop → IRQ drop → patched bool dönüşü olarak kaynak-kilitlidir.",
"S273 reader ile S356 writer aynı S247 state word'ünü paylaşır fakat aynı anda canlı değildir. Reader owned sonucu çıkarıp bırakılmadan exclusive lease alınmaz; reader→writer upgrade ve nested membership yoktur. Ineligible, missing, wrong-entry, non-user veya nonzero-x0 yolları writer acquisition'dan önce kapanır.",
"Writer altında exact eligibility yeniden doğrulaması preflight/commit aralığında stale task acceptance'ını kapatır. Target bulunamazsa veya koşullar değişmişse mutation yapılmaz; owned queue yine bütün elemanlarıyla geri yüklenir. Exact target dışında task register'ı, task state'i, current_task, endpoint/CNode veya scheduler owner alanı değişmez.",
"Ready queue exact bir kez `core::mem::take` ile local owned vector'e taşınır. PriorityTask metadata'sı korunur; her eleman bir kez restore edilir. Source contract exact bir S356 acquire, bir mutable scheduler aliası, bir queue take/restore turu, bir x0 assignment ve bir explicit writer drop sayar.",
"Host-testable execute_s356_guarded_initial_arg_commit gerçek CPU0 sabitini şart koşar, access reddinde callback'i çalıştırmaz, callback error sonrasında membership'i exact bırakır ve success receipt'te exact 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. S355→S356 token monotonluğu aynı shared gate üzerinde doğrulanır; önceki kernel-task publication lease'i QEMU initial-argument commit'ine taşınmaz ve iki ayrı exclusive transaction olarak kalır.",
"S356 preflight önce S355'in 44 guarded reader / 28 guarded writer / 41 open envanterini exact doğrular; drift fail-closed InventoryDrift olur. Yalnız doğru zincir 29/69 guarded writer ve 40 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 S355 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 qemu_set_ready_user_initial_arg board-qemu cfg'sinde, production S356 acquire ise AArch64 none + board-rpi5 cfg'sindedir. Bu cfg kesişimi supported profile'da production invocation oluşturmaz. Bir helper 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 111450 B / b66694dc933e5586d12bfa7d1f77384deea35d0f2a5723844fc116bb316472a7 / 293 warning header; board-rpi4 150191 B / 8bb2400f9cef188369fb844b98c31f5a422c5d6e790720e19fe6bbbd86610d0a / 391; board-rpi5 571112 B / 7683b7601414d0f7f56f4137dc1d8a1ae71f1184dca607835c500e4019a62b1c / 1286 ve board-rpi5+smp 571054 B / 32baa23c4de3bd49f01cca7e27be88334ab80103d7034d7b38b58b21c8db64d5 / 1286. Zero-warning iddiası yoktur.",
"Build log ölçüsü ELF ölçüsü gibi sunulmaz. Fresh ELF artifact'leri ayrıca board-qemu 12601680 B / 73434d0a289d0e40c3b03d74d2e104617509763c661595ba2210bfb7e655011c; board-rpi4 7723568 B / 9bc577a22cce314346645e9eccb09aa12d2f0539e7714c11916612bb02eb67df; board-rpi5 13314616 B / c63ff1c40050325c6ac5276729b3526a38e3ba18372115e5782f9ec3f1c156c7 ve board-rpi5+smp 13318768 B / 275a6c0c2cd3d27a772afde630c152165f4f47bf589fd7c824e99d521dfc62fe olarak ölçüldü.",
"S238–S356 dependency matrisi S355'in exact 119 hedeflik listesine yalnız S356 eklenerek iki bağımsız seri koşuda 120 grup / 2192/2192 PASS verdi. Ham özetler 28024 B ve 5070b9723f0d8c5c972d014915eab926afc07e8f3e69907ad871af992bdb6f72 / ad8f90846faceb280444717ba6de95f322eb5a89c944e0fc2cbd2bd4501bf5ec6; timing alanları nedeniyle 61 diff satırı vardır. 28264 B normalize özetler 589d0d2c9511c1e3ae7c8b86a551f6e6f95c498d9444f64b95e4644d145230 ile byte-eşittir.",
"Exact yedi tarihsel frozen assertion dışındaki seri workspace 318 sonuç grubu / 4036 PASS / 0 fail / 7 filtered verdi; 69344 B log SHA-256 f76a398ded55454fa9b8db5d94f4f97c3d25ff15b6209859411546b243ae339f'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; 271 sonuç grubunda 3781 PASS / 1 fail, 64566 B log SHA-256 c0f944b18b8efd6c146186569681ffaa357ee9d95e409c632bc16c81212c55f4'tür ve global workspace GREEN iddia edilmez.",
"make verify-qemu 116354 B / 140c529c0d8eb7fd7e6fbf993fb0246382df537639077a6802449971062462e6 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 S356 writer bu board-qemu koşusunda runtime-observed değildir.",
"İlk scoped rustfmt check 7567 B / 7ec1693a2586493b70cb913227796a9577383e7ee58a67ef8e5021d3844d713c 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 63175 B / ab5f3deceb5758debf8402ea6f008e8e3ae91282eee5c36aee3fb6086af76b60 ile miras farklarda RED'dir; global format GREEN iddia edilmez.",
"S356 web/publication kabulü ayrı transaction'da tamamlandı. Website 569/569 test, lint, boş çıktılı TypeScript ve 23/23 static route build PASS verdi. Export 194 dosyadır; Timeline ve yol-haritasi S356 dahil 195 ayrı data-gate-policy kartı taşır. S356 promotion policy 10350 karakter / 10810 UTF-8 byte'tır ve S355 yoğunluğunun üstündedir.",
"İlk Cloudflare Pages production/main içerik yayını 8a3bff2f-0c85-4e43-b52c-0537c2d0e527 kimliğiyle 110 upload + 84 existing = 194 dosya olarak tamamlandı. Cache-busted custom-domain doğrulamasında Operations HTTP 200 / 11261327 B / 8acacf4a3bb7c62a4eeb277e574cac0f415566123b94477fc59ad0d74b62710b, Timeline HTTP 200 / 3346361 B / 7f3af8fc38a1d04cb31ea3f68aa5f1ac4085f7b8690bcb1907689a9db48c95a3 ve yol-haritasi HTTP 200 / 3346109 B / 17e7cb10dd0c3aebd27661ac8bdd21dfb5bfdbdcbd85528077087a375581279d ile ilgili yerel out dosyasına byte-exact PASS verdi. Immutable 8a3bff2f hostname 10 saniyede curl exit 28 / HTTP 000 verdi; custom-domain PASS bu sınırı gizlemez.",
"S356 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_S356=NO.",
"S356 bazlı bağlayıcı olmayan planlama görünümü R1 S356–S386, R2 S411–S461, R3 S540+, kaba S516–S566 ve risk paylı merkez ≈S541'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_s356_qemu_ready_user_initial_arg_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-s356-focused-qemu-ready-user-initial-arg-writer-guard",
title: "S356 focused QEMU ready-user x0 writer membership",
commandLines: [
"cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s356_qemu_ready_user_initial_arg_writer_guard_integration -- --test-threads=1",
],
outputLines: [
"initial test result: RED; S356 focused 30 passed; 15 failed; production boundary/service not yet wired",
"final test result: ok; S356 focused 1 group / 45 passed; 0 failed",
"shared S247 gate: 44 guarded readers + 29/69 guarded writers; 40 writers open",
"S356 IRQ < S273 eligibility reader/drop < S356 writer < one alias < queue take/revalidate/x0 commit/restore < writer/IRQ release",
"production source callsites=1; supported-profile runtime observations=0; provider authority=0",
],
exitCode: 0,
outputMode: "complete",
},
{
id: "g8l-s356-selected-regression",
title: "S356 selected ready-queue/x0 regression",
commandLines: [
"run S356, S355, S273, S274, S275, runtime_oom_el0_ipc_teardown, task_lifecycle_source and task_publication_source serially",
],
outputLines: [
"initial historical assertion: S355 46/47 RED; obsolete S356-absent expectation",
"strengthened contract: historical S355 snapshot + distinct S356 writer transaction",
"final result: 8 groups / 144 passed / 0 failed",
],
exitCode: 0,
outputMode: "complete",
},
{
id: "g8l-s356-production-publication",
title: "S356 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 569/569 PASS; lint PASS; TypeScript exit 0 with empty output; static routes 23/23",
"export files=194; Timeline/yol-haritasi gate cards=195; S356 policy=10350 chars",
"initial deployment=8a3bff2f-0c85-4e43-b52c-0537c2d0e527; uploaded=110; existing=84",
"custom domain: three routes HTTP 200 and byte-exact=true",
"immutable deployment hostname: curl exit 28 / HTTP 000 after 10 seconds",
],
exitCode: 0,
outputMode: "complete",
},
],
terminalSessionsNote:
"S356 yirmi dokuzuncu production writer'ın dar kaynak entegrasyonudur. Yalnız eligible ready-user task'ın exact initial x0 mutation'ı guarded'dır; bütün queue geri yüklenir, S357 parked IPC install ayrı kalır ve supported-profile runtime invocation uydurulmaz.",
limitations: [
"40 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 S356 wrapper için supported-profile invocation/observation yoktur.",
"install_qemu_parked_ipc_call writer sınırı sıradaki ayrı S357 kapısıdır.",
"Default-parallel PTY determinism, transient-contention liveness/soak, Generic SMP ve fiziksel RPi kabulü açık kalır.",
],
},snippet sha256: 3e66b4f678c8…file sha256: 9726dbf00f84…
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s356_qemu_ready_user_initial_arg_writer_guard_integration -- --test-threads=1proof: docs/M8.1-RPi5-G8l-S356-QEMU-Ready-User-Initial-Arg-Writer-Guard-Integration-Proof.md
Registry schema v5 · generator
website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9