ASELSANMicrokernel
S98 · SOURCE-BOUND GATE EVIDENCE

G8h full regression matrix GREEN; S99 reproducibility sırada

Operations --test hedefi → focused test içindeki include_str!/#[path] bağı → kaynak kesiti Bu sayfa yalnız S98 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S98Focused kod testiOperations id exactsource SHA exacttest target exact

operation: rpi5-g8h-full-regression-matrix-green

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 dosyaL1–L208
scripts/verify-rpi5-g8h-matrix.sh::verify-rpi5-g8h-matrix.sh
#!/bin/sh
set -eu

cargo_bin=${1:-cargo}
readobj=${2:?'llvm-readobj yolu gerekli'}
objdump=${3:?'llvm-objdump yolu gerekli'}
qemu_bin=${4:-qemu-system-aarch64}

script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)
repo_root=$(CDPATH= cd -- "$script_dir/.." && pwd -P)
kernel_dir="$repo_root/kernel"
target_root="$repo_root/target/g8h-matrix"
target_triple=aarch64-unknown-none

fail() {
    echo "HATA: G8h matrix: $*" >&2
    exit 1
}

[ -f "$kernel_dir/.cargo/config.toml" ] || \
    fail 'kernel/.cargo/config.toml yok; production profil bağlamı kurulamadı'
[ ! -e "$repo_root/.cargo/config.toml" ] || \
    fail 'workspace-root Cargo config production kernel bağlamını gölgeleyemez'
[ ! -e "$repo_root/.cargo/config" ] || \
    fail 'workspace-root legacy Cargo config production kernel bağlamını gölgeleyemez'
command -v "$cargo_bin" >/dev/null 2>&1 || \
    fail "cargo çalıştırılamıyor: $cargo_bin"
[ -x "$readobj" ] || fail "llvm-readobj çalıştırılamıyor: $readobj"
[ -x "$objdump" ] || fail "llvm-objdump çalıştırılamıyor: $objdump"
command -v "$qemu_bin" >/dev/null 2>&1 || \
    fail "QEMU çalıştırılamıyor: $qemu_bin"
command -v strings >/dev/null 2>&1 || fail 'strings bulunamadı'
command -v shasum >/dev/null 2>&1 || fail 'shasum bulunamadı'
[ -r "$script_dir/qemu-smoke.sh" ] || fail 'QEMU smoke scripti okunamıyor'

mkdir -p "$target_root"
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/aselsanos-g8h-matrix.XXXXXX")
trap 'rm -rf "$tmpdir"' EXIT HUP INT TERM

build_profile() {
    profile=$1
    features=$2
    profile_target="$target_root/$profile"
    (
        cd "$kernel_dir"
        CARGO_TARGET_DIR="$profile_target" "$cargo_bin" clean
        CARGO_TARGET_DIR="$profile_target" "$cargo_bin" build \
            --target "$target_triple" \
            --no-default-features \
            --features "$features"
    )
    echo "PROFILE=$profile FEATURES=$features MODE=BUILD CLEAN=YES ISOLATED=YES CONFIG=kernel/.cargo/config.toml RESULT=PASS"
}

check_profile() {
    profile=$1
    features=$2
    profile_target="$target_root/$profile"
    (
        cd "$kernel_dir"
        CARGO_TARGET_DIR="$profile_target" "$cargo_bin" clean
        CARGO_TARGET_DIR="$profile_target" "$cargo_bin" check \
            --target "$target_triple" \
            --no-default-features \
            --features "$features"
    )
    compile_only_elf="$profile_target/$target_triple/debug/aselsan_kernel"
    [ ! -e "$compile_only_elf" ] || \
        fail "COMPILE_ONLY profil beklenmeyen linked ELF üretti: $compile_only_elf"
    echo "PROFILE=$profile FEATURES=$features MODE=COMPILE_ONLY CLEAN=YES ISOLATED=YES LINKED_ELF=0 CONFIG=kernel/.cargo/config.toml RESULT=PASS"
}

