diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-06 22:20:46 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-06 22:20:46 +0200 |
| commit | d6e1cc19a09df35988f6a90c226c94f2fdf6b209 (patch) | |
| tree | 422c8e5b9f380ecc803545a0f0e9a1b1bcc9648c /packages/meshbay-node/src/meshbay_node/media_cache.py | |
| parent | f3fb449f3a943096a2569dc383f2819a612bccd5 (diff) | |
| download | meshbay-d6e1cc19a09df35988f6a90c226c94f2fdf6b209.tar.gz | |
fix(node): `root list` printed "?" for every path
`RootSet.describe()` feeds two audiences that want opposite things. The index
payload goes to every member and has always deliberately carried no paths — a
member is told what exists and whether it is readable, not that the library
sits under someone's home directory. The loopback API answers the operator
themselves, over a channel that already requires their machine and the run
token, and the path is exactly what they asked for.
The `root list` CLI I added in Phase 1 read `path` from the member form, so it
printed a placeholder for every directory. Nothing caught it: the CLI reads a
dict, the API returns a dict, and neither end states which keys it owes.
`describe(with_paths=True)` is the operator's view and `list_groups` is the
only caller. The shared-directories table has the same hole over MNP — the
roots there come from the index payload — so its Path column now appears only
when a path is actually present, rather than rendering a column of blanks.
The test asserts both halves, because they pull opposite ways: one that only
checked the operator sees paths would be satisfied by leaking them to every
member. It reads the indexer's source for the member side, and compares the
CLI's key reads against what the payload offers for the other — checked to
fail in each direction independently.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011pvMdvLBG92jyhvD5pD6us
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/media_cache.py')
0 files changed, 0 insertions, 0 deletions