Skip to content

hyperpolymath/nickel-augmentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

nickel-augmentation

Nickel configuration language tools and extensions for RSR-compliant projects. Provides typed, contract-validated configuration that enforces language policy, security policy, and infrastructure standards at build time.

Components

Component Purpose Status

augmented/

Reusable Nickel contract library (lib/) and examples for RSR projects

Active

config-reporter/

CLI tool that audits .ncl files for RSR compliance (SPDX, security, K9)

Active

contractiles/

K9 contractile templates (Kennel/Yard/Hunt) and must/trust/dust/lust files

Stable

Quick Start

# Check dependencies
just deps

# Typecheck all library modules
just build

# Run full test suite (typecheck + export validation)
just test

# Audit .ncl files for RSR compliance
./config-reporter/bin/config-reporter augmented/

# Export a Nickel config to JSON
just run augmented/examples/nickel/build.ncl

Proven Bridge

The augmented/lib/proven-bridge.ncl module connects nickel-augmentation to the proven formally verified safety library. It re-exports key contracts that are backed by Idris2 dependent-type proofs via Zig FFI.

let aug = import "./lib/prelude.ncl" in
{
  # Check availability
  verified | Bool = aug.proven.has_proven,

  # Use proven contracts
  safe_path = aug.proven.SafePath,
  safe_email = aug.proven.SafeEmail,
  safe_string = aug.proven.SafeString,
  safe_math = aug.proven.SafeMath,
}

Available modules: SafeUrl, SafeCrypto, SafeVersion, SafePath, SafeEmail, SafeString, SafeMath. When the proven repo is not available at the expected sibling path, has_proven reports false and the prelude import will fail at typecheck time (use the non-proven contracts in security.ncl as a fallback).

The Augmentation Boundary

Nickel augments existing config — it does not replace governance or runtime systems:

  • Nickel generates, Scheme governs.machine_readable/6a2/STATE.a2ml remains the source of truth

  • Contracts, not code — if you’re writing loops, use ReScript/Rust instead

  • Build-time validation — catches config errors before deployment

See augmented/README.adoc for the full boundary specification.

License

PMPL-1.0-or-later

About

Nickel configuration language tools

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

 
 
 

Contributors