ASELSANMicrokernel
S421 · SOURCE-BOUND GATE EVIDENCE

S421 · Reconciled S187 handoff delivery

tam S421 implementation modülü → Operations --test hedefi ile bağlı tam focused test → ayrı Operations kaydı Bu sayfa yalnız S421 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S421Focused kod testiOperations id exactsource SHA exacttest target exact

operation: g8l-s421-reconciled-s187-handoff-delivery-partial

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

sequence-bound=true · implementation-bound=true
01 · Yürütme / doğrulama kodu

Kapının gerçek repository sözleşmesi

tam dosyaL1–L289
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s421_reconciled_s187_handoff_delivery.rs::S421 reconciled s187 handoff delivery implementation
#![allow(unexpected_cfgs)]

//! S421 reconciled delivery of the S243 S187 handoff to CPU1.
//!
//! A timeout reconciliation ACK is consumed without touching S243. A completed
//! ACK must declare an expected handoff and observe that handoff pending before
//! either value is taken. The exact ACK and non-Copy S187 handoff are retained
//! together in a new one-slot CPU1 envelope for the S422/S423 continuation.

use crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer::{
    G8lS243DeferredS187HandoffSlot, G8lS243DeferredStateError,
};
use crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s419_handshake_terminal_journal::G8lS419HandshakeTerminalKind;
use crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s420_terminal_reconciliation_ack::{
    G8lS420TerminalReconciliationAck, G8lS420TerminalReconciliationAckState,
    G8lS420TerminalReconciliationError, S420_DIRECT_SCHEDULER_ACCESS_SITES,
    S420_PRODUCTION_GUARDED_DIRECT_ACCESS_SITES, S420_SOURCE_AUDIT_UNITS,
    S420_SOURCE_MODEL_COVERED_DIRECT_ACCESS_SITES, S420_UNROUTED_DIRECT_ACCESS_SITES,
};

pub const S421_SOURCE_AUDIT_UNITS: usize = S420_SOURCE_AUDIT_UNITS;
pub const S421_DIRECT_SCHEDULER_ACCESS_SITES: usize = S420_DIRECT_SCHEDULER_ACCESS_SITES;
pub const S421_SOURCE_MODEL_COVERED_DIRECT_ACCESS_SITES: usize =
    S420_SOURCE_MODEL_COVERED_DIRECT_ACCESS_SITES;
pub const S421_PRODUCTION_GUARDED_DIRECT_ACCESS_SITES: usize =
    S420_PRODUCTION_GUARDED_DIRECT_ACCESS_SITES;
pub const S421_UNROUTED_DIRECT_ACCESS_SITES: usize = S420_UNROUTED_DIRECT_ACCESS_SITES;
pub const S421_RECONCILED_HANDOFF_SLOT_CAPACITY: usize = 1;
pub const S421_PRODUCTION_DELIVERY_CALLSITES: usize = 1;
pub const S421_CPU1_S187_HANDOFF_DELIVERY_COMPLETE: bool = true;
pub const S421_S187_CONTINUATION_INVOCATION_COMPLETE: bool = false;

#[derive(Debug)]
pub struct G8lS421ReconciledS187Handoff<H> {
    ack: G8lS420TerminalReconciliationAck,
    handoff: Option<H>,
}

impl<H> G8lS421ReconciledS187Handoff<H> {
    pub const fn attempt_id(&self) -> u64 {
        self.ack.attempt_id
    }
    pub const fn provider_request_id(&self) -> u64 {
        self.ack.provider_request_id
    }
    pub const fn exclusive_token(&self) -> u64 {
        self.ack.exclusive_token
    }
    pub const fn view(&self) -> G8lS421ReconciledS187HandoffView {
        G8lS421ReconciledS187HandoffView {
            attempt_id: self.ack.attempt_id,
            provider_request_id: self.ack.provider_request_id,
            exclusive_token: self.ack.exclusive_token,
            reconciliation_ack_consumed: true,
            s187_handoff_owned: self.handoff.is_some(),
            is_authority: false,
        }
    }
    pub fn into_handoff(mut self) -> H {
        self.handoff
            .take()
            .expect("S421 envelope owns one S187 handoff")
    }
}

