{"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"addDir round-trip"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > addDir() > returns an inode that `lookup()` resolves from the parent, holding a `dir` node"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"addFile round-trip with string content"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > addFile() > returns an inode that `lookup()` resolves, holding the string's bytes and JSON type"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"addFile with Uint8Array content"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > addFile() > stores `Uint8Array` content as given"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"getPath for deeply nested dir"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > getPath() > returns the full path of a deeply nested directory"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"rename within same parent"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > rename() > leaves `lookup()` returning the inode under the new name and `undefined` under the old, within one parent"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"rename carries CFC directory entry annotation to the new name"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > rename() > carries the CFC directory entry annotation to the new name"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"CFC directory entry ordering is sorted once when read"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > getCfcAnnotation() > returns CFC directory entries sorted by name digest, whatever order they were added in"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"CFC entry updates rebuild a missing lookup index"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > setCfcEntryAnnotation() > rebuilds a missing lookup index"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"removing an unannotated child leaves CFC entries unchanged"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > removeChild() > leaves CFC entries unchanged when the removed child is unannotated"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"detachChild rejects a missing parent or child"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > detachChild() > returns `undefined` for a missing parent or child"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"rename across parents updates paths transitively"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > rename() > updates paths transitively when moving across parents"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"rename onto existing name clears target, no orphan inodes"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > rename() > clears the target when renaming onto an existing name, leaving no orphan inode"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"removeChild clears dir and nested file recursively"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > removeChild() > clears a directory and its nested file recursively"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"detachChild retains an unlinked subtree until it is cleared"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > detachChild() > retains the unlinked subtree until it is cleared"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"clear removes subtree but keeps sibling"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > clear() > removes the subtree and keeps its sibling"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"getNameForIno returns the registered child name"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > getNameForIno() > returns the registered child name, following a rename and a removal"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant keeps the inode of a path that survives unchanged"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > keeps the inode of a path that survives unchanged"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant preserves the inode but reports a changed value"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > preserves the inode of a changed file and reports it as changed"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant allocates a new inode for an added path"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > moves an added path across with its fresh inode"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant frees the inode of a removed path"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > frees the inode of a removed path"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant allocates a new inode when a path changes kind"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > replaces the inode when a path changes kind"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant preserves inodes through unchanged nested directories"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > preserves inodes through unchanged nested directories"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant preserves a directory inode across an object/array flip"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > preserves a directory inode across an `object`/`array` flip"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant adopts a changed symlink target"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > adopts a changed symlink target"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant adopts a changed callable script"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > adopts a changed callable script"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant throws when the roots differ in kind"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > throws when the roots differ in kind"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant removes a vanished child's CFC directory entry"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > removes a vanished child's CFC directory entry"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"a node records the clock time it was created at"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > addFile() > records the clock time at the call as the node's `mtime`"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"updateFile advances mtime only when the content changes"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > updateFile() > advances `mtime` only when the content changes"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant advances mtime for a changed file but not an unchanged one"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > advances the `mtime` of a changed file and not of an unchanged one"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant advances a directory's mtime when its entries change"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > advances a directory's `mtime` when its entries change"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplant leaves a directory's mtime alone when only a child's content changes"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > leaves a directory's `mtime` alone when only a child's content changes"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"mtime advances strictly even when the clock does not move"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > updateFile() > advances `mtime` strictly even when the clock does not move"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"touch advances a directory's mtime, clamped strictly upward"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > touch() > advances a directory's `mtime` strictly upward, and returns without throwing for a missing inode"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"transplantSubtree throws when a root inode does not exist"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > transplantSubtree() > throws when a root inode does not exist"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"clear on a missing inode is a no-op"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > clear() > leaves the inode map unchanged for a missing inode"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"addGeneratedFile publishes an initial render"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > addGeneratedFile() > publishes an initial render"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"refreshGenerated publishes the current render"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > refreshGenerated() > publishes the current render"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"a generated file holds its published bytes between refreshes"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > addGeneratedFile() > holds the published bytes between refreshes"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"a generated file's mtime advances only when its bytes change"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > refreshGenerated() > advances `mtime` only when the published bytes change"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"refreshGenerated ignores an inode that is not generated"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > refreshGenerated() > returns `undefined` for an inode that is not generated"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"refreshGenerated returns undefined when a tracked node is gone"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > refreshGenerated() > returns `undefined` when a tracked node is gone"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"a generated file owns its bytes against a renderer reusing its buffer"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > addGeneratedFile() > publishes a copy of the render, on add and on refresh"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"stored files are not generated"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > isGenerated() > returns `false` for a stored file"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"updateFile rejects a generated file"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > updateFile() > throws for a generated file"}} {"date":"2026-09-08","from":{"k":"unit","s":"fuse","n":"removeChild forgets that an inode was generated"},"to":{"k":"unit","s":"fuse","n":"FsTree > instance members > removeChild() > leaves `isGenerated()` returning `false` and `refreshGenerated()` returning `undefined` for the removed inode"}}