Skip to content

SaaS Review And Trusted Handoff

Side-effectful SaaS packages are review artifacts until openudon run validates approval and writes a trusted-runner config. Synthesis, build, promote, assess, iCoT, and eval commands do not send messages, create records, upload files, or call production endpoints. For a provider-free release demo that exercises this boundary, see SaaS Operator Release Path.

Review Evidence

For SaaS packages, expected/review.md should give a reviewer these sections:

  • minimum review package with every digest-covered artifact;
  • inferred steps and explicit cross-service bindings;
  • side-effect summary and side-effect risk review;
  • approval state requirements;
  • approval artifact checklist;
  • credential binding audit and credential scope matrix;
  • unresolved risks;
  • trusted-runner dry-run and proof-run commands.

The side-effect risk review names the step, service or runtime source, operation or HTTP method/path when known, and the approval path required before execution. The credential scope matrix keeps each symbolic binding associated with the step and OpenAPI operation that uses it. Credential values must not appear in review evidence, handoff manifests, approvals, run configs, logs, prompts, or examples.

Approval JSON

Create approval JSON only after reviewing the current package and its digest:

mkdir -p approvals
go run ./cmd/openudon approval-template \
  --example ./examples/eval/order-fulfillment-chain \
  --state approved_for_sandbox \
  --reviewer "Reviewer Name" \
  > approvals/order-fulfillment-chain-sandbox.json

Approval JSON uses openudon.approval.v1. Required fields are scope, state, reviewer, approved_at, and package_sha256; optional fields are expires_at and notes. If any digest-covered file changes, discard the old approval and create a new one after review.

Use approved_for_sandbox for sandbox or test-endpoint proof runs. Production tier execution requires approved_for_production and an operator-controlled trusted executor environment.

Dry Run First

Run a dry run before allowing the executor to receive a config:

go run ./cmd/openudon run \
  --example ./examples/eval/order-fulfillment-chain \
  --tier sandbox \
  --approval approvals/order-fulfillment-chain-sandbox.json \
  --dry-run

The dry run validates the handoff manifest, stored and current quality reports, approval scope, approval state, expiry, package digest, tier compatibility, credential-value policy, and direct-production policy. It writes a non-secret openudon.executor-run.v1 config with package paths, package_sha256, tier, workdir, and credential binding names, then stages the package and verifies the staged digest without requiring credential values. It also writes openudon.run-evidence.v1 at <workdir>/run-evidence.json with gate outcomes, staged paths, and credential binding names only.

Remove --dry-run only in a trusted operator environment with sandbox targets or a production approval, reviewed credential bindings, and a configured OPENUDON_EXECUTOR.

Current Strict SaaS Fixtures

The strict multi-service fixtures that should preserve this evidence shape are:

  • itops-slack-jira-issue-intake;
  • itops-incident-response-archive;
  • order-fulfillment-chain.

Supporting side-effect fixtures such as Gmail send, Slack post, webhook send, Drive upload, and sandbox user/order create workflows should keep the same approval, digest, credential, and trusted-handoff posture.