docs: network-storage — DSM validated recipe + Q1c CLOSED (FAIL, restart reassert gap)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
This commit is contained in:
2026-07-11 15:47:23 +02:00
parent 9b95f88e8c
commit c358a361d0
@@ -117,10 +117,33 @@ worst case is systemd's 90 s (black-holed server) — verify traffic therefore r
job + status poll, never a single long HTTP call (the agentapi client keeps its global 15 s
timeout).
## Synology (DSM) — validated recipe (SPIKE-nas-dsm-2026-07-11, real DSM 7.2)
The consumer recipes were validated end-to-end against a real DSM 7.2 (virtual-dsm) through the live
add pipeline. Exact steps for the customer/operator:
- **Enable NFS first (off by default, and defaults to NFSv3 which our mount rejects):** Control
Panel → File Services → NFS → "Enable NFS service" → **Maximum NFS protocol: NFSv4.1** → Apply.
- **NFS rule:** Control Panel → Shared Folder → <share> → Edit → NFS Permissions → Create → the
Felhom host IP, Read/Write, **Squash: "Map all users to admin"** → Save. The export path shown on
that tab (`/volume1/<share>`) is what goes in the add form.
- **SMB:** Control Panel → User & Group → create a user with Read/Write on the share — nothing else
(no force-user). **Hardlinks work on DSM's SMB stack** (the Q5 caveat is closed for Synology).
- Route A on DSM behaves exactly as on Debian: guest sees `nobody`, chown clean-EPERM, chmod
persists. The SMB error taxonomy (`smb_auth`/`smb_share`) classifies identically to Debian.
**QNAP remains a stated caveat** — no emulator exists; not validated.
## Open items
- Q1c: whether an automount trigger installed BEFORE guest boot propagates at guest start —
needs a restart-window test (the add flow installs while the guest runs, which is proven).
- Synology/QNAP appliance fidelity pass (virtual-dsm) before GA.
- The demo's pre-existing `nas-media` unit (if any) predates `retry=0` and is not rewritten —
re-adding the share re-creates it with the current option string.
- **Q1c CLOSED — FAIL (SPIKE-nas-dsm-2026-07-11 §Q1c, supervised):** a configured NAS automount
trigger does **not** survive a guest reboot. `mp8` is `shared`→`shared,slave`; slave propagation
only carries mounts established AFTER the guest's post-reboot bind, so the pre-existing host autofs
trigger is absent from the guest's fresh namespace, and an in-guest access sees an **empty
directory** (not the share) without triggering the host mount. The controller's per-share health
still reads `idle`/`ok` (it inspects the HOST automount), masking the gap. **Fix = agent-side
`ReassertNetworkMounts` on guest reboot** (mirror `ReassertGuestBinds`), spec'd at
`documentation/backlog/FOLLOWUP-nas-automount-guest-reboot-reassert.md`; interim workaround = re-add
the share. Until fixed, a customer guest reboot requires re-touching NAS shares.
- QNAP appliance fidelity pass (no emulator) before GA — Synology is now validated.
- The demo's `nas-media` share predates `retry=0`; re-adding re-creates the unit with the current
option string.