systems-trace — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited systems-trace (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Every new concept passes through three layers before the student writes a single line of code. This is the "Live Inside the Machine" teaching method. See .claude/rules/systems-thinking.md for the full philosophy.
What the Python interpreter does, step by step. Not syntax -- execution. Trace state changes, show what's invisible.
What to cover:
Example -- `with open('data.json') as f:`
Python callsopen()which returns a file object. Thewithstatement callsf.__enter__(), which returnsfitself. Your block runs. When the block exits (normally or via exception), Python callsf.__exit__(), which callsf.close(). The file object's finalizer is a safety net, but__exit__is the contract.
What the operating system does. Syscalls, memory allocation, file descriptors, scheduling. The bridge between Python and physical reality.
What to cover:
open, read, write, mmap, socket, connect, epoll_wait)Example -- `with open('data.json') as f:`
Theopen()builtin triggers theopenat()syscall. The kernel allocates a file descriptor (integer index into the process's fd table), checks permissions against the inode, and returns the fd. The Python file object wraps this fd.f.read()triggersread()syscall -- kernel copies bytes from the page cache (or faults them in from disk) into a userspace buffer.f.close()triggersclose()syscall -- kernel releases the fd slot. If you forget to close: the fd stays open until process exit or GC finalizer runs. In a long-running server, leaked fds hitulimit -nand you getOSError: Too many open files.
Real incidents. Real failure modes. What happens when this code runs 10,000 times, with 10GB inputs, on 32 cores, behind a load balancer.
What to cover:
Example -- `with open('data.json') as f:`
A FastAPI endpoint that opens a file per request: at 1000 req/s, you have 1000 concurrent fds. Linux defaultulimit -nis 1024. Request 1025 crashes withOSError. Fix: read once at startup, cache in memory. Or useaiofilesfor async I/O. Google SRE documented a Shakespeare search outage where fd leaks under a new traffic pattern exhausted the limit -- 66-minute outage, ~1.21B queries affected.
For every new concept, follow this order:
async def / awaitawait suspends, yields control to event loop. Event loop is a while True polling epoll_wait. Coroutine resumes when the awaited future resolves.epoll_wait() syscall blocks until any registered fd is ready. The event loop is a userspace scheduler on top of kernel I/O multiplexing. Stack frames are heap-allocated (coroutine frame), not C stack.run_in_executor() (thread pool) or ProcessPoolExecutor. Real failure: ML inference in an async endpoint without executor -- all other requests starve.list.append(x) in a loopappend is amortized O(1).malloc) when it exceeds pymalloc's range. Over-allocation means realloc() syscall, which may copy the entire array to a new location. For a 100M element list, that's a ~800MB memcpy during resize.list.append in a loop: peak memory is 2x the final list size (during realloc copy). RSS may not decrease after the list is freed because pymalloc arenas are not returned to the OS if any block is still allocated (arena pinning). Fix: pre-allocate with [None] * n, or use generators, or use numpy arrays.import torchtorch/__init__.py, which triggers loading of C++ extensions (torch._C), which initializes the ATen tensor library, autograd engine, and (if available) CUDA runtime.dlopen() loads .so shared libraries. CUDA initialization calls cuInit() which maps GPU device memory into the process's virtual address space. PyTorch's CUDA caching allocator pre-allocates a large segment (~20% of GPU memory) and manages it like pymalloc: split into blocks, cache freed blocks, avoid cudaMalloc per tensor.multiprocessing.fork): if import torch runs before fork(), children inherit the CUDA context. Any CUDA op in a child crashes: RuntimeError: Cannot re-initialize CUDA in forked subprocess. Fix: use spawn start method, or import torch after fork. This affects every ML serving framework..claude/rules/systems-thinking.md for the full reference table of per-topic systems focus.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.