sui-spec 0.1.13

Declarative Lisp-authored specs for CppNix-parity behaviors. Rust types are the hard boundary; Lisp forms are the free-middle authoring surface. Both engines (tree-walker + VM) drive the same spec, so they cannot drift.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
;; sui-spec/specs/nar.lisp — typed border for the Nix Archive (.nar)
;; format.  Today's only variant is the cppnix baseline; future
;; format extensions (xattrs, sparse files) land as additional
;; (defnar-format ...) forms.

(defnar-format
  :name        "cppnix-nar"
  :magic       "nix-archive-1"
  :encoding    LengthPrefixedString
  :entry-types (Regular Executable Directory Symlink)
  :phases ((:kind ReadMagic)
           (:kind ParseRootNode)
           (:kind StreamEntries  :bind "entries")
           (:kind BuildTree      :from "entries" :bind "tree")
           (:kind ValidateChecksum)))