diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..5565b78
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,199 @@
+# SPDX-License-Identifier: MIT OR Apache-2.0
+# Copyright (c) 2025 conflow contributors
+#
+# GitLab CI/CD Configuration for conflow
+# RSR-Compliant Pipeline
+
+stages:
+ - check
+ - test
+ - build
+ - compliance
+ - release
+
+variables:
+ CARGO_HOME: ${CI_PROJECT_DIR}/.cargo
+ RUSTFLAGS: "-D warnings"
+
+# Cache cargo dependencies
+.cargo-cache: &cargo-cache
+ cache:
+ key: ${CI_JOB_NAME}
+ paths:
+ - .cargo/
+ - target/
+
+# -----------------------------------------------------------------------------
+# Check Stage
+# -----------------------------------------------------------------------------
+
+format:
+ stage: check
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - rustup component add rustfmt
+ - cargo fmt -- --check
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+lint:
+ stage: check
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - rustup component add clippy
+ - cargo clippy --all-targets --all-features -- -D warnings
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+audit:
+ stage: check
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - cargo install cargo-audit
+ - cargo audit
+ allow_failure: true
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+# -----------------------------------------------------------------------------
+# Test Stage
+# -----------------------------------------------------------------------------
+
+test:
+ stage: test
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - cargo test --all-features
+ coverage: '/^\d+.\d+% coverage/'
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+# -----------------------------------------------------------------------------
+# Build Stage
+# -----------------------------------------------------------------------------
+
+build:debug:
+ stage: build
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - cargo build --all-features
+ artifacts:
+ paths:
+ - target/debug/conflow
+ expire_in: 1 day
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+
+build:release:
+ stage: build
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - cargo build --release --all-features
+ artifacts:
+ paths:
+ - target/release/conflow
+ expire_in: 1 week
+ rules:
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+ - if: '$CI_COMMIT_TAG'
+
+# -----------------------------------------------------------------------------
+# Compliance Stage
+# -----------------------------------------------------------------------------
+
+rsr-compliance:
+ stage: compliance
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - cargo build --release
+ - ./target/release/conflow rsr check --format json > rsr-report.json || true
+ - cat rsr-report.json
+ artifacts:
+ paths:
+ - rsr-report.json
+ reports:
+ codequality: rsr-report.json
+ allow_failure: true
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+spdx-check:
+ stage: compliance
+ image: alpine:latest
+ script:
+ - |
+ echo "Checking SPDX headers..."
+ missing=0
+ for file in $(find src -name "*.rs"); do
+ if ! head -1 "$file" | grep -q "SPDX-License-Identifier"; then
+ echo "Missing SPDX header: $file"
+ missing=$((missing + 1))
+ fi
+ done
+ if [ $missing -gt 0 ]; then
+ echo "ERROR: $missing files missing SPDX headers"
+ exit 1
+ fi
+ echo "All source files have SPDX headers"
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+# -----------------------------------------------------------------------------
+# Release Stage
+# -----------------------------------------------------------------------------
+
+publish:crates:
+ stage: release
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - cargo publish --dry-run
+ rules:
+ - if: '$CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/'
+ when: manual
+
+release:
+ stage: release
+ image: registry.gitlab.com/gitlab-org/release-cli:latest
+ script:
+ - echo "Creating release for $CI_COMMIT_TAG"
+ release:
+ tag_name: $CI_COMMIT_TAG
+ description: "Release $CI_COMMIT_TAG"
+ assets:
+ links:
+ - name: "Linux Binary"
+ url: "${CI_PROJECT_URL}/-/jobs/artifacts/${CI_COMMIT_TAG}/raw/target/release/conflow?job=build:release"
+ rules:
+ - if: '$CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/'
+
+# -----------------------------------------------------------------------------
+# Documentation
+# -----------------------------------------------------------------------------
+
+pages:
+ stage: release
+ image: rust:latest
+ <<: *cargo-cache
+ script:
+ - cargo doc --no-deps --all-features
+ - mv target/doc public
+ - echo '' > public/index.html
+ artifacts:
+ paths:
+ - public
+ rules:
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
diff --git a/.well-known/dnt-policy.txt b/.well-known/dnt-policy.txt
new file mode 100644
index 0000000..d7b7411
--- /dev/null
+++ b/.well-known/dnt-policy.txt
@@ -0,0 +1,13 @@
+# Do Not Track Policy
+# See: https://www.eff.org/dnt-policy
+
+This is a command-line application that:
+- Does NOT collect any user data
+- Does NOT send telemetry
+- Does NOT track usage
+- Does NOT connect to external services (offline-first design)
+
+All operations are performed locally on your machine.
+
+Status: No tracking whatsoever
+Effective: 2025-01-01
diff --git a/.well-known/humans.txt b/.well-known/humans.txt
new file mode 100644
index 0000000..852ec28
--- /dev/null
+++ b/.well-known/humans.txt
@@ -0,0 +1,23 @@
+/* TEAM */
+Lead Developer: Jonathan D.A. Jewell
+Contact: hyperpolymath [at] proton.me
+GitLab: @hyperpolymath
+Location: Global
+
+/* CONTRIBUTORS */
+See MAINTAINERS.md and git log for full contributor list.
+
+/* THANKS */
+The Rust Community
+CUE Lang Team
+Nickel Lang Team
+Rhodium Standard Repository Framework
+Campaign for Cooler Coding and Programming (CCCP)
+
+/* SITE */
+Last update: 2025-01-01
+Language: English
+Standards: RSR Silver Compliance
+Doctype: Rust CLI Application
+Components: Rust, CUE, Nickel, Nix
+IDE: Various (VS Code, Vim, Emacs, Helix)
diff --git a/.well-known/security.txt b/.well-known/security.txt
new file mode 100644
index 0000000..34fcb26
--- /dev/null
+++ b/.well-known/security.txt
@@ -0,0 +1,13 @@
+# Security Policy for conflow
+# See: https://securitytxt.org/
+
+Contact: mailto:security@conflow.dev
+Expires: 2026-01-01T00:00:00.000Z
+Encryption: https://gitlab.com/hyperpolymath/conflow/-/blob/main/.well-known/pgp-key.txt
+Preferred-Languages: en
+Canonical: https://gitlab.com/hyperpolymath/conflow/-/raw/main/.well-known/security.txt
+Policy: https://gitlab.com/hyperpolymath/conflow/-/blob/main/SECURITY.md
+
+# Acknowledgments
+# We thank all security researchers who responsibly disclose vulnerabilities.
+# Hall of Fame: https://gitlab.com/hyperpolymath/conflow/-/blob/main/SECURITY.md#acknowledgments
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..13b76c6
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,224 @@
+# CLAUDE.md - AI Assistant Guidance for conflow
+
+This document provides guidance for AI assistants working with the conflow codebase.
+
+## Project Overview
+
+**conflow** is a Configuration Flow Orchestrator that intelligently orchestrates
+CUE, Nickel, and configuration validation workflows.
+
+### Key Concepts
+
+- **Pipeline**: A sequence of stages defined in `.conflow.yaml`
+- **Stage**: A single step that runs a tool (CUE, Nickel, or shell)
+- **Executor**: Implements tool-specific execution logic
+- **Cache**: Content-addressed caching to avoid redundant work
+- **RSR Integration**: Rhodium Standard Repository compliance checking
+
+## Architecture
+
+```
+src/
+├── main.rs # CLI entry point
+├── lib.rs # Library exports
+├── cli/ # Command handlers
+│ ├── mod.rs # CLI definitions (clap)
+│ ├── init.rs # `conflow init`
+│ ├── analyze.rs # `conflow analyze`
+│ ├── run.rs # `conflow run`
+│ ├── validate.rs # `conflow validate`
+│ ├── watch.rs # `conflow watch`
+│ ├── graph.rs # `conflow graph`
+│ ├── cache.rs # `conflow cache`
+│ └── rsr.rs # `conflow rsr`
+├── pipeline/ # Pipeline orchestration
+│ ├── definition.rs # Pipeline, Stage, Tool types
+│ ├── dag.rs # Dependency graph
+│ ├── executor.rs # Pipeline execution
+│ └── validation.rs # Pipeline validation
+├── executors/ # Tool executors
+│ ├── cue.rs # CUE executor
+│ ├── nickel.rs # Nickel executor
+│ └── shell.rs # Shell executor
+├── cache/ # Caching system
+│ ├── filesystem.rs # File-based cache
+│ └── hash.rs # Content hashing (BLAKE3)
+├── analyzer/ # Config analysis
+│ ├── complexity.rs # Complexity metrics
+│ ├── config_detector.rs # Format detection
+│ └── recommender.rs # Tool recommendations
+├── rsr/ # RSR integration
+│ ├── compliance.rs # Compliance checking
+│ ├── requirements.rs # RSR requirements
+│ ├── schemas.rs # Schema registry
+│ ├── hooks.rs # External integration
+│ ├── remediation.rs # Auto-fix
+│ ├── badges.rs # Badge generation
+│ ├── diff.rs # Compliance diffs
+│ ├── config.rs # .rsr.yaml loading
+│ └── templates.rs # Template generation
+├── errors/ # Error handling
+│ ├── mod.rs # Error types (miette)
+│ └── educational.rs # Helpful error messages
+└── utils/ # Utilities
+ ├── colors.rs # Terminal colors
+ └── spinner.rs # Progress indicators
+```
+
+## Key Files
+
+### `.conflow.yaml` Format
+
+```yaml
+version: "1"
+name: pipeline-name
+
+stages:
+ - name: stage-name
+ tool:
+ type: cue | nickel | shell
+ command: vet | export | eval |
+ # Tool-specific options...
+ input: | from_stage:
+ output:
+ depends_on: []
+ description: Optional description
+
+cache:
+ enabled: true
+ directory: .conflow-cache
+```
+
+### Important Types
+
+```rust
+// Pipeline definition (src/pipeline/definition.rs)
+pub struct Pipeline {
+ pub version: String,
+ pub name: String,
+ pub stages: Vec,
+ pub cache: Option,
+}
+
+// Stage definition
+pub struct Stage {
+ pub name: String,
+ pub tool: Tool,
+ pub input: Input,
+ pub output: Option