Crate canonic#

crate canonic#

canonic

Versioned markdown canned-response corpus for Jira support workflows.

The CLI is a thin front end. Library consumers can call the same engines:

Module

Role

config

canonic.toml / --prefix shared id prefix

corpus

Walk and load {prefix}-*.md responses

check

Quality gate (prefix, sop, closings)

convert

Pandoc markdown ↔ Jira wiki markup

index

Tantivy BM25 search and near-duplicate pairs

lint

Vale CLI + in-process Harper

doctor

Tooling probes

jira_import

Free REST probe, read import, explicit comment POST

scaffold

New templates and promote import → responses

tui

Interactive ratatui corpus browser (canonic tui)

Example

use canonic::{default_corpus_dir, walk_responses, check_responses, DEFAULT_PREFIX};

let dir = default_corpus_dir();
let responses = walk_responses(&dir).expect("read corpus");
let report = check_responses(&responses, DEFAULT_PREFIX);
assert!(report.ok() || !report.findings.is_empty());

Markdown under corpus/responses/ remains the source of truth. The shared id prefix is user-chosen in canonic.toml (optional --prefix CLI override; default resp). Jira settings live under [jira] in the same files (prefer canonic.local.toml for tokens). Jira is a publication surface: convert for paste-in, import only as drafts under corpus/imports/, then scaffold::promote_to_corpus after review.

Modules

Re-exports