prov-views 0.7.0

Declarative views over a prov workspace: the format, and the traversal that executes it
Documentation
---
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)

[![CI](https://img.shields.io/github/actions/workflow/status/diaryx-org/prov/ci.yml?branch=main)](https://github.com/diaryx-org/prov/actions/workflows/ci.yml)
[![crates.io](https://img.shields.io/crates/v/prov.svg)](https://crates.io/crates/prov)
[![docs.rs](https://img.shields.io/docsrs/prov)](https://docs.rs/prov)
[![license](https://img.shields.io/crates/l/prov.svg)](#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.