impl<H> Drop for G8lS421ReconciledS187Handoff<H> {
    fn drop(&mut self) {}
}

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct G8lS421ReconciledS187HandoffView {
    pub attempt_id: u64,
    pub provider_request_id: u64,
    pub exclusive_token: u64,
    pub reconciliation_ack_consumed: bool,
    pub s187_handoff_owned: bool,
    pub is_authority: bool,
}

#[derive(Debug)]
pub struct G8lS421ReconciledS187HandoffState<H> {
    pending: Option<G8lS421ReconciledS187Handoff<H>>,
}

impl<H> G8lS421ReconciledS187HandoffState<H> {
    pub const fn new() -> Self {
        Self { pending: None }
    }
    pub const fn pending(&self) -> bool {
        self.pending.is_some()
    }
    pub fn pending_view(
        &self,
        caller_cpu: usize,
    ) -> Result<Option<G8lS421ReconciledS187HandoffView>, G8lS421ReconciledS187HandoffDeliveryError>
    {
        if caller_cpu != 1 {
            return Err(G8lS421ReconciledS187HandoffDeliveryError::WrongCpu);
        }
        Ok(self
            .pending
            .as_ref()
            .map(G8lS421ReconciledS187Handoff::view))
    }
    fn publish(
        &mut self,
        envelope: G8lS421ReconciledS187Handoff<H>,
    ) -> Result<G8lS421ReconciledS187HandoffView, G8lS421ReconciledS187HandoffDeliveryError> {
        if self.pending.is_some() {
            return Err(G8lS421ReconciledS187HandoffDeliveryError::SlotOccupied);
        }
        let view = envelope.view();
        self.pending = Some(envelope);
        Ok(view)
    }
    pub fn take(
        &mut self,
        caller_cpu: usize,
    ) -> Result<Option<G8lS421ReconciledS187Handoff<H>>, G8lS421ReconciledS187HandoffDeliveryError>
    {
        if caller_cpu != 1 {
            return Err(G8lS421ReconciledS187HandoffDeliveryError::WrongCpu);
        }
        Ok(self.pending.take())
    }
}

impl<H> Default for G8lS421ReconciledS187HandoffState<H> {
    fn default() -> Self {
        Self::new()
    }
}

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum G8lS421ReconciledS187HandoffDeliveryOutcome {
    Idle,
    AwaitingHandoff,
    TimeoutReconciled,
    Delivered(G8lS421ReconciledS187HandoffView),
    Pending(G8lS421ReconciledS187HandoffView),
}

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum G8lS421ReconciledS187HandoffDeliveryError {
    WrongCpu,
    S420(G8lS420TerminalReconciliationError),
    S243(G8lS243DeferredStateError),
    AckBindingDrift,
    AckDisappeared,
    AckDrift,
    HandoffDisappeared,
    SlotOccupied,
}

fn completed_ack_is_exact(ack: G8lS420TerminalReconciliationAck) -> bool {
    ack.kind == G8lS419HandshakeTerminalKind::Completed
        && ack.attempt_id != 0
        && ack.provider_request_id != 0
        && ack.exclusive_token != 0
        && ack.s187_handoff_expected
        && ack.source_cpu == 0
        && ack.target_cpu == 1
        && !ack.is_authority
}

