ASELSANMicrokernel
S92 · SOURCE-BOUND GATE EVIDENCE

G8g fiziksel BOOT8G strict PASS; dar per-CPU timer kapsamı doğrulandı

Operations komutu/kapı ailesi → gerçek repository yürütme sözleşmesi Bu sayfa yalnız S92 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S92Komut / fiziksel sözleşmeOperations id exactsource SHA exact

operation: rpi5-g8g-physical-boot8g-pass

script/Makefile/config · Operations · 2 exact excerpt

sequence-bound=true · implementation-bound=false
01 · Yürütme sözleşmesi

Gerçek script / Makefile / config kaynağı

tam dosyaL1–L124
scripts/verify-rpi5-g8g-physical-raw.sh::verify-rpi5-g8g-physical-raw.sh
#!/bin/sh
set -eu

SCRIPT_DIR=$(CDPATH= cd -- "$(/usr/bin/dirname -- "$0")" && pwd -P)
REPO_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd -P)

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

run_validator() {
    (
        cd "$REPO_ROOT"
        cargo run --quiet --locked --offline -p aselsan_microkernel_simulation \
            --example verify_rpi5_g8g_physical_raw -- "$@"
    )
}

stat_identity() {
    /usr/bin/stat -f '%d:%i:%z:%m:%c:%Lp:%l' "$1"
}

stat_bytes() {
    /usr/bin/stat -f '%z' "$1"
}

stat_device() {
    /usr/bin/stat -f '%d' "$1"
}

stat_inode() {
    /usr/bin/stat -f '%i' "$1"
}

stat_mode() {
    /usr/bin/stat -f '%Lp' "$1"
}

stat_links() {
    /usr/bin/stat -f '%l' "$1"
}

raw_sha256() {
    /usr/bin/shasum -a 256 "$1" | /usr/bin/cut -d ' ' -f 1
}

validate_operational_identity() {
    [ ! -L "$RAW_PATH" ] || fail "raw must be a non-symlink regular file"
    [ -f "$RAW_PATH" ] || fail "raw must be a non-symlink regular file"

    RAW_MODE=$(stat_mode "$RAW_PATH") || fail "could not stat raw mode"
    [ "$RAW_MODE" = 444 ] || fail "raw mode must be exactly 0444"
    RAW_LINKS=$(stat_links "$RAW_PATH") || fail "could not stat raw link count"
    [ "$RAW_LINKS" = 1 ] || fail "raw link count must be exactly one"
}

if [ "$#" -eq 1 ] && [ "$1" = "--verify-source-only" ]; then
    run_validator --canonical
    echo "G8G_PHYSICAL_RAW_SOURCE=PASS validators=11 milestones=54 hardware=UNTOUCHED"
    exit 0
fi

[ "$#" -eq 3 ] || \
    fail "operational mode requires RAW_PATH EXPECTED_BYTES EXPECTED_SHA256"

RAW_PATH=$1
EXPECTED_BYTES=$2
EXPECTED_SHA256=$3

case "$EXPECTED_BYTES" in
    ''|0|0*|*[!0-9]*) fail "EXPECTED_BYTES must be a positive canonical decimal" ;;
esac
[ "$EXPECTED_BYTES" -le 67108864 ] 2>/dev/null || \
    fail "EXPECTED_BYTES exceeds the 64 MiB physical capture limit"
[ "${#EXPECTED_SHA256}" -eq 64 ] || \
    fail "EXPECTED_SHA256 must be exactly 64 lowercase hex characters"
case "$EXPECTED_SHA256" in
    *[!0-9a-f]*) fail "EXPECTED_SHA256 must be exactly 64 lowercase hex characters" ;;
esac

