Problem
When catting files across multiple mounts and one is missing, e.g.:
```
cat /disk/a /ram/missing
```
the not-found branch emits the virtual path correctly but omits the GNU strerror suffix:
```
cat: /ram/missing
```
Expected (GNU parity, matching the single-mount case which is correct):
```
cat: /ram/missing: No such file or directory
```
Scope
The virtual-path invariant itself holds (the path shown is correct). What is missing is appending the strerror via the shared `fs_strerror` / `gnuStrerror` formatter on the multi-path fan-out branch, so cross-mount errors match the single-path chokepoint exactly. Fix in both Python and TypeScript; add an integ case with two mounts where one path is missing.
Problem
When catting files across multiple mounts and one is missing, e.g.:
```
cat /disk/a /ram/missing
```
the not-found branch emits the virtual path correctly but omits the GNU strerror suffix:
```
cat: /ram/missing
```
Expected (GNU parity, matching the single-mount case which is correct):
```
cat: /ram/missing: No such file or directory
```
Scope
The virtual-path invariant itself holds (the path shown is correct). What is missing is appending the strerror via the shared `fs_strerror` / `gnuStrerror` formatter on the multi-path fan-out branch, so cross-mount errors match the single-path chokepoint exactly. Fix in both Python and TypeScript; add an integ case with two mounts where one path is missing.