Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Process Exit Codes, Signals, and Lifecycle — Unified Coverage Ledger

This ledger is the authoritative inventory for the process exit and signal knowledge base. It seeds every identified requirement with a stable ID before documentation work begins; statuses are updated only when the required explanation, examples (where required), and cited references actually exist.

Status vocabulary (same as the rest of this book):

  • not-started — requirement identified with a stable ID and source; no documentation page yet.
  • researched — primary sources read; brief entry exists.
  • documented — full explanation, examples where required, and references that support the claims exist at the linked path.
  • source-limited — documentation attempted but a named primary source was unreachable; the entry states what is missing.

Scope statement. The signal inventory covers the architectures documented by the Linux kernel’s arch/ tree signal headers and cross-checked against man 7 signal: alpha, arc, arm, arm64, csky, hexagon, loongarch, m68k, microblaze, mips, nios2, openrisc, parisc, powerpc, riscv, s390, sh, sparc, x86 (i386 and x86-64), and xtensa. Per-architecture numbering is verified from the kernel source include/uapi/asm-generic/signal.h and per-arch overrides; claims are stated per architecture, never universally. Interface signatures are verified against man-pages and glibc/musl documentation; shell claims against Bash, Dash, and Zsh manuals; service-manager claims against official project docs; language claims against official language/library/runtime references at the versions stated in each chapter.

Requirement-ID derivation: requirements were derived from the challenge specification (sections 2–11) plus the APIs those sections name, decomposed into individually verifiable rows. Named systems, signals, interfaces, languages, and comparison requirements each carry IDs. Language chapters additionally carry per-language ledger sections with canonical signatures.

