provisioning/CHANGELOG.md
2026-01-14 02:59:52 +00:00

4.8 KiB

Provisioning Repository - Changes

Date: 2026-01-08 Repository: provisioning (standalone, nickel branch) Changes: Nickel IaC migration complete - Legacy KCL and config cleanup


📋 Summary

Complete migration to Nickel-based infrastructure-as-code with consolidated configuration strategy. Legacy KCL schemas, deprecated config files, and redundant documentation removed. New project structure with .cargo/, .github/, and schema-driven configuration system.


📁 Changes by Directory

REMOVED (Legacy KCL Ecosystem)

  • config/ - Deprecated TOML configs (config.defaults.toml, kms.toml, plugins.toml, etc.)
  • config/cedar-policies/ - Legacy Cedar policies (moved to Nickel schemas)
  • config/templates/ - Old Jinja2 templates (replaced by Nickel generator/)
  • config/installer-examples/ - KCL-based examples
  • docs/src/ - Legacy documentation (full migration to provisioning/docs/src/)
  • kcl/ - Complete removal (all workspaces migrated to Nickel)
  • tools/kcl-packager.nu - KCL packaging system

ADDED (Nickel IaC & New Structure)

  • .cargo/ - Rust build configuration (clippy settings, rustfmt.toml)
  • .github/ - GitHub Actions CI/CD workflows
  • schemas/ - Nickel schema definitions (primary IaC format)
    • main.ncl, provider-aws.ncl, provider-local.ncl, provider-upcloud.ncl
    • Infrastructure, deployment, services, operations schemas
  • docs/src/architecture/adr/ - ADR updates for Nickel migration
    • adr-010-configuration-format-strategy.md
    • adr-011-nickel-migration.md
    • adr-012-nushell-nickel-plugin-cli-wrapper.md

📝 UPDATED (Core System)

  • provisioning/docs/src/ - Comprehensive product documentation

    • API reference, architecture, guides, operations, security, testing
    • Nickel configuration guide with examples
    • Migrated from legacy KCL documentation
  • core/ - Updated with Nickel integration

    • Scripts, plugins, CLI updated for Nickel schema parsing
  • justfiles/ - Added ci.just for Nickel-aware CI/CD

  • README.md - Complete restructure for Nickel-first approach

  • .gitignore - Updated to ignore Nickel build artifacts


📊 Change Statistics

Category Removed Added Modified
Configuration 50+ 10+ 3
Documentation 150+ 200+ 40+
Infrastructure 1 (kcl/) - -
Plugins 1 - 5+
Build System 5 8+ 3
Total ~220 files ~250 files 50+ files

⚠️ Breaking Changes

  1. KCL Sunset: All KCL infrastructure code removed. Migrate workspaces using nickel-kcl-bridge or rewrite directly in Nickel.
  2. Config Format: TOML configuration files moved to schema-driven Nickel system. Legacy config loading deprecated.
  3. Documentation: Old KCL/legacy docs removed. Use provisioning/docs/ for current product documentation.
  4. Plugin System: Updated to Nickel-aware plugin API. Legacy Nushell plugins require recompilation.

🔧 Migration Path

# For existing workspaces:
provisioning workspace migrate --from-kcl <workspace-name>

# For custom configs:
nickel eval --format json <your-config.ncl> | jq '.'

Key Features

  • Type-Safe: Nickel schemas eliminate silent config errors
  • Composable: Modular infrastructure definitions with lazy evaluation
  • Documented: Schema validation built-in, IDE support via LSP
  • Validated: All imports pre-checked, circular dependencies prevented
  • Bridge Available: nickel-kcl-bridge for gradual KCL→Nickel migration

📝 Implementation Details

Nickel Schema System

  • Three-tier architecture: infrastructure, operations, deployment
  • Lazy evaluation: Efficient resource binding and composition
  • Record merging: Clean override patterns without duplication
  • Type validation: LSP-aware with IDE auto-completion
  • Generator system: Nickel-based dynamic configuration at runtime

Documentation Reorganization

  • provisioning/docs/src/ (200+ files) - Customer-facing product docs
  • docs/src/ (20-30 files) - Architecture and development guidelines
  • .coder/ - Session files and implementation records
  • Separation of concerns: Product docs isolated from session artifacts

CI/CD Integration

  • GitHub Actions workflows for Rust, Nickel, Nushell
  • Automated schema validation pre-commit
  • Cross-platform testing (Linux, macOS)
  • Build artifact caching for fast iteration

⚠️ Compatibility Notes

Breaking: KCL workspaces require migration to Nickel. Use schema-aware tooling for validation.

Migration support: nickel-kcl-bridge tool and guides available in provisioning/docs/src/development/.

Legacy configs: Old TOML files no longer loaded. Migrate to Nickel schema format via CLI tool.


Status: Nickel migration complete. System is production-ready. Date: 2026-01-08 Branch: nickel