Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Suite Conventions

This document defines the canonical policies for the charly-vibes tool suite. It covers the infrastructure-level conventions (edition, license, versioning, justfile setup) that every suite tool should follow.

Design principles, verb grammar, flag consistency, error patterns, and AIX artefacts are documented in the genesis tool-craft playbook.

Current State vs Policy

Unless a tool documents a deliberate deviation below, it SHOULD conform to the canonical policy. Deviations are tracked and converging through the wai-bdqw.6 task.


1. Rust Edition

Canonical: 2024 (the latest stable edition as of 2026).

ToolCurrentStatus
wai2024
genesis2024
dont2024
pretender2021🎯 update to 2024
espectacular2021🎯 update to 2024
testaruda2021🎯 update to 2024
vampiro / crua / livinTBD🎯 start with 2024

Rationale: 2024 adds unsafe attributes in scope, if let chains without nesting, and impl Trait in RPIT — all useful patterns in the suite’s codebase. The two-cycle lag policy means tools on 2021 should migrate before the next edition.


2. License

Canonical: Apache-2.0.

ToolCurrentStatus
pretenderApache-2.0
dontApache-2.0
espectacularApache-2.0
testarudaApache-2.0
genesisApache-2.0
vampiro / crua / livinApache-2.0 (vampiro)✅ planned
waiMIT⚠️ deliberate deviation

Rationale: Apache 2.0 is the suite standard — it provides express patent grant and is the de-facto standard for Rust open-source CLI tools. Wai uses MIT as a deliberate choice (permissive, no notice requirement in binary distributions). A future suite MAY dual-license or converge on a single license; this is not blocked on the current state.


3. Version Scheme

Canonical: Semantic Versioning (SemVer) 0.x.y or MAJOR.MINOR.PATCH.

ToolCurrentStatus
pretender0.3.1✅ SemVer
dont0.2.2✅ SemVer
espectacular0.3.0✅ SemVer
testaruda0.2.4✅ SemVer
genesis0.2.0✅ SemVer
vampiro / crua / livinTBD🎯 start with 0.1.0
wai2026.7.16 (CalVer)⚠️ deliberate deviation

Rationale: crates.io requires SemVer for crate dependencies, and every CLI tool in the suite ships as a crate. Wai uses CalVer because its releases are coupled to the project timeline (weekly-ish), not to API stability contracts — the wai binary is never depended on as a library. The suite standard is SemVer; wai’s CalVer is a documented outlier.

Convention: Tools at 0.x.y MAY bump minor (0.x+1.0) for breaking changes until 1.0.0. Once stable, follow SemVer strictly.


4. Just Recipes

Canonical recipe set (every tool ships these four):

RecipePurposeOutput
defaultBuild + test (or --list if build/test not applicable)just
buildCompile the tooljust build
testRun the test suitejust test
validateFull quality gate (clippy + test + fmt)just validate

Optional recipes (tool-specific):

RecipePurposeExamples
installInstall the toolcargo install --path .
publishRelease to crates.iocargo publish
docsBuild documentationmdbook build docs
prime / statusOrchestrator workflowswai, dont, espectacular

Canonical recipe NOT to use: ah (testaruda uses this for its test runner — rename to test for consistency).

TooldefaultbuildtestvalidateStatus
waibuild+test
pretender--list
dont--list
espectacular--list
testaruda--list✅ (as ah)🎯 rename ahtest, add validate
vampiro / crua / livinbuild+test🎯 start aligned

5. Justfile Shell

Canonical:

set shell := ["bash", "-uc"]

The -u flag treats unset variables as errors, preventing silent failures in recipe pipelines. The -c flag is required by just for shell execution.

Toolset shellStatus
wai["bash", "-uc"]
genesis["bash", "-uc"]
vampiro["bash", "-uc"]✅ planned
crua["bash", "-uc"]✅ planned
livin["bash", "-uc"]✅ planned
dont["bash", "-cu"]🎯 add -u
pretenderabsent🎯 add set shell
espectacularabsent🎯 add set shell
testarudaabsent🎯 add set shell

6. Default Just Recipe

Canonical: just runs build + test (not --list).

A fresh clone should be buildable with a single just command. Using --list as default means the developer must look up the recipe name before building, which is friction for new contributors.

ToolDefaultStatus
waibuild test
genesisbuild test
vampirobuild🎯 add test
cruabuild🎯 add test
livinbuild🎯 add test
pretender--list🎯 change to build test
dont--list🎯 change to build test
espectacular--list🎯 change to build test
testaruda--list🎯 change to build test

Summary of Required Changes

ToolEditionLicenseVersionJust recipesShellDefault
pretender⬆️ 2024➕ add🔁 → build test
dont🔧 -cu-uc🔁 → build test
espectacular⬆️ 2024➕ add🔁 → build test
testaruda⬆️ 2024🔧 ahtest, ➕ validate➕ add🔁 → build test
vampiro🆕 2024🆕 0.1.0🔧 → build test
crua🆕 2024🆕 0.1.0🔧 → build test
livin🆕 2024🆕 0.1.0🔧 → build test

✅ = conforms · 🎯 = target · ➕ = missing · 🔧 = needs change · ⬆️ = upgrade · 🆕 = initial setup

Each tool SHOULD implement its own changes as separate tickets. This document is the suite-level source of truth that those tickets trace to.


References