From 1db5ba2b267f030e2de54a2cb4de9fb155c4139d Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 18:23:04 -0300 Subject: Only a write logs an err: a refused open or truncation, create or remove, or a write to pane/new, is its error alone, and every refusal is said in words The one-failure rule is a write's. A refused remove, pane/new's open refused for want of a slot, and an OTRUNC open's refused truncation (data's after a failed addr) also logged an err, and a reply carrying only an errno reached the client as the C library's text (Operation not permitted). tree.handle now gives such a reply Plan 9's words, chosen so 9ns maps each back to its errno (EPERM's to EACCES, as Plan 9's does), and serveFs logs errs for writes only, not a write to pane/new, which is only read. docs/fs.md and the 9P skill say so, and that a look miss quotes what was written. Co-Authored-By: Claude Opus 5.5 --- .agents/skills/pardes-9p/SKILL.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to '.agents') diff --git a/.agents/skills/pardes-9p/SKILL.md b/.agents/skills/pardes-9p/SKILL.md index 56123b89..18700589 100644 --- a/.agents/skills/pardes-9p/SKILL.md +++ b/.agents/skills/pardes-9p/SKILL.md @@ -210,7 +210,11 @@ leaves a multi-line input at `...`). A middle click, or an event write-back, sends what it needs by itself. Sent line by line, a blank line ends a Python block, and Python 3.14's REPL auto-indents each line it is typed. Every refused 9P write adds an `err : ` record to `$m/log`; through a mount the write itself only says -`Invalid argument`. +`Invalid argument`. Only writes log one: a refused open or truncation +(an OTRUNC open, as `data`'s after a failed `addr`), create or remove is +its error alone, as are a write to `pane/new` (`permission denied`) and a +write on a fid opened read-only (`bad use of fid`). Errors are words, never +a C errno string. A look miss quotes what was written: `no match for "zzq:#3"`. ## Edit through addresses, dot and the flag files -- cgit v1.3