summaryrefslogtreecommitdiff
path: root/docs/divergences.md
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 19:25:00 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:17 -0300
commit57b30ba3e38153a4446626449b0fed5120da954c (patch)
tree7b9381327a05791181a855bd8d4ba3cfb4df5301 /docs/divergences.md
parent0fd908eea63d04886b269438aa7529d3dd422256 (diff)
downloadpardes-57b30ba3e38153a4446626449b0fed5120da954c.tar.gz
pardes-57b30ba3e38153a4446626449b0fed5120da954c.zip
The docs and the 9P skill say each fact once, in the file that owns it, and say only what a live session does
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'docs/divergences.md')
-rw-r--r--docs/divergences.md106
1 files changed, 19 insertions, 87 deletions
diff --git a/docs/divergences.md b/docs/divergences.md
index 6679d962..6560368c 100644
--- a/docs/divergences.md
+++ b/docs/divergences.md
@@ -1,94 +1,26 @@
# Divergences
-What is not on `main`, and what on `main` is known to be wrong. Written so
-that moving a bookmark does not quietly orphan work or hide a failure.
+What is not on `main`, and what on `main` is known to be wrong, so that
+moving a bookmark does not quietly orphan work or hide a failure.
-## Two lines, forked at `01104e7c`
+## Bookmarks off `main`
-`main` is not the only living line, and the other one is not behind it —
-they are siblings:
+| bookmark | |
+|---|---|
+| `reload-perf-wip` | unfinished: Reload presentation transport regression |
+| `reload` | reload core code with shell-owned allocators |
+| `reload-start` | names the Core/Shell seam, deferred Reload request |
+| `tty-colors-mouse`, `vibes-ghostty`, `mouse` | older prototypes (divergent), also on the `vps` remote |
-```
-◆ rruwvuzm 09-17 editor work: syntax, panes, modal, gui, fs, output
-│ ◆ xqxpolmw 2b547e15 main 09-20 "Serve Unix and TCP 9P through cloud9.serve"
-├─╯
-◆ lsnxpxtq 01104e7c 09-16 "Add macOS backdrop blur and preserve PDF ink opacity"
-```
+`ninep`, `fx`, `macos-fix`, `full-prototype`, `term`, and the `before-*` and
+`merged-*` bookmarks mark points already in `main`'s history. Only
+`main` is pushed to the FreeBSD mirror, which serves a public site.
-* **`main`** carries the 9P work: the `cloud9.serve` runner, and now the
- posted-9P registry (`docs/cloud9.md`).
-* **`rruwvuzm`** carries editor work — roughly 1300 lines across
- `src/syntax.zig`, `src/panes.zig`, `src/modal.zig`, `src/gui/gui.zig`,
- `src/fs.zig`, `src/pardes.zig`, `test/output.zig`, `docs/fs.md`. Reach it
- with `jj edit rruwvuzm`.
+## Known wrong on `main`
-The fork matters for one concrete reason: **the cloud9 pin lives on `main`
-only**. `rruwvuzm` still pins `ae310a20` (2026-09-14), `main` now pins
-`9c4d668c`. Rebasing or merging the editor line will want the newer pin, or
-`zig build` there fetches a cloud9 that predates `fs.Server`'s current shape.
-
-## Other bookmarks
-
-| bookmark | | |
-|---|---|---|
-| `reload-perf-wip` | 09-11 | unfinished: Reload presentation transport regression |
-| `reload` | 09-10 | reload core code with shell-owned allocators |
-| `reload-start` | 09-10 | names the Core/Shell seam, deferred Reload request |
-| `ninep` | 08-27 | a 9P design note and a design registry to argue it in |
-| `macos-fix` | 07-23 | |
-| `full-prototype`, `term`, `tty-colors-mouse`, `vibes-ghostty`, `mouse` | 06-xx | older prototypes, also on the `vps` remote |
-
-None of these are published to the FreeBSD mirror: only `main` is pushed
-there, deliberately, because that box serves a public site.
-
-## Known-failing on `main`, not caused by the 9P work
-
-* **`zig build snap` fails `nested-optout`, and the cause is a real bug.**
- At the SECOND level of nesting -- a pardes whose shell runs a pardes whose
- shell runs a command -- two U+E016 codepoints are prepended to whatever is
- typed. U+E016 is 57366, which is vaxis's private-use spelling of **F3**
- (`Key.zig`, "kitty encodes these keys directly in the private use area"), so
- something in the chain is decoding a capability-query REPLY as a key and
- forwarding it to the shell as text. bash then sees
- `$'\356\200\226\356\200\226echo'` and answers `command not found`; with a
- path it answers `No such file or directory` for a path that exists and runs
- perfectly from the same shell a moment later.
-
- Minimal repro, in a snapshot script:
-
- ```
- dirmk innerdir
- file innerdir/deeper.txt deepest-marker\n
- start 31 100
- wait 8000 $
- stable 700 20000
- text (cd innerdir && $(readlink /proc/$PPID/exe) --nested)
- key enter
- wait 20000 cwd/innerdir
- stable 700 20000
- text E=$(readlink /proc/$PPID/exe); "$E" deeper.txt
- key enter
- settle 5000
- stable 700 10000
- snap probe
- ```
-
- `bash: E=/home/.../pardes: No such file or directory` -- bash did not even
- parse the assignment, because the line does not start where it looks like it
- starts. `--nested` is exactly the flag meant to opt a child out of this, so
- the fix belongs next to the key-forwarding path in `panes.Terminal.forwardKey`
- and whatever answers terminal capability queries on a nested stdin.
-
-* **pardes does not start headless.** `pardes --9p=<name>` with no terminal
- exits 1 from the argument-forwarding path; the installed build fails
- earlier still, with `error.NoDevice` opening a terminal device. So the
- registry posting above is covered by unit tests
- (`zig build 9p-io-test`) rather than by running the editor.
-
-## Upstream
-
-`build.zig.zon` pins cloud9 `9c4d668c`. That commit exists because pinning
-cloud9 `534c084f` here failed: cloud9's `build.zig` `@import`s each program's
-build fragment, and `9harness` was missing from its `.paths`, so the
-published package built from a checkout and not from a tarball. The pardes
-build was the first consumer to notice.
+- `Dump` of a session with more than 6 columns fails `Dump: bad dump
+ columns` (`src/dump.zig` `max_cols` is 6; a session holds 16).
+- `pardes FILE` in a pane forwards only a FILE that exists; a new file name
+ starts a separate editor instead of opening a pane in the session.
+- `Dump` fails `no such directory` when the default `DumpDir`'s parent
+ (`$XDG_DATA_HOME`, or `~/.local/share`) does not exist.