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
configcanonic.toml/--prefixshared id prefixcorpusWalk and load
{prefix}-*.mdresponsescheckQuality gate (prefix, sop, closings)
convertPandoc markdown ↔ Jira wiki markup
indexTantivy BM25 search and near-duplicate pairs
lintVale CLI + in-process Harper
doctorTooling probes
jira_importFree REST probe, read import, explicit comment POST
scaffoldNew templates and promote import → responses
tuiInteractive 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 incanonic.toml(optional--prefixCLI override; defaultresp). Jira settings live under[jira]in the same files (prefercanonic.local.tomlfor tokens). Jira is a publication surface: convert for paste-in, import only as drafts undercorpus/imports/, thenscaffold::promote_to_corpusafter review.Modules
Re-exports