summaryrefslogtreecommitdiff
path: root/.agents
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 01:50:05 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commitb29de1d4e78466a15f5d3dc0916410cba1445c5f (patch)
tree27c606018a7084a3636a974064d1205d64f31c86 /.agents
parent5b11fc35b961eb03c8816bf957bbf8e27a22ae3e (diff)
downloadpardes-b29de1d4e78466a15f5d3dc0916410cba1445c5f.tar.gz
pardes-b29de1d4e78466a15f5d3dc0916410cba1445c5f.zip
The docs say the errno that fits, Joincol's order, the pane cap, the paste's second Enter, a follower across Restore, and why wc waits
Dogfood round 9's doc findings: ENOENT for a missing pane, file or dump is right, so the skill says EIO or an errno that fits; Joincol folds into the column on the right, the joined panes below its own; the skill gives the 64-pane cap; Python's second \r is needed only when the paste lacks a trailing newline; a log follower loses nothing within a session, but a Restore hangs it up; and a tag word gets no file argument, as in acme, so bare wc waits on stdin (pardes has no $%). Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to '.agents')
-rw-r--r--.agents/skills/pardes-9p/SKILL.md18
1 files changed, 11 insertions, 7 deletions
diff --git a/.agents/skills/pardes-9p/SKILL.md b/.agents/skills/pardes-9p/SKILL.md
index 01be232d..9ec46084 100644
--- a/.agents/skills/pardes-9p/SKILL.md
+++ b/.agents/skills/pardes-9p/SKILL.md
@@ -66,7 +66,8 @@ $m/log recent events, then EOF: new|del|rename|save <serial> <name>, msg
run <serial> <line>, exit <serial> <N|?>, send <from> <to> <repl-id>,
dump|restore <path>, err <serial|-> <file>: <why>
(exec 3<>$m/log; echo follow >&3; cat <&3 waits for new ones; tail -f does not;
- while read -r line <&3; do ...; done loses nothing)
+ while read -r line <&3; do ...; done loses nothing within a session: a Restore
+ hangs every connection up, so dial again, and restart a 9ns mount)
$m/screen the rendered screen as JSON, frozen per open
$m/listeners this session's dial addresses
$m/focus the serial of the pane with the keyboard (empty while a column/workspace tag has it);
@@ -79,7 +80,8 @@ $m/ctl the settings, one a line as a write takes them; write a setting or
word again DISCARDS that text -- not a retry, unlike lock's `file in use`;
Kill stops a command pane's whole line, `&` jobs included; of a line typed into a
shell only the foreground job, and the shell decides the rest (of `sleep 30; echo done`
- fish runs the echo, bash abandons the line); Joincol needs a column to the right of the keyboard's);
+ fish runs the echo, bash abandons the line); Joincol folds the keyboard's column into the one
+ on its right, its panes going below that column's own, in order, and needs such a column);
a pane's builtins (Del, Save f, Collapse, which folds that pane, and the
column word Delcol, which closes that pane's column) go to $m/pane/<n>/ctl
$m/commands every builtin: `Word`, `Word arg`, then `root` or `pane` (which ctl takes it)
@@ -91,7 +93,8 @@ $m/col/<serial>/ctl Delcol, Joincol, New, Tty on that column; col/<serial>/exec
$m/pane/new open it to make a pane (a scratch named <dir>/+New), read names it; it goes in
the ACTIVE column (the one last typed or clicked in, or Newcol's), filling it if
empty, else taking the bottom half of its last pane (ctl `Placement pardes`: the old rules);
- rmdir $m/pane/<n> closes it; a column's last pane leaves the column EMPTY
+ a session holds 64 panes (16 on the board): past that, every route that opens one
+ fails with `no pane slots: 64 max`; rmdir $m/pane/<n> closes it; a column's last pane leaves the column EMPTY
(focus reads empty, the log says only del), and the session's LAST pane QUITS it
$m/pane/<n>/errors write-only: text appended to the +Errors pane of the pane's directory
$m/os/ the host filesystem
@@ -158,9 +161,10 @@ REPLs bound for a language an exec asks which, logged `ask <serial> repl a b`
`echo 'answer a' > $m/pane/<serial>/ctl`, or `answer -` to send nothing (the log says `answer <serial> a|-`). Multi-line code
written to `pty/data` should be a bracketed paste, `\e[200~<code>\e[201~`,
then, in a separate write once the REPL has echoed the paste (Python 3.13+
-takes a `\r` read with the paste as part of it, even for one line), `\r`,
-and a second `\r` when the code's last line is indented (a `def` or `for`
-body): one Enter leaves such a block open. Sent line by line, a blank line ends a Python block, and Python
+takes a `\r` read with the paste as part of it, even for one line), `\r`.
+End the pasted code with a newline and that one `\r` runs it; without one, a
+code whose last line is indented (a `def` or `for` body) needs a second
+`\r`, as one Enter leaves such a block open. 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 <serial|->
<file>: <why>` record to `$m/log`; through a mount the write itself only says
`Invalid argument`.
@@ -255,7 +259,7 @@ back every setting in the syntax it takes. A ctl write is checked whole
first and refused as `unknown control message "X"` (EINVAL) and the like,
a required argument missing included (`wrong #args ... "Mount"`); then a line
whose builtin reports an error fails the write with that error and the line
-(EIO), after the lines before it took effect. A `Save` on a scratch fails
+(EIO, or an errno that fits: ENOENT for a missing pane, file or dump), after the lines before it took effect. A `Save` on a scratch fails
rather than prompt. The lock binds only clients that take it, and is held by the
open that wrote it, so a shell holds an fd across the edit:
`exec 3>$pane/ctl; echo lock >&3; ...; exec 3>&-`.