Skip to main content

Module node

Module node 

Source
Expand description

The workspace node — the config document, found without the root.

A workspace node is a document whose subject is the workspace itself rather than a member of it: it carries workspace_id, relations, spanning, exports and the identity policy, and it is not in the spanning tree, not censused, and reached by no walk. That is what the config document has always been. What this module adds is finding it by convention, so that policy is readable before the root is known rather than only after — the config document proper is reached through the root’s config pointer (Workspace::config_path), which makes spec §1 rule 3’s “policy has two homes” true from only one side.

The circle that breaks matters for exactly one thing: a directory holding two root candidates with neither conventional stem cannot be read at all today, including the policy that would say which of them is the root. A node found without the root can carry root and settle it.

The stem is prov, after the format, because every comparable specification names its top-level file that way and none names it for a generic concept — OCFL’s 0=ocfl_object_1.1, BagIt’s bagit.txt, ro-crate-metadata.json, datapackage.json. Role names like inventory.json appear only inside a directory whose kind is already known, because at the top of an arbitrary one only a format name resolves.

Structs§

Located
What a directory’s conventional locations hold.

Constants§

NODE_DIRS
Where a node may live, in precedence order: the top level, then a config directory, then a hidden one.
NODE_STEM
The stem of a workspace node, in every location.

Functions§

locate
locate_in, reading root_dir’s listing itself.
locate_in
Locate the workspace node under root_dir, in NODE_DIRS precedence.