@@ -282,7 +282,7 @@ Status values: **accepted**, **superseded by CAP-NNN**,
282282 ` /health ` (liveness), ` /healthz ` (readiness, checks Postgres), and
283283 startup schema creation — ** no domain surface yet** . Domain endpoints
284284 arrive per-protocol in later iterations (REST/gRPC r23, GraphQL r24,
285- Kafka r25). A generic ** ` demos/smoke -service.sh <name> ` ** builds, deploys,
285+ Kafka r25). A generic ** ` demos/demo -service.sh <name> ` ** builds, deploys,
286286 and asserts the probes for any scaffolded service. ** notification-service
287287 gets the same ` /health ` surface** even though it will ultimately be
288288 Kafka-consumer-only, because a probe-able surface is useful for testing
@@ -977,7 +977,7 @@ first install.
977977### Outcome (verified on Fedora 44, r27b)
978978
979979Green first try. ` ingest-openmetadata.sh ` ran all three Jobs to completion and
980- ` smoke -om-lineage.sh` passed every assertion — both services, the three spine
980+ ` demo -om-lineage.sh` passed every assertion — both services, the three spine
981981entities, and the topic's one-upstream/one-downstream lineage. The flagged
982982verification risk did ** not** materialize: the OM 1.12.8 Postgres connector
983983(` authType.password ` , ` sslMode: require ` against CNPG), the bare Kafka connector
@@ -1017,7 +1017,7 @@ appropriate caution, not a deferred bug.
10171017 on a capstone service. The smoke hits the gateway (port-forwarded under
10181018 rootless podman, the §11 Option A), so no client needs meshing.
10191019 - ** Weights as ` __W_V1__ ` /` __W_V2__ ` placeholders** in ` istio/routing.yaml ` ;
1020- ` smoke -canary.sh` substitutes them, so the same file drives 90/10, 50/50,
1020+ ` demo -canary-verify .sh` substitutes them, so the same file drives 90/10, 50/50,
10211021 0/100 — the progressive-canary operation is just re-applying the
10221022 VirtualService.
10231023 - ** Selector immutability handled explicitly.** The v1 Deployment's selector
@@ -1122,9 +1122,9 @@ graphql-gateway service:80, concurrency target 5, min 0 / max 3). Install via
11221122"false"` so the injection-labeled namespace doesn't mesh them — keeping the
11231123mesh scoped to order-service (CAP-024) and the autoscaling paths clear of Envoy.
11241124The §17 stack-table line was corrected to "Scale graphql-gateway on HTTP load."
1125- Two smokes prove the full 0→up→0 lifecycle: ` demos/smoke -keda-kafka.sh ` (produces
1125+ Two smokes prove the full 0→up→0 lifecycle: ` demos/demo -keda-kafka.sh ` (produces
11261126a 500-message raw burst to create lag — the consumer auto-commits and skips
1127- undecodable messages, so no Avro path is needed) and ` demos/smoke -keda-http.sh `
1127+ undecodable messages, so no Avro path is needed) and ` demos/demo -keda-http.sh `
11281128(drives /health load through the interceptor to wake the gateway from zero).
11291129Validated statically (bash -n, pyyaml parse, disjoint targets). Cluster-only
11301130risk: KEDA + HTTP-add-on API/install specifics, flagged ` VERIFY-POINT ` in the
@@ -1230,7 +1230,7 @@ none visible offline.
12301230 request rate by response code from the mesh.
12311231- ** Files:** ` observability/prometheus-values.yaml ` ,
12321232 ` observability/grafana-values.yaml ` (inline dashboard JSON),
1233- ` scripts/setup-observability.sh ` , ` demos/smoke -observability.sh ` , §17 new
1233+ ` scripts/setup-observability.sh ` , ` demos/demo -observability.sh ` , §17 new
12341234 section "Seeing it: metrics with Prometheus and Grafana".
12351235- ** Consequences:**
12361236 - (+) The capstone is now observable for its scaling and mesh traffic without
@@ -1269,11 +1269,11 @@ none visible offline.
12691269 - ** Grafana Tempo datasource** provisioned alongside Prometheus (uid=` tempo ` ,
12701270 url ` http://tempo.observability:3200 ` ).
12711271- ** Files:** ` observability/tempo-values.yaml ` , grafana-values.yaml (+Tempo
1272- datasource), setup-observability.sh (+Tempo install), ` demos/smoke -tracing.sh ` ,
1272+ datasource), setup-observability.sh (+Tempo install), ` demos/demo -tracing.sh ` ,
12731273 §17 traces-backend paragraph.
12741274- ** Consequences:**
12751275 - (+) Leaner than the original sketch (one fewer component to run/debug).
1276- - (+) Backend verifiable independently (smoke -tracing: Tempo ready + Grafana
1276+ - (+) Backend verifiable independently (demo -tracing: Tempo ready + Grafana
12771277 datasource provisioned/reachable).
12781278 - (−) No traces visible until r29c instruments a service — by design.
12791279 - (−) Chart-schema correctness (tempo values keys, OTLP receiver wiring) is
@@ -1320,7 +1320,7 @@ none visible offline.
13201320 extension, deliberately deferred.
13211321- ** Files:** services/graphql-gateway/Containerfile (OTEL install + wrapped CMD),
13221322 graphql-gateway values.yaml (` tracing: ` block) + deployment.yaml (OTEL env),
1323- demos/smoke -trace-flow.sh, §17 traces paragraph.
1323+ demos/demo -trace-flow.sh, §17 traces paragraph.
13241324- ** Consequences:**
13251325 - (+) A real distributed trace of the federated query, visible in Grafana's
13261326 Tempo explorer — the federation section made concrete.
@@ -1332,7 +1332,7 @@ none visible offline.
13321332 are instrumented too.
13331333 - (−) Unpinned OTEL package versions (bootstrap aligns instrumentation versions
13341334 to the installed SDK); pin for a fully reproducible image. Instrumentation
1335- correctness and the Tempo search format are cluster-only — smoke -trace-flow's
1335+ correctness and the Tempo search format are cluster-only — demo -trace-flow's
13361336 trace-found check is therefore best-effort (the HTTP 200 is the hard part).
13371337 - ** Export-protocol addendum (r29c.2):** the first cluster run proved the
13381338 instrumentation (all instrumentations installed, gateway 200) but Tempo had
@@ -1344,7 +1344,7 @@ none visible offline.
13441344 ` opentelemetry-exporter-otlp ` meta-package). Validated against a working
13451345 user-provided otel-lgtm reference (Java/Podman Compose) using exactly
13461346 ` OTEL_EXPORTER_OTLP_ENDPOINT=http://lgtm:4318 ` + ` PROTOCOL=http/protobuf ` .
1347- Also hardened smoke -trace-flow.sh: TraceQL (` q= ` ) search, not legacy ` tags= ` ,
1347+ Also hardened demo -trace-flow.sh: TraceQL (` q= ` ) search, not legacy ` tags= ` ,
13481348 plus a gateway-log capture right after the query (before KEDA scale-to-zero).
13491349 Lesson: http/protobuf is the robust OTLP default; gRPC needs the insecure flag.
13501350
@@ -1459,7 +1459,7 @@ get back to green instead of debugging a wall of red. Validated offline: `bash -
14591459on both scripts; registry diff uses the same catalog API as build-image.sh.
14601460Cluster-verify: run ` cluster-up.sh ` from a stopped/wedged state and confirm green.
14611461
1462- - ** r29b.1 addendum (CAP-028).** Hardened ` smoke -tracing.sh` from a "backend is
1462+ - ** r29b.1 addendum (CAP-028).** Hardened ` demo -tracing.sh` from a "backend is
14631463 standing" check into an end-to-end ingest proof: it POSTs a synthetic OTLP/HTTP
14641464 JSON span to Tempo :4318 (random 16-byte trace id / 8-byte span id, ns
14651465 timestamps) and reads it back via TraceQL on :3200. This is the check whose
@@ -1531,7 +1531,7 @@ new OpenMetadata lineage node; cleanly reversible as a whole product) with its
15311531- Chart aligned with the ** r28 calibration** (requests 192Mi / limit 512Mi +
15321532 startupProbe 30x2s) — the scaffolder predates r28, so the generated chart was
15331533 bumped to avoid repeating the cold-start/OOM class.
1534- - ` demos/smoke -reviews.sh ` asserts the full REST surface (probes, version, seeded
1534+ - ` demos/demo -reviews.sh ` asserts the full REST surface (probes, version, seeded
15351535 rows, create, fetch-by-id, sku filter).
15361536
15371537** Explicitly temporary.** review-service is a * demonstration* data product, not a
@@ -1546,7 +1546,7 @@ image build (the Containerfile's `poetry export` step needs it).
15461546
15471547** Consequences.** Offline-validated: ` py_compile ` all modules; values.yaml
15481548parses; deployment braces 24/24 with startupProbe; smoke ` bash -n ` . Cluster-verify:
1549- ` ./demos/smoke -reviews.sh ` green against the running capstone.
1549+ ` ./demos/demo -reviews.sh ` green against the running capstone.
15501550## CAP-033 — Phase A (part 2): discovery, catalog, and the replayable demo
15511551
15521552** Status:** decided, shipped r33 (offline-validated; cluster-verify pending).
@@ -1837,7 +1837,7 @@ order-service connects on its next retry and goes `2/2` — closing the bring-up
18371837
18381838** Context.** The canary was scaffolded at r26 (CAP-024): ` istio/routing.yaml `
18391839(Gateway + weighted VirtualService with ` __W_V1__/__W_V2__ ` + DestinationRule
1840- v1/v2 subsets), ` smoke -canary.sh` (deploys v2, drives 90/10→50/50, asserts the
1840+ v1/v2 subsets), ` demo -canary-verify .sh` (deploys v2, drives 90/10→50/50, asserts the
18411841split), ` istio/order-service-v2.yaml ` (v2 = same image, ` API_VERSION=v2 ` ), and
18421842the ` /version ` canary signal (v2 reports ` api_version=v2 ` + an additive
18431843` currency ` field). Phase B's job was to make it actually run on the current
@@ -1857,7 +1857,7 @@ annotations and resources are overlay-local and had to be brought into line.)
18571857 rendered chart env exactly).
18581858 * ** Add ` demos/demo-canary.sh up|shift|down ` ** — the presenter-facing,
18591859 repeatable, backable-out counterpart to the verification-facing
1860- smoke -canary.sh. ` up [w1 w2] ` deploys v2 + opens the split (default 90/10);
1860+ demo -canary-verify .sh. ` up [w1 w2] ` deploys v2 + opens the split (default 90/10);
18611861 ` shift w1 w2 ` moves it (50/50, 0/100, …); ` down ` drains to v1, removes the
18621862 Gateway/VirtualService/DestinationRule and the v2 Deployment, restoring a
18631863 v1-only baseline. This is the "repeatable / backable-out" the roadmap asked
@@ -1867,13 +1867,13 @@ annotations and resources are overlay-local and had to be brought into line.)
18671867keep drifting from the v1 chart (this is the second time: it missed CAP-037/038).
18681868Noted option for later: parametrize the order-service chart so v2 is a second
18691869helm release (` --set version=v2,apiVersion=v2 ` ) with the shared Service rendered
1870- once — eliminating the overlay. Deferred (it changes smoke -canary and revisits
1870+ once — eliminating the overlay. Deferred (it changes demo -canary-verify and revisits
18711871CAP-024's overlay choice); the alignment above is the right scope for tonight.
18721872
18731873** Consequences.** Offline-validated: v2 manifest parses with all three alignments;
18741874demo-canary.sh ` bash -n ` clean and its ` down ` targets exactly the objects
18751875routing.yaml creates; ` /version ` confirmed to emit v2 + currency. Cluster-verify:
1876- ` ./demos/smoke -canary.sh ` lands the 90/10 and 50/50 splits in-band, and
1876+ ` ./demos/demo -canary-verify .sh ` lands the 90/10 and 50/50 splits in-band, and
18771877` demo-canary.sh up → shift → down ` cycles cleanly. A+B together demonstrate the
18781878data-mesh value from the API/contract perspective (add a product, then evolve its
18791879contract under canary).
@@ -1991,7 +1991,7 @@ the capstone's EXISTING `observability`-namespace Prometheus
19911991(` prometheus-server.observability ` ), Grafana (` grafana.observability ` ), and Tempo
19921992(` tempo.observability:3100 ` ). Single observability stack, no second TSDB. Kiali
19931993is additive and isolated: it runs after ` setup-istio.sh ` + ` setup-observability.sh `
1994- and touches nothing they own. Verification is ` demos/smoke -kiali.sh ` (Ready +
1994+ and touches nothing they own. Verification is ` demos/demo -kiali.sh ` (Ready +
19951995config wired to capstone Prometheus + ` /healthz ` + ` /api/namespaces ` lists
19961996` capstone ` + a best-effort graph-API probe).
19971997
@@ -2010,11 +2010,11 @@ without touching the Istio install.
20102010ConfigMap patch is a JSON merge on ` data."config.yaml" ` only (preserves the
20112011addon's labels/metadata; idempotent). Cluster-verify (pending): run
20122012` setup-istio.sh ` → ` setup-observability.sh ` → ` setup-kiali.sh ` , then
2013- ` smoke -kiali.sh` should PASS and, after a traffic-generating demo, the Kiali
2013+ ` demo -kiali.sh` should PASS and, after a traffic-generating demo, the Kiali
20142014graph (namespace ` capstone ` ) should show the products and their edges with the
20152015canary split. VERIFY-POINT: the addon ConfigMap is assumed to be named ` kiali `
20162016with key ` config.yaml ` ; if the installed Kiali/Istio version differs, adjust the
2017- patch in ` setup-kiali.sh ` and the config check in ` smoke -kiali.sh` .
2017+ patch in ` setup-kiali.sh ` and the config check in ` demo -kiali.sh` .
20182018
20192019## CAP-043 — Phase E presenter walkthrough: orchestrator over the existing demos
20202020
@@ -2057,8 +2057,8 @@ up automatically.
20572057
20582058** Context.** With Phase E shipped (CAP-043, the ` walkthrough.sh ` orchestrator),
20592059two acts hit a class of failure that was unfair to the operator: lineage
2060- (` smoke -om-lineage.sh` ) failed because ingestion hadn't been run, and topology
2061- (` smoke -kiali.sh` ) failed because Kiali wasn't installed. Both were
2060+ (` demo -om-lineage.sh` ) failed because ingestion hadn't been run, and topology
2061+ (` demo -kiali.sh` ) failed because Kiali wasn't installed. Both were
20622062documented-but-manual steps from earlier iterations (Kiali only existed as
20632063CAP-042; ` ingest-openmetadata.sh ` was always a footer recommendation in
20642064bootstrap rather than a step bootstrap ran). The walkthrough's preflight could
@@ -2122,7 +2122,7 @@ ready, returns 502, KEDA then scales the gateway back down within its
21222122 the env-var name is ` KEDA_HTTP_* ` * without* the ` INTERCEPTOR_ ` infix).
21232123- The ` autoscaling.keda.sh/paused-replicas ` annotation (works on KEDA's core
21242124 ` ScaledObject ` , not on the HTTP add-on's ` HTTPScaledObject ` ).
2125- - A pre-warm GET in ` smoke -trace-flow.sh` (the warmup succeeded in waking the
2125+ - A pre-warm GET in ` demo -trace-flow.sh` (the warmup succeeded in waking the
21262126 gateway, but KEDA HTTP scaled it back down between the warmup and the real
21272127 POST faster than the script could send the second request).
21282128
@@ -2148,7 +2148,7 @@ story than "everything scales to zero", which papers over the cold-start cost
21482148of synchronous interfaces.
21492149
21502150** Consequences.** Offline-validated: YAML loads, smoke script lints. The
2151- pre-warm code added to ` smoke -trace-flow.sh` during the failed cold-start
2151+ pre-warm code added to ` demo -trace-flow.sh` during the failed cold-start
21522152debugging is reverted (no longer needed; with ` min: 1 ` the gateway is warm).
21532153Cluster-verify pending: with the updated HTTPScaledObject applied, the
21542154walkthrough's trace act runs to completion on the first attempt. Follow-up
@@ -2213,8 +2213,8 @@ commits on `main`) so any inadvertent breakage of the four working acts
22132213 ` external-push ` pointing at ` interceptorRoute: "graphql-gateway" ` .
22142214 * ` scripts/bootstrap-capstone.sh ` — applies the two new manifests instead
22152215 of the one old.
2216- * ` demos/smoke -keda-http.sh ` and ` demos/smoke -trace-flow.sh ` — comment and
2217- fail-message updates; ` smoke -trace-flow.sh` curl timeout bumped from 30s
2216+ * ` demos/demo -keda-http.sh ` and ` demos/demo -trace-flow.sh ` — comment and
2217+ fail-message updates; ` demo -trace-flow.sh` curl timeout bumped from 30s
22182218 to 90s to give the 60s readiness budget room.
22192219
22202220** Narrative implications** (deck/tutorial copy that benefits from this).
0 commit comments