ASELSANMicrokernel
S243 · SOURCE-BOUND GATE EVIDENCE

G8l: S242 authority return + S240 receipt CPU0 deferred join

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

S243Focused kod testiOperations id exactsource SHA exacttest target exact

operation: g8l-s243-production-migration-lifecycle-s242-authority-return-s240-receipt-deferred-consumer-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 öğesiL84–L140
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer.rs::service_s243_deferred_authority_receipt_join

/// Host-testable two-input deferred join.
///
/// Readiness checks happen before either linear input is taken. If only one
/// side is ready, the function is `Idle` and leaves both states untouched. A
/// downstream error after the join is terminal: neither consumed input is
/// reconstructed or retried.
pub fn service_s243_deferred_authority_receipt_join<R, O, P, H, E, Consume>(
    s242: &mut G8lS242SenderRuntimeCallsiteState<R, O, P>,
    s240: &mut G8lS240SgiDelivery,
    output: &mut G8lS243DeferredS187HandoffSlot<H>,
    caller_cpu: usize,
    consume: Consume,
) -> Result<G8lS243DeferredConsumerOutcome, G8lS243DeferredConsumerError<E, H>>
where
    Consume: FnOnce(R, O, G8lS240SgiDeliveryReceipt) -> Result<H, E>,
{
    if caller_cpu != S243_SOURCE_CPU0 {
        return Err(G8lS243DeferredConsumerError::State(
            G8lS243DeferredStateError::WrongCpu,
        ));
    }
    if output.pending() {
        return Ok(G8lS243DeferredConsumerOutcome::Backpressured);
    }
    if s242.return_phase() != G8lS242AuthorityReturnPhase::Returned
        || !s242.returned_pending()
        || !s240.receipt_pending()
    {
        return Ok(G8lS243DeferredConsumerOutcome::Idle);
    }

    let returned = s242
        .take_returned(S242_RETURN_CPU0)
        .map_err(G8lS243DeferredConsumerError::S242)?
        .ok_or(G8lS243DeferredConsumerError::State(
            G8lS243DeferredStateError::MissingAuthorities,
        ))?;
    let receipt = s240
        .take_receipt()
        .map_err(G8lS243DeferredConsumerError::S240)?;
    if receipt.raw_ack() != S240_EXPECTED_RAW_ACK
        || receipt.raw_eoi() != receipt.raw_ack()
        || receipt.command() != S240_EXPECTED_COMMAND
    {
        return Err(G8lS243DeferredConsumerError::State(
            G8lS243DeferredStateError::ReceiptMismatch,
        ));
    }
    let (runtime, owner) = returned.into_parts();
    let handoff =
        consume(runtime, owner, receipt).map_err(G8lS243DeferredConsumerError::Consumer)?;
    output
        .publish(handoff)
        .map_err(G8lS243DeferredConsumerError::OutputOccupied)?;
    Ok(G8lS243DeferredConsumerOutcome::Published)
}
snippet sha256: 28436194ee41file sha256: 8c3a3d0bd4e4
02 · Doğrulayan test kodu

Operations komutuna bağlı focused test

tam Rust öğesiL135–L161
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer.rs::s243_both_inputs_enter_one_consumer_and_publish_one_handoff

#[test]
fn s243_both_inputs_enter_one_consumer_and_publish_one_handoff() {
    let mut s242 = returned_authorities();
    let mut s240 = delivered_receipt();
    let mut output = G8lS243DeferredS187HandoffSlot::new();
    let result = service_s243_deferred_authority_receipt_join(
        &mut s242,
        &mut s240,
        &mut output,
        S243_SOURCE_CPU0,
        |runtime, owner, receipt| {
            assert_eq!((runtime, owner), (11, 13));
            assert_eq!(receipt.raw_ack(), S240_EXPECTED_RAW_ACK);
            assert_eq!(receipt.raw_eoi(), S240_EXPECTED_RAW_ACK);
            assert_eq!(receipt.command(), S240_EXPECTED_COMMAND);
            Ok::<u64, ()>(23)
        },
    );
    assert!(matches!(
        result,
        Ok(G8lS243DeferredConsumerOutcome::Published)
    ));
    assert!(!s242.returned_pending());
    assert_eq!(s240.phase(), G8lS240SgiDeliveryPhase::Consumed);
    assert!(output.pending());
}
snippet sha256: 38d6f687eadefile sha256: 31f3dd73a3f7
03 · Kapı kimlik kaydı

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