extract_alloc_rodata() {
    profile=$1
    elf=$2
    output=$3
    section=$tmpdir/$profile-section
    "$readobj" --sections "$elf" > "$section"
    fields=$(
        awk '
            $1 == "Name:" && $2 == ".rodata" { inside = 1; next }
            inside && $1 == "SHF_ALLOC" { alloc = 1; next }
            inside && $1 == "Offset:" { offset = $2; next }
            inside && $1 == "Size:" { size = $2; next }
            inside && $1 == "}" {
                if (alloc && offset != "" && size != "") {
                    print offset, size
                }
                exit
            }
        ' "$section"
    )
    [ -n "$fields" ] || fail "$profile ALLOC .rodata sectionı çözülemedi"
    set -- $fields
    [ "$#" -eq 2 ] || fail "$profile .rodata offset/size alanı exact değil"
    offset=$1
    size=$2
    offset_decimal=$((offset))
    dd if="$elf" of="$output" bs=1 skip="$offset_decimal" count="$size" 2>/dev/null
    actual=$(wc -c < "$output" | tr -d '[:space:]')
    [ "$actual" -eq "$size" ] || \
        fail "$profile ALLOC .rodata kesiti eksik: expected=$size actual=$actual"
}

marker_count() {
    rodata=$1
    marker=$2
    LC_ALL=C strings "$rodata" | grep -Fo -- "$marker" | wc -l | tr -d '[:space:]'
}

require_no_g8h_reachability() {
    profile=$1
    rodata=$2
    elf="$target_root/$profile/$target_triple/debug/aselsan_kernel"
    [ -f "$elf" ] || fail "fresh $profile ELF yok: $elf"

    symbol_count=$(
        "$readobj" --symbols "$elf" | \
            awk 'index($0, "rpi5_g8h") != 0 { count++ } END { print count + 0 }'
    )
    marker_total=0
    for marker in \
        ASELSAN/G8H0 \
        ASELSAN/G8H1 \
        ASELSAN/G8H2 \
        ASELSAN/G8H3 \
        ASELSAN/G8H4 \
        ASELSAN/BOOT8H \
        ASELSAN/G8HERR
    do
        count=$(marker_count "$rodata" "$marker")
        marker_total=$((marker_total + count))
    done
    [ "$symbol_count" -eq 0 ] && [ "$marker_total" -eq 0 ] || \
        fail "$profile G8h reachability sıfır değil: symbols=$symbol_count markers=$marker_total"
    echo "PROFILE=$profile G8H_SYMBOLS=0 G8H_MARKERS=0 REACHABILITY=0 RESULT=PASS"
}

report_elf_identity() {
    profile=$1
    elf=$2
    bytes=$(wc -c < "$elf" | tr -d '[:space:]')
    sha=$(shasum -a 256 "$elf" | awk '{print $1}')
    echo "ELF_PROFILE=$profile ELF_BYTES=$bytes ELF_SHA256=$sha"
}

build_profile qemu board-qemu
build_profile rpi4 board-rpi4
build_profile rpi5 board-rpi5
check_profile qemu-smp board-qemu,smp
check_profile rpi5-smp board-rpi5,smp

qemu_elf="$target_root/qemu/$target_triple/debug/aselsan_kernel"
rpi4_elf="$target_root/rpi4/$target_triple/debug/aselsan_kernel"
rpi5_elf="$target_root/rpi5/$target_triple/debug/aselsan_kernel"
for elf in "$qemu_elf" "$rpi4_elf" "$rpi5_elf"; do
    [ -f "$elf" ] || fail "fresh BUILD ELF yok: $elf"
done
qemu_rodata=$tmpdir/qemu-rodata
rpi4_rodata=$tmpdir/rpi4-rodata
rpi5_rodata=$tmpdir/rpi5-rodata
extract_alloc_rodata qemu "$qemu_elf" "$qemu_rodata"
extract_alloc_rodata rpi4 "$rpi4_elf" "$rpi4_rodata"
extract_alloc_rodata rpi5 "$rpi5_elf" "$rpi5_rodata"

QEMU="$qemu_bin" sh "$script_dir/qemu-smoke.sh" "$qemu_elf"
echo 'QEMU_PROFILE=qemu FRESH_ELF=YES SMOKE=PASS'

require_no_g8h_reachability qemu "$qemu_rodata"
require_no_g8h_reachability rpi4 "$rpi4_rodata"

