// STRYKE-DEMO — ENGINEERING REPORT

Gallery harness for the 14 stryke-* connectors · one s install pulls all deps · docker-compose.yml hosts the live services · run_all.stk probes + runs reachable demos

>_EXECUTIVE SUMMARY

stryke-demo is a meta-package that exercises every connector in the stryke-* family from a single repo. The 14 demos are runnable end-to-end: clone, s install, docker compose up -d, make run-all. Each demo is a standalone .stk script (not embedded in test fixtures) so it doubles as living documentation for "how do I actually use this connector?"

The harness is intentionally thin: no test framework, no assertions, no fancy reporting. Each demo prints what it's doing as it goes. The complexity lives in run_all.stk's service-probing logic that decides which demos can run in the current environment.

14
demos / connectors
7
live services in compose
4
demos w/ no service needed
1
cloud-only demo (GCP w/ ADC)

~HARNESS DESIGN

Demos live in demos/ with NN_pkg.stk naming. Numbering is stable across releases so the README, docs, and run_all.stk can refer to demos by index. Adding a new connector is "drop a new file with the next index, add a row to the README table, update stryke.toml".

ComponentRole
stryke.tomlPackage manifest. Declares all 14 stryke-* deps with git refs. s install reads this.
demos/NN_pkg.stkOne per connector. Imports its package, exercises 3–5 core verbs, prints progress.
demos/run_all.stkService probe (TCP / UDP / API ping per service) + dispatch + skip-on-unreachable + summary table.
docker-compose.ymlMySQL, Postgres, Kafka (KRaft, single-node), Redis, MongoDB, LocalStack (S3 / DynamoDB / SQS / Lambda / STS), k3s (single-node Kubernetes for stryke-k8s).
MakefileConvenience targets: make run-arrow, make services-up, make check (parse all demos), make run-all.
CI.github/workflows/ci.yml — parses every demo (no live runs in CI; services aren't reproducible there).

$SERVICE PROBE LOGIC

run_all.stk classifies each demo into three buckets at startup:

BucketBehavior
always-runarrow, parquet, duckdb, spark (Spark Connect via in-tree mock). No external service. Run unconditionally.
probe-and-runmysql, postgres, kafka, redis, mongo, k8s, docker, aws (LocalStack), grpc. TCP probe on expected port; run if reachable, skip with reason if not.
opt-ingcp (real GCP only — no LocalStack equivalent for GCS / Pub/Sub). Skipped unless GOOGLE_APPLICATION_CREDENTIALS is set.

Output is a summary table at the end: PASSED / SKIPPED (reason) / FAILED (msg) per demo. Exit code = number of failures (0 = all green or all skipped cleanly).


&WHY GALLERY-NOT-TEST-SUITE

A test suite asserts. A gallery shows. stryke-demo deliberately does no assertions in the .stk files — they print what they did and how. The assertions live in each stryke-* connector's own zunit tests (e.g. stryke-mysql/t/*.zsh). This split keeps the demo files readable as docs.

The CI workflow only parses the demo files (stryke --syntax-check); live runs aren't reproducible in GitHub Actions without spinning up the full docker-compose stack on every job, which is slow and brittle. Live runs happen on the maintainer's box.


/EXTENDING

Adding a connector to the family means three edits in stryke-demo:

  1. Add the dep to stryke.toml (git ref of the new stryke-* repo).
  2. Drop demos/15_newpkg.stk that exercises 3–5 core verbs.
  3. If it needs a live service, add it to docker-compose.yml and wire the probe into run_all.stk.

That's it. The README table and the docs/index gallery should be updated to mention the new demo, but they're not load-bearing — run_all.stk just iterates the demos directory.


#PROJECT METADATA

ItemValue
LicenseMIT
AuthorMenkeTechnologies
Repositorygithub.com/MenkeTechnologies/stryke-demo
Parent languagestrykelang
Meta umbrellaMenkeTechnologiesMeta
Issuesgithub.com/MenkeTechnologies/stryke-demo/issues