Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> :toc: left :toclevels: 3 :icons: font :revnumber: 0.1.0 :revdate: 2026-06-20
|
Note
|
This directory is the standalone |
K9 is a self-validating configuration format for software component
declarations. Each component carries its own provenance, security posture,
build recipe, and runtime contracts, so that a .k9 file is both
documentation and an executable check.
Each component declares:
| Field | Meaning |
|---|---|
Pedigree |
Provenance — origin URL, author, license, supply-chain hashes |
SecurityLevel |
Three-tier model: |
Recipe |
Build or assembly instructions (tool + command) |
Contracts |
Runtime invariants with check commands and severity levels |
Two surface formats are defined:
-
.k9— YAML-like plain-text format, parsed natively -
.k9.ncl— Nickel format (requires the Nickel evaluator)
The canonical format definition lives in spec/SPEC.adoc;
the shared cross-implementation test suite lives in conformance/.
The K9 family spans five language implementations plus editor, CI, and documentation tooling — eleven repositories in all. They are kept as independent repositories (each idiomatic to its package registry and tooling) and aggregated here as git submodules. This gives one source of truth for the spec, one conformance suite every implementation tests against, and one front door — without forcing a monorepo on toolchains that expect standalone repos (crates.io, Hex, Hackage, JSR, the Tree-sitter CLI, the VS Code Marketplace, pre-commit, and GitHub Actions).
Run just init (or scripts/init-submodules.sh) to populate the submodules.
| Repo | Language | Registry |
|---|---|---|
|
Rust |
crates.io (reference implementation) |
|
Elixir |
Hex |
|
Gleam |
Hex / Gleam |
|
Deno |
JSR |
|
Haskell |
Hackage |
| Repo | Purpose |
|---|---|
|
Tree-sitter grammar + bindings |
|
VS Code language extension |
|
Pandoc integration for |
| Repo | Purpose |
|---|---|
|
GitHub Action — validates |
|
pre-commit hook — validates |
# clone with all members
git clone --recurse-submodules <hub-url>
cd k9-ecosystem
# or, after a plain clone
just init # = git submodule update --init --recursive
just status # show member checkout state
just update # fast-forward every member to its tracked commit-
hyperpolymath/standardsreferences k9-svc (the Rust crate lib name,k9_svc) as a reusable standard; the.k9.nclform is woven into thedeveloper-ecosystemcontractile tridents (k9.ncl). This hub is the home of the format itself, distinct from those consumers. -
vscode-k9may also be cross-referenced as adeveloper-uxsatellite ofdeveloper-ecosystem; a submodule can be aggregated by more than one hub.
MPL-2.0-or-later. SPDX headers are carried on every file. See LICENSE.