chant
chant is typed infrastructure end to end, TypeScript in and spec-native output out, with the lifecycle (observe, reconcile, apply) built on top of a synthesis core that runs no project code. The specification here was extracted from its fold mechanism and now owns it; chant implements the specification and declares which version.
Author
A resource is a typed object, new Bucket({ BucketName: ... }), with the target spec’s own property names and casing, so what is authored is what ships. Seventeen lexicons supply the types from generated schemas. They cover AWS CloudFormation, Azure ARM and GCP Config Connector; Kubernetes and Helm; GitHub Actions and GitLab CI; Fly, Terraform and more.
Check
Evaluability lint (is this file data) runs at the keystroke, then each lexicon’s semantic rules over folded values, then post-synth checks over the emitted artifact. The rules are the lexicon’s; the contract they run under is rules.md, the F-Rule-* family, since spec 1.4.
Generate
Three generators share one pipeline. chant import reads an existing template, --from <env> imports live through each lexicon’s exportResources(), and carve-out reads Terraform. Generated source folds back to the artifact it came from; the Kubernetes lexicon carries a round-trip suite, and F-Val-Source states the property since spec 1.5.
Proof
chant 0.73.0 passes every fixture it can answer and agrees with the reference implementation on every one. Over chant’s own example corpus the two implementations agree on every comparable file’s verdict. On the smaller set that folds on both sides the export namespaces are identical too, which is the stronger of the two claims and the lower of the two figures.
| Over chant’s example corpus | Count |
|---|---|
Projects and files at 8ccbf3f4 | 109 projects, 441 files |
| Comparable, verdicts agree | 440 |
| Both fold, namespaces identical | 304 |
The corpus cross-check counts the limits that make the other files incomparable.