packages/conversation is a library with no server: safe-fs, the Pi session parser, CHAT-01 pages, pinned snapshots, cursors and follow. The control board adds GET /api/conversations and /api/conversation behind the Host and Origin guard. Both are read-only, their queries are validated, and each refusal code maps to a status. Dewey authored it (packet 0cf177b1, revision 2). Filbert reviewed the code: R1 revise (branch ids moving on append, the assumed-link bridge merging branches, one unreadable seat directory turning the catalogue into a 500), then R2 approve (3b14d66c). Darkwing reviewed the routes: R1 approve (07b10ad1), R2 approve (b9d92003). The package lands with the routes, because serve.mjs imports the reader at load. On an index export: the eight suites 24/90/43/17/14/15/63/18, conversation and control-board 153/153, webui 9/9. Co-Authored-By: Claude Opus 5.5 <[email protected]>
40 lines
5.8 KiB
Plaintext
40 lines
5.8 KiB
Plaintext
CAUGHT no O_NOFOLLOW + no lstat symlink -> F7: a symlinked file and a symlinked directory component are refused, ; F8: a file swapped for a symlink after the catalogue is refused
|
|
CAUGHT dir components unchecked -> F7: a symlinked file and a symlinked directory component are refused,
|
|
CAUGHT listing follows symlinks -> F7: a symlinked file and a symlinked directory component are refused, ; F8: a file swapped for a symlink after the catalogue is refused
|
|
CAUGHT no prefix digest check -> F4: a same-inode rewrite of the prefix refuses old cursors with reconc
|
|
CAUGHT no dev/ino check -> F3: a replaced file
|
|
MISSED no shorter check ->
|
|
CAUGHT cwd always in project -> F10: a header cwd naming another project is refused
|
|
CAUGHT relative cwd accepted -> F10: a header cwd naming another project is refused
|
|
CAUGHT no char cap -> F14: long strings split into fragments and parts, reassemble exactly, ; every page and cursor is a valid CHAT-01 record
|
|
CAUGHT no page byte cap -> F14: long strings split into fragments and parts, reassemble exactly,
|
|
CAUGHT no block cap -> F14: long strings split into fragments and parts, reassemble exactly, ; every page and cursor is a valid CHAT-01 record
|
|
CAUGHT no foreign check -> F6: unknown, foreign and expired cursors refuse and leave the cursor u
|
|
CAUGHT no branch binding -> F6: unknown, foreign and expired cursors refuse and leave the cursor u
|
|
CAUGHT no expiry -> F6: unknown, foreign and expired cursors refuse and leave the cursor u
|
|
CAUGHT no parentSession notice -> F11: parentSession renders with a marker and the parent is never opene
|
|
CAUGHT branch param ignored -> F12: a second root; F12: two leaves: the default leaf is shown and the other branch reads ; F1: a missing parent stops the history with a notice that names the un
|
|
CAUGHT unknown branch served -> F12: two leaves: the default leaf is shown and the other branch reads
|
|
CAUGHT registration harness ignored -> F15: a Claude seat is an unsupported-harness placeholder whose directo
|
|
CAUGHT no placeholder roots -> F15: a Claude seat is an unsupported-harness placeholder whose directo
|
|
CAUGHT malformed notices dropped -> F1: a file whose entries are all unreadable shows a notice per line; F1: a follow stays on its branch when the next entry's parent is unrea; F1: a malformed line is an unavailable part at its position, and readi; F1: a missing parent stops the history with a notice that names the un
|
|
CAUGHT bridge restored -> F1: a follow stays on its branch when the next entry's parent is unrea; F1: a missing parent stops the history with a notice that names the un; F1: an unreadable fork is never merged into another branch's history
|
|
CAUGHT missing-parent lines not named -> F1: a follow stays on its branch when the next entry's parent is unrea; F1: a missing parent stops the history with a notice that names the un; F1: an unreadable fork is never merged into another branch's history
|
|
CAUGHT trailing malformed only on default -> F1: a follow stays on its branch when the next entry's parent is unrea; F1: a missing parent stops the history with a notice that names the un
|
|
CAUGHT branch named by leaf -> F12: a follow refuses when an appended duplicate id changes the branch; F12: a second root; F12: two leaves: the default leaf is shown and the other branch reads ; F1: a follow stays on its branch when the next entry's parent is unrea; F1: a missing parent stops the history with a notice that names
|
|
CAUGHT later child continues branch -> F12: two leaves: the default leaf is shown and the other branch reads
|
|
CAUGHT first root not main -> F12: a follow refuses when an appended duplicate id changes the branch; F12: a second root; F12: two leaves: the default leaf is shown and the other branch reads ; F1: a follow stays on its branch when the next entry's parent is unrea; F1: a missing parent stops the history with a notice that names
|
|
CAUGHT no empty main -> F1: a file whose entries are all unreadable shows a notice per line; unknown conversations, empty files and non-Pi files refuse
|
|
CAUGHT redacted thinking shown -> native entries map to blocks: tools, thinking, bash, notices, ids that
|
|
CAUGHT EACCES on a component rethrown -> a seat directory without search permission refuses that root, not the
|
|
CAUGHT incomplete never set -> F2: a truncated trailing line marks the view incomplete, not an error; F5: growth between pages keeps the epoch and the page stops at the pin
|
|
CAUGHT next re-reads fresh -> F12: a second root; F12: two leaves: the default leaf is shown and the other branch reads ; F1: a follow stays on its branch when the next entry's parent is unrea; F2: a truncated trailing line marks the view incomplete, not an error; F5: growth between pages keeps the epoch and the page stops at th
|
|
CAUGHT follow skips history check -> F12: a follow refuses when an appended duplicate id changes the branch
|
|
CAUGHT follow skips the id digest -> F12: a follow refuses when an appended duplicate id changes the branch
|
|
CAUGHT follow reads the default branch -> F12: two leaves: the default leaf is shown and the other branch reads ; F1: a follow stays on its branch when the next entry's parent is unrea
|
|
CAUGHT catalogue writes a file -> F10: a header cwd naming another project is refused; F15: a Claude seat is an unsupported-harness placeholder whose directo; F1: a malformed line is an unavailable part at its position, and readi; F7: a symlinked file and a symlinked directory component are refused, ; F8: a file swapped for a symlin
|
|
CAUGHT thinking visibility wrong -> native entries map to blocks: tools, thinking, bash, notices, ids that
|
|
CAUGHT raw tool ids -> every page and cursor is a valid CHAT-01 record; native entries map to blocks: tools, thinking, bash, notices, ids that
|
|
CAUGHT id namespaces dropped -> F1: a malformed line is an unavailable part at its position, and readi
|
|
CAUGHT surrogate split -> fragments never cut a surrogate pair and keep an empty string
|