039-release-and-out-of-tree-packaging

Releases and out-of-tree packaging: a tagged version a consumer pins, images that exist under the names the manifests use, and a runtime image a cell in another repository builds on

Lifecycle approvedImplementation completeVerification unknownQualification unknown

The thesis says consumers depend on published crates and pin a version (002 D5), and nothing is published: no tag, no release, no crate, no image. The one route that works is a git dependency pinned to a sha. cargo package fails on rahi-ops because it includes a template from outside the crate, which also blocks rahi-cli, the crate that carries Cell. The deploy manifests name ghcr.io/bartekus/rahi:latest, a namespace and a tag no workflow produces. The image recipe builds only a package of this workspace, and a cell's static directory named under CARGO_MANIFEST_DIR does not exist in the image (hello-cell's page answers 404 there). This spec defines the version and the release, publishes the images a tag builds under the names the manifests use, adds a runtime image an out-of-tree cell builds on, makes static assets exist in the image, makes the crates packageable, and proves the consumer stanza on every release.

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "file",
      "path": "docker/runtime.Dockerfile"
    }
  • establishes
    {
      "kind": "file",
      "path": ".github/workflows/release.yml"
    }
  • establishes
    {
      "kind": "file",
      "path": ".github/publish-crate.sh"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/rahi-ops/rauthy.env.template"
    }
  • establishes
    {
      "kind": "file",
      "path": "CHANGELOG.md"
    }
  • establishes
    {
      "kind": "file",
      "path": ".github/consumer-cell/"
    }
  • extends
    {
      "nature": "additive",
      "spec": "010-workspace-and-core-types",
      "unit": {
        "anchor": "workspace.package",
        "file": "Cargo.toml",
        "kind": "section"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "010-workspace-and-core-types",
      "unit": {
        "anchor": "workspace.dependencies",
        "file": "Cargo.toml",
        "kind": "section"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "031-single-container-packaging",
      "unit": {
        "kind": "file",
        "path": ".github/workflows/image.yml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "031-single-container-packaging",
      "unit": {
        "kind": "file",
        "path": "docker/Dockerfile"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "031-single-container-packaging",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-ops/src/rauthy_env.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "032-cluster-topology",
      "unit": {
        "kind": "file",
        "path": "deploy/k8s/kustomization.yaml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "032-cluster-topology",
      "unit": {
        "kind": "file",
        "path": "deploy/k8s/statefulset.yaml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "032-cluster-topology",
      "unit": {
        "kind": "file",
        "path": "deploy/k8s/migrate-job.yaml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "030-operational-verbs",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-cli/src/serve.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "034-hello-cell",
      "unit": {
        "kind": "file",
        "path": "apps/hello-cell/src/cell.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "032-cluster-topology",
      "unit": {
        "kind": "file",
        "path": "deploy/README.md"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "034-hello-cell",
      "unit": {
        "kind": "file",
        "path": "apps/hello-cell/README.md"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "015-kernel-manifest-and-adjudication",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-kernel/src/manifest.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "015-kernel-manifest-and-adjudication",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-kernel/tests/manifest.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "015-kernel-manifest-and-adjudication",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-kernel/testdata/manifests/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "034-hello-cell",
      "unit": {
        "kind": "file",
        "path": "apps/hello-cell/manifest.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "010-workspace-and-core-types",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-types/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "011-store-hiqlite",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-store/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "013-ledger-decision-chain",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-ledger/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "015-kernel-manifest-and-adjudication",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-kernel/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "020-edge-server",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-edge/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "021-idp-proxy-and-discovery",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-idp/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "030-operational-verbs",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-ops/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "030-operational-verbs",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-cli/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "033-dev-substrate-and-harness",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-harness/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "034-hello-cell",
      "unit": {
        "kind": "file",
        "path": "apps/hello-cell/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "030-operational-verbs",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-cli/src/cell.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "030-operational-verbs",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-ops/tests/common/mod.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "020-edge-server",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-edge/testdata/manifest.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "022-session-and-principal",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-idp/testdata/oidc/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "035-denials-survive-shutdown",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-cli/tests/shutdown.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "043-patched-dependency-adoption",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-cli/tests/stop_outcome.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "030-operational-verbs",
      "unit": {
        "kind": "file",
        "path": "crates/rahi-cli/tests/cli.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "031-single-container-packaging",
      "unit": {
        "kind": "file",
        "path": "docker/smoke.sh"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "032-cluster-topology",
      "unit": {
        "kind": "file",
        "path": "scripts/k8s-validate.sh"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "032-cluster-topology",
      "unit": {
        "kind": "file",
        "path": "deploy/k8s/secret.example.yaml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-agentic-harness",
      "unit": {
        "kind": "file",
        "path": "spec-spine.toml"
      }
    }

Source headings

  1. 039: Releases and out-of-tree packaging
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 4. Functional requirements
  6. 5. Acceptance criteria
  7. 6. Out of scope
  8. 7. Resolved decisions
  9. Verification

Frozen anchors

No frozen anchors declared.