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: 0ae6694d450c…file 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: bc88c515b27b…file 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: 4089f7ce0339…file sha256: 9726dbf00f84…
Focused test komutu
cargo test -p aselsan_microkernel_simulation --test rpi5_g8h_matrix_source -- --test-threads=1Registry schema v5 · generator
website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9