S62 · SOURCE-BOUND GATE EVIDENCE
G8e SGI1 re-arm contract ve adversarial UART validator donduruldu; runtime kasıtlı RED
Operations --test hedefi → simulation public mod g8d_contract bağı → kaynak kesiti Bu sayfa yalnız S62 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.
S62Focused kod testiOperations id exactsource SHA exacttest target exact
operation: rpi5-g8e-contract-uart-validator-frozen
uygulama/model · focused test · Operations · 3 exact excerpt
sequence-bound=true · implementation-bound=false
01 · Testin bağlı olduğu uygulama/model kodu
Kapının yürüttüğü gerçek kaynak
tam Rust öğesiL1–L56
kernel/src/g8d_contract.rs::TARGET_LIST
//! Allocation-free contract for the narrow Raspberry Pi 5 G8d reschedule gate.
//!
//! G8d sends exactly one non-secure GICv2 SGI1 from CPU0 to CPU1. CPU1
//! acknowledges and EOIs that delivery exactly once, returns to EL1h with IRQ
//! masked, and runs one wake of G8c's existing statically pinned task on the
//! existing 64 KiB stack. Migration, TLB shootdown, CPU2 and CPU3 stay off.
pub const SOURCE_MPIDR: u64 = 0;
pub const SOURCE_CPU_INDEX: u64 = 0;
pub const TARGET_MPIDR: u64 = 0x100;
pub const TARGET_CPU_INDEX: u64 = 1;
pub const TARGET_LIST: u8 = 0x02;
pub const SGI_INTID: u32 = 1;
pub const EXPECTED_SENDS: u64 = 1;
pub const EXPECTED_DELIVERIES: u64 = 1;
pub const EXPECTED_ACKS: u64 = 1;
pub const EXPECTED_EOIS: u64 = 1;
pub const EXPECTED_RESCHEDULES: u64 = 1;
pub const EXPECTED_WAKEUPS: u64 = 1;
pub const EXPECTED_TASK_RUNS: u64 = 1;
pub const TASK_PROGRESS: u64 = 3;
pub const TASK_STACK_BYTES: usize = 64 * 1024;
pub const MAX_G8C_HANDOFF_TICKS: u64 = 5;
pub const MAX_STAGE_WAIT_TICKS: u64 = 100;
pub const MIN_PRIMARY_PROOF_TICKS: u64 = 10;
pub const TASK_ARGUMENT: u64 = 0x4738_4457_414b_4531; // "G8DWAKE1"
pub const TASK_RETURN: u64 = 0x4738_4452_4554_0001; // "G8DRET" + 1
pub const STAGE_IDLE: u64 = 0;
pub const STAGE_RELEASE: u64 = 1;
pub const STAGE_GIC_READY: u64 = 2;
pub const STAGE_ARMED: u64 = 3;
pub const STAGE_IRQ_HANDLED: u64 = 4;
pub const STAGE_TASK_DISPATCHED: u64 = 5;
pub const STAGE_TASK_ENTERED: u64 = 6;
pub const STAGE_TASK_RETURNED: u64 = 7;
pub const STAGE_PARKED: u64 = 8;
pub const STAGE_ERROR: u64 = u64::MAX;
pub const SPSR_MODE_MASK: u64 = 0xf;
pub const SPSR_EL1H: u64 = 0b0101;
pub const DAIF_IRQ_MASK: u64 = 1 << 7;
pub const CPACR_FPEN_MASK: u64 = 0b11 << 20;
const _: () = assert!(SOURCE_CPU_INDEX == 0);
const _: () = assert!(TARGET_CPU_INDEX == 1);
const _: () = assert!(TARGET_LIST == 1 << TARGET_CPU_INDEX);
const _: () = assert!(SGI_INTID < 16);
const _: () = assert!(EXPECTED_SENDS == 1);
const _: () = assert!(EXPECTED_SENDS == EXPECTED_DELIVERIES);
const _: () = assert!(EXPECTED_DELIVERIES == EXPECTED_ACKS);
const _: () = assert!(EXPECTED_ACKS == EXPECTED_EOIS);
const _: () = assert!(EXPECTED_EOIS == EXPECTED_RESCHEDULES);snippet sha256: e3482e853c89…file sha256: 4f1a63b7422c…
02 · Doğrulayan test kodu
Operations komutuna bağlı focused test
tam Rust öğesiL69–L90
simulation/tests/rpi5_g8d_uart.rs::source_target_delivery_ack_and_raw_eoi_fail_closed
#[test]
fn source_target_delivery_ack_and_raw_eoi_fail_closed() {
for (from, to, needle) in [
(
"TARGET_LIST=0x02",
"TARGET_LIST=0x04",
"field TARGET_LIST expected",
),
("SGI=1", "SGI=2", "field SGI expected"),
("SOURCE_CPU=0", "SOURCE_CPU=1", "field SOURCE_CPU expected"),
("DELIVERIES=1", "DELIVERIES=2", "field DELIVERIES expected"),
("ACKS=1", "ACKS=0", "field ACKS expected"),
("EOIS=1", "EOIS=0", "field EOIS expected"),
("ACK_RAW=0x1", "ACK_RAW=0x401", "ACK_RAW source mismatch"),
("EOI_RAW=0x1", "EOI_RAW=0x2", "raw EOI must exactly equal"),
("RESCHED=1", "RESCHED=2", "field RESCHED expected"),
] {
let messages = failures(replace_suffix(from, to));
assert!(has(&messages, needle), "{from}->{to}: {messages:?}");
}
}snippet sha256: 3cab0baa8404…file sha256: 6f0c72e97c10…
03 · Kapı kimlik kaydı
Operations sıra, kimlik ve başlık bağı
tam Operations kaydıL31353–L31450
website/src/lib/operations.ts::rpi5-g8e-contract-uart-validator-frozen
{
id: "rpi5-g8e-contract-uart-validator-frozen",
date: "2026-08-21",
sequence: 62,
status: "partial",
title:
"G8e SGI1 re-arm contract ve adversarial UART validator donduruldu; runtime kasıtlı RED",
summary:
"G8d'nin immutable fiziksel round-1 kanıtını yeniden üretmeden kullanan dar G8e sözleşmesi ve strict UART/adversarial validator host-only olarak donduruldu. Sözleşme yalnız aynı SGI1/TARGET_LIST=0x02 kanalında bir yeni CPU0→CPU1 wake/run ekler: prior=1, new=1 ve aggregate send/delivery/ack/EOI/reschedule/task wake/run toplamlarının tamamı exact 2'dir. İkinci gönderim öncesi ve finalde pending/active sıfır, Non-secure GICC_CTLR EOImodeNS bit 9 sıfır ve acknowledge ile aynı raw EOI zorunludur; CPEND, ICACTIVER, GICC_DIR ve GIC re-init fail-closed yasaktır. G8d+G8e validator zinciri 15/15 PASS ve verifier example cargo check PASS verdi. Buna karşılık source gate kasıtlı olarak yalnız eksik kernel/src/rpi5_g8e.rs runtime dosyasında RED tutuldu; implementasyon, image, microSD ve fiziksel BOOT8E henüz yoktur.",
evidence: [
"Host-only kapsam kernel/src/g8e_contract.rs, simulation/src/g8e_uart.rs, iki G8e test dosyası, beş satırlık sentetik fixture, verify_rpi5_g8e_log example'ı, simulation/src/lib.rs bağlantıları ve docs/M8.1-RPi5-G8e-SGI1-Rearm-Staged-Proof.md belgesidir.",
"Fixture exact 5 satır ve 40e4748fa64bcff1dda37e9c0eb1e2e59d42611ad435a4f7d5d349d91f14ce2f SHA-256 ile donduruldu; bu fixture fiziksel UART capture değildir.",
"Immutable prerequisite G8d round1 prior=1 olarak korunur; G8e yalnız NEW_SENDS/DELIVERIES/ACKS/EOIS/RESCHED/WAKEUPS/RUNS=1 ekler ve bütün TOTAL alanlarını exact 2 ister.",
"Exact kanal SGI=1, TARGET_LIST=0x02 ve SGIR=0x00020001'dir; başka hedef, kaynak veya ikinci yeni gönderim reddedilir.",
"G8E0 PRIOR_PENDING=0 ve PRIOR_ACTIVE=0; G8E2/BOOT8E FINAL_PENDING=0 ve FINAL_ACTIVE=0 zorunludur. Non-secure GICC_CTLR EOImodeNS bit 9 sıfır, EOIMODE=DROP_DEACTIVATE ve EOI_RAW=ACK_RAW=0x1 olmalıdır.",
"G8e diliminde CPEND, ICACTIVER, GICC_DIR ve GIC distributor/CPU-interface re-init yasaktır; validator extra/unknown marker, bozuk sıra, count substitution, timing underflow ve eski validator future-marker prefix durumlarını adversarial olarak reddeder.",
"Kabul marker'ları exact G8E0, G8E1, G8E2 ve BOOT8E'dir; CPU1 aynı statik stack region üzerinde ikinci kez PROGRESS=3 üretip local idle'a dönmelidir.",
"Validator'ın ilk iterasyonu 5 PASS/3 FAIL ile future-marker prefix ve timing-underflow hatalarını görünür kıldı; düzeltme sonrasında G8e 8/8 PASS verdi.",
"Final birlikte koşuda G8d 7/7 + G8e 8/8 = 15/15 PASS; verify_rpi5_g8e_log example cargo check ve hedefli rustfmt --check exit 0 verdi.",
"rpi5_g8e_source kasıtlı RED exit 101 verdi: line 16 include_str yalnız eksik kernel/src/rpi5_g8e.rs için OS error 2 üretti. Runtime uygulanmadan source gate yeşile çevrilmedi.",
],
terminalSessionsNote:
"Pozitif fixture ve validator sonuçları host-only sözleşme kanıtıdır. İlk 5/3 koşusu validator kusurlarını yakalayan tarihsel RED, son source-test RED'i ise eksik runtime'ı bilerek kilitleyen güncel fail-closed sınırdır.",
terminalSessions: [
{
id: "g8e-contract-freeze-inventory",
title: "Contract, fixture, belge ve hedefli format dondurması",
commandLines: [
"wc -l + shasum -a 256 G8e contract/validator/tests/fixture/example/proof",
"rustfmt --edition 2021 --check <five G8e Rust files>",
],
outputLines: [
"contract=105 lines · validator=710 lines · UART tests=321 lines · source tests=314 lines",
"fixture=5 lines · sha256=40e4748fa64bcff1dda37e9c0eb1e2e59d42611ad435a4f7d5d349d91f14ce2f",
"staged proof=190 lines",
"targeted rustfmt_check_exit=0",
],
exitCode: 0,
outputMode: "selected",
},
{
id: "g8e-validator-first-red",
title: "İlk adversarial validator koşusu ve bulunan iki kusur sınıfı",
commandLines: [
"cargo test -p aselsan_microkernel_simulation --test rpi5_g8e_uart",
],
outputLines: [
"first iteration: pass=5 fail=3 exit=101",
"older-validator future-marker prefix rejection bug exposed",
"timing-underflow adversarial bug exposed",
"both validator defects corrected before final acceptance",
],
exitCode: 101,
outputMode: "selected",
outputNote:
"Bu tarihsel RED runtime sonucu değildir; strict validator geliştirme sırasında yakalanıp düzeltilen host-only kusurlardır.",
},
{
id: "g8e-validator-final-green",
title: "G8d immutable prerequisite ve G8e final validator zinciri",
commandLines: [
"cargo test -p aselsan_microkernel_simulation --test rpi5_g8e_uart",
"cargo test -p aselsan_microkernel_simulation --test rpi5_g8d_uart --test rpi5_g8e_uart",
"cargo check -p aselsan_microkernel_simulation --example verify_rpi5_g8e_log",
],
outputLines: [
"G8e final=8/8 PASS",
"G8d=7/7 PASS · G8e=8/8 PASS · aggregate=15/15",
"verify_rpi5_g8e_log cargo_check_exit=0",
"fixture remains synthetic · physical capture=false",
],
exitCode: 0,
outputMode: "complete",
},
{
id: "g8e-source-intentional-red",
title: "Eksik runtime'a kilitli kasıtlı source-test RED",
commandLines: [
"cargo test -p aselsan_microkernel_simulation --test rpi5_g8e_source",
],
outputLines: [
"error: couldn't read simulation/tests/../../kernel/src/rpi5_g8e.rs",
"No such file or directory (os error 2)",
"simulation/tests/rpi5_g8e_source.rs:16:19 include_str",
"g8e_source_exit=101",
],
exitCode: 101,
outputMode: "complete",
},
],
limitations: [
"Bu kayıt contract, sentetik fixture ve host validator kanıtıdır; kernel G8e runtime implementasyonu, staged image, microSD yazımı veya fiziksel BOOT8E PASS değildir.",
"G8d round1 yalnız sequence 57'nin e1c43c7d…49c1d immutable raw kanıtından gelir; sentetik G8e fixture bu fiziksel kaydı değiştirmez veya yeniden kanıtlamaz.",
"rpi5_g8e_source yalnız eksik kernel/src/rpi5_g8e.rs nedeniyle kasıtlı RED kalır; runtime ve makine-kodu gate'leri tamamlanmadan paket üretilemez.",
"Sıra 61'deki G8b/G8c SMP layout regex STOP'u ile generic `_start`, scheduler/runqueue ve per-CPU timer/GIC açıkları devam eder; generic SMP fiziksel kapsam dışıdır.",
"Pi kapalıdır; karta, UART aygıtına veya doğrulanmış G8d rollback evidence'ına dokunulmadı.",
],
},snippet sha256: 04d3b910bb5e…file sha256: 9726dbf00f84…
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test rpi5_g8d_uart --test rpi5_g8e_uartRegistry schema v5 · generator
website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9