ASELSANMicrokernel
S230 · SOURCE-BOUND GATE EVIDENCE

G8l: production migration-lifecycle S180 scheduler-admission boundary

Operations --test hedefi → test hedefiyle aynı adlı uygulama/model modülü → kaynak kesiti Bu sayfa yalnız S230 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S230Focused kod testiOperations id exactsource SHA exacttest target exact

operation: g8l-s230-production-migration-lifecycle-s180-scheduler-admission-partial

uygulama/model · focused test · Operations · 3 exact excerpt

sequence-bound=true · implementation-bound=true
01 · Testin bağlı olduğu uygulama/model kodu

Kapının yürüttüğü gerçek kaynak

tam Rust öğesiL66–L94
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s180_scheduler_admission.rs::prepare_production_s187_handoff_from_production_s180_scheduler_admission

/// CPU0 source half of the S180 -> S181 -> S182 -> S183 -> S187 path.
/// The returned S187 handoff is still not proof of cross-CPU delivery.
#[cfg(all(target_arch = "aarch64", target_os = "none"))]
pub unsafe fn prepare_production_s187_handoff_from_production_s180_scheduler_admission(
    runtime: G8lRuntimeAuthority,
    authority: G8lSchedulerOwnerAuthority,
    scheduler_admission: G8lTargetDispatchSchedulerAdmission,
) -> Result<
    crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s186_mapping_retirement::G8lProductionMigrationLifecycleS187Handoff,
    G8lProductionMigrationLifecycleS180SchedulerAdmissionError,
>{
    let caller_cpu = crate::percpu::try_current_cpu_id()
        .ok_or(G8lProductionMigrationLifecycleS180SchedulerAdmissionError::WrongSourceCpu)?;
    if caller_cpu != CPU0 {
        return Err(G8lProductionMigrationLifecycleS180SchedulerAdmissionError::WrongSourceCpu);
    }
    let scheduler_permit =
        G8lTargetDispatchSchedulerPermit::from_scheduler_admission(&runtime, scheduler_admission)
            .map_err(G8lProductionMigrationLifecycleS180SchedulerAdmissionError::SchedulerPermit)?;
    unsafe {
        crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s181_scheduler_permit::prepare_production_s187_handoff_from_production_s181_scheduler_permit(
            runtime,
            authority,
            scheduler_permit,
        )
    }
    .map_err(G8lProductionMigrationLifecycleS180SchedulerAdmissionError::S181)
}
snippet sha256: d59dbbe9007efile sha256: 3b3de746afcf
02 · Doğrulayan test kodu

Operations komutuna bağlı focused test

tam Rust öğesiL101–L120
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s180_scheduler_admission.rs::s230_keeps_scheduler_gic_eret_and_physical_boundaries_closed

#[test]
fn s230_keeps_scheduler_gic_eret_and_physical_boundaries_closed() {
    let source = include_str!("../../kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s180_scheduler_admission.rs");
    for forbidden in [
        "task::scheduler",
        "SCHEDULER",
        "gic::",
        "send_sgi",
        "runtime.context_switch(",
        "write_ttbr0",
        "eret()",
        "power_on",
    ] {
        assert!(
            !source.contains(forbidden),
            "forbidden S230 marker: {forbidden}"
        );
    }
}
snippet sha256: 1d43c972b884file sha256: 620e3bc0c3d0
03 · Kapı kimlik kaydı

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

