Define ignored workspace routing semantics and budgets

This commit is contained in:
ms2k 2026-07-15 01:10:28 +09:00
commit c54372ea87

View file

@ -0,0 +1,228 @@
{
"schema": "lazaret-ignored-workspace-contract-v1",
"mechanism": "rootless-host-fuse-router",
"route_classes": [
"host",
"isolated"
],
"transition_contracts": [
{
"id": "cross-route-rename",
"operations": [
"rename",
"rename-noreplace",
"rename-exchange"
],
"result": "EXDEV",
"mutation": "none"
},
{
"id": "rename-whiteout",
"operations": [
"rename-whiteout"
],
"result": "EOPNOTSUPP",
"mutation": "none"
},
{
"id": "cross-route-hard-link",
"operations": [
"link"
],
"result": "EXDEV",
"mutation": "none"
},
{
"id": "ignored-to-host-policy",
"trigger": "path becomes non-ignored without becoming tracked",
"new_lookups": "host-or-absent",
"open_handles": "remain-isolated",
"isolated_state": "retained-hidden",
"copy": "none"
},
{
"id": "host-to-ignored-policy",
"trigger": "untracked path becomes ignored",
"new_lookups": "retained-isolated-or-absent",
"open_handles": "remain-host",
"host_state": "retained-hidden",
"copy": "none"
},
{
"id": "isolated-to-tracked-guest-publication",
"trigger": "guest index publication tracks an isolated-only path",
"result": "EBUSY",
"index_mutation": "none",
"isolated_state": "retained-visible",
"copy": "none"
},
{
"id": "isolated-to-tracked-host-established",
"trigger": "published index and type-compatible host object both exist",
"new_lookups": "host",
"open_handles": "remain-isolated",
"isolated_state": "retained-hidden",
"copy": "none"
},
{
"id": "isolated-to-tracked-unmediated-inconsistent",
"trigger": "unmediated index publication tracks a path without a host object",
"result": "EIO",
"path_state": "fail-closed-until-consistent",
"isolated_state": "retained-hidden-recoverable",
"copy": "none"
}
],
"filesystem_operations": [
{
"operation": "lookup-getattr-readdir",
"host": "supported",
"isolated": "supported",
"cross_route": "not-applicable"
},
{
"operation": "create-mkdir-open-read-write-truncate-fallocate-fsync",
"host": "supported",
"isolated": "supported",
"cross_route": "not-applicable"
},
{
"operation": "unlink-rmdir",
"host": "supported",
"isolated": "supported",
"cross_route": "not-applicable"
},
{
"operation": "rename",
"host": "supported",
"isolated": "supported",
"cross_route": "EXDEV"
},
{
"operation": "rename-noreplace",
"host": "supported",
"isolated": "supported",
"cross_route": "EXDEV"
},
{
"operation": "rename-exchange",
"host": "supported",
"isolated": "supported",
"cross_route": "EXDEV"
},
{
"operation": "rename-whiteout",
"host": "EOPNOTSUPP",
"isolated": "EOPNOTSUPP",
"cross_route": "EOPNOTSUPP"
},
{
"operation": "hard-link",
"host": "supported",
"isolated": "supported",
"cross_route": "EXDEV"
},
{
"operation": "symlink-readlink",
"host": "supported",
"isolated": "supported",
"cross_route": "virtual-path-resolution"
},
{
"operation": "user-xattrs",
"host": "backing-feature",
"isolated": "backing-feature",
"cross_route": "not-applicable"
},
{
"operation": "posix-acls",
"host": "backing-feature",
"isolated": "backing-feature",
"cross_route": "not-applicable"
},
{
"operation": "sparse-seek-hole-data-punch-hole",
"host": "backing-feature",
"isolated": "backing-feature",
"cross_route": "not-applicable"
},
{
"operation": "copy-file-range",
"host": "supported",
"isolated": "supported",
"cross_route": "EXDEV"
},
{
"operation": "utimens-nanoseconds",
"host": "supported",
"isolated": "supported",
"cross_route": "not-applicable"
},
{
"operation": "mmap-shared-private",
"host": "supported",
"isolated": "supported",
"cross_route": "pinned-open-backing"
},
{
"operation": "flock-posix-record-lock",
"host": "supported",
"isolated": "supported",
"cross_route": "pinned-open-backing"
},
{
"operation": "fifo-unix-socket",
"host": "supported",
"isolated": "supported",
"cross_route": "not-applicable"
},
{
"operation": "character-block-device-create",
"host": "EPERM",
"isolated": "EPERM",
"cross_route": "EPERM"
}
],
"git_compatibility": [
{
"operation": "status-diff",
"support": "supported"
},
{
"operation": "ordinary-add-reset-commit",
"support": "supported-host-backed-paths"
},
{
"operation": "checkout-restore",
"support": "supported"
},
{
"operation": "branch-reference-update",
"support": "supported"
},
{
"operation": "merge-rebase-stash",
"support": "supported"
},
{
"operation": "linked-worktree",
"support": "supported"
},
{
"operation": "nested-repository",
"support": "supported"
},
{
"operation": "force-add-isolated-only",
"support": "EBUSY-before-index-publication"
},
{
"operation": "host-config-write",
"support": "EROFS"
},
{
"operation": "default-hook-host-access",
"support": "sandbox-transient-only"
}
]
}