@@ -516,6 +516,7 @@ Malleability uses one workspace hostfile. Entries in this file are the source of
| `+node uri ...` | daemon being added; new daemons write this automatically when started with `GKFS_DAEMON_EXPAND=ON` |
| `-node uri ...` | daemon being removed |
| `# GKFS_RS_INTERVAL host=<id> start=<x> end=<y>` | Random Slicing interval-table comment; ignored by normal hostfile parsing but loaded by Random Slicing clients/daemons |
| `# GKFS_RS_LAYOUT version=1 hash=<hash>` | Versioned canonical hash for the adjacent Random Slicing interval table; a present record must match before clients/daemons install the table |
Important: `+` and `-` daemons are still reachable during `mutate start`. The marker describes the **future** topology after finalize, not process liveness.
These are normal GekkoFS environment variables, not `scripts/run/gkfs` options. The wrapper does not interpret them; it only inherits and forwards its process environment when starting daemons or running `gkfs_malleability`.
For `random_slicing`, `mutate start` writes the chosen interval table into the workspace hostfile as `# GKFS_RS_INTERVAL ...` comments. `mutate finalize` preserves those comments while removing `-` entries and promoting `+` entries. Later clients and restarted daemons load the comments and reconstruct the same Random Slicing layout instead of rebuilding a fresh equal layout.
For `random_slicing`, `mutate start` writes the chosen interval table into the workspace hostfile as `# GKFS_RS_INTERVAL ...` comments and a matching `# GKFS_RS_LAYOUT version=1 hash=...` record. `mutate finalize` preserves this layout metadata while removing `-` entries and promoting `+` entries. Later clients and restarted daemons validate the hash, then reconstruct the same Random Slicing layout instead of rebuilding a fresh equal layout.
CutShift is applied for expand-only Random Slicing operations (`+` entries present, no `-` entries). Other Random Slicing mutate cases currently fall back to the final equal RS layout.
With `GKFS_RANDOM_SLICING_CUTSHIFT=ON`, CutShift uses the persisted old layout to minimize movement for expand, shrink, and mixed marker transitions. If a legacy hostfile lacks a valid old interval table, the mutation falls back to a rebuilt equal old layout before producing and persisting the final table.
Using `GKFS_DISTRIBUTION_STRATEGY=random_slicing` together with `GKFS_RANDOM_SLICING_CUTSHIFT=ON` is recommended for
expand-heavy workflows because it avoids rebuilding an entirely new balanced placement from scratch. Instead, CutShift