tam Operations kaydıL20124–L20175
website/src/lib/operations.ts::g8l-s230-production-migration-lifecycle-s180-scheduler-admission-partial
  {
    id: "g8l-s230-production-migration-lifecycle-s180-scheduler-admission-partial",
    date: "2026-08-25",
    sequence: 230,
    status: "passed",
    umbrella_status: "partial",
    title:
      "G8l: production migration-lifecycle S180 scheduler-admission boundary",
    summary:
      "S230 13/13 PASS ile live CPU0'ın exact non-Copy S180 scheduler admission'ını target gate sonrasında by-value tüketmesini, mevcut S181 scheduler-permit constructor'ını bir kez çağırmasını ve S229/S228/S227/S226/S225/S224 CPU0 producer üzerinden non-Copy S187 handoff döndürmesini source/ABI olarak sabitledi; literal CPU0 impersonation yoktur. Ayrı CPU1 consumer ile downstream invoke edilmedi; exact production scheduler mutation, cross-CPU delivery, GIC/SGI, ERET ve runtime bağlı değildir.",
    evidence: [
      "S230 focused grubu iki bağımsız koşuda 13/13 PASS: by-value S180 ABI, S181 constructor reuse, S180→S181→S182→S183→S184→S185→S186→S187 order, target CPU0 gate, error surface ve scheduler/GIC/ERET/hardware sınırları doğrulandı.",
      "Focused koşular byte-eşit kaldı: 128 B / SHA-256 02983f1a7d644519bfddb0884a6cd0ce69f40c4b845eb54b71ecdc6e19a8ff09.",
      "S206 callsite/readback + S207 invocation + S208 return + S209 handoff + S210 acknowledgement/caller + S211–S230 dependency matrix frozen S229 prefix'i üzerine 27 grup / 329/329 PASS ve 3432 B / SHA-256 40b0692ad9821f0edfd702f6bd209b53f200a293fef727a62e4a1f96ce2b36c7 verdi; ilk 3304 B exact S229 dependency prefix'idir.",
      "S155–S230 explicit sequence-ordered matrix frozen S229 prefix'i üzerine 79 grup / 812/812 PASS ve 9843 B / SHA-256 9ddfd9b15af9111373eaf21e188faf059785d930ae088c932a4f5011765211f7 verdi; exact S229 9715 B prefix'i korundu.",
      "RPi5 AArch64 compile PASS: 606 warning envanterlendi; 300492 B / SHA-256 b1b723807f33eae02aa5a6e7c14a8b50cca821698b557d0b36b8aebf71254c8c. smp: 606 warning, 300434 B / SHA-256 91b60d00757ec2d577b22e022807e5e3d2e1b6507e642d2c43c64f8116934b34. Zero-warning iddiası yoktur.",
      "Kalıcı kapsam: docs/M8.1-RPi5-G8l-S230-Migration-Lifecycle-S180-Scheduler-Admission-Proof.md.",
      "S230 exact S180 admission boundary'sini by-value tüketir, mevcut S181 constructor'ını bir kez çağırır ve S229/S228/S227/S226/S225/S224 CPU0 producer üzerinden non-Copy S187 handoff döndürür. Target-only producer live CPU0'ı tüketimden önce doğrular; ayrı CPU1 consumer, downstream, gerçek scheduler mutation, cross-CPU delivery, boot veya migration runtime callsite'ı invoke edilmedi.",
      "S230 fiziksel/device operasyonu yapmadı: physical/device operations=0 ve RUNBOOK_EXECUTED_IN_S230=NO.",
      "Canlı marker: S230_13_OF_13_MIGRATION_LIFECYCLE_S180_SCHEDULER_ADMISSION_LIVE_CPU0_GATE_S180_NONCOPY_BY_VALUE_EXACT_S181_SCHEDULER_PERMIT_S229_S228_S227_S226_S225_S224_CPU0_PRODUCER_S187_NONCOPY_HANDOFF_RETURNED_CPU1_CONSUMER_NOT_INVOKED_DOWNSTREAM_NOT_RUNTIME_INVOKED_CROSS_CPU_DELIVERY_NOT_WIRED_NO_LITERAL_CPU0_IMPERSONATION_NO_REPLACEMENT_NO_RETRY_AARCH64_COMPILED_PRESENT_REQUEST_NOT_OBSERVED_LEGACY_SCHEDULER_ACCESSES_UNCOVERED_WHOLE_SCHEDULER_GIC_HARDWARE_QEMU_PHYSICAL_CPU2_CPU3_HOTPLUG_SOAK_GENERIC_SMP_OPEN_FULL_PHYSICAL_RUNBOOK_VISIBLE_S390_TO_S440_S415_NO_RUNBOOK_EXECUTED_IN_S230_VERIFIED; deployment-specific route/hash evidence is recorded in the project-status manifest.",
    ],
    commands: [
      "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s180_scheduler_admission -- --test-threads=1",
      "cargo check --quiet --manifest-path kernel/Cargo.toml --target aarch64-unknown-none --no-default-features --features board-rpi5",
      "cargo check --quiet --manifest-path kernel/Cargo.toml --target aarch64-unknown-none --no-default-features --features board-rpi5,smp",
    ],
    terminalSessions: [
      {
        id: "s230-g8l-production-migration-lifecycle-s180-scheduler-admission",
        title: "G8l S230 migration-lifecycle S180 scheduler-admission boundary",
        commandLines: [
          "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s180_scheduler_admission -- --test-threads=1",
        ],
        outputLines: [
          "test result: ok; 13 passed; 0 failed",
          "production ABI: non-Copy S180 consumed by value; existing S181 permit constructor reused",
          "target-only CPU0 gate precedes S180 consumption; S229/S228/S227/S226/S225/S224 CPU0 producer returns non-Copy S187",
          "separate CPU1 consumer and downstream are not invoked",
          "scheduler mutation, GIC/SGI, ERET, exact production runtime and physical operation are not invoked",
        ],
        exitCode: 0,
        outputMode: "selected",
      },
    ],
    terminalSessionsNote:
      "Terminal özeti S230 exact S180→S181 source/ABI sınırını ve target CPU0 fail-closed kapısını gösterir; exact production scheduler runtime, QEMU veya fiziksel cihaz çalıştırması değildir.",
    limitations: [
      "S230 S180→S181→S229/S228/S227/S226/S225/S224 CPU0 producer→S187 boundary'sini source/ABI ve AArch64 compile olarak bağlar; ayrı CPU1 consumer, downstream delivery ve exact production scheduler execution/runtime iddia edilmez.",
      "Production scheduler mutation, whole-scheduler exclusion, GIC/SGI delivery, ERET/context-switch assembly, QEMU present-tuple yolu, fiziksel RPi, CPU2/CPU3, hotplug, soak ve Generic SMP açıktır.",
      "S230 fiziksel/device operasyonu yapmadı; RUNBOOK_EXECUTED_IN_S230=NO.",
    ],
  },
snippet sha256: 1fde65e74036file sha256: 9726dbf00f84
Focused test komutu
cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s180_scheduler_admission -- --test-threads=1
proof: docs/M8.1-RPi5-G8l-S230-Migration-Lifecycle-S180-Scheduler-Admission-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9