---
title: prov
author: adammharris
created: 2026-07-06
contents:
- '[Design](docs/DESIGN.md)'
- '[Spec](/docs/spec.md)'
- '[Getting Started](docs/getting-started.md)'
- '[Config Vocab](/docs/config-vocab.md)'
- '[Init Adoption](/docs/init-adoption.md)'
- '[Next Steps](/docs/next-steps.md)'
- '[Reference Styles](/docs/reference-styles.md)'
- '[History Format](/docs/history-format.md)'
- '[Manifests](/docs/manifests.md)'
- '[Releasing](/docs/releasing.md)'
- '[Changelog](/docs/CHANGELOG.md)'
- '[`prov` proposals](/docs/proposals/proposals.md)'
- '[Author''s notes](/authors-notes.md)'
config: prov.yaml
about: about.md
---
# prov (Plaintext Records, Organized and Verifiable)
[](https://github.com/diaryx-org/prov/actions/workflows/ci.yml)
[](https://crates.io/crates/prov)
[](https://docs.rs/prov)
[](#license)
A *self-describing plaintext workspace*: a set of documents whose structure lives in the documents' own embedded metadata (frontmatter), not in the filesystem layout or an app-private sidecar folder.
## Layout
- **`prov/`** — the library. Documents, relations, identity, and the workspace seam.
- **`prov-cli/`** — a thin command-line companion (the installed binary is `prov`).
- **`xtask/`** — CI, as a program. Each job is `cargo xtask <job>`.
## Development
`cargo xtask ci` runs everything CI runs, in the order CI runs it; `cargo xtask` on its own lists the individual jobs. The [workflow](.github/workflows/ci.yml) does nothing but ask `cargo xtask ci-matrix` what the jobs are and run each one, so changing CI means editing [`xtask/src/main.rs`](xtask/src/main.rs) and nothing else.
Releases are one command: `cargo xtask release <patch|minor|major|x.y.z>` bumps the workspace version, cuts the changelog's unreleased region into a released section, commits and tags — and pushes only when given `--push`, because the push is what publishes eleven crates to crates.io. See [Releasing](docs/releasing.md).
Building needs [Zig](https://ziglang.org) 0.16 on `PATH` — prov's `fig` and `twig-doc` dependencies are Zig-backed, and their build scripts run `zig build`. `nix develop` provides it, as does the `flake.nix` dev shell.
## Status
Works for simple workspaces. Active work is currently taking place incorporating prov into [Diaryx](https://diaryx.org).
## License
Licensed under either of
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.