Production Readiness

The Short Version

RDLLM 1.0 can be release-ready software without claiming that a particular deployment is production-certified. Deployment approval is fail-closed:

  1. the operator configures the required controls;
  2. independent auditors sign current evidence with Ed25519 keys;
  3. the operator supplies a separately managed trust store;
  4. RDLLM verifies identity, deployment binding, expiry, evidence hashes, key permissions, and signatures;
  5. direct settlement additionally requires a trusted payment-processor attestation.

Bundled profiles contain no trusted external attestations, so they correctly report production_grade_claim_allowed: false. This is a safety result, not a failed software release.

RDLLM is production-grade only when an operator can prove that attribution, source grounding, rights enforcement, settlement controls, and public audit surfaces are enforced in the live deployment. A green repository test suite is necessary, but it is not enough by itself.

The production baseline is intended for individuals, companies, institutions, governments, model providers, and public-sector deployments. Operators can run RDLLM as an open-source attribution and royalty platform without having paying customers, but they still need production controls before claiming direct creator settlement, verified source reliance, or public-sector readiness.

Baseline

Run the production-readiness gate:

PYTHONPATH=src python3 tools/production_readiness.py
PYTHONPATH=src python3 tools/production_profile_matrix.py

Run the production service smoke:

PYTHONPATH=src python3 tools/deployment_audit.py
PYTHONPATH=src python3 tools/service_smoke.py
PYTHONPATH=src python3 tools/service_load_smoke.py
PYTHONPATH=src python3 tools/provider_live_smoke.py
PYTHONPATH=src python3 tools/security_abuse_smoke.py

Evaluate only an operator profile:

PYTHONPATH=src python3 tools/production_readiness.py \
  --profile examples/production_readiness_profile.json \
  --profile-only

To evaluate external evidence, add the trust store explicitly:

PYTHONPATH=src python3 tools/production_readiness.py \
  --profile /etc/rdllm/production_readiness_profile.json \
  --trust-store /etc/rdllm/deployment_trust_store.json \
  --profile-only

The trust store follows deployment_trust_store.schema.json. It must be controlled outside the deployment being evaluated. A profile cannot trust its own signer.

Create an operator-specific profile and readiness report:

rdllm-operator-profile create \
  --template company \
  --operator-name "Acme RDLLM" \
  --security-contact security@example.com \
  --output artifacts/acme_production_profile.json \
  --write-report artifacts/acme_production_readiness_report.json

Validate an existing operator-controlled profile:

rdllm-operator-profile validate \
  --profile artifacts/acme_production_profile.json \
  --trust-store /etc/rdllm/deployment_trust_store.json \
  --write-report artifacts/acme_production_readiness_report.json

An independent auditor can create an evidence attestation, and the operator can attach it without hand-editing JSON:

rdllm-deployment-attestation create \
  --profile artifacts/acme_production_profile.json \
  --attestation-type security_assessment \
  --issuer "Independent Security Auditor" \
  --key-id https://auditor.example/keys/2026-01 \
  --private-key /secure/auditor-ed25519-private.pem \
  --evidence audit/security-assessment.pdf \
  --evidence-uri https://auditor.example/reports/acme-2026 \
  --expires-at 2027-07-10T00:00:00Z \
  --output artifacts/security_assessment.attestation.json

rdllm-deployment-attestation attach \
  --profile artifacts/acme_production_profile.json \
  --attestation artifacts/security_assessment.attestation.json \
  --output artifacts/acme_production_profile.attested.json

rdllm-deployment-attestation verify \
  --profile artifacts/acme_production_profile.attested.json \
  --trust-store /etc/rdllm/deployment_trust_store.json

Repeat the create-and-attach step for each missing evidence type reported by the verifier. The payment_processor type is required only when direct payout is requested. Signing evidence does not execute a payment.

From a repository checkout, PYTHONPATH=src python3 tools/operator_profile.py provides the same create and validate commands. The command output validates against docs/schemas/operator_profile_verification.schema.json.

Before production display traffic, run the installed launch gate against the operator profile, service config, bootstrap manifest when present, and a saved service attribution response:

rdllm-operator-launch-gate \
  --profile /etc/rdllm/production_readiness_profile.json \
  --trust-store /etc/rdllm/deployment_trust_store.json \
  --service-config /etc/rdllm/service_config.json \
  --service-root /etc/rdllm \
  --bootstrap-dir /etc/rdllm \
  --response /tmp/rdllm-service-response.json \
  --display-text /tmp/rdllm-copied-output.txt

