# 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

```bash
# 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
