Proof

Real artifacts, not promises

Everything below is what Rhodd actually writes — plain-text files you can open, diff and commit. Rhodd works without AI; AI becomes safer when Rhodd gives it this explicit state.

The pass

One deterministic run

Five real commands, each copy-runnable. No compile step, no infrastructure-as-code flag — just validate, graph, plan, generate, quality.

compile
bash
$ rhodd validate     # schema + rules ......... ok
$ rhodd graph        # resolve dependencies ... acyclic · 0 cycles
$ rhodd plan         # dry-run write set ...... 42 writes
$ rhodd generate     # emit baseline + .rhodd/  38 files
$ rhodd quality      # quality gates .......... 9 / 9 passed
The shape

Your system, as data

The graph is real output — resolved, proved acyclic, and emitted alongside the rest of the .rhodd/ state directory.

  • Service node: web (runtime react-ts-zod).
  • Service node: api (runtime node-nest).
  • Service node: audit (runtime go-http).
  • Service node: jobs (runtime node-worker).
  • Module node: postgres.
  • Module node: redis.
  • Edge: web depends on api over http.
  • Edge: audit depends on api over http.
  • Edge: jobs depends on api over http.
  • Edge: api owns postgres.
  • Edge: api owns redis.
  • Edge: jobs depends on postgres.
  • Edge: jobs depends on redis.
  • Graph is acyclic, proven by topological order.
Service nodeModule nodeownsdepends_onacyclic · topological order
.rhodd/generated
model.json3.4 kb
graph.json2.8 kb
plan.json4.1 kb
manifest.json1.6 kb
ownership.json1.3 kb
quality.json1.1 kb
ai/# handoff context
·.rhodd.lockreproducible
The outputs

Inspect every artifact

Each tab is a real file Rhodd generates — the graph, the planned write set, the emitted manifest, ownership records, quality report, and the lock receipt.

{
  "schema_version": "rhodd.full_project.graph.v1",
  "system_name": "fullstack-saas",
  "nodes": [
    { "name": "web",      "kind": "app",   "runtime": "react-ts-zod", "provides": ["http"],   "consumes": ["http"] },
    { "name": "api",      "kind": "app",   "runtime": "node-nest",    "provides": ["http"],   "consumes": ["postgres", "redis"] },
    { "name": "audit",    "kind": "app",   "runtime": "go-http",      "provides": ["http"],   "consumes": ["http"] },
    { "name": "jobs",     "kind": "app",   "runtime": "node-worker",  "provides": ["worker"], "consumes": ["http", "postgres", "redis"] },
    { "name": "postgres", "kind": "infra", "runtime": "postgres",     "provides": ["postgres"] },
    { "name": "redis",    "kind": "infra", "runtime": "redis",        "provides": ["redis"] }
  ],
  "edges": [
    { "dependent": "api",   "dependency": "postgres" },
    { "dependent": "api",   "dependency": "redis" },
    { "dependent": "audit", "dependency": "api" },
    { "dependent": "jobs",  "dependency": "api" },
    { "dependent": "jobs",  "dependency": "postgres" },
    { "dependent": "jobs",  "dependency": "redis" },
    { "dependent": "web",   "dependency": "api" }
  ],
  "topological_order": ["postgres", "redis", "api", "audit", "jobs", "web"],
  "entities": [
    { "name": "User",           "owner": "services/api/src/modules/users" },
    { "name": "Session",        "owner": "services/api/src/modules/auth" },
    { "name": "BillingAccount", "owner": "services/api/src/modules/billing" },
    { "name": "AuditEvent",     "owner": "services/audit" },
    { "name": "JobRun",         "owner": "services/jobs" }
  ]
}
.rhodd/ · generated✓ deterministic · identical hashes on re-run
Determinism

Same input, byte-identical output

The lock receipt hashes the input and the generated tree. Re-run with the same input and the output hash is identical — that’s the reproducibility guarantee, on paper.

input_hash
sha256:a91f…3e0c
rhodd.yaml + env
output_hash
sha256:77bd…12af
generated tree
Compiler
rhodd@0.1.0
reproducible
true
identical on re-run
Deployment

Export — files, not live deploys

Deployment export writes Argo CD, Flux or generic Kubernetes manifest files. Files, not live deploys — guarded apply is opt-in, and no cluster calls happen by default.

argocd flux generic
.rhodd/export/manifests
argocd/# Application manifests
flux/# Kustomization + HelmRelease
generic/# plain Kubernetes YAML
api.application.yaml
yaml
# .rhodd/export/argocd/api.application.yaml
# a generated file — guarded apply is opt-in, no cluster calls by default
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: api
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/rhodd-fdn/rhodd
    path: k8s/api
  destination:
    namespace: acme
  syncPolicy: {}   # manual sync — nothing applies on its own

See it for yourself.

Install the CLI, compile a baseline, and read every artifact it writes — all on your machine.