sh "$script_dir/verify-rpi5-g8-layout.sh" "$readobj" "$objdump" "$rpi5_elf"
sh "$script_dir/verify-rpi5-g8b-layout.sh" "$objdump" "$rpi5_elf"
sh "$script_dir/verify-rpi5-g8c-layout.sh" "$objdump" "$rpi5_elf"
sh "$script_dir/verify-rpi5-g8d-layout.sh" "$objdump" "$rpi5_elf"
sh "$script_dir/verify-rpi5-g8e-layout.sh" "$objdump" "$rpi5_elf"
sh "$script_dir/verify-rpi5-g8f-layout.sh" "$objdump" "$rpi5_elf"
sh "$script_dir/verify-rpi5-g8g-layout.sh" "$objdump" "$rpi5_elf"
sh "$script_dir/verify-rpi5-g8h-layout.sh" "$objdump" "$rpi5_elf"

for marker in \
    ASELSAN/G8H0 \
    ASELSAN/G8H1 \
    ASELSAN/G8H2 \
    ASELSAN/G8H3 \
    ASELSAN/G8H4 \
    ASELSAN/BOOT8H
do
    count=$(marker_count "$rpi5_rodata" "$marker")
    [ "$count" -eq 1 ] || \
        fail "fresh RPi5 G8h success marker exact-once değil: $marker count=$count"
    echo "MARKER=$marker COUNT=1"
done
error_count=$(marker_count "$rpi5_rodata" ASELSAN/G8HERR)
[ "$error_count" -eq 0 ] || \
    fail "fresh RPi5 G8h forbidden error marker taşıyor: count=$error_count"
echo 'MARKER=ASELSAN/G8HERR COUNT=0'

report_elf_identity qemu "$qemu_elf"
report_elf_identity rpi4 "$rpi4_elf"
report_elf_identity rpi5 "$rpi5_elf"

echo 'MATRIX=5/5 QEMU_SMOKE=PASS LAYOUT=G8-G8h LAYOUT_GATES=8/8 SUCCESS_MARKERS=6/6 ERROR_MARKERS=0 NON_RPI5_REACHABILITY=0 RESULT=PASS'
echo 'ROOT_CARGO_CONTEXT=NON_PRODUCTION ACCEPTED_CONFIG_CONTEXT=kernel/.cargo/config.toml'
echo 'SMP_PROFILES=COMPILE_ONLY GENERIC_SMP_RUNTIME=STOP'
echo 'REPRODUCIBILITY=STOP IMAGE=STOP IMAGE_FREEZE=STOP PACKAGE=STOP MICROSD=STOP DEVICE=STOP PHYSICAL_UART=STOP UART_CAPTURE=STOP PHYSICAL_BOOT8H=STOP'
echo 'IMAGE_BUILD=NOT_RUN LAST_PHYSICAL_PASS=S92_BOOT8G PI_POWER=OFF'
snippet sha256: 0ae6694d450cfile sha256: 0ae6694d450c
02 · Doğrulayan test kodu

Operations komutuna bağlı focused test

tam Rust öğesiL332–L372
simulation/tests/rpi5_g8h_matrix_source.rs::make_exposes_an_image_free_s98_chain_in_exact_order

#[test]
fn make_exposes_an_image_free_s98_chain_in_exact_order() {
    assert!(MAKEFILE.contains("verify-rpi5-g8h-matrix \\\n"));
    assert!(MAKEFILE.contains(
        "  make verify-rpi5-g8h-matrix - Image-free tam regresyon + QEMU + beş temiz profil"
    ));

    let body = MAKEFILE
        .split_once("verify-rpi5-g8h-matrix:")
        .expect("S98 matrix target")
        .1
        .split_once("\n\n")
        .expect("bounded S98 matrix target")
        .0;
    assert_eq!(
        body,
        concat!(
            " userspace-binaries\n",
            "\t$(CARGO) test --workspace -- --test-threads=1\n",
            "\t@$(MAKE) verify-rpi5-g8h-layout\n",
            "\t@sh scripts/verify-rpi5-g8h-matrix.sh \\\n",
            "\t\t\"$(CARGO)\" \"$(READOBJ)\" \"$(OBJDUMP)\" \"$(QEMU)\"",
        )
    );
    for forbidden in [
        "verify-core",
        "image-rpi5",
        "verify-web",
        "objcopy",
        "flash-rpi5",
        "package",
        "SD_DISK",
        "capture-rpi5",
    ] {
        assert!(
            !body.contains(forbidden),
            "S98 Make target expands through forbidden action {forbidden}",
        );
    }
}
snippet sha256: bc88c515b27bfile sha256: 9a93fd2b64be
03 · Kapı kimlik kaydı

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

