Configuration management for a mixed, intermittently-connected fleet: Apple Silicon Macs, Linux (x86_64 and aarch64), and Android devices reached through Termux.
Most of the configuration will be written by AI coding agents. People still decide what should happen. A person whose computer is managed should be able to read a proposed change in ordinary language and refuse it — using their AI, not ours.
Start here: docs/paper/tendcf-architecture-guide.md
That guide is the vetted current-state description. Where any other living document disagrees on the current design, the guide wins.
| Path | What |
|---|---|
docs/architecture/architecture-DEFINITIVE-v3.md |
Implementer map (decisions, build order, protection). Must agree with the guide. |
docs/paper/tendcf-architecture-paper.md |
Technical paper |
schema/, examples/, bin/schema_lint.py |
Site Model contract, fixtures, lint |
examples/broken/, examples/broken-bytes/, examples/broken-projection/ |
Ninety-two deliberately broken fixtures (59 + 6 + 27) the lint must catch |
docs/architecture/change-process.md |
How a change lands: lockfile, release, rollback, CI gates (issue #2) |
overlay/, bin/overlay.py, docs/architecture/upstream-overlay.md |
Patch overlay on libntech / cfengine/core that the generic bundle depends on (issue #3) |
| frdminc/nix2cf | Compiler (Site Model → CFEngine Augments). Not this repo. |
Nothing described here is deployed. Some data formats exist and are checked. The compiler, the on-device executor, and the consent surface are still to be built.
bin/schema_lint.pyCI runs it on every push and pull request. Locally, it also runs as a pre-commit hook once git uses this repo's hooks:
git config core.hooksPath .githooksEvery document in this repository is mutable. No file requires a ceremony, an approval trailer, or a named authorization to edit.
License: GPL-3.0-or-later.