No description
  • Rust 92.3%
  • Gherkin 7.1%
  • CSS 0.2%
  • HTML 0.2%
  • Just 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Olivier Albiez b35da28070 chore(release): switch git-cliff hook to unreleased prepend
Full regeneration re-projected previously-published sections through
the current config, silently rewriting historical entries at every
release. Prepend the unreleased section only; older entries stay
as they were tagged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-08-03 05:29:51 +02:00
.cargo build: point the lz4_flex audit ignore at its live tracking issue 2026-08-02 18:08:42 +02:00
.claude/skills chore: modernize DDR refs in record bodies and project docs 2026-07-25 19:44:40 +02:00
.githooks ci: enforce conventional commits per ADR-0019 2026-04-29 16:09:29 +02:00
.vscode chore: share minimal vscode settings encoding project conventions 2026-05-03 12:14:32 +02:00
assets docs: ship a logo and credit its source 2026-06-07 08:35:59 +02:00
demo chore(demo): migrate to schema v12 and normalize 2026-08-03 04:46:58 +02:00
docs chore(issue): capture 2026-08-02 discussion on scripting study 2026-08-02 22:14:34 +02:00
src style(issue): apply cargo fmt to backlog filter change 2026-08-03 04:47:38 +02:00
tests fix(cli): surface repository errors in read-only overview paths 2026-08-02 13:08:32 +02:00
xtask feat(doc-gen): add {{ref}} + {{struct_fields}} shortcodes 2026-08-02 17:38:43 +02:00
.gitignore build: pin bfd as linker on x86_64-linux for CI stability 2026-08-02 11:55:37 +02:00
.gitlab-ci.yml ci: replace nix-collect-garbage -d with size-capped nix store gc 2026-08-02 19:25:48 +02:00
Cargo.lock chore: Release 2026-08-03 05:22:14 +02:00
Cargo.toml chore(release): switch git-cliff hook to unreleased prepend 2026-08-03 05:29:51 +02:00
cartulary.toml chore(config): declare per-kind body_template in this workspace 2026-08-02 20:26:52 +02:00
CHANGELOG.md chore: Release 2026-08-03 05:22:14 +02:00
CLAUDE.md docs(ci): document the nix-develop pipeline and command mapping 2026-08-02 14:27:53 +02:00
cliff.toml chore: Release 2026-07-13 14:05:18 +02:00
committed.toml ci: enforce conventional commits per ADR-0019 2026-04-29 16:09:29 +02:00
deny.toml ci: wire cargo-deny into the supply-chain gate 2026-06-03 16:00:03 +02:00
flake.lock build: bump nixpkgs to 26.05 2026-08-02 18:08:42 +02:00
flake.nix build: bump nixpkgs to 26.05 2026-08-02 18:08:42 +02:00
generate-html.sh ci: run every rust pipeline job through nix develop 2026-08-02 14:27:53 +02:00
justfile build: re-enable cargo-audit advisory scanning 2026-08-02 18:08:42 +02:00
LICENSE chore: add CeCILL license 2026-03-09 10:32:39 +01:00
readme.md docs(ci): document the nix-develop pipeline and command mapping 2026-08-02 14:27:53 +02:00
rust-toolchain.toml build: add cross targets and CI toolchain to the nix dev shell 2026-08-02 14:27:53 +02:00

cartulary

cartulary

status: alpha

The knowledge layer of your project — decisions, issues, docs, all in one place.

⚠️ Status: Alphacartulary is under active development. The CLI surface and cartulary.toml schema may change in incompatible ways before 1.0. Pin a specific version (--version "0.1.0-alpha.1") and watch CHANGELOG.md before upgrading.

cartulary is a CLI tool to manage everything that gives context to your project: Architecture Decision Records (ADR), Design Decision Records (DDR), issues, and project documentation. Everything lives as plain Markdown in your repository.


📚 Documentation

You can also find all the documentation pages online at this address: crazy-crafters.gitlab.io/cartulary


🚀 Installation

Download the archive for your platform from the GitLab Releases page. One-liner for Linux x86_64:

VERSION="0.1.0-alpha.1"
TARGET="x86_64-unknown-linux-gnu"
curl -fsSL "https://gitlab.com/crazy-crafters/cartulary/-/releases/v${VERSION}/downloads/cartu-${VERSION}-${TARGET}.tar.gz" \
    | tar -xz -C /tmp
