DockerUbuntu plugin capture: synthetic shop fixture Captured 2026-10-17 with the packaged DockerUbuntu plugin (darwin-arm64, commit 1ace25e) against a local Docker Engine. The shop app below is a synthetic fixture written for this page, not a customer application. Each run used a fresh container built from the same pinned Ubuntu 24.04 base image, with no network. Timings are omitted. The private binding also selected the local Docker Engine socket; that path is omitted. Setup commands also passed a fixture cleanup label, omitted below, and the build context is shown relative to the fixture. The plugin was driven directly through the pinned Reflow plugin host (bind, invoke, compare, render), not by a `reflow apply` run. Invocations are written in flow syntax for readability; the checkpoint names label them here and were not stored as Reflow checkpoints. == Run: main == # Test setup (your environment, not run by the plugin) $ docker build --quiet --pull=false --network=none --tag shop-test:main ./main sha256:babae3a5b3ed83249994656284daa20d7c7c1ddf78c00cd580bfe5eb93962246 $ docker run --detach --pull=never --network=none --name shop-test-main shop-test:main 3c643e2680c5862c4ceeeb81cfa11b862d276abad4e416b54d457557047c92c5 # DockerUbuntu binding {"container":"shop-test-main","cwd":"/workspace"} # container.bash command="./bin/test" checkpoint="tests" status: succeeded exitCode: 0 truncated: false --- stdout.txt (153 B, sha256 dabf6b238a3ca2d18d562b2e858bc08715dffe6855aaf32aa4e43d04d1f10ca6) shop 1.4.0 tests on Ubuntu 24.04.5 LTS ok - full refund returns the payment ok - half refund splits the payment ok - free order refunds nothing 3 passed --- stderr.txt (0 B, sha256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855) # container.bash command="./bin/package" files="[\"dist/release.env\"]" checkpoint="release-package" status: succeeded exitCode: 0 truncated: false --- stdout.txt (61 B, sha256 2aec6c47fed70189398e7c8c63a3d8134152a6b4668bf9109f7b8b01b93ea50c) packaged dist/shop-1.4.0.tar.gz dist/release.env: 4 settings --- stderr.txt (0 B, sha256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855) --- files/dist/release.env (68 B, sha256 9f564b64ca9d4ed86d008113240de2c6a786c1b19639340b9a88dc169ff37921) CURRENCY=USD LOG_LEVEL=warn RECEIPT_EMAILS=on REFUND_WINDOW_DAYS=30 == Run: pr == # Test setup (your environment, not run by the plugin) $ docker build --quiet --pull=false --network=none --tag shop-test:pr ./pr sha256:b83b8cfb3206df7f7760bc04da0d113fb8b48e058b6324655625282f09ec7739 $ docker run --detach --pull=never --network=none --name shop-test-pr shop-test:pr d2c3ea9cda2a04f21ec04ab50c960e427d60984b5b2624c91b2d65f8a9762069 # DockerUbuntu binding {"container":"shop-test-pr","cwd":"/workspace"} # container.bash command="./bin/test" checkpoint="tests" status: succeeded exitCode: 0 truncated: false --- stdout.txt (153 B, sha256 dabf6b238a3ca2d18d562b2e858bc08715dffe6855aaf32aa4e43d04d1f10ca6) shop 1.4.0 tests on Ubuntu 24.04.5 LTS ok - full refund returns the payment ok - half refund splits the payment ok - free order refunds nothing 3 passed --- stderr.txt (0 B, sha256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855) # container.bash command="./bin/package" files="[\"dist/release.env\"]" checkpoint="release-package" status: succeeded exitCode: 0 truncated: false --- stdout.txt (61 B, sha256 2aec6c47fed70189398e7c8c63a3d8134152a6b4668bf9109f7b8b01b93ea50c) packaged dist/shop-1.4.0.tar.gz dist/release.env: 4 settings --- stderr.txt (0 B, sha256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855) --- files/dist/release.env (68 B, sha256 634287c85c5ec53a69f472c054948a17bc3331434296c605a8bb755c6f4fd378) CURRENCY=USD LOG_LEVEL=warn RECEIPT_EMAILS=on REFUND_WINDOW_DAYS=14 == Comparison: main run (before) -> pr run (after) == # tests: State and evidence unchanged (equal: true) stdout.txt: same bytes stderr.txt: same bytes # release-package: State and evidence changed (equal: false) stdout.txt: same bytes stderr.txt: same bytes files/dist/release.env: 9f564b64ca9d -> 634287c85c5e Artifact byte comparison above is derived from the retained digests; the plugin's comparison reports the summary line. == Fixture source: main == --- Dockerfile # Synthetic marketing fixture: a tiny shop app in a clean Ubuntu 24.04 image. FROM ubuntu@sha256:008173c23f95b170204355c12626cb5a965d779a7e1283b09e9cffbb1bf33ca3 WORKDIR /workspace COPY . /workspace CMD ["sleep", "infinity"] --- VERSION 1.4.0 --- bin/package #!/usr/bin/env bash # Build the release archive and the settings it ships with. set -euo pipefail version=$(cat VERSION) mkdir -p dist declare -A settings # Production values override defaults; the last assignment wins. while IFS='=' read -r key value; do [[ -z $key || $key == \#* ]] && continue settings[$key]=$value done < <(cat config/defaults.env config/production.env) for key in "${!settings[@]}"; do printf '%s=%s\n' "$key" "${settings[$key]}"; done | LC_ALL=C sort > dist/release.env tar -czf "dist/shop-$version.tar.gz" bin lib config VERSION dist/release.env echo "packaged dist/shop-$version.tar.gz" echo "dist/release.env: $(wc -l < dist/release.env) settings" --- bin/test #!/usr/bin/env bash # Run the refund rules against the Bash in this environment. set -euo pipefail source lib/refund.sh source /etc/os-release echo "shop $(cat VERSION) tests on $PRETTY_NAME" passed=0 check() { if [[ $3 == "$2" ]]; then echo "ok - $1"; passed=$((passed + 1)) else echo "not ok - $1: expected $2, got $3"; exit 1; fi } check "full refund returns the payment" 25.00 "$(refund_amount 2500 full)" check "half refund splits the payment" 12.50 "$(refund_amount 2500 half)" check "free order refunds nothing" 0.00 "$(refund_amount 0 full)" echo "$passed passed" --- config/defaults.env # Defaults for every environment. CURRENCY=USD LOG_LEVEL=info RECEIPT_EMAILS=on REFUND_WINDOW_DAYS=30 --- config/production.env # Production overrides. LOG_LEVEL=warn --- lib/refund.sh # refund_amount -> dollars with two decimals refund_amount() { local paid=$1 kind=$2 cents case $kind in full) cents=$paid ;; half) cents=$((paid / 2)) ;; *) return 2 ;; esac printf '%d.%02d\n' $((cents / 100)) $((cents % 100)) } == Fixture change: main -> pr == diff -ru main/config/defaults.env pr/config/defaults.env --- main/config/defaults.env +++ pr/config/defaults.env @@ -1,5 +1,5 @@ -# Defaults for every environment. +# Defaults for every environment. Shorter refund window for local test fixtures. CURRENCY=USD LOG_LEVEL=info RECEIPT_EMAILS=on -REFUND_WINDOW_DAYS=30 +REFUND_WINDOW_DAYS=14