Production Readiness

Copy Markdown View Source

Squidie provides a supported 0.1.x journal runtime for embedded host-app workflows.

Squidie is ready to adopt inside host applications that can own their worker placement, queue/leasing strategy, deploy path, and side-effect safety. Start with a bounded workflow class, prove it in the host app, then expand the surface as operational confidence grows.

Feature Readiness Map

AreaCurrent stanceVerification or evidenceHost responsibility
Workflow DSL and normalized specsSupportedFormatter rules, workflow authoring docs, reference workflows, and test coverageKeep workflow modules backend-neutral and validate payload contracts
Journal-backed starts and executionSupportedSquidie.start/3, Squidie.execute_next/1, smoke coverage, and example host appSupervise workers and size execution capacity
Postgres-compatible Ecto storageSupported baselineInstalled Squidie migration and storage strategy docsOwn database backups, migrations, pooling, and retention policy
Dispatch claims and heartbeatsSupportedJournal lease fencing and heartbeat coverageSet worker owner ids, claim durations, and heartbeat intervals for real step duration
Retries and terminal failuresSupportedWorkflow retry policy tests and example smoke pathsMake external side effects idempotent and alert on terminal failures
Manual pause and approval controlsSupportedResume, approve, reject, and restart-boundary coverageAuthorize operators and persist/redact approval metadata safely
CancellationSupportedRuntime signal and cancellation coverageDecide which workflows can be cancelled and document terminal-state handling
ReplaySupported, scopedReplay safety gates and irreversible-step checksRestrict replay to workflows whose side effects are reversible or explicitly reviewed
Cron activationSupportedCron payload boundary and example scheduler pathsOwn scheduler delivery, idempotency keys, and intended-window policy
Runtime-authored specsSupported, scopedstart_spec/3, start_spec/4, safe action registry, editor spec validationMaintain an action allowlist; replay is not yet available for these runs
Child workflow startsSupported, scopedstart_child_run/4 and /5 with parent lineage and idempotent child identityPick stable child keys and inspect parent-child lineage in host tooling
Dynamic workSupported, scopedPreview, record, schedule, graph overlays, and duplicate-node validationKeep action keys allowlisted; review replay safety for dynamic steps
Graph inspection and explanationsSupportedProjection-backed inspect_run_graph/2, explain_run/2, and graph contractsRedact host-domain inputs, outputs, errors, and metadata before exposing externally
Actor-scoped read viewsSupportedVisibility policy docs and read-model redaction APIsDefine tenant/user roles and apply visibility policies at host boundaries
Bedrock-backed delivery exampleReference integrationBedrock minimal host app, stress coverage, leases, retry requeue, and dead-letter checksConfigure Bedrock or another backend as host infrastructure; workflow modules stay backend-neutral
Soak/load evidenceBounded verificationmix example.soak and example resilience checksRun host-specific soak/load under expected production traffic and deploy patterns

Initial Rollout Guidance

For the first production workflow, keep the scope concrete:

  • record the Squidie version, Elixir/OTP versions, database version, queue backend, and storage adapter
  • apply Squidie migrations in staging before production
  • choose one workflow class with clear operator value and well-understood side effects
  • verify that workflow through the host worker and deploy path
  • set worker owner ids, worker count, claim duration, and heartbeat interval for that workflow class
  • fence external side effects with idempotency keys, compensating steps, or explicit irreversible boundaries
  • expose enough inspection for operators to see run state, terminal failures, retry history, and manual actions
  • apply host redaction or actor-visibility policy before exposing inspection payloads outside trusted operators

Example Verification Entry Points

The example host app provides the repeatable checks:

cd examples/minimal_host_app
MIX_ENV=test mix example.smoke
MIX_ENV=test mix example.resilience
MIX_ENV=test mix example.soak

These checks are meant to answer different questions:

  • example.smoke: does the basic embedded workflow path work?
  • example.resilience: do queued, delayed, retrying, and paused-then-resumed runs survive worker and scheduler restart boundaries?
  • example.soak: does the runtime remain stable under a bounded mix of success, retry, replay, and cancellation traffic?

Decision Rule

Use Squidie in production for a bounded workflow class when:

  1. the rollout guidance above is satisfied for that workflow class,
  2. the example verification paths are green on the selected release baseline,
  3. the host app has verified the same workflow through its own worker and deploy path.

Expand to more workflow classes as the host app gains evidence around traffic volume, operator handling, redaction, and side-effect safety.