mv /tmp/cartu ~/.local/bin/cartu

Available targets: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-pc-windows-gnu. macOS users compile from source via cargo install (next section). Verify the archive against the SHA256SUMS file attached to the same release.

For Windows: download cartu-{version}-x86_64-pc-windows-gnu.zip, unzip, place cartu.exe on your PATH.

Via cargo binstall (no compilation)

If you have cargo-binstall:

cargo binstall cartulary --version "0.1.0-alpha.1"

cartulary ships a [package.metadata.binstall] block pointing at the GitLab Release artefacts — binstall picks the right archive for your platform.

Via cargo install (compile from source)

cargo install cartulary --version "0.1.0-alpha.1"

Compiles from the published crate on crates.io. Requires Rust 1.88+ via rustup.rs.

Build from source (contributors)

git clone https://gitlab.com/crazy-crafters/cartulary
cd cartulary
cargo install --path .

Requires Rust 1.88+. Beyond rustc/cargo, the dev workflow expects just (recipe runner) and cargo-llvm-cov (coverage). Nix users get them automatically via the flake (nix develop); other contributors should install them manually:

cargo install --locked just cargo-llvm-cov
rustup component add llvm-tools-preview

Audit tools

Dead-code and visibility audits use cargo-hawk, a workspace-aware pub-item linter. The flake devShell ships the rustc-dev component hawk needs. Install once, then run from the workspace root:

RUSTC_BOOTSTRAP=1 cargo install --locked cargo-hawk
cargo hawk check --manifest-path Cargo.toml

Findings split into three lints: hawk::dead_public (unused exports), hawk::unnecessary_public (over-broad visibility), hawk::unnecessary_restricted_visibility (over-narrow). --fix applies the safe visibility narrowings automatically.


30-second tour

cartu init                                          # scaffold cartulary.toml + docs/
cartu adr new "Use PostgreSQL as primary database"  # record an architecture decision
cartu issue new --tag flow:feature "Add MFA"        # open an issue
cartu issue list
cartu check                                         # validate frontmatter, links, transitions
cartu man                                           # browse concept docs
cartu site build --out site                         # static HTML site with syntax-highlighted code

Pick the next thread from the documentation section above.


🔎 Similar tools

Tool Category Decision records Issue tracking Flow metrics Plain files Single binary
adr-tools ADR CLI
log4brains ADR + web UI
git-bug Issue tracker
git-issue Issue tracker
cartulary ADR + issues

The market is split: ADR tools have no issue tracking, issue trackers have no decision records. cartulary covers both, plus flow metrics, structural validation, and a ULID-based identifier scheme that survives parallel branches. See market-benchmark.md for the full analysis.


🤝 Contributing

Contributions welcome — open an issue or submit a merge request.

cartulary enforces Conventional Commits 1.0.0 (rationale in ADR-0019). Allowed types: feat, fix, docs, refactor, perf, test, build, ci, chore, style. Subject in imperative mood, lowercase, no trailing period, ≤72 chars. CI rejects non-conforming commits; to get the same check locally:

cargo install committed
just install-hooks

CI pipeline

Every pipeline stage that runs a Rust tool executes it through the flake's dev shell, so CI and local development share one pinned toolchain instead of whatever a base image happens to ship. Two shells back the jobs: nix develop (default) and nix develop .#ci, which adds the cross-compilation chain and pandoc for the release and docs jobs.

Local command CI job Shell
just ci test nix develop
committed <range> commit-lint nix develop
cargo zigbuild --release --target <target> build nix develop .#ci
cargo publish cargo-publish nix develop
./generate-html.sh pages nix develop .#ci

Releases are cut by maintainers with cargo release --execute X.Y.Z, which runs git-cliff to update CHANGELOG.md and triggers cargo publish + GitLab Release artefacts on tag push. Maintainers either enter the Nix dev shell (nix develop, which ships cargo-release and git-cliff) or install the two tools manually:

cargo install --locked cargo-release git-cliff

📄 License

CeCILL


🎨 Credits

Logo: Book cover by Lorc, from game-icons.net, licensed under CC BY 3.0.