wspace.
The umbrella wiki lists each sub-wiki under sources: in its wiki.yml, pins
exact commits in wiki.lock, and keeps each sub-wiki as a named RDF graph. You
can query the whole corpus at once, or trace a result back to its source
repository. wspace keeps the repositories in sync with check, update, and
worktree workflows.
Prerequisites
- The
wikiCLI, installed per the Wiki install guide. - The
wspaceCLI, installed per the Workspace install guide. - A repository for each sub-wiki, and one repository for the umbrella wiki.
Reasons to split
Split when you want independent ownership, versioning, or release surfaces:- Each team owns its wiki history and merges its own changes.
- A reference library (product docs, regulations, shared domain models) can be reused across multiple umbrellas.
- Sub-wikis can publish or evolve on their own schedule.
Layout
The umbrella repository ownswiki.yml with a sources: block that points at
each sub-wiki repository. Each sub-wiki is its own Git repository. All
repositories, umbrella and sub-wikis, are listed in one workspace.json
manifest so wspace manages them as a workspace:
Steps
1
Declare the repositories in the manifest
List the umbrella and each sub-wiki repository in Clone the missing repositories and confirm the workspace is healthy:See Workspace for the full command reference.
workspace.json,
following the manifest schema:wspace check confirms every repository is present and clean. Keep the
default branch current with the remote so later updates fast-forward
cleanly:2
Compose the sub-wikis in wiki.yml
In the umbrella repository, declare each sub-wiki as an external source.
Use a git URL with a If a sub-wiki keeps its pages in a subdirectory, add This clones each repository into Check
#ref pin (branch, tag, or commit) so the composition
is reproducible:path: <dir> to point
at it. Each source name must be unique across the umbrella.Fetch the sources and pin the resolved commits:.wiki/sources/<name>/repo/, resolves the
requested refs to commit SHAs, and writes wiki.lock:wiki.lock into version control; it is the source of truth for
which commit of each sub-wiki builds the corpus. If a source declares its
own sources: block, wiki install fetches those transitive dependencies
recursively; circular dependency chains raise an error.For the full contract, see
wiki install
and
External data sources (
sources:).
For the product framing, see
Recursive Semantic Datasets.3
Query the composed corpus with per-source provenance
Each sub-wiki stays a named RDF graph. List the graph boundaries:This prints the root graph plus one graph per installed source, with the
named graph URI, resolved commit, and dependency owner. Query the whole
umbrella as one corpus:Scope a query to one sub-wiki with a Return the source graph with each result to trace provenance:
GRAPH clause:For the read-only boundary and graph URI derivation, see
wiki graph.
4
Keep repositories and content in sync
Refresh repository baselines, then refresh installed sources:
wspace update fast-forwards clean default branches and skips dirty or
feature-branch checkouts. wiki update re-fetches the installed sources,
installs newly declared transitive sources, and reports orphaned ones.
Remove sources you no longer want from the corpus (and their now-unused
transitive dependencies):5
Publish the umbrella
Sub-wiki edits happen in the sub-wiki repository, not in the umbrella’s
.wiki/sources/ cache. Make changes there with the normal worktree
workflow, then publish the umbrella:Advanced: multiple workspaces
The steps above declare every repository in one flat manifest. Schema v4 keeps workspaces flat by design: each directory that contains aworkspace.json is
its own workspace. There is no nesting or delegation between manifests.
Nested workspaces were removed in schema v4
Earlier schema versions (v1-v3) supported nesting through a top-levelworkspaces: array and entry-level manifest and path fields. Schema v4
removed them:
- A manifest that declares a top-level
workspaces:key fails to load with a migration error: declare each child workspace’s repositories directly in the parent manifest instead. - Repository entries accept only
name,url, andowner; themanifestandpathentry fields are gone. - Manifests are JSON or JSONC only. The
.yamland.ymlformats were removed, along with the fallback filenameswspace.jsonandrepos.json.
Give a cluster its own workspace
To let a cluster of repositories change on its own cadence, give the cluster its own manifest. Any directory that holds aworkspace.json is a workspace root; a
checked-out repository can carry one at its root. Run wspace from that
directory, or pass --manifest, to manage the cluster as its own workspace:
wspace commands run in the
parent see only the parent’s repositories[], and commands run inside the
umbrella checkout see only the sub-workspace’s list. A repository claimed by a
sub-workspace must not also appear in the parent’s repositories[].
Workspaces organize Git repositories, while transitive
sources: blocks
compose RDF corpora. An umbrella can install another umbrella’s published
corpus within one workspace, and separate workspaces can each hold umbrella
wikis whose graphs never merge.Check for success
Run the integrity checks in the umbrella repository:Next steps
- Wiki: validate, query, and publish semantic Markdown wikis
- Workspace: manage multi-repository workspaces with
wspace - External data sources (
sources:): the composition reference - Recursive Semantic Datasets: the design behind named-graph provenance