S77 · SOURCE-BOUND GATE EVIDENCE
G8f UART transport reset gözlendi; firmware runtime değerlendirilmedi
S77 UART capture kapısı → kendi G8F same-descriptor helper kodu Bu sayfa yalnız S77 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.
S77Komut / fiziksel sözleşmeOperations id exactsource SHA exact
operation: rpi5-g8f-uart-transport-reset-not-evaluated
script/Makefile/config · Operations · 2 exact excerpt
sequence-bound=true · implementation-bound=false
01 · Yürütme / doğrulama kodu
Kapının gerçek repository sözleşmesi
tam C fonksiyonuL47–L239
scripts/capture-rpi5-g8f-uart10.c::main
int main(int argc, char **argv) {
if (argc != 3) {
fprintf(stderr, "usage: %s DEVICE OUTPUT\n", argv[0]);
return 2;
}
const char *device = argv[1];
const char *output = argv[2];
const char terminal_marker[] = "ASELSAN/BOOT8F ";
const size_t marker_len = sizeof(terminal_marker) - 1;
size_t marker_progress = 0;
bool terminal_seen = false;
double terminal_seen_at = 0.0;
signal(SIGINT, request_stop);
signal(SIGTERM, request_stop);
int serial_fd = open(device, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (serial_fd < 0) {
perror("open serial device");
return 2;
}
struct termios settings;
if (tcgetattr(serial_fd, &settings) != 0) {
perror("tcgetattr before configure");
close(serial_fd);
return 2;
}
cfmakeraw(&settings);
settings.c_cflag &= (tcflag_t)~(PARENB | CSTOPB | CSIZE);
settings.c_cflag |= CS8 | CLOCAL | CREAD;
#ifdef CRTSCTS
settings.c_cflag &= (tcflag_t)~CRTSCTS;
#endif
settings.c_iflag &= (tcflag_t)~(IXON | IXOFF | IXANY);
settings.c_cc[VMIN] = 0;
settings.c_cc[VTIME] = 0;
if (cfsetispeed(&settings, B115200) != 0 ||
cfsetospeed(&settings, B115200) != 0) {
perror("cfset speed");
close(serial_fd);
return 2;
}
if (tcsetattr(serial_fd, TCSANOW, &settings) != 0) {
perror("tcsetattr");
close(serial_fd);
return 2;
}
struct termios effective;
if (tcgetattr(serial_fd, &effective) != 0) {
perror("tcgetattr after configure");
close(serial_fd);
return 2;
}
bool raw_ok = (effective.c_lflag & (ICANON | ECHO | ISIG | IEXTEN)) == 0 &&
(effective.c_oflag & OPOST) == 0;
bool bits_ok = (effective.c_cflag & CSIZE) == CS8 &&
(effective.c_cflag & (PARENB | CSTOPB)) == 0;
bool flow_ok = (effective.c_iflag & (IXON | IXOFF | IXANY)) == 0;
#ifdef CRTSCTS
flow_ok = flow_ok && (effective.c_cflag & CRTSCTS) == 0;
#endif
bool speed_ok = cfgetispeed(&effective) == B115200 &&
cfgetospeed(&effective) == B115200;
if (!raw_ok || !bits_ok || !flow_ok || !speed_ok) {
fprintf(stderr,
"effective termios mismatch raw=%s bits8n1=%s flow_off=%s speed=%s\n",
raw_ok ? "true" : "false",
bits_ok ? "true" : "false",
flow_ok ? "true" : "false",
speed_ok ? "true" : "false");
close(serial_fd);
return 2;
}
if (tcflush(serial_fd, TCIFLUSH) != 0) {
perror("tcflush TCIFLUSH");
close(serial_fd);
return 2;
}
int output_fd = open(output, O_WRONLY | O_CREAT | O_EXCL, 0600);
if (output_fd < 0) {
perror("open raw output");
close(serial_fd);
return 2;
}
printf("device=%s\n", device);
printf("same_descriptor=true fd=%d\n", serial_fd);
printf("effective_baud_115200=true ispeed=%lu ospeed=%lu\n",
(unsigned long)cfgetispeed(&effective),
(unsigned long)cfgetospeed(&effective));
printf("format=8N1 raw=true flow_control=false\n");
printf("input_flushed=true method=TCIFLUSH\n");
printf("capture_path=%s\n", output);
printf("capture_armed=YES\n");
fflush(stdout);
const double started_at = monotonic_seconds();
uint64_t total_bytes = 0;
uint8_t buffer[4096];
int result = 0;
while (!stop_requested) {
double now = monotonic_seconds();
if (terminal_seen && now - terminal_seen_at >= 3.0) {
printf("terminal_grace_complete=true\n");
break;
}
if (now - started_at >= 3600.0) {
fprintf(stderr, "capture_timeout=YES elapsed_seconds=3600\n");
result = 3;
break;
}
struct pollfd pfd = {.fd = serial_fd, .events = POLLIN, .revents = 0};
int polled = poll(&pfd, 1, 250);
if (polled < 0) {
if (errno == EINTR) {
continue;
}
perror("poll serial");
result = 2;
break;
}
if (polled == 0) {
continue;
}
if ((pfd.revents & (POLLERR | POLLNVAL)) != 0) {
fprintf(stderr, "serial poll failure revents=0x%x\n", pfd.revents);
result = 2;
break;
}
for (;;) {
ssize_t got = read(serial_fd, buffer, sizeof(buffer));
if (got < 0) {
if (errno == EINTR) {
continue;
}
if (errno == EAGAIN || errno == EWOULDBLOCK) {
break;
}
perror("read serial");
result = 2;
stop_requested = 1;
break;
}
if (got == 0) {
break;
}
write_all(output_fd, buffer, (size_t)got);
total_bytes += (uint64_t)got;
for (ssize_t i = 0; i < got && !terminal_seen; ++i) {
uint8_t byte = buffer[i];
if (byte == (uint8_t)terminal_marker[marker_progress]) {
marker_progress++;
if (marker_progress == marker_len) {
terminal_seen = true;
terminal_seen_at = monotonic_seconds();
printf("terminal_marker_seen=ASELSAN/BOOT8F bytes=%llu\n",
(unsigned long long)total_bytes);
fflush(stdout);
}
} else {
marker_progress = byte == (uint8_t)terminal_marker[0] ? 1 : 0;
}
}
}
}
if (fsync(output_fd) != 0) {
perror("fsync raw output");
result = 2;
}
if (fchmod(output_fd, 0444) != 0) {
perror("fchmod raw output");
result = 2;
}
close(output_fd);
close(serial_fd);
printf("capture_closed=true terminal_seen=%s exact_bytes=%llu mode=0444\n",
terminal_seen ? "true" : "false",
(unsigned long long)total_bytes);
fflush(stdout);
return result;
}snippet sha256: 64fd279c4975…file sha256: 58e8fb940ad0…
02 · Kapı kimlik kaydı
Operations sıra, kimlik ve başlık bağı
tam Operations kaydıL30086–L30189
website/src/lib/operations.ts::rpi5-g8f-uart-transport-reset-not-evaluated
{
id: "rpi5-g8f-uart-transport-reset-not-evaluated",
date: "2026-08-21",
sequence: 77,
status: "observed",
title:
"G8f UART transport reset gözlendi; firmware runtime değerlendirilmedi",
summary:
"Sıra 76'nın exact kartı kullanıcı tarafından güçsüz Pi'ye takıldı. Bağımsız pre-arm audit kartın Mac'te absent, cu/tty yollarının aynı boş IOSerial descriptor'a bağlı ve dondurulmuş helper'ın exact olduğunu doğruladı. Helper `/dev/cu.usbmodem214402` yolunu bir kez açtı; fd 3 üzerinde same-descriptor, effective 115200/8N1/raw/flow-off, TCIFLUSH ve `capture_armed=YES` sınırını yayımladı. Kullanıcı ancak bundan sonra Pi'ye güç verdiğini bildirdi. Açık descriptor herhangi bir UART boot metni gelmeden `read serial: Device not configured` ile geçersiz kaldı; helper exit 2 ve immutable raw 52 NUL baytla fail-closed kapandı. Strict G8f validator'ın exit 1 reddi beklenen evidence-integrity sonucudur. macOS kernel logu aynı anda endpoint transaction error, hardware connection lost ve 17 saniye sonra aynı ürün/lokasyonun yeni device node olarak yeniden enumerate edilmesini doğrular. Sonuç `TRANSPORT_INVALIDATION`, `runtime=NOT_EVALUATED`, `retry_required=true` olarak sınıflandırıldı; firmware PASS veya FAIL değildir. Pi hâlâ kullanıcı bildirimiyle powered durumdadır ve power-cut teyidi yoktur; tamamen kapatma, yeni arm ve yeni raw olmadan retry kesin STOP'tur.",
evidence: [
"Bağımsız pre-arm GO: exact Sıra 76 kartı güçsüz Pi'deydi ve Mac'te absent; `/dev/cu.usbmodem214402` ile `/dev/tty.usbmodem214402` aynı IOSerial descriptor'a çözüldü, `lsof` portu boş gösterdi.",
"Helper kaynağı exact 7.244 B / 58e8fb940ad0b17adf3b895a13b844647e8524d99136874ef2b4bedc1ff23e90 ve binary exact 35.112 B / 5e0f78f60b2ddb7ff5cf5d1c446cf17260cbde023f9ad6270524b74463cabedc olarak pre-arm audit'te yeniden eşleşti.",
"Helper `/dev/cu.usbmodem214402` cihazını bir kez açtı; `same_descriptor=true fd=3`, effective 115200 baud, 8N1, raw, flow-control off ve `TCIFLUSH` doğrulandı.",
"`capture_armed=YES` terminal sınırı yayımlandıktan sonra kullanıcı Pi'ye güç verdiğini bildirdi; arm-before-power sırası korundu.",
"Helper exit 2 verdi: `read serial: Device not configured`; kapanış `capture_closed=true terminal_seen=false exact_bytes=52 mode=0444` oldu.",
"Immutable raw exact 52 B / 7955cb2de90dd9efc6df9fdbf5f5d10c114f4135a9a6b52db1003be749e32f7a; bütün 52 bayt NUL, non-NUL sayısı 0 ve mode 0444'tür.",
"Raw içindeki G8F0/G8F1/BOOT8F/G8FERR/panic/unknown-IRQ marker sayıları 0/0/0/0/0/0'dır; hiçbir UART firmware metni capture edilmedi.",
"Strict G8f validator exit 1 verdi: leading NUL 52 > 5 ve bütün required marker sayıları 0. Bu expected evidence-integrity reject'tir; runtime verdict değildir.",
"macOS kernel 19:02:36.359'da endpoint 0x81 transaction 0xe00002ed ve 0 B transfer; 19:02:36.375'te 0x2e8a/000c/0101 hardware connection lost kaydetti.",
"Aynı product/location 19:02:53.420'de, 17 saniye sonra yeniden enumerate edildi. Aynı pathname yeniden oluşsa da bu yeni device node'dur; ilk açık fd 3 descriptor'ı geçersiz kaldı.",
"Sınıflandırma exact `TRANSPORT_INVALIDATION`, `runtime=NOT_EVALUATED`, `retry_required=true`; G8f firmware PASS/FAIL değerlendirmesi yapılmadı.",
"Evidence arşivi `evidence/rpi5/g8f/sequence-77-uart-transport-reset/`; README exact 3.392 B / 95d24e22a65d508c774fc2c7c20621d25b5102baf732610f7a6d9b585b16dcbf.",
"Arşiv SHA256SUMS exact 292 B / 6e9c2a8fcdefc893199c23854e94e27669578a9aadc7732c378fb0cf0865f065; raw/helper kaynak/helper binary üçlüsünü exact doğrular. Arşiv raw ve helper kopyaları cmp PASS ve mode 0444'tür.",
"G8f staged proof exact 23.223 B / 821282d54ee85c751feea8bc6300a0da8902be30201814388982ca492714db1d; transport reset'i fiziksel runtime sonucundan ayırır.",
],
terminalSessionsNote:
"Oturumlar gerçek pre-arm, helper failure, strict evidence rejection ve bağımsız macOS transport teşhis/arşiv sonuçlarını ayrı exit kodlarıyla taşır. Exit 2 helper transport kapanışıdır; exit 1 validator evidence reddidir ve firmware FAIL değildir.",
terminalSessions: [
{
id: "g8f-seq77-independent-prearm-go",
title: "Kart-absent, descriptor-free ve exact helper pre-arm kapısı",
commandLines: [
"independently verify the sequence-76 card is absent from the Mac",
"resolve the cu/tty usbmodem214402 pair and verify lsof-free",
"verify the frozen G8f capture helper source and binary",
"open once, configure fd 3, TCIFLUSH and publish capture_armed=YES before user power-on",
],
outputLines: [
"card absent from Mac=PASS · cu/tty same descriptor=PASS · lsof free=PASS",
"helper source/binary exact=PASS",
"same_descriptor=true fd=3 · effective=115200/8N1/raw/flow-off · TCIFLUSH=PASS",
"capture_armed=YES · user power report occurred only after arm",
],
exitCode: 0,
outputMode: "complete",
},
{
id: "g8f-seq77-helper-transport-close",
title:
"Eski açık descriptor'ın transport reset ile fail-closed kapanışı",
commandLines: [
"build/tools/capture-rpi5-g8f-uart10 /dev/cu.usbmodem214402 sequence-77 exclusive raw path",
],
outputLines: [
"read serial: Device not configured",
"capture_closed=true terminal_seen=false exact_bytes=52 mode=0444",
"raw=52 B · nonNUL=0 · sha256=7955cb2de90dd9efc6df9fdbf5f5d10c114f4135a9a6b52db1003be749e32f7a",
"G8F0/G8F1/BOOT8F/G8FERR/panic/unknownIRQ=0/0/0/0/0/0",
],
exitCode: 2,
outputMode: "complete",
},
{
id: "g8f-seq77-strict-validator-reject",
title: "All-NUL raw için beklenen evidence-integrity reddi",
commandLines: [
"validate the immutable 52-byte raw with the strict G8f UART validator",
],
outputLines: [
"leading NUL=52 > allowed 5",
"all required marker counts=0",
"evidence integrity=REJECT · runtime verdict=NOT_EVALUATED",
],
exitCode: 1,
outputMode: "complete",
},
{
id: "g8f-seq77-macos-transport-diagnosis",
title: "Kernel-log transport teşhisi ve immutable arşiv",
commandLines: [
"inspect the bounded macOS kernel log around the descriptor failure",
"archive raw and exact helper copies under evidence/rpi5/g8f/sequence-77-uart-transport-reset",
"verify archive SHA256SUMS, cmp and mode 0444",
],
outputLines: [
"19:02:36.359 endpoint=0x81 status=0xe00002ed transferred=0 B",
"19:02:36.375 hardware connection lost · device=0x2e8a/000c/0101",
"19:02:53.420 same product/location re-enumerated · delta=17 s · old fd invalid",
"classification=TRANSPORT_INVALIDATION · runtime=NOT_EVALUATED · retry_required=true · archive=PASS",
],
exitCode: 0,
outputMode: "complete",
},
],
limitations: [
"Bu USB/UART transport gözlemidir; G8f firmware runtime PASS veya FAIL değildir ve BOOT8F değerlendirilmedi.",
"Raw 52 NUL bayttır ve hiçbir firmware marker'ı içermez; strict validator reddi yalnız evidence-integrity sonucudur.",
"Pi kullanıcı bildirimiyle hâlâ powered durumdadır ve power-cut teyidi yoktur; tamamen kapatma doğrulanmadan retry yapılamaz.",
"Retry yeni exclusive raw, yeni descriptor open, yeni TCIFLUSH ve güçten önce yeni `capture_armed=YES` gerektirir; reddedilen raw hiçbir capture ile birleştirilemez.",
"Generic SMP runtime kapalıdır; bu transport gözlemi scheduler, timer, migration veya shootdown güvenliği kanıtı değildir.",
"Website yayını yalnız canonical custom domain üzerinden doğrulanır; bu ortamda pages.dev direct smoke için başarı iddia edilmez.",
"Wrangler yayını dirty/untracked workspace'ten ve stale 47d22c9 source etiketiyle yapılır; canlı artifact hash'i doğrulansa da Git-provider provenance kurulmuş sayılmaz.",
],
},snippet sha256: fa535dc4a904…file sha256: 9726dbf00f84…
Kayıtlı yürütme/kanıt komutu
independently verify the sequence-76 card is absent from the MacRegistry schema v5 · generator
website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9