tam Operations kaydıL19462–L19512
website/src/lib/operations.ts::g8l-s243-production-migration-lifecycle-s242-authority-return-s240-receipt-deferred-consumer-partial
  {
    id: "g8l-s243-production-migration-lifecycle-s242-authority-return-s240-receipt-deferred-consumer-partial",
    date: "2026-08-25",
    sequence: 243,
    status: "passed",
    umbrella_status: "partial",
    title: "G8l: S242 authority return + S240 receipt CPU0 deferred join",
    summary:
      "S243 15/15 PASS ile S242'nin CPU0 authority-return çiftini ve S240 post-EOI delivery receipt'ini iki-girdi deferred join sınırında birleştirip mevcut S240→S236 tüketimine tek sefer soktu; sonuç non-Copy S187 handoff olarak bounded CPU1 hedefli slota alındı. İki readiness probe non-consuming'dir; yalnız tek girdi hazırsa Idle, output doluysa Backpressured kalır. Upstream S242 request producer ve whole-scheduler exclusion kanıtı olmadığı için güvenli runtime execution, scheduler mutation, ERET veya hardware wake kabulü iddia edilmez.",
    evidence: [
      "S243 focused host grubu iki bağımsız koşuda 15/15 PASS verdi: canonical test-result satırları 95 B / SHA-256 c123c565490f7adc565c4e0f2d66a6a0308286bdd091b548222390e18384f97b.",
      "S238 + S239 + S240 receipt/SGI + S241 + S242 + S243 dependency matrisi 7 grup / 128/128 PASS verdi; canonical result summary 665 B / SHA-256 3031eb67f8cd45d18f9317ad078bf23ab17884d2ce8deb8632ea73ffa5c8e83b ve iki bağımsız koşuda byte-equal.",
      "RPi5 AArch64 normal/SMP compile PASS: normal 331470 B / SHA-256 3b86f1d1cf3dc4f9fb51e791110680ad5e2a1096f8a0fd9bfe9f75bab8c946f1, SMP 331412 B / SHA-256 6e10c82e6075c6807213b4156bde9090490790e69a3c3b49d394a64cea3dd8f1; 623 warning başlığı ve derleyicinin bildirdiği 623 kernel warning envanterlendi, zero-warning iddiası yoktur.",
      "Exact kaynak sırası: CPU0 gate + output backpressure probe → S242 returned authority pair ve S240 post-EOI receipt non-consuming readiness probe'ları → iki lineer input'un exact take edilmesi → raw ACK/EOI/command doğrulaması → S240 deferred S236 source call → non-Copy S187 handoff publish. CPU1 output take source-wired'dır ancak çalıştırılmaz.",
      "Tam workspace'in yedi tarihsel G8h assertion'ı isim isim değiştirilmeden dışlandığında taze audit 205 grup / 1860 PASS / 0 fail / 7 filtered verdi: log 54166 B / SHA-256 580e3f20bb7e8e4de81f52fe3dcdc51f4a2cc6668b41fc73a18b0a610d67fb3a. Filtresiz koşu ilk frozen S96 identity kapısında exit 101 verdi; full-workspace GREEN iddia edilmez.",
      "S243 physical/device operations=0; RUNBOOK_EXECUTED_IN_S243=NO. Tarihsel S124 physical BOOT8H PASS ve tam operatör sırası korunur.",
      "Canlı marker: S243_15_OF_15_S242_RUNTIME_OWNER_RETURN_S240_POST_EOI_RECEIPT_TWO_INPUT_NONCONSUMING_READINESS_BOTH_READY_EXACT_ONCE_JOIN_CPU0_TIMER_IRQ_AFTER_EOI_S236_SOURCE_CALL_S187_NONCOPY_BOUNDED_OUTPUT_CPU1_EXTRACTOR_SOURCE_WIRED_NOT_INVOKED_SINGLE_INPUT_IDLE_OUTPUT_BACKPRESSURE_NO_UPSTREAM_REQUEST_REQUEST_NOT_OBSERVED_NO_GLOBAL_SCHEDULER_EXCLUSION_PROOF_NO_SAFE_RUNTIME_EXECUTION_CLAIM_NO_HARDWARE_WAKE_OBSERVED_AARCH64_NORMAL_SMP_COMPILED_WORKSPACE_1860_PASS_7_HISTORICAL_G8H_ASSERTIONS_RED_PHYSICAL_QEMU_CPU2_CPU3_HOTPLUG_SOAK_GENERIC_SMP_OPEN_FULL_PHYSICAL_RUNBOOK_VISIBLE_S403_TO_S453_S428_NO_RUNBOOK_EXECUTED_IN_S243_VERIFIED.",
    ],
    commands: [
      "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer -- --test-threads=1",
      "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_request --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_descriptor --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_dispatch_receipt --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_sgi_delivery --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_sgi_sender_runtime_callsite --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_sgi_sender_runtime_callsite_request --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer -- --test-threads=1",
      "cargo check -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-rpi5",
      "cargo check -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-rpi5,smp",
    ],
    terminalSessions: [
      {
        id: "s243-g8l-s242-authority-return-s240-receipt-deferred-join",
        title: "G8l S243 S242 authority return + S240 receipt deferred join",
        commandLines: [
          "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer -- --test-threads=1",
        ],
        outputLines: [
          "test result: ok; S243 focused 1 group / 15 passed; 0 failed",
          "S242 returned authorities + S240 post-EOI receipt → CPU0 two-input deferred join → S240/S236 consume once",
          "non-Copy S187 handoff is retained in a bounded CPU1-targeted slot; CPU1 take and ERET remain unobserved",
        ],
        exitCode: 0,
        outputMode: "selected",
      },
    ],
    terminalSessionsNote:
      "S243 terminal özeti CPU0 deferred join ve S187 handoff retention sınırını doğrular; CPU1 delivery, ERET veya fiziksel wake/hardware kanıtı değildir.",
    limitations: [
      "S243 S242 authority-return ile S240 receipt readiness probe'larını CPU0 timer-IRQ deferred callsite'ında source-wired eder; iki input hazır değilse linear değerler alınmaz.",
      "S240 deferred S236 consumer bir kez çağrılır ve S187 handoff CPU1 hedefli bounded slota alınır; CPU1 take, downstream S224/S223, scheduler mutation, ERET/context-switch ve present tuple açık kalır.",
      "S236 unsafe sözleşmesinin whole-scheduler exclusion, authority-lifetime ve TTBR0-root precondition'ları S243 tarafından ayrıca kanıtlanmaz; güvenli runtime execution iddia edilmez.",
      "Upstream S242 request producer olmadığı için production request veya hardware wake gözlenmemiştir.",
      "QEMU RPi5 GICv2 SGI MMIO yolunu doğrulamaz; fiziksel RPi, CPU2/CPU3, hotplug, soak ve Generic SMP açıktır.",
      "S243 fiziksel/device operasyonu yapmadı; RUNBOOK_EXECUTED_IN_S243=NO.",
    ],
  },
snippet sha256: 12402e1688b9file sha256: 9726dbf00f84
Focused test komutu
cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer -- --test-threads=1
proof: docs/M8.1-RPi5-G8l-S243-Migration-Lifecycle-S242-Authority-Return-S240-Receipt-Deferred-Consumer-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 91d38c7b6222f0b4c117be786454853543da55a160e543d9b951057cc20dcc06