forjar 1.3.0

Rust-native Infrastructure as Code — bare-metal first, BLAKE3 state, provenance tracing
Documentation
# Sovereign CI — calls reusable workflow from paiml/.github
# Change once in paiml/.github → applies to all repos
#
# Jobs provided by sovereign-ci.yml:
#   test: cargo test --lib (self-hosted clean-room)
#   lint: cargo clippy --all-targets -- -D warnings + cargo fmt --check
#   coverage: cargo llvm-cov + codecov upload
#   security: cargo audit (ubuntu-latest, continue-on-error)
#   provenance: SLSA attest-build-provenance
#   gate: aggregates test+lint results
name: CI

on:
  push:
    branches: [main, master]
  pull_request:
    branches: [main, master]
  workflow_dispatch:

concurrency:
  group: ci-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  ci:
    uses: paiml/.github/.github/workflows/sovereign-ci.yml@main
    with:
      repo: ${{ github.event.repository.name }}
    secrets: inherit

  # Top-level gate: satisfies org ruleset which requires check named "gate".
  # The reusable workflow produces "ci / gate" but rulesets need exact match on "gate".
  gate:
    runs-on: ubuntu-latest
    needs: [ci]
    if: always()
    steps:
      - name: Check required jobs
        run: |
          if [ "${{ needs.ci.result }}" != "success" ]; then
            echo "ci failed: ${{ needs.ci.result }}"
            exit 1
          fi
          echo "All required jobs passed"