pub fn service_s421_model_reconciled_s187_handoff_delivery<H>(
    acks: &mut G8lS420TerminalReconciliationAckState,
    s243: &mut G8lS243DeferredS187HandoffSlot<H>,
    delivered: &mut G8lS421ReconciledS187HandoffState<H>,
    caller_cpu: usize,
) -> Result<G8lS421ReconciledS187HandoffDeliveryOutcome, G8lS421ReconciledS187HandoffDeliveryError>
{
    if caller_cpu != 1 {
        return Err(G8lS421ReconciledS187HandoffDeliveryError::WrongCpu);
    }
    if let Some(existing) = delivered.pending_view(caller_cpu)? {
        return Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::Pending(
            existing,
        ));
    }
    let Some(ack) = acks
        .pending_ack(caller_cpu)
        .map_err(G8lS421ReconciledS187HandoffDeliveryError::S420)?
    else {
        return Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::Idle);
    };
    if ack.kind == G8lS419HandshakeTerminalKind::TimedOutReleased {
        let taken = acks
            .take(caller_cpu)
            .map_err(G8lS421ReconciledS187HandoffDeliveryError::S420)?
            .ok_or(G8lS421ReconciledS187HandoffDeliveryError::AckDisappeared)?;
        if taken != ack {
            return Err(G8lS421ReconciledS187HandoffDeliveryError::AckDrift);
        }
        return Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::TimeoutReconciled);
    }
    if !completed_ack_is_exact(ack) {
        return Err(G8lS421ReconciledS187HandoffDeliveryError::AckBindingDrift);
    }
    if !s243.pending() {
        return Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::AwaitingHandoff);
    }
    let taken_ack = acks
        .take(caller_cpu)
        .map_err(G8lS421ReconciledS187HandoffDeliveryError::S420)?
        .ok_or(G8lS421ReconciledS187HandoffDeliveryError::AckDisappeared)?;
    if taken_ack != ack {
        return Err(G8lS421ReconciledS187HandoffDeliveryError::AckDrift);
    }
    let handoff = s243
        .take(caller_cpu)
        .map_err(G8lS421ReconciledS187HandoffDeliveryError::S243)?
        .ok_or(G8lS421ReconciledS187HandoffDeliveryError::HandoffDisappeared)?;
    let view = delivered.publish(G8lS421ReconciledS187Handoff {
        ack,
        handoff: Some(handoff),
    })?;
    Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::Delivered(view))
}

#[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
type G8lS421ProductionState = G8lS421ReconciledS187HandoffState<crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s186_mapping_retirement::G8lProductionMigrationLifecycleS187Handoff>;

#[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
static S421_PRODUCTION_DELIVERY: spin::Mutex<G8lS421ProductionState> =
    spin::Mutex::new(G8lS421ProductionState::new());

#[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
pub unsafe fn service_s421_reconciled_s187_handoff_delivery_on_cpu1(
) -> Result<G8lS421ReconciledS187HandoffDeliveryOutcome, G8lS421ReconciledS187HandoffDeliveryError>
{
    use crate::g8l_runtime_contract::CPU1;
    if crate::percpu::try_current_cpu_id() != Some(CPU1) {
        return Err(G8lS421ReconciledS187HandoffDeliveryError::WrongCpu);
    }
    if let Some(existing) = S421_PRODUCTION_DELIVERY.lock().pending_view(CPU1)? {
        return Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::Pending(
            existing,
        ));
    }
    let Some(ack) = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s420_terminal_reconciliation_ack::inspect_s420_terminal_reconciliation_ack_on_cpu1()
        .map_err(G8lS421ReconciledS187HandoffDeliveryError::S420)? else {
        return Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::Idle);
    };
    if ack.kind == G8lS419HandshakeTerminalKind::TimedOutReleased {
        let taken = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s420_terminal_reconciliation_ack::take_s420_terminal_reconciliation_ack_on_cpu1()
            .map_err(G8lS421ReconciledS187HandoffDeliveryError::S420)?
            .ok_or(G8lS421ReconciledS187HandoffDeliveryError::AckDisappeared)?;
        if taken != ack {
            return Err(G8lS421ReconciledS187HandoffDeliveryError::AckDrift);
        }
        return Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::TimeoutReconciled);
    }
    if !completed_ack_is_exact(ack) {
        return Err(G8lS421ReconciledS187HandoffDeliveryError::AckBindingDrift);
    }
    if !crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer::s243_deferred_s187_handoff_pending_on_cpu1()
        .map_err(G8lS421ReconciledS187HandoffDeliveryError::S243)? {
        return Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::AwaitingHandoff);
    }
    let taken_ack = crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s420_terminal_reconciliation_ack::take_s420_terminal_reconciliation_ack_on_cpu1()
        .map_err(G8lS421ReconciledS187HandoffDeliveryError::S420)?
        .ok_or(G8lS421ReconciledS187HandoffDeliveryError::AckDisappeared)?;
    if taken_ack != ack {
        return Err(G8lS421ReconciledS187HandoffDeliveryError::AckDrift);
    }
    let handoff = unsafe { crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer::take_s243_deferred_s187_handoff_on_cpu1() }
        .map_err(G8lS421ReconciledS187HandoffDeliveryError::S243)?
        .ok_or(G8lS421ReconciledS187HandoffDeliveryError::HandoffDisappeared)?;
    let view = S421_PRODUCTION_DELIVERY
        .lock()
        .publish(G8lS421ReconciledS187Handoff {
            ack,
            handoff: Some(handoff),
        })?;
    Ok(G8lS421ReconciledS187HandoffDeliveryOutcome::Delivered(view))
}

