Stress/gate v2 harness - #36
Merged
Merged
Conversation
The monthly stress gate has never passed end-to-end; its green history is last-day-of-month skips (2 real runs, both failed). This commit lands the verified harness repairs and the missing guest: - scripts/stress_test.sh: split the 'local duration=$1 deadline=...' set -u crash in wait_soak_window, and stop QEMU's writable 'fat:rw:' ESP from mutating BOOTX64.EFI in the source tree (per-boot throwaway ESP copy + stale NvVars drop) - the corruption produced a false bad-bootloader diagnosis this round. - userspace/stress_runner.c: new NILIX_STRESS_V2 guest at the path the Makefile already expects - NILSTR2 config parser with independent SHA-256, marker/sequencing state machine, and the memory/cpu/smp/ process/combined profiles; block fail-closes until fsync exists. Config/header handshake proven on a booted kernel (digest matches the host's make-config output). - docs/stress-gate-status.md: the honest gate record - failure history, reconstructed V2 contract, kernel gaps K1-K4, open decisions. - docs/quality-gates.md: mark the stress soak gate NOT GREEN and link the status doc. Kernel-side gaps (K1-K4) remain open and are tracked as ST-K1..ST-K4 in plan v15.60; do not treat this gate as passing until a profile produces a validated PASS+HEARTBEAT from a booted run.
The VS Code extension's bundled rust-analyzer refuses to index
nightly-2025-12-08 ('toolchain too old'); listing the component makes the
extension launch the version-matched rustup rust-analyzer instead.
…d emit guest cgroup diagnostics Kernel (debug builds only, R159-17 gating style; no addresses logged): - E1 max_map_count, E2 cgroup_charge (error variant bound and named), E3 phase1_admission, E4 prot_none_commit (annotated-unreachable - the tag exists to falsify the annotation), E5 frame_alloc, E6 map_page, E7 phase2_track_reserve (heap-admission class, distinct from E5), E8 phase3_commit (no-rollback hazard: a hit here also wedges every later fork via the stuck PENDING entry). Guest (userspace/stress_runner.c): - emit_mmap_diag() prints a NILIX_STK3_DIAG line (run-cgroup + root stats via syscall 516, tolerated-failure, rc values reported) just before the FAIL marker; the prefix is deliberately NOT NILIX_STRESS_V2_* because stress_protocol.py's line filter and fullmatch FAIL regex (detail must be a bare integer) would reject free-form detail text. - report_mmap/shared_mmap/memory_mmap/combined_mmap fail sites now route through fail_with_stats(); errno is captured at argument time so the stats syscalls cannot clobber it, and the helper never calls fail() itself (would consume the failure_emitted latch). Design: docs/review/design/st-k3-mmap-enomem-design.md (plan v15.60, ST-K3 Phase D). Diagnosis run + family selection follow separately.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and outcome
Related issue or audit finding
Related: #
Design and scope
Kernel safety and invariants
unsafe/ MMIO / page-table / usercopy justification:Validation evidence
Additional focused checks:
Compatibility, performance, and rollout
Checklist
unsafeblocks have localSAFETYreasoning and a minimized unsafe scope.