summaryrefslogtreecommitdiff
path: root/test/monkey9p.py
Commit message (Collapse)AuthorAge
* The 9P monkey allows a look's misses to each Twrite that succeeded, not to ↵Gabriel Schneider3 days
| | | | | | | | none when one failed A look line written a byte a Twrite is a look a byte, each its own write logging its own miss; when its last byte was a control character that one write failed, and the oracle dropped every miss allowance on the path, so seed 51 failed with 21 errs for 1 refused write. Allowances are now counted over the Twrites that succeeded (and an hwrite's only once it has). Co-Authored-By: Claude Opus 5.5 <[email protected]>
* The 9P monkey's one-failure rule is a write's: a refused open, create or ↵Gabriel Schneider3 days
| | | | | | | | remove, or a write to pane/new, must log no err The coordinator's reading of fs.md, now documented (slnyzzps): only a write or truncation logs its reason; a refused open (pane/new's and an OTRUNC one included), create or remove is its Rerror alone, and so is a write to pane/new. The oracle allowed an err or none for those, and required one for a refused pane/new open. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* The 9P monkey counts the lines a write runs as the tree does: a short ↵Gabriel Schneider3 days
| | | | | | | | write's unended tail is a line of its own Since round 24 (uwzuqzxp), a write to a lines file shorter than a Twrite holds is whole, as acme takes each write, so a look line written a byte a Twrite is as many looks as bytes, each missing with its own err. one_failure_rule still split the data on newlines whole, allowed one err, and failed the fixed smoke seed (20260929 step 607, size 20 6 written in bytes to look: 7 errs). served_lines models the tree's write (tree.zig) and has a self-check run at start. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* A 9P monkey drives random requests at a throwaway session and checks the ↵Gabriel Schneider3 days
documented rules test/monkey9p.py starts pardes --detach with its own HOME, XDG dirs and runtime dir, speaks raw 9P (test/ninep.py) with a timeout on every reply and Tflush for held reads, and after each seeded operation checks that pardes is alive, the one-failure rule over a marker-delimited log window (with and without a follower), /index against /pane, and chunked against whole reads. Every run writes a replayable ops log; a failure is saved with its seed and step, shrunk by delta debugging over replays, and the run goes on in a fresh session. Teardown makes the fuzzer a subreaper and kills every process carrying the session's token. zig build monkey-9p -- --seed N --steps M | --replay F | --shrink F; a 150-step fixed-seed smoke run is part of fs-test. Co-Authored-By: Claude Opus 5.5 <[email protected]>