#[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
pub fn inspect_s421_reconciled_s187_handoff_on_cpu1(
) -> Result<Option<G8lS421ReconciledS187HandoffView>, G8lS421ReconciledS187HandoffDeliveryError> {
    S421_PRODUCTION_DELIVERY.lock().pending_view(1)
}

#[cfg(all(target_arch = "aarch64", target_os = "none", feature = "board-rpi5"))]
pub fn take_s421_reconciled_s187_handoff_on_cpu1() -> Result<Option<G8lS421ReconciledS187Handoff<crate::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s186_mapping_retirement::G8lProductionMigrationLifecycleS187Handoff>>, G8lS421ReconciledS187HandoffDeliveryError>{
    S421_PRODUCTION_DELIVERY.lock().take(1)
}
snippet sha256: c4a28a3eaf62file sha256: c4a28a3eaf62
02 · Doğrulayan test kodu

Operations komutuna bağlı focused test

tam dosyaL1–L187
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s421_reconciled_s187_handoff_delivery.rs::S421 reconciled s187 handoff delivery focused tests
use aselsan_microkernel_simulation::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s242_authority_return_s240_receipt_deferred_consumer::G8lS243DeferredS187HandoffSlot;
use aselsan_microkernel_simulation::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s419_handshake_terminal_journal::{service_s419_model_handshake_terminal_journal, G8lS419HandshakeTerminalJournalState, G8lS419HandshakeTerminalKind};
use aselsan_microkernel_simulation::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s420_terminal_reconciliation_ack::{service_s420_model_terminal_reconciliation_ack, G8lS420TerminalReconciliationAckState};
use aselsan_microkernel_simulation::g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s421_reconciled_s187_handoff_delivery::*;

fn ack(
    kind: G8lS419HandshakeTerminalKind,
    handoff_pending: bool,
) -> G8lS420TerminalReconciliationAckState {
    let mut journal = G8lS419HandshakeTerminalJournalState::new();
    service_s419_model_handshake_terminal_journal(&mut journal, 1, kind, 7, 8, 9, 3).unwrap();
    let mut acks = G8lS420TerminalReconciliationAckState::new();
    service_s420_model_terminal_reconciliation_ack(
        &mut journal,
        &mut acks,
        0,
        None,
        true,
        handoff_pending,
    )
    .unwrap();
    acks
}

#[test]
fn constants_define_one_reconciled_delivery_slot() {
    assert_eq!(S421_RECONCILED_HANDOFF_SLOT_CAPACITY, 1);
    assert_eq!(S421_PRODUCTION_DELIVERY_CALLSITES, 1);
    assert!(S421_CPU1_S187_HANDOFF_DELIVERY_COMPLETE);
    assert!(!S421_S187_CONTINUATION_INVOCATION_COMPLETE);
}