tam Operations kaydıL28106–L28193
website/src/lib/operations.ts::rpi5-g8h-full-regression-matrix-green
  {
    id: "rpi5-g8h-full-regression-matrix-green",
    date: "2026-08-22",
    sequence: 98,
    status: "verified",
    title: "G8h full regression matrix GREEN; S99 reproducibility sırada",
    summary:
      "Sequence 97'nin frozen production machine-code/layout prerequisite'i değiştirilmeden image-free tam regresyon matrisi kapatıldı. Serialized workspace 307/307 (44 result block), nested S97 layout 56/56 (7 group) ve aggregate 363/363 (51 result block) PASS verdi. Kernel production Cargo context'inde üç fresh BUILD ile iki linked-ELF-free COMPILE_ONLY SMP profili clean/isolated yürüdü; QEMU smoke, QEMU/RPi4 G8h reachability absence ve fresh RPi5 G8–G8h 8/8 layout ile 6/6 exact-once success marker/G8HERR=0 kapıları bağımsız FINAL GO aldı. Bu reproducibility veya image/package kabulü değildir. S99 reproducibility sıradadır; son fiziksel PASS S92 BOOT8G ve Pi kapalıdır.",
    evidence: [
      "`make verify-rpi5-g8h-matrix`: serialized workspace exact 307/307 PASS (44 result block), nested S97 layout exact 56/56 PASS (7 group), aggregate exact 363/363 PASS (51 result block).",
      "Matrix exact 5/5 PASS: qemu/board-qemu BUILD, rpi4/board-rpi4 BUILD, rpi5/board-rpi5 BUILD, qemu-smp/board-qemu,smp COMPILE_ONLY ve rpi5-smp/board-rpi5,smp COMPILE_ONLY.",
      "Beş profil clean ve isolated target kökünde yalnız `kernel/.cargo/config.toml` production context'iyle çalıştı; workspace root Cargo context NON_PRODUCTION olarak fail-closed reddedildi.",
      "İki SMP profilinde linked ELF exact 0; bunlar yalnız compile-only uyumluluk kapısıdır, Generic SMP runtime açılmadı.",
      "Fresh qemu ELF QEMU smoke PASS; QEMU ve RPi4 ELF'lerinde G8h symbol=0, SHF_ALLOC `.rodata` marker=0 ve production reachability=0.",
      "Fresh RPi5 ELF üzerinde G8→G8b→G8c→G8d→G8e→G8f→versioned G8g→G8h layout exact 8/8 PASS.",
      "Fresh RPi5 ALLOC marker inventory exact G8H0/G8H1/G8H2/G8H3/G8H4/BOOT8H=6/6 exact-once; G8HERR=0/ABSENT.",
      "QEMU ELF exact 8.805.016 B / 1c03511ccf84e59a59c03be0ec6245862f06c732fd6a6f46c0351672c063b9f0.",
      "RPi4 ELF exact 8.826.056 B / 0da581c9e1d50449670273f407f05d69eae06af56941da752b86f98bf53f476f.",
      "Fresh RPi5 ELF exact 7.972.576 B / bfeb9d6e4851ba4d9999393f652605f24aac1122ccc75b3e716572ad16730008.",
      "Matrix script exact 7.720 B / 0ae6694d450c7370a182a3bb3fddec76fdf0d1b879beb42221611f9e6bb956ca; matrix source test exact 9.072 B / 11d722816cb3e32e2f7e31916b8318c354fa54db53d6f3454d367efdb1f91c84.",
      "Makefile exact 26.591 B / 57985a16fc68c59f67b6e937d836bbcb1670f624ba1ab9a84bd5f5f882ac2a85; S97 reconstructed Makefile 26.029 B / 85982a4b…f04ccff değişmedi.",
      "S97 runtime e82389b9…80de, G8g layout 239494a8…d6471, G8h layout c196fb95…bab01 ve dört frozen source-test kimliği source auditinde exact değişmedi.",
      "Tarihsel `build/rpi5` image/package byte/hash/mtime envanteri pre/post değişmedi: image 292.256 B / 985fbe10…3c747, DTB 78.703 B / 40a2fbe9…ca00, config 501 B / 1248275c…d76b, SHA256SUMS 248 B / fb112a41…3cb7a; ortak mtime epoch 1787351564.",
      "Matrix `IMAGE_BUILD=NOT_RUN`; reproducibility/image freeze/package/microSD/device/physical UART/capture/physical BOOT8H ve Generic SMP runtime STOP.",
      "Son fiziksel PASS değişmedi: S92 immutable 18.978 B / 4abf8bb1…1a2 BOOT8G raw; Pi kapalı, yeni image/device/UART/power işlemi yapılmadı.",
      "S98 proof exact 338 satır / 12.765 B / d7965564eb5bc9d73948ce28af4ec82f259e7022ec4391c2bc719b3b10707ade.",
      "S98 proof, clean context/profile/ELF/layout/marker/artifact sınırlarının tamamında independent reviewer FINAL GO aldı.",
      "S98 docs/static-site web 179/179, lint, TypeScript ve 23/23 static export PASS sonrasında frozen out exactly-one deploy ile `fa66a702.aselsan-microkernel.pages.dev` production'a yayımlandı; canonical operations/timeline/yol/firmware cmp PASS verdi.",
    ],
    terminalSessionsNote:
      "Sequence 98 oturumları image-free host/build matrisi ve fresh ELF denetimleridir; image/package, device, UART veya fiziksel BOOT8H oturumu değildir.",
    terminalSessions: [
      {
        id: "g8h-sequence98-source-and-context",
        title: "Matrix source TDD ve production Cargo context audit",
        commandLines: [
          "cargo test -p aselsan_microkernel_simulation --test rpi5_g8h_matrix_source -- --test-threads=1",
          "audit exact target order, S97 identities, five isolated profiles and forbidden side effects",
        ],
        outputLines: [
          "matrix source=PASS · Make/script/test identities=MATCH",
          "profiles=3 BUILD + 2 COMPILE_ONLY · clean=YES · isolated=YES",
          "root Cargo context=NON_PRODUCTION · accepted config=kernel/.cargo/config.toml",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8h-sequence98-full-matrix",
        title:
          "Serialized workspace, nested layout ve fresh five-profile matrix",
        commandLines: [
          "make verify-rpi5-g8h-matrix",
          "verify fresh QEMU smoke, non-RPi5 absence and RPi5 layout/marker inventory",
        ],
        outputLines: [
          "workspace=307/307 · blocks=44 · nested S97=56/56/7 · aggregate=363/363/51",
          "matrix=5/5 · QEMU smoke=PASS · QEMU/RPi4 reachability=0",
          "RPi5 layout=8/8 · success markers=6/6 · G8HERR=0",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8h-sequence98-independent-final-audit",
        title: "Bağımsız full-matrix final audit",
        commandLines: [
          "re-audit frozen S98 identities, totals, profiles and fresh ELF inventory",
          "compare build/rpi5 pre/post metadata and inspect every STOP boundary",
        ],
        outputLines: [
          "S98 full-matrix reviewer=FINAL GO",
          "QEMU=1c03511c…b9f0 · RPi4=0da581c9…476f · RPi5=bfeb9d6e…0008",
          "build/rpi5 byte/hash/mtime=UNCHANGED · image build=NOT_RUN",
          "S99 reproducibility=NEXT · physical BOOT8H=STOP · Pi=OFF",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
    ],
    limitations: [
      "S98 yalnız image-free full regression matrix kabulüdür; S99 reproducibility sıradaki ayrı kapıdır.",
      "SMP profilleri COMPILE_ONLY'dır ve linked ELF üretmez; Generic SMP runtime, scheduler/runqueue, migration, TLB shootdown ve CPU2/3 kapalıdır.",
      "Tarihsel build/rpi5 envanterinin değişmemesi yeni G8h image/package kabulü değildir; IMAGE_BUILD=NOT_RUN ve bütün artifact kapıları STOP'tur.",
      "Pi kapalı tutulur; microSD, device, UART descriptor/capture, power ve fiziksel BOOT8H kapıları STOP'tur. Son fiziksel PASS S92 BOOT8G'dir.",
      "Web deploy provenance'i yalnız yayınlanan docs/static-site çıktısına aittir; kernel/image/package üretim veya Git-provider provenance'i kurmaz.",
    ],
  },
snippet sha256: 4089f7ce0339file sha256: 9726dbf00f84
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test rpi5_g8h_matrix_source -- --test-threads=1
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9