Repository navigation
tests: attribute scratch-file creations to the test's own process tree - #584
Merged
Merged
Conversation
…ith a doc-lint rule that holds it Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Attribute exclusive opens and fork-descendant scratch files to their creating process, keep unrelated co-tenants out of the witness, and report the offending path with its PID or an explicit unattributable reason. Add three public Linux CTest cases for exclusive open, inherited evidence, and diagnostics. Carry the three rows through verifier floors and mock accounting. Preserve documentation line counts and refresh the floor-table citations. Documentation replacements from 3ea5a0d name the old wording: "Their default runs now enter strict exclusion accounting" "Verifier 8 + preflight 8 + command-after 8 + report 4 add 28 public rows; plain Debug-type runs enforce the increased registration floors." "Release 938 with the overlay or 631 without it" "The floor itself remains fixed at 631/334 absent or 938/365 present" "The native PR registration floor is 1000" "Both numbers are constants of the profile" "The full-run release and kernel floors are the table's own numbers above" "EXCLUDED_REGISTERED_MIN holds 904 for debug, 895 for sanitizers" "The run floors in the table above" The release and kernel table rows from 3ea5a0d use the new floors. The population wording and table header from b97c409 are replaced: "The registered column is why the absent floor is not the absent registration, and it is to be re-measured after the registration fix lands." "registered (present / absent)" The four citation edits retain the passages named by: "The floors' numbers live in one place" "Each profile counts the rows that" "the minimum number of CTest rows" "The profile carries a row floor" Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Corrects four comments that no longer match the code they describe, and one stale line number in a script comment: - scripts/ci_verify.py: the selected-sink memory test is registered at its current line of tests/CMakeLists.txt. - tests/test_scratch_create_pinned_text.cpp: the header names the files that produce the pinned create diagnostics instead of a release. - src/source/pine_adapter.cpp: the placement table scans the retained placements and consults the historical minima for erased rows; it has no per-id index. - include/pineforge/native_host.hpp: the live-order read comment no longer claims the reads allocate nothing, since a spilled row is read into a buffer. No code changes. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… path it pins The header named two producing files; the test also pins the id-pair scratch file and the successor-roots create. It now lists all four scratch paths by what they are, and drops a stale note about an unobserved prediction. Comment text only. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… capital export edit The export added to the report writer moved the argument parser and the selected-window helpers of docker/run_json.py by 16 lines (17 for the parser's flags), so eleven citations in the public contract page pointed at neighbouring lines. They cite the same functions and flags again. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
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.
Replaces #560 as one fresh commit (same change).
tests: attribute scratch-file creations to the test's own process tree and print the creator pid
test_default_scratch_tmpfs_tmpdir failed on a shared CI VM when another runner's
job created pineforge-* names in a shared temp root. At this base the default
test already uses a private TMPDIR and checks its own mkstemp descriptors, but
the witness (a) dropped creations by the test's fork descendants, (b) ignored
exclusive opens outside the private TMPDIR and (c) printed paths without any
creator identity, so a false positive could not be diagnosed from the log.
creation path and creator pid are recorded by the interposed mkstemp and
O_CREAT|O_EXCL open, after checking the returned descriptor's own
/proc/self/fd name. No named file or endpoint a stranger could write to.
only inotify saw it (inotify supplies no creator pid). Overflow, truncation
and incomplete publication fail instead of reading as "nothing created".
watches exist (released over a pipe once armed), creating names in /tmp,
/dev/shm and /var/tmp.
descendant's creations are detected and attributed, diagnostics contain
path+pid and the unattributable reason.
accounting for the three added public rows.
No engine source or public header changes.
🤖 Generated with Claude Code