#[test]
fn completed_ack_and_exact_handoff_publish_linear_delivery() {
    let mut acks = ack(G8lS419HandshakeTerminalKind::Completed, true);
    let mut s243 = G8lS243DeferredS187HandoffSlot::new();
    s243.publish(41u64).unwrap();
    let mut delivered = G8lS421ReconciledS187HandoffState::new();
    let outcome = service_s421_model_reconciled_s187_handoff_delivery(
        &mut acks,
        &mut s243,
        &mut delivered,
        1,
    )
    .unwrap();
    let G8lS421ReconciledS187HandoffDeliveryOutcome::Delivered(view) = outcome else {
        panic!("delivery")
    };
    assert_eq!(
        (
            view.attempt_id,
            view.provider_request_id,
            view.exclusive_token
        ),
        (7, 8, 9)
    );
    assert!(view.reconciliation_ack_consumed && view.s187_handoff_owned);
    assert!(!acks.pending() && !s243.pending() && delivered.pending());
    let envelope = delivered.take(1).unwrap().unwrap();
    assert_eq!(envelope.into_handoff(), 41);
}

#[test]
fn timeout_ack_is_consumed_without_touching_handoff_slot() {
    let mut acks = ack(G8lS419HandshakeTerminalKind::TimedOutReleased, false);
    let mut s243 = G8lS243DeferredS187HandoffSlot::new();
    let mut delivered = G8lS421ReconciledS187HandoffState::<u64>::new();
    assert_eq!(
        service_s421_model_reconciled_s187_handoff_delivery(
            &mut acks,
            &mut s243,
            &mut delivered,
            1
        )
        .unwrap(),
        G8lS421ReconciledS187HandoffDeliveryOutcome::TimeoutReconciled
    );
    assert!(!acks.pending() && !delivered.pending());
}

#[test]
fn completed_ack_without_handoff_waits_non_destructively() {
    let mut acks = ack(G8lS419HandshakeTerminalKind::Completed, true);
    let mut s243 = G8lS243DeferredS187HandoffSlot::new();
    let mut delivered = G8lS421ReconciledS187HandoffState::<u64>::new();
    assert_eq!(
        service_s421_model_reconciled_s187_handoff_delivery(
            &mut acks,
            &mut s243,
            &mut delivered,
            1
        )
        .unwrap(),
        G8lS421ReconciledS187HandoffDeliveryOutcome::AwaitingHandoff
    );
    assert!(acks.pending());
}

#[test]
fn occupied_delivery_backpressures_before_ack_or_handoff_take() {
    let mut first_acks = ack(G8lS419HandshakeTerminalKind::Completed, true);
    let mut first_s243 = G8lS243DeferredS187HandoffSlot::new();
    first_s243.publish(41u64).unwrap();
    let mut delivered = G8lS421ReconciledS187HandoffState::new();
    service_s421_model_reconciled_s187_handoff_delivery(
        &mut first_acks,
        &mut first_s243,
        &mut delivered,
        1,
    )
    .unwrap();
    let pending = delivered.pending_view(1).unwrap().unwrap();
    let mut next_acks = ack(G8lS419HandshakeTerminalKind::Completed, true);
    let mut next_s243 = G8lS243DeferredS187HandoffSlot::new();
    next_s243.publish(43u64).unwrap();
    assert_eq!(
        service_s421_model_reconciled_s187_handoff_delivery(
            &mut next_acks,
            &mut next_s243,
            &mut delivered,
            1
        )
        .unwrap(),
        G8lS421ReconciledS187HandoffDeliveryOutcome::Pending(pending)
    );
    assert!(next_acks.pending() && next_s243.pending());
}