case "$RAW_PATH" in
    /*) ;;
    *) fail "RAW_PATH must be an absolute canonical path" ;;
esac
RAW_PARENT=$(/usr/bin/dirname -- "$RAW_PATH")
RAW_BASENAME=$(/usr/bin/basename -- "$RAW_PATH")
[ "$RAW_BASENAME" != . ] && [ "$RAW_BASENAME" != .. ] || \
    fail "RAW_PATH must be an absolute canonical path"
CANONICAL_PARENT=$(CDPATH= cd -- "$RAW_PARENT" 2>/dev/null && pwd -P) || \
    fail "RAW_PATH parent does not exist"
CANONICAL_PATH="$CANONICAL_PARENT/$RAW_BASENAME"
[ "$RAW_PATH" = "$CANONICAL_PATH" ] || \
    fail "RAW_PATH must be an absolute canonical path"

validate_operational_identity
PRE_IDENTITY=$(stat_identity "$RAW_PATH") || fail "could not stat raw identity"
PRE_BYTES=$(stat_bytes "$RAW_PATH") || fail "could not stat raw size"
PRE_DEVICE=$(stat_device "$RAW_PATH") || fail "could not stat raw device"
PRE_INODE=$(stat_inode "$RAW_PATH") || fail "could not stat raw inode"
PRE_SHA256=$(raw_sha256 "$RAW_PATH") || fail "could not hash raw"
[ "$PRE_BYTES" = "$EXPECTED_BYTES" ] || \
    fail "raw size does not match EXPECTED_BYTES"
[ "$PRE_SHA256" = "$EXPECTED_SHA256" ] || \
    fail "raw hash does not match EXPECTED_SHA256"

run_validator --raw "$RAW_PATH" \
    --expected-bytes "$EXPECTED_BYTES" \
    --expected-sha256 "$EXPECTED_SHA256" \
    --expected-device "$PRE_DEVICE" \
    --expected-inode "$PRE_INODE"

validate_operational_identity
POST_IDENTITY=$(stat_identity "$RAW_PATH") || fail "could not stat raw identity after validation"
POST_BYTES=$(stat_bytes "$RAW_PATH") || fail "could not stat raw size after validation"
POST_SHA256=$(raw_sha256 "$RAW_PATH") || fail "could not hash raw after validation"
[ "$POST_IDENTITY" = "$PRE_IDENTITY" ] || fail "raw identity changed during validation"
[ "$POST_BYTES" = "$PRE_BYTES" ] || fail "raw identity changed during validation"
[ "$POST_SHA256" = "$PRE_SHA256" ] || fail "raw hash changed during validation"
[ "$POST_BYTES" = "$EXPECTED_BYTES" ] || fail "raw identity changed during validation"
[ "$POST_SHA256" = "$EXPECTED_SHA256" ] || fail "raw hash changed during validation"

echo "PHYSICAL_RAW_VALIDATION=PASS exact_bytes=$POST_BYTES sha256=$POST_SHA256 validators=11 milestones=54"
snippet sha256: 6cf921fdc55cfile sha256: 6cf921fdc55c
02 · Kapı kimlik kaydı

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

tam Operations kaydıL28644–L28731
website/src/lib/operations.ts::rpi5-g8g-physical-boot8g-pass
  {
    id: "rpi5-g8g-physical-boot8g-pass",
    date: "2026-08-22",
    sequence: 92,
    status: "verified",
    title:
      "G8g fiziksel BOOT8G strict PASS; dar per-CPU timer kapsamı doğrulandı",
    summary:
      "Kullanıcı, S91 helper aynı UART descriptor'ında capture_armed=YES verdikten sonra Raspberry Pi 5'e yalnız bir kez güç verdi. Helper BOOT8G terminal marker'ını 18255–18270 offsetlerinde gördü, üç saniyelik grace'i tamamladı, capture'ı durable kapattı ve exit 0 verdi. Değişmemiş physical UART10 raw exact 18.978 B, mode 0444, nlink 1, dev 16777231, inode 21967471 ve SHA-256 4abf8bb1…1a2 olarak donduruldu. Aggregate wrapper 11 validator ve 54 milestone ile PASS, direct G8g validator PASS verdi; 54 marker occurrence / 51 distinct tag, G7S1 exact 4, diğer markerlar exact 1 ve error marker 0'dır. Binary framing leading/total NUL=5/5, non-leading NUL=0, UTF-8 PASS, CR/LF/CRLF=249/249/249, bare=0/0 ve terminal/trailing=0/0'dır. CPU0 BOOT8F tick 1005 state'i değişmedi; CPU1 start capture'dan 28 count sonra alındı, exact iki PPI27 delivery/ack/EOI ve iki 540000-count absolute-CVAL advance gerçekleşti. IRQ driftleri 10/3 count, üçüncü check exact deadline'da ve üçüncü IRQ yok; final timer OFF ve IMASK ON. Independent S92 audit FINAL GO, USB stable, holders 0 ve helper absent verdi. Bu yalnız SCOPE=CPU1_PER_CPU_TIMER_ONLY fiziksel PASS'tir; S93 permanent evidence archive/promotion henüz ayrı kapıdır.",
    evidence: [
      "Kullanıcı S91 `capture_armed=YES` sonrasında tek power-on verdi; ikinci power döngüsü veya capture birleştirmesi yapılmadı.",
      "Helper `terminal_marker=BOOT8G start_offset=18255 end_offset=18270`, grace 3s, durable capture close PASS ve exit 0 verdi.",
      "Immutable physical UART10 raw exact 18.978 B / 4abf8bb1ed8842cc8ab529d5dd091e304b66a4fb1907a4c0cc48e0f2a16cf1a2; mode 0444, nlink 1, dev 16777231, inode 21967471.",
      "Aggregate wrapper PASS: 11/54 validator/milestone; direct G8g validator PASS.",
      "Marker audit 54 occurrence / 51 distinct tag; G7S1=4, diğer markerların her biri=1 ve error/unknown marker=0.",
      "Byte framing NUL=5/5 leading/total, non-leading NUL=0, UTF-8 PASS, CR/LF/CRLF=249/249/249, bare CR/LF=0/0 ve terminal/trailing=0/0.",
      "Immutable G8f prerequisite BOOT8F tick=1005; CPU0 freq=54000000, period=540000, start=58348469, next-CVAL=601588469, ticks=1005 ve capture-count=608470746 değişmedi.",
      "CPU1_START=608470774, capture→start=+28 ve CPU1_FIRST_CVAL=609010774.",
      "IRQ1 fired=609010784, IRQ2 fired=609550777, drift=10/3 ve next-CVAL=609550774/610090774; iki delta exact 540000.",
      "Exact toplam delivery/ack/EOI/deadline-advance/local-tick=2/2/2/2/2 ve ACK_RAW=EOI_RAW=0x1b.",
      "THIRD_CHECK_COUNT=610090774, third-check delta=0 ve THIRD_IRQ=NO; final timer OFF ve IMASK ON.",
      "CPU0 next-CVAL before/after 601588469/601588469, ticks before/after 1005/1005 ve CPU0 state mutations=0.",
      "Scheduler/task/heap/UART-write/SGI exact 0; migration/TLB shootdown/CPU2_3 OFF; SCOPE=CPU1_PER_CPU_TIMER_ONLY.",
      "Independent S92 audit FINAL GO; USB identity stable, holders=0 ve helper process absent.",
      "Current serialized full simulation 256/256 PASS.",
      "S92 physical proof, tarihsel S92-close sınırı ve S93 amendment'iyle exact 215 satır / 5.117 B / 823a0b7e0ed34feb3cdf45337c92276edc1797a1191ca49066e1a79b137a8c62.",
    ],
    terminalSessionsNote:
      "Bu kayıt tamamlanmış immutable raw ve salt-okunur validator/audit sonuçlarını özetler. Web/docs işi raw, device, power veya archive dosyalarına erişmez.",
    terminalSessions: [
      {
        id: "g8g-sequence92-capture-finalization",
        title: "Tek power-on, BOOT8G terminal marker ve durable close",
        commandLines: [
          "user gives one power-on after capture_armed=YES",
          "capture helper reads the already-open same descriptor through BOOT8G",
          "wait exact 3-second grace and finalize raw durably",
        ],
        outputLines: [
          "terminal_marker=BOOT8G · offsets=18255..18270 · grace=3s",
          "helper_exit=0 · capture_closed=YES · durable_finalize=PASS",
          "raw=18978 B · mode0444 · nlink1 · sha256=4abf8bb1…1a2",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8g-sequence92-strict-physical-validator",
        title: "Aggregate full-raw ve direct G8g validator",
        commandLines: [
          "run locked/offline aggregate wrapper on immutable same-FD raw",
          "run direct strict G8g validator without trim/edit/merge",
          "audit binary framing and exact global marker inventory",
        ],
        outputLines: [
          "wrapper=PASS validators11 milestones54 · direct_G8g=PASS",
          "markers=54 occurrences/51 distinct · G7S1=4 · others=1 · errors=0",
          "NUL=5/5 · nonleading=0 · CRLF=249 · bare=0/0 · UTF8=PASS",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
      {
        id: "g8g-sequence92-semantic-and-independent-audit",
        title: "Per-CPU deadline semantiği ve bağımsız FINAL GO",
        commandLines: [
          "verify immutable CPU0 compatibility snapshot",
          "verify exact two CPU1 PPI27 rounds and no third IRQ",
          "run independent post-capture identity and semantic audit",
        ],
        outputLines: [
          "CPU0 next/ticks immutable · CPU1 capture→start=28",
          "IRQ1/IRQ2 drift=10/3 · deadline deltas=540000/540000",
          "third_check=610090774 delta0 NO_IRQ · final=OFF+IMASK",
          "independent_audit=FINAL_GO · USB=STABLE · holders0 · helper=ABSENT",
        ],
        exitCode: 0,
        outputMode: "complete",
      },
    ],
    limitations: [
      "Bu yalnız CPU1_PER_CPU_TIMER_ONLY fiziksel PASS'tir; Generic SMP scheduler veya runqueue kabulü değildir.",
      "Scheduler/task/heap/CPU1 UART/SGI, migration, TLB shootdown, CPU2/CPU3, hotplug ve soak kapsam dışı ve kapalıdır.",
      "S93 permanent evidence archive, manifest kimliği, bağımsız archive audit ve promotion bu kaydın sonunda henüz PENDING'dir.",
      "Kalıcı archive tamamlanmadan G8g complete veya G8h next ilan edilmez.",
      "Production deployment dirty/untracked workspace ve stale 47d22c9 source etiketiyle yapılır; canlı artifact doğrulansa da Git-provider provenance kurulmuş sayılmaz.",
    ],
  },
snippet sha256: 91d1ec6b91d3file sha256: 9726dbf00f84
Kayıtlı yürütme/kanıt komutu
user gives one power-on after capture_armed=YES
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9