1. Standard signals (section 2)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
SIG-001SIGHUP (1): purpose, default action, catchability, arch numberingsignals/standard-signals.mdman 7 signal; kernel signal.h per-archLinux; all arch in scopedocumented
SIG-002SIGINT (2)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-003SIGQUIT (3), core-dump behaviorsignals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-004SIGILL (4)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-005SIGTRAP (5), ptrace interplaysignals/standard-signals.mdman 7 signal; ptrace(2)Linux; all archdocumented
SIG-006SIGABRT (6)signals/standard-signals.mdman 7 signal; abort(3)Linux; all archdocumented
SIG-007SIGBUS (7), arch-dependent on somesignals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-008SIGFPE (8)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-009SIGKILL (9), uncatchable semanticssignals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-010SIGUSR1 (10 / 16 per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-011SIGSEGV (11)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-012SIGUSR2 (12 / 17 per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-013SIGPIPE (13)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-014SIGALRM (14)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-015SIGTERM (15)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-016SIGSTKFLT (16; not on all arch)signals/standard-signals.mdman 7 signal; kernel per-arch headersLinux; x86, m68k, others; absent on alpha/sparcdocumented
SIG-017SIGCHLD (17 / 20 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-018SIGCONT (18 / 19 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-019SIGSTOP (19 / 18 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-020SIGTSTP (20 / 18 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-021SIGTTIN (21 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-022SIGTTOU (22 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-023SIGURG (23 / 16 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-024SIGXCPU (24 / 30 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-025SIGXFSZ (25 / 25 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-026SIGVTALRM (26 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-027SIGPROF (27 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-028SIGWINCH (28 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-029SIGIO/SIGPOLL (29 / 23 / others per-arch)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-030SIGPWR (30 / 19 / others per-arch; absent where SIGLOST)signals/standard-signals.mdman 7 signalLinux; most archdocumented
SIG-031SIGSYS/SIGUNUSED (31)signals/standard-signals.mdman 7 signalLinux; all archdocumented
SIG-032Architecture numbering table (all 31 across the arch set)signals/standard-signals.mdkernel include/uapi/asm*/signal.h21 arch named in scope statementdocumented
SIG-033Signal dispositions: default/ignore/handler, catchability rules, what SIGKILL/SIGSTOP cannot dosignals/standard-signals.mdman 7 signal; POSIX.1-2017 XSH 2.4Linux + POSIXdocumented
SIG-034Generation vs delivery: standard signals do not queue, pending set, blockingsignals/standard-signals.mdman 7 signal; POSIXLinux + POSIXdocumented
SIG-035Real-time signal range SIGRTMIN..SIGRTMAX, glibc vs kernel placementsignals/real-time-signals.mdman 7 signal; glibc manualLinux; glibc ≥2.1documented
SIG-036Real-time queuing guarantees, multiple pending instancessignals/real-time-signals.mdman 7 signal; POSIX.1-2017Linux + POSIXdocumented
SIG-037Real-time delivery ordering: lower numbers first, queued order within a numbersignals/real-time-signals.mdman 7 signal; POSIXLinux + POSIXdocumented
SIG-038Real-time queue limits: RLIMIT_SIGPENDING, /proc/sys/kernel/rtsig-max history, EAGAINsignals/real-time-signals.mdman 7 signal; setrlimit(2); kernel docsLinuxdocumented
SIG-039sigqueue(3)/rt_sigqueueinfo: sending queued signals with valuesignals/real-time-signals.mdman 2 rt_sigqueueinfo; man 3 sigqueueLinuxdocumented
SIG-040Real-time vs standard signal practical trade-offs and misconceptionssignals/real-time-signals.mdman 7 signalLinuxdocumented

2. Signal interfaces (section 3)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
IF-001kill(2): declaration, semantics, pid rules, errors; kill(1) utility and shell builtin differencesinterfaces/kill-raise.mdman 2 kill; POSIX; coreutils; bash manualLinux + POSIXdocumented
IF-002raise(3): declaration, thread semantics vs kill(getpid()), C11 vs POSIXinterfaces/kill-raise.mdman 3 raise; C11 7.14.2.1; glibc manualC11 + POSIXdocumented
IF-003sigaction(2/3): struct sigaction, flags, SA_SIGINFO, sa_restorerinterfaces/sigaction-signal.mdman 2 sigaction; POSIXLinux + POSIXdocumented
IF-004signal(2/3): portability hazards, BSD vs SysV semantics, glibc behaviorinterfaces/sigaction-signal.mdman 2 signal; man 3 signal; glibc manualLinux + POSIXdocumented
IF-005sigprocmask(2/3): how values, restrictions in threadsinterfaces/signal-masks.mdman 2 sigprocmask; POSIXLinux + POSIXdocumented
IF-006pthread_sigmask(3): thread-local masks, errors, examplesinterfaces/signal-masks.mdman 3 pthread_sigmask; POSIXPOSIX threadsdocumented
IF-007sigpending(2/3): pending-set semantics, thread viewinterfaces/signal-masks.mdman 2 sigpending; POSIXLinux + POSIXdocumented
IF-008sigwait(3): semantics, consuming pending signals, thread-safetyinterfaces/sigwait-sigsuspend.mdman 3 sigwait; POSIXPOSIXdocumented
IF-009sigwaitinfo/sigtimedwait(2/3) and sigtimedwait64 variantsinterfaces/sigwait-sigsuspend.mdman 2 sigtimedwait; POSIXLinux + POSIXdocumented
IF-010sigsuspend(3): atomic mask swap, race-free waitinginterfaces/sigwait-sigsuspend.mdman 3 sigsuspend; POSIXPOSIXdocumented
IF-011signalfd(2)/signalfd4(2): fd-based signal consumption, epoll interplayinterfaces/signalfd-pidfd.mdman 2 signalfdLinux ≥2.6.22, glibc ≥2.8documented
IF-012pidfd_send_signal(2): pidfd-based signaling, race avoidanceinterfaces/signalfd-pidfd.mdman 2 pidfd_send_signal; pidfd_open(2)Linux ≥5.1documented
IF-013tgkill(2) and tkill(2): thread-directed signals, library useinterfaces/tgkill.mdman 2 tgkillLinuxdocumented
IF-014rt_sigaction(2): kernel ABI, struct layout, sa_restorer, glibc wrapper differencesinterfaces/rt-sig-syscalls.mdman 2 sigaction NOTES; kernel sourceLinux; per-arch ABIdocumented
IF-015rt_sigprocmask(2): kernel ABI vs libc sigprocmaskinterfaces/rt-sig-syscalls.mdkernel source; man 2 sigprocmaskLinux; per-arch ABIdocumented
IF-016Related: sigqueue/sigwaitinfo family cross-links and existing per-syscall pages (rt_sigsuspend, sigaltstack, sigreturn, pause)interfaces/rt-sig-syscalls.mdman 7 signal; existing syscalls/ pagesLinuxdocumented
IF-017Async-signal-safety: rules, safe function list, handler patternsinterfaces/async-signal-safety.mdman 7 signal-safetyLinux/glibcdocumented
IF-018Interface category taxonomy: kernel syscall vs libc wrapper vs shell builtin vs external utility, per interfaceinterfaces/index.mdman pages; glibc; bash/dash manualsLinuxdocumented

3. Exit-status lifecycle and conventions (section 4)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
EX-001exit(3): flush, atexit handlers, C standard guaranteesexit-status/lifecycle.mdman 3 exit; C11 7.22.4.4; POSIXC11 + POSIXdocumented
EX-002_exit(2)/_Exit(3): immediate termination, no cleanup, difference from exitexit-status/lifecycle.mdman 2 _exit; C11; POSIXLinux + C11 + POSIXdocumented
EX-003wait(2)/waitpid(2)/waitid(2): status retrieval, W* macros, wait3/wait4 legacyexit-status/lifecycle.mdman 2 wait; POSIXLinux + POSIXdocumented
EX-004Status encoding: 16-bit wait status layout, WIFEXITED/WEXITSTATUS/WIFSIGNALED/WTERMSIG/WCOREDUMP/WIFSTOPPED/WSTOPSIG/WIFCONTINUEDexit-status/lifecycle.mdman 2 wait; kernel include/uapi linux/wait.hLinux + POSIXdocumented
EX-005Exit-status truncation to 8 bits: where it happens, what is lostexit-status/lifecycle.mdman 3 exit; POSIX 2.8.2POSIX + Linuxdocumented
EX-006Normal exit vs signal termination vs core dump: what the parent observesexit-status/lifecycle.mdman 2 wait; man 5 coreLinux + POSIXdocumented
EX-007Stopped and continued children: WUNTRACED/WCONTINUED, waitid targetsexit-status/lifecycle.mdman 2 wait; POSIXLinux + POSIXdocumented
EX-008Zombies and orphans: reaping, SIGCHLD, init/systemd reaping dutyexit-status/lifecycle.mdman 2 wait; man 7 signalLinuxdocumented
EX-009Termination vs status collection vs shell reporting: three distinct layersexit-status/lifecycle.mdPOSIX 2.8; shell manualsPOSIX + shellsdocumented
EX-010Common status conventions table: 0, 1, 2, 126, 127, 128+N, 130, 137, 139, 143; guarantees vs conventionsexit-status/conventions.mdPOSIX 2.8.2; coreutils; bash manualPOSIX + shells + coreutilsdocumented
EX-011Why one integer cannot establish cause: evidence needed to confirm interpretationsexit-status/conventions.mdPOSIX; coreutils docsPOSIX + Linuxdocumented
EX-012Convention consumers: shells, coreutils, service managers, container runtimes, orchestratorsexit-status/conventions.mdrespective official docsLinux ecosystemdocumented

4. Shell behavior (section 5)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
SH-001Bash pipeline status and pipefailshells/bash.mdbash manualbash ≥2.0 (pipefail ≥3.0)documented
SH-002Bash $?, PIPESTATUS, PROMPT_COMMAND tracingshells/bash.mdbash manualbashdocumented
SH-003Bash command substitution, subshell status propagationshells/bash.mdbash manualbashdocumented
SH-004Bash traps, signal delivery to shell vs children, wait semanticsshells/bash.mdbash manual; POSIX 2.11bashdocumented
SH-005Bash async jobs, background processes, job control, wait -nshells/bash.mdbash manualbash ≥4.3 for wait -ndocumented
SH-006Bash exit-status propagation rules: simple commands, lists, functionsshells/bash.mdbash manual; POSIX 2.8/2.9bashdocumented
SH-007Dash pipeline status, $?, traps, no PIPESTATUS; POSIX conformance notesshells/dash.mddash(1) manual; POSIX.1-2017dash 0.5.xdocumented
SH-008Dash command substitution, async jobs, signal handling differences from bashshells/dash.mddash(1) manual; POSIXdash 0.5.xdocumented
SH-009Zsh pipeline status, pipefail, pipestatus array (case difference vs bash)shells/zsh.mdzsh manualzsh ≥5.xdocumented
SH-010Zsh traps, TRAPxxx functions, signals, job controlshells/zsh.mdzsh manualzsh ≥5.xdocumented
SH-011Zsh command substitution, background jobs, exit propagationshells/zsh.mdzsh manualzsh ≥5.xdocumented
SH-012Cross-shell portability matrix and documented version differencesshells/index.mdall three manuals; POSIXbash/dash/zshdocumented

5. Service managers and supervisors (section 6)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
SM-001systemd: clean vs abnormal termination handling, MainPIDservice-managers/systemd.mdsystemd.exec(5), systemd.service(5)systemd ≥2xx, versioned where neededdocumented
SM-002systemd: Restart= policies, StartLimitIntervalSec/Burst, restart loopsservice-managers/systemd.mdsystemd.service(5)systemd (v230+ renames)documented
SM-003systemd: KillMode, KillSignal, TimeoutStopSec, escalation SIGTERM→SIGKILLservice-managers/systemd.mdsystemd.kill(5), systemd.service(5)systemddocumented
SM-004systemd: SuccessExitStatus, RestartPreventExitStatus, RestartForceExitStatusservice-managers/systemd.mdsystemd.service(5)systemddocumented
SM-005systemd: supervision model, cgroups, child reaping, failure reportingservice-managers/systemd.mdsystemd docssystemddocumented
SM-006OpenRC: supervision options, start/stop semantics, signal handlingservice-managers/openrc.mdOpenRC guide, openrc-run(8), man pagesOpenRC ≥0.4xdocumented
SM-007OpenRC: restart limits (if any), retry/timeout optionsservice-managers/openrc.mdOpenRC docsOpenRCdocumented
SM-008runit: stage-based supervision, ./run ./finish, exit-status semanticsservice-managers/runit.mdrunit(8), runsv(8) docsrunit 2.xdocumented
SM-009runit: restart-on-exit behavior, sv control signalsservice-managers/runit.mdrunsv(8)runit 2.xdocumented
SM-010s6: supervision tree, s6-supervise, finish scripts, exit codesservice-managers/s6.mds6 docs (skarnet.org)s6 2.xdocumented
SM-011s6: s6-svscan/s6-svcdt, down files, restart behavior, notification fdservice-managers/s6.mds6 docss6 2.xdocumented
SM-012Cross-manager comparison: stop signals, timeouts, escalation, restart conditionsservice-managers/index.mdall four official docsfour managersdocumented

6. Containers and orchestration (section 7)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
CT-001PID 1 responsibilities in containers: signal dispatch, default dispositions, reapingcontainers/pid1-signals.mdman 7 signal; docker docsLinux; dockerdocumented
CT-002Shell entrypoints (sh -c) as PID 1: signal non-forwarding, exec workaroundcontainers/pid1-signals.mddocker docs; shell manualsPOSIX shellsdocumented
CT-003Docker: STOPSIGNAL, stop grace period, docker kill/stop, signal forwardingcontainers/docker.mdDocker reference docsDocker Enginedocumented
CT-004Docker: exit codes from containerized processes, 128+N representation, docker inspect Statecontainers/docker.mdDocker referenceDocker Enginedocumented
CT-005Docker: OOM killer State.OOMKilled, memory limits, what 137 does and does not provecontainers/docker.mdDocker docs; kernel oom docsDocker Enginedocumented
CT-006Kubernetes: kubelet termination flow, grace periods, terminationMessagePolicycontainers/kubernetes.mdk8s docsk8s ≥1.x (versioned)documented
CT-007Kubernetes: exit-code and signal-based restart decisions, CrashLoopBackOffcontainers/kubernetes.mdk8s docsk8sdocumented
CT-008Kubernetes: OOMKilled reason vs exit code 137 evidence requirements, eviction vs OOMcontainers/kubernetes.mdk8s docsk8sdocumented
CT-009Zombie reaping in containers: tini/dumb-init/runtime reaperscontainers/pid1-signals.mdtini docs; runtime docsLinux; docker/k8sdocumented
CT-010Nested processes, wrapper scripts, transformed or lost statuses through layerscontainers/pid1-signals.mdruntime docsLinux; docker/k8sdocumented
CT-011Troubleshooting scenarios: shutdown races, ignored SIGTERM, lost exit reasonscontainers/troubleshooting-scenarios.mddocker + k8s docsDocker + k8sdocumented

7. Language chapters (section 8)

Shared coverage areas per language: syntax/semantics (A), API inventory (B), lifecycle/termination (C), signals/OS interaction (D), subprocess management (E), concurrency/resource semantics (F).

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
LG-C-001C: main, return from main, exit/_Exit/abort/atexit/quick_exit/at_quick_exit, C11/C23 differenceslanguages/c.mdC11/C23 standards; man pagesC11/C23 + POSIXdocumented
LG-C-002C: exit-status representation and truncation, termination vs threads vs childrenlanguages/c.mdC11; POSIXC11 + POSIXdocumented
LG-C-003C: signal(3)/sigaction(2) usage from C, UB list, async-signal-safety, handler restrictionslanguages/c.mdC11 7.14; man 7 signal-safetyC11 + POSIXdocumented
LG-C-004C: fork/exec/wait family, posix_spawn, status macros, exampleslanguages/c.mdPOSIX; man pagesPOSIXdocumented
LG-C-005C: threads (pthread_kill, cancellation), buffered stdio hazards, FD ownershiplanguages/c.mdPOSIX; man pagesPOSIXdocumented
LG-C-006C: API inventory rows with verified signatures (see language ledger below)languages/c.mdman pages; C standardC11/C23 + POSIXdocumented
LG-CPP-001C++: main, std::exit/_Exit/quick_exit/abort, termination handlerslanguages/cpp.mdC++ standard (cppreference as mirror)C++17/20/23documented
LG-CPP-002C++: which paths skip automatic-object destruction; static destruction; buffered streamslanguages/cpp.mdC++ standardC++17+documented
LG-CPP-003C++: stack unwinding, exceptions, terminate/abort, noexceptlanguages/cpp.mdC++ standardC++17+documented
LG-CPP-004C++: RAII cleanup guarantees across termination paths; std::system and subprocesslanguages/cpp.mdC++ standard; POSIX for process APIsC++17+documented
LG-CPP-005C++: signals from C library in C++ programs; interactions with exceptionslanguages/cpp.mdC++ standard; man 7 signal-safetyC++ + POSIXdocumented
LG-CPP-006C++: API inventory rows with verified signatures (see language ledger below)languages/cpp.mdC++ standardC++17+documented
LG-PY-001Python: sys.exit/SystemExit, os._exit, os.abort, atexit, exception propagation, interpreter shutdownlanguages/python.mddocs.python.orgPython 3.x (versioned)documented
LG-PY-002Python: exit status derivation from exceptions, unhandled exceptions, Py_Finalize behaviorlanguages/python.mddocs.python.org; CPython sourceCPython 3.xdocumented
LG-PY-003Python: signal module, handlers run in main thread, signal.signal/ITIMER, CPython restrictionslanguages/python.mddocs.python.org signalCPython 3.xdocumented
LG-PY-004Python: subprocess.Popen/run, CompletedProcess, returncode, pipes, timeouts, process groups, start_new_sessionlanguages/python.mddocs.python.org subprocessPython 3.xdocumented
LG-PY-005Python: asyncio subprocesses, multiprocessing termination semanticslanguages/python.mddocs.python.orgPython 3.xdocumented
LG-PY-006Python: CPython-specific vs language-guarantee separation; API inventory rowslanguages/python.mddocs.python.org; CPython docsCPython 3.xdocumented
LG-GO-001Go: os.Exit, return from main, log.Fatal, panic/recover, deferred calls per pathlanguages/go.mdgo.dev/pkg docs; specGo 1.2x (versioned)documented
LG-GO-002Go: runtime shutdown, which defers run on os.Exit vs panic, exit status from panicslanguages/go.mdgo spec; runtime docsGo 1.2xdocumented
LG-GO-003Go: os/signal.Notify, Signal type, context-based shutdown patterns, runtime restrictions in handlerslanguages/go.mdos/signal docsGo 1.2xdocumented
LG-GO-004Go: os/exec Cmd/Process/ProcessState/ExitCode/WaitStatus, pipes, contexts, cancellationlanguages/go.mdos/exec, os docsGo 1.2xdocumented
LG-GO-005Go: goroutines, threads, GOMAXPROCS interaction with signals; API inventory rowslanguages/go.mdgo docsGo 1.2xdocumented
LG-JA-001Java: JVM startup/shutdown, return from main, System.exit/Runtime.exit/Runtime.haltlanguages/java.mddocs.oracle.com (JDK versioned)JDK ≥11 (versioned)documented
LG-JA-002Java: shutdown hooks, ordering, halt skips hooks, uncaught exception handler → exit statuslanguages/java.mdJDK API docs; JVM specJDK ≥11documented
LG-JA-003Java: ProcessBuilder/Process/ProcessHandle, waitFor/exitValue/destroy/destroyForcibly/onExitlanguages/java.mdJDK API docsJDK ≥9 for ProcessHandledocumented
LG-JA-004Java: process I/O streams, deadlocks, timeouts, descendants, interruptionlanguages/java.mdJDK API docsJDK ≥11documented
LG-JA-005Java: signals via sun.misc.Signal / jdk.internal, JVM-internal signal use; API inventory rowslanguages/java.mdJDK docs; HotSpot docsJDK (HotSpot)documented
LG-RU-001Rust: return from main, std::process::exit, abort, panic strategies (unwind/abort), destructors per pathlanguages/rust.mddoc.rust-lang.org std; Rust referenceRust 1.7x+ (versioned)documented
LG-RU-002Rust: panic hook, catch_unwind, ExitCode trait From-return from main (1.61+)languages/rust.mdstd docsRust ≥1.61documented
LG-RU-003Rust: std::process::Command/Child/ExitStatus/ExitCode/Output/Stdio, Unix ext traitslanguages/rust.mdstd docsRust 1.7x+documented
LG-RU-004Rust: ownership/drop on exit/abort/panic; signal crates position (no std signal API)languages/rust.mdstd docs; nomiconRustdocumented
LG-RU-005Rust: threads, scoped threads, std::process child cleanup on drop; API inventory rowslanguages/rust.mdstd docsRustdocumented
LG-NO-001Node.js: event-loop completion, process.exit/exitCode/abort, uncaught exceptions, unhandled rejectionslanguages/nodejs.mdnodejs.org/apiNode ≥18 LTS (versioned)documented
LG-NO-002Node.js: signal events, process.on(SIGxxx), default behaviors, shutdown, flushing hazards with process.exitlanguages/nodejs.mdnodejs.org/api processNode ≥18documented
LG-NO-003Node.js: child_process spawn/exec/execFile/fork + sync variants, code vs signal, exit vs closelanguages/nodejs.mdnodejs.org/api child_processNode ≥18documented
LG-NO-004Node.js: pipes, stdio options, stream closure, kill, cancellation (AbortSignal), cleanuplanguages/nodejs.mdnodejs.org/apiNode ≥18documented
LG-NO-005Node.js: event-loop state effects, libuv threadpool position; API inventory rowslanguages/nodejs.mdnodejs.org docsNode ≥18documented
LG-OC-001OCaml: Stdlib exit/at_exit, exceptions, propagation, backtraces, runtime shutdownlanguages/ocaml.mdocaml.org manualOCaml 5.x (versioned)documented
LG-OC-002OCaml: Sys.error_message/Sys.exit semantics, uncaught exception exit status 2languages/ocaml.mdOCaml manualOCaml 5.xdocumented
LG-OC-003OCaml: Unix fork/exec/wait/kill/signal/sigprocmask, Unix.process_status constructorslanguages/ocaml.mdOCaml Unix library manualOCaml 5.xdocumented
LG-OC-004OCaml: Unix.open_process_/close_process_, pipes, deadlock hazards, waitinglanguages/ocaml.mdOCaml Unix manualOCaml 5.xdocumented
LG-OC-005OCaml: signal handling with runtime/threads restrictions (Sys.signal, Signal module), effects runtime deltaslanguages/ocaml.mdOCaml manual; Stdlib.SignalOCaml 5.xdocumented
LG-OC-006OCaml: API inventory with verified signatures against official docs (no invented APIs)languages/ocaml.mdocaml.org API docsOCaml 5.xdocumented

8. Cross-language comparison (section 8.3)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
XC-001Normal return vs explicit termination across 8 languageslanguages/comparison.mdper-language refs8 languagesdocumented
XC-002Cleanup/finalization guarantees across termination pathslanguages/comparison.mdper-language refs8 languagesdocumented
XC-003Exceptions/panics/fatal errors/abort mapping tablelanguages/comparison.mdper-language refs8 languagesdocumented
XC-004Signal registration and handling models comparedlanguages/comparison.mdper-language refs8 languagesdocumented
XC-005Subprocess creation/waiting/cancellation/termination comparedlanguages/comparison.mdper-language refs8 languagesdocumented
XC-006Child-status representations and signal interpretation comparedlanguages/comparison.mdper-language refs8 languagesdocumented
XC-007Pipe and stream behavior comparedlanguages/comparison.mdper-language refs8 languagesdocumented
XC-008Threading and runtime restrictions comparedlanguages/comparison.mdper-language refs8 languagesdocumented
XC-009Portability and version dependencies comparedlanguages/comparison.mdper-language refs8 languagesdocumented

9. Operational troubleshooting (section 9)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
TR-001Status values 126, 127, 128+N, 137, 139, 143: meanings, conventions vs guarantees, confirming evidencetroubleshooting/common-status-values.mdPOSIX; coreutils; shells; runtimesPOSIX + Linux ecosystemdocumented
TR-002SIGTERM vs SIGKILL operational differences and shutdown racestroubleshooting/common-status-values.mdman 7 signal; runtime docsLinuxdocumented
TR-003Segmentation faults and core dumps: capture, analysis, core_patterntroubleshooting/common-status-values.mdman 5 core; systemd-coredumpLinuxdocumented
TR-004OOM kills and rlimit failures: oom_score, dmesg evidence, cgroup memory eventstroubleshooting/common-status-values.mdkernel docs; man pagesLinuxdocumented
TR-005Failed exec, permission errors, missing commands: shell and runtime evidencetroubleshooting/common-status-values.mdPOSIX; shell manuals; man 2 execvePOSIX + Linuxdocumented
TR-006Pipeline, shell-wrapper, and subprocess failure attributiontroubleshooting/common-status-values.mdshell manualsshellsdocumented
TR-007Service-manager restarts and container termination diagnosistroubleshooting/common-status-values.mdsystemd docs; docker/k8s docssystemd + docker + k8sdocumented
TR-008Signal masking, ignored signals, shutdown races: detection and diagnosistroubleshooting/common-status-values.mdman 7 signalLinuxdocumented
TR-009Decision tree from observed status + evidence to plausible causes (no overclaiming)troubleshooting/decision-tree.mdsynthesized; cited per nodeLinux ecosystemdocumented

10. Navigation and integration (section 12)

IDRequirement or APIDocumentation pathAuthoritative referenceVersion/platform scopeStatus
NAV-001Part index page reachable from SUMMARY.mdindex.md——documented
NAV-002SUMMARY.md entries for every chapterSUMMARY.md——documented
NAV-003Cross-links: signals ↔ interfaces ↔ languages ↔ troubleshooting ↔ containers ↔ service managersper-chapter “Related” sections——documented
NAV-004No duplicate chapters with existing book pages; reuse/cross-link insteadper-chapter links to existing pages——documented
NAV-005This ledger consistent with language sub-ledgersthis file——documented

Category rollup

Counts match the rows above (verified at integration, 2026-10).

CategoryTotaldocumentedremainingsource-limited
Standard signals (SIG)404000
Signal interfaces (IF)181800
Exit-status lifecycle (EX)121200
Shells (SH)121200
Service managers (SM)121200
Containers (CT)111100
Languages (LG)464600
Comparison (XC)9900
Troubleshooting (TR)9900
Navigation (NAV)5500
Total17417400

Per-language API inventory rollup

The 46 LG-* requirement rows above are all covered by the eight chapters. Each chapter additionally carries an end-of-chapter API ledger with per-API statuses; their self-reported counts (verified against the actual table rows at integration) are summarized here so the main ledger and the language ledgers stay consistent. source-limited rows name the unreachable source in the chapter itself; OCaml’s verified-absent rows record APIs that do not exist in the documented OCaml version (the challenge forbids inventing Sys/Unix APIs, so absence is documented as absence).

LanguageChapter ledgerInventorieddocumentedsource-limitedNotes
Clanguages/c.md33312fexecve, pthread_exit/pthread_cancel rows: dedicated POSIX pages not fetched; signatures from synopses/cross-links, flagged in-row
C++languages/cpp.md22211std::jthread row summarized from cross-links, flagged
Pythonlanguages/python.md26251devguide interpreter-internals page unreachable; C-API page used instead
Golanguages/go.md45432syscall.Kill, runtime.SetFinalizer: per-function doc rendering not extracted; flagged in-row
Javalanguages/java.md19154all four are documented platform limitations (no public signal API; signal-death exit encoding unspecified by JDK docs — stated as implementation behavior)
Rustlanguages/rust.md37361signal-hook crate: crates.io fetch blocked; existence via docs.rs, flagged
Node.jslanguages/nodejs.md22211libuv-internal reaping mechanics kept at documented-behavior level
OCamllanguages/ocaml.md27211+5 rows verified-absent in OCaml 5.2 (Sys.exit, Sys.break_exception, Sys.error_message, Unix.sigaction, Unix.wait4/waitid/ProcessInfo); source-limited: multicore signal-delivery detail beyond documented safe-point model
Totals—23121313+5 verified-absent (OCaml)

Scope note: these inventories cover the process/signal/termination/subprocess-relevant API surface of each language as defined by the challenge (section 8), not the entire stdlib of any language.

Language-specific ledger addendum (canonical signatures)

Per-language API inventory rows with verified signatures live at the end of each language chapter (sections titled “Coverage ledger”), and are cross-referenced from here. The main ledger row for each language (LG-*-006 etc.) is marked documented only when that chapter’s ledger exists, signatures are verified against the official reference named there, and the remaining/source-limited counts are reported.

LanguageChapterLedger locationSignature source of truth
Clanguages/c.mdend of chapterC11/C23 standard text; man-pages 6.x
C++languages/cpp.mdend of chapterISO C++ standard (via cppreference, stated)
Pythonlanguages/python.mdend of chapterdocs.python.org 3.x library reference
Golanguages/go.mdend of chapterpkg.go.dev stdlib docs
Javalanguages/java.mdend of chapterdocs.oracle.com JDK API docs
Rustlanguages/rust.mdend of chapterdoc.rust-lang.org/std
Node.jslanguages/nodejs.mdend of chapternodejs.org/api
OCamllanguages/ocaml.mdend of chapterocaml.org API manual