#[test]
fn wrapper_is_linear_and_wrong_cpu_preserves_inputs() {
    assert!(core::mem::needs_drop::<G8lS421ReconciledS187Handoff<u64>>());
    let mut acks = ack(G8lS419HandshakeTerminalKind::Completed, true);
    let mut s243 = G8lS243DeferredS187HandoffSlot::new();
    s243.publish(41u64).unwrap();
    let mut delivered = G8lS421ReconciledS187HandoffState::new();
    assert_eq!(
        service_s421_model_reconciled_s187_handoff_delivery(
            &mut acks,
            &mut s243,
            &mut delivered,
            0
        ),
        Err(G8lS421ReconciledS187HandoffDeliveryError::WrongCpu)
    );
    assert!(acks.pending() && s243.pending());
}

#[test]
fn production_orders_ack_inspect_handoff_readiness_then_both_takes() {
    let source = include_str!("../../kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s421_reconciled_s187_handoff_delivery.rs");
    let start = source
        .find("service_s421_reconciled_s187_handoff_delivery_on_cpu1")
        .unwrap();
    let body = &source[start..];
    let ack = body
        .find("inspect_s420_terminal_reconciliation_ack_on_cpu1")
        .unwrap();
    let ready = body
        .find("s243_deferred_s187_handoff_pending_on_cpu1")
        .unwrap();
    let take_ack = body
        .rfind("take_s420_terminal_reconciliation_ack_on_cpu1")
        .unwrap();
    let take_handoff = body
        .find("take_s243_deferred_s187_handoff_on_cpu1")
        .unwrap();
    assert!(ack < ready && ready < take_ack && take_ack < take_handoff);
}

#[test]
fn cpu1_timer_runs_s421_before_rearm_and_new_handshake() {
    let source = include_str!("../../kernel/src/arch/aarch64/exceptions.rs");
    let s421 = source
        .find("service_s421_reconciled_s187_handoff_delivery_on_cpu1")
        .unwrap();
    let s417 = source
        .find("service_s417_handshake_attempt_reconciliation_on_cpu1")
        .unwrap();
    let s416 = source
        .find("service_s416_production_exclusion_handshake_on_cpu1")
        .unwrap();
    assert!(s421 < s417 && s417 < s416);
    let name = "g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s421_reconciled_s187_handoff_delivery";
    assert!(include_str!("../../kernel/src/main.rs").contains(&format!("mod {name};")));
    assert!(include_str!("../src/lib.rs").contains(&format!("pub mod {name};")));
}
snippet sha256: 336dec8e1335file sha256: 336dec8e1335
03 · Kapı kimlik kaydı

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

tam Operations kaydıL440–L456
website/src/lib/operations.ts::g8l-s421-reconciled-s187-handoff-delivery-partial
  {
    id: "g8l-s421-reconciled-s187-handoff-delivery-partial",
    sequence: 421,
    slug: "reconciled_s187_handoff_delivery",
    title: "Reconciled S187 handoff delivery",
    focusedTests: 8,
    sourceBytes: 12439,
    sourceSha256:
      "c4a28a3eaf62556a82dc0b1037bbd201a218e2b523cb7e4d782d267281b5fc9a",
    testBytes: 7356,
    testSha256:
      "336dec8e1335b7afc7cf7de73117d4e55c92318b9692f70c692fd44fe3685495",
    acceptance:
      "CPU1 exact S420 success ACK'ini tüketir, preserved S243 slot'tan non-Copy S187 handoff'u alır ve capacity-one reconciled delivery state'ine koyar.",
    retainedBoundary:
      "Handoff teslim edilmiştir fakat S187 continuation invocation S423'e kadar yapılmaz.",
  },
snippet sha256: 9f008d08b77efile sha256: 9726dbf00f84
Focused test komutu
CARGO_INCREMENTAL=0 cargo test -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s421_reconciled_s187_handoff_delivery -- --test-threads=1
proof: docs/M8.1-RPi5-G8l-S421-Reconciled-S187-Handoff-Delivery-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 91d38c7b6222f0b4c117be786454853543da55a160e543d9b951057cc20dcc06