The launch gate returns blocked unless the profile is ready, runtime service readiness passes, the bootstrap verifies when supplied, and the saved response footer plus copied/exported public answer text pass verification. A response is display-ready only when grounding quality is verified, source_grounding_acceptance is passed, and copied text verification is passed; unattributed, warning, failed, policy-blocked, or registry-disputed grounding blocks production display. Unsafe grounding must surface in audit_errors. Internally consistent blocked responses may be verified for audit, but rdllm-operator-launch-gate requires the saved response itself to be ready before it allows traffic. --skip-response is only for profile/config preflight and should not be used as production display approval. Runtime checks require RDLLM_SERVICE_TOKEN_SHA256 or the configured token-hash environment variable to be set.

For backup and restore controls, create a recovery manifest over the operator root and verify it after restore:

rdllm-operator-recovery create \
  --root /etc/rdllm \
  --output /var/lib/rdllm/recovery_manifest.json
rdllm-operator-recovery verify \
  --manifest /var/lib/rdllm/recovery_manifest.json \
  --root /etc/rdllm

For final production acceptance, aggregate launch, response-display, audit, and recovery evidence into one report:

rdllm-operator-acceptance \
  --profile /etc/rdllm/production_readiness_profile.json \
  --service-config /etc/rdllm/service_config.json \
  --service-root /etc/rdllm \
  --bootstrap-dir /etc/rdllm \
  --response /tmp/rdllm-service-response.json \
  --display-text /tmp/rdllm-copied-output.txt \
  --audit-log /var/lib/rdllm/audit/service.jsonl \
  --recovery-manifest /var/lib/rdllm/recovery_manifest.json \
  --recovery-root /etc/rdllm \
  --output /var/lib/rdllm/operator_acceptance_report.json

Then verify the saved report hash and evidence bindings:

rdllm-operator-acceptance verify \
  --report /var/lib/rdllm/operator_acceptance_report.json

The acceptance report is production-ready only when the response-bound audit row is clean: latest_entry_status must be ready and latest_audit_error_count must be 0. A hash-valid audit log with a blocked latest row remains useful for audit, but it must not approve production handoff.

Cross-role release evidence must also pass the operator acceptance matrix:

rdllm-operator-acceptance-matrix \
  --output-dir /var/lib/rdllm/acceptance-matrix \
  --write-report /var/lib/rdllm/operator_acceptance_matrix.json

The matrix bootstraps and accepts individual, company, institution, government, and public_sector roles. It fails if any role cannot produce a ready acceptance report, a production-display-ready sourced response, matching audit/recovery evidence, or the expected settlement/public-sector posture.

Operator templates are available under examples/production_profiles/:

examples/production_readiness_profile.json is retained as a compatibility alias for the public-sector processor-attested profile used by the checked-in readiness report.

Write a machine-readable report:

PYTHONPATH=src python3 tools/production_readiness.py \
  --write-report artifacts/repository_production_readiness_report.json
PYTHONPATH=src python3 tools/production_readiness.py \
  --verify-report artifacts/repository_production_readiness_report.json
rdllm-production-readiness-verify \
  --report artifacts/repository_production_readiness_report.json
PYTHONPATH=src python3 tools/production_readiness.py \
  --profile-only \
  --write-report artifacts/production_readiness_report.json

Profiles use rdllm-production-readiness-profile/v1 and are described by docs/schemas/production_readiness_profile.schema.json; the installed rdllm-operator-profile command includes a packaged copy of the same templates and profile schema. Reports use rdllm-production-readiness-report/v1 and are described by docs/schemas/production_readiness_report.schema.json. The default repository audit also checks docs, profile-matrix coverage, cross-role operator acceptance, and proof-pack artifact prerequisites before allowing production claims. Its JSON summary includes acceptance_matrix_status, acceptance_matrix_operator_template_count, acceptance_matrix_passed_count, and acceptance_matrix_production_acceptance_allowed_count. Repository-mode output uses rdllm-production-readiness-repository-report/v1, validates against docs/schemas/production_readiness_repository_report.schema.json, and includes repository_report_hash. --verify-report verifies a saved repository-mode report after handoff or publication; installed-package users can run rdllm-production-readiness-verify --report <report.json> without a source checkout.

External Control Anchors

RDLLM maps its production controls to current public baselines:

These anchors do not replace local law, procurement, payment, tax, accessibility, records, or sector-specific duties. They define the minimum technical posture RDLLM requires before a deployment may claim production-grade operation.

Required Controls

Deployment identity:

Public surfaces:

Runtime controls:

Security controls:

Evidence controls:

Governance controls:

Settlement controls:

Public-sector controls for government and public-sector operators:

Operational SLOs:

Production Claim Rules

A deployment may claim RDLLM production-grade operation only when:

If any control fails, the deployment may still be used as a development or pilot system, but it must not claim production-grade direct creator settlement, government readiness, or verified source reliance.