diff --git a/adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/devcontainer.json b/.devcontainer/04-blind-by-design_01-beginner/devcontainer.json similarity index 65% rename from adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/devcontainer.json rename to .devcontainer/04-blind-by-design_01-beginner/devcontainer.json index f66eafae..76e9ca88 100644 --- a/adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/devcontainer.json +++ b/.devcontainer/04-blind-by-design_01-beginner/devcontainer.json @@ -1,10 +1,10 @@ { - "name": "๐Ÿงช Adventure 00 | ๐ŸŸข Beginner (Stand up the lab)", + "name": "๐Ÿงช Adventure 04 | ๐ŸŸข Beginner (Stand up the lab)", "dockerComposeFile": "docker-compose.yml", "service": "workspace", - "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}/adventures/planned/00-blind-by-design/beginner", - "postCreateCommand": "bash /workspaces/${localWorkspaceFolderBasename}/.devcontainer/00-blind-by-design_01-beginner/post-create.sh", - "postStartCommand": "bash /workspaces/${localWorkspaceFolderBasename}/.devcontainer/00-blind-by-design_01-beginner/post-start.sh", + "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}/adventures/planned/04-blind-by-design/beginner", + "postCreateCommand": "bash /workspaces/${localWorkspaceFolderBasename}/.devcontainer/04-blind-by-design_01-beginner/post-create.sh", + "postStartCommand": "bash /workspaces/${localWorkspaceFolderBasename}/.devcontainer/04-blind-by-design_01-beginner/post-start.sh", "customizations": { "vscode": { "extensions": [ @@ -16,9 +16,9 @@ }, "codespaces": { "openFiles": [ - "adventures/planned/00-blind-by-design/docs/beginner.md", - "adventures/planned/00-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Trial.java", - "adventures/planned/00-blind-by-design/beginner/flags.json" + "adventures/planned/04-blind-by-design/docs/beginner.md", + "adventures/planned/04-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Trial.java", + "adventures/planned/04-blind-by-design/beginner/flags.json" ] } }, diff --git a/adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/docker-compose.yml b/.devcontainer/04-blind-by-design_01-beginner/docker-compose.yml similarity index 96% rename from adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/docker-compose.yml rename to .devcontainer/04-blind-by-design_01-beginner/docker-compose.yml index 4d7a44fc..f2324365 100644 --- a/adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/docker-compose.yml +++ b/.devcontainer/04-blind-by-design_01-beginner/docker-compose.yml @@ -32,7 +32,7 @@ services: command: - start - --uri - - file:/workspaces/${localWorkspaceFolderBasename:-open-ecosystem-challenges}/adventures/planned/00-blind-by-design/beginner/flags.json + - file:/workspaces/${localWorkspaceFolderBasename:-open-ecosystem-challenges}/adventures/planned/04-blind-by-design/beginner/flags.json # No `ports:` block โ€” the lab reaches flagd on the docker-internal # network as `flagd:8013`. We deliberately do not publish to the host: # only :8080 is forwarded into the Codespace, so participants see one diff --git a/adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/post-create.sh b/.devcontainer/04-blind-by-design_01-beginner/post-create.sh similarity index 88% rename from adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/post-create.sh rename to .devcontainer/04-blind-by-design_01-beginner/post-create.sh index f20e6752..fea4cc2f 100755 --- a/adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/post-create.sh +++ b/.devcontainer/04-blind-by-design_01-beginner/post-create.sh @@ -2,11 +2,11 @@ set -e REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" -CHALLENGE_DIR="$REPO_ROOT/adventures/planned/00-blind-by-design/beginner" +CHALLENGE_DIR="$REPO_ROOT/adventures/planned/04-blind-by-design/beginner" # shellcheck disable=SC1091 source "$REPO_ROOT/lib/scripts/tracker.sh" -set_tracking_context "00-blind-by-design" "beginner" +set_tracking_context "04-blind-by-design" "beginner" track_codespace_created # Install gum (used by the verify.sh output helpers). diff --git a/adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/post-start.sh b/.devcontainer/04-blind-by-design_01-beginner/post-start.sh similarity index 89% rename from adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/post-start.sh rename to .devcontainer/04-blind-by-design_01-beginner/post-start.sh index 3121d4dd..1924dd27 100755 --- a/adventures/planned/00-blind-by-design/beginner/00-blind-by-design_01-beginner/post-start.sh +++ b/.devcontainer/04-blind-by-design_01-beginner/post-start.sh @@ -2,11 +2,11 @@ set -e REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" -CHALLENGE_DIR="$REPO_ROOT/adventures/planned/00-blind-by-design/beginner" +CHALLENGE_DIR="$REPO_ROOT/adventures/planned/04-blind-by-design/beginner" cat </dev/null 2>&1; then - code "$REPO_ROOT/adventures/planned/00-blind-by-design/docs/beginner.md" \ + code "$REPO_ROOT/adventures/planned/04-blind-by-design/docs/beginner.md" \ "$CHALLENGE_DIR/src/main/java/dev/openfeature/demo/java/demo/Trial.java" \ 2>/dev/null || true fi diff --git a/adventures/planned/00-blind-by-design/.gitignore b/adventures/04-blind-by-design/.gitignore similarity index 100% rename from adventures/planned/00-blind-by-design/.gitignore rename to adventures/04-blind-by-design/.gitignore diff --git a/adventures/planned/00-blind-by-design/README.md b/adventures/04-blind-by-design/README.md similarity index 92% rename from adventures/planned/00-blind-by-design/README.md rename to adventures/04-blind-by-design/README.md index 67ee8e41..9b80e3e7 100644 --- a/adventures/planned/00-blind-by-design/README.md +++ b/adventures/04-blind-by-design/README.md @@ -1,4 +1,4 @@ -# ๐Ÿงช Adventure 00: Blind by Design +# ๐Ÿงช Adventure 04: Blind by Design A research lab is testing a vision-enhancement serum on volunteers. The serum is supposed to take ordinary eyes and produce sharper, even enhanced sight. The lab is a Spring Boot service; OpenFeature is the chart system; `flags.json` decides what reading the lab records for each subject. The protocol is the same for everyone โ€” what differs is the observed outcome, because subjects come in with different biology, dose adherence, and trial-jurisdiction baseline. The flagship Phase 3 trial โ€” a new amplifier algorithm โ€” has started showing trouble: subjects stabilise slower, and roughly one in ten emerge blind. The dashboard that should be tracking all of this is dark. Your mission across three levels: stand up the lab, read the chart by cohort, then turn on the lights and roll back the trial before more subjects lose their sight. @@ -9,4 +9,4 @@ The entire **infrastructure is pre-provisioned in your Codespace**. ## ๐Ÿš€ Ready to Start? -[Choose your level](https://dynatrace-oss.github.io/open-ecosystem-challenges/00-blind-by-design/) and begin learning! +[Choose your level](https://dynatrace-oss.github.io/open-ecosystem-challenges/04-blind-by-design/) and begin learning! diff --git a/adventures/planned/00-blind-by-design/beginner/.mvn/wrapper/maven-wrapper.properties b/adventures/04-blind-by-design/beginner/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/.mvn/wrapper/maven-wrapper.properties rename to adventures/04-blind-by-design/beginner/.mvn/wrapper/maven-wrapper.properties diff --git a/adventures/planned/00-blind-by-design/beginner/.vscode/launch.json b/adventures/04-blind-by-design/beginner/.vscode/launch.json similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/.vscode/launch.json rename to adventures/04-blind-by-design/beginner/.vscode/launch.json diff --git a/adventures/planned/00-blind-by-design/beginner/.vscode/tasks.json b/adventures/04-blind-by-design/beginner/.vscode/tasks.json similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/.vscode/tasks.json rename to adventures/04-blind-by-design/beginner/.vscode/tasks.json diff --git a/adventures/planned/00-blind-by-design/beginner/Makefile b/adventures/04-blind-by-design/beginner/Makefile similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/Makefile rename to adventures/04-blind-by-design/beginner/Makefile diff --git a/adventures/planned/00-blind-by-design/beginner/flags.json b/adventures/04-blind-by-design/beginner/flags.json similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/flags.json rename to adventures/04-blind-by-design/beginner/flags.json diff --git a/adventures/planned/00-blind-by-design/beginner/mvnw b/adventures/04-blind-by-design/beginner/mvnw similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/mvnw rename to adventures/04-blind-by-design/beginner/mvnw diff --git a/adventures/planned/00-blind-by-design/beginner/mvnw.cmd b/adventures/04-blind-by-design/beginner/mvnw.cmd similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/mvnw.cmd rename to adventures/04-blind-by-design/beginner/mvnw.cmd diff --git a/adventures/planned/00-blind-by-design/beginner/pom.xml b/adventures/04-blind-by-design/beginner/pom.xml similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/pom.xml rename to adventures/04-blind-by-design/beginner/pom.xml diff --git a/adventures/planned/00-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Laboratory.java b/adventures/04-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Laboratory.java similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Laboratory.java rename to adventures/04-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Laboratory.java diff --git a/adventures/planned/00-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Trial.java b/adventures/04-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Trial.java similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Trial.java rename to adventures/04-blind-by-design/beginner/src/main/java/dev/openfeature/demo/java/demo/Trial.java diff --git a/adventures/planned/00-blind-by-design/beginner/src/main/resources/application.properties b/adventures/04-blind-by-design/beginner/src/main/resources/application.properties similarity index 100% rename from adventures/planned/00-blind-by-design/beginner/src/main/resources/application.properties rename to adventures/04-blind-by-design/beginner/src/main/resources/application.properties diff --git a/adventures/planned/00-blind-by-design/beginner/verify.sh b/adventures/04-blind-by-design/beginner/verify.sh similarity index 95% rename from adventures/planned/00-blind-by-design/beginner/verify.sh rename to adventures/04-blind-by-design/beginner/verify.sh index d80bf413..0b99cdc4 100755 --- a/adventures/planned/00-blind-by-design/beginner/verify.sh +++ b/adventures/04-blind-by-design/beginner/verify.sh @@ -8,17 +8,17 @@ source "$SCRIPT_DIR/../../../../lib/scripts/loader.sh" OBJECTIVE="By the end of this level, you should: -- See curl http://localhost:8080/ return a vision_state reading resolved from flags.json (not the hard-coded fallback) -- Confirm the response payload includes the OpenFeature evaluation details (variant, reason, value) +- Have curl http://localhost:8080/ return a vision_state reading resolved from flags.json (not the hard-coded \"untreated\" fallback) +- Confirm the response payload includes the OpenFeature evaluation details โ€” flag key, variant, reason, value - Edit flags.json to change the defaultVariant, save, and have the next request return the new variant without restarting the app" -DOCS_URL="https://dynatrace-oss.github.io/open-ecosystem-challenges/00-blind-by-design/beginner" +DOCS_URL="https://dynatrace-oss.github.io/open-ecosystem-challenges/04-blind-by-design/beginner" APP_URL="http://localhost:8080/" FLAGS_FILE="$SCRIPT_DIR/flags.json" print_header \ - 'Adventure 00: Blind by Design' \ + 'Adventure 04: Blind by Design' \ '๐ŸŸข Beginner: Stand up the lab' \ 'Verification' @@ -158,5 +158,5 @@ print_success "โœ… PASSED: All $TESTS_PASSED verification checks passed!" print_new_line if command -v check_submission_readiness >/dev/null 2>&1; then - check_submission_readiness "00-blind-by-design" "beginner" + check_submission_readiness "04-blind-by-design" "beginner" fi diff --git a/adventures/planned/00-blind-by-design/docs/beginner.md b/adventures/04-blind-by-design/docs/beginner.md similarity index 96% rename from adventures/planned/00-blind-by-design/docs/beginner.md rename to adventures/04-blind-by-design/docs/beginner.md index fe4c5706..0bac64fe 100644 --- a/adventures/planned/00-blind-by-design/docs/beginner.md +++ b/adventures/04-blind-by-design/docs/beginner.md @@ -45,14 +45,16 @@ Your Codespace comes pre-configured with the following tools to help you solve t ## โฐ Deadline -_TBD โ€” to be announced at challenge launch._ +Tuesday, 26 May 2026 at 23:59 CET + > โ„น๏ธ You can still complete the challenge after this date, but points will only be awarded for submissions before the > deadline. ## ๐Ÿ’ฌ Join the discussion -Share your solutions and questions in the challenge thread on the Open Ecosystem Community. -_Discussion link will be added when this adventure goes live._ +Share your solutions and questions in +the [challenge thread](TODO) +in the Open Ecosystem Community. ## โœ… How to Play @@ -61,13 +63,13 @@ _Discussion link will be added when this adventure goes live._ - Click the "Fork" button in the top-right corner of the GitHub repo or use [this link](https://github.com/dynatrace-oss/open-ecosystem-challenges/fork). - From your fork, click the green **Code** button โ†’ **Codespaces hamburger menu** โ†’ **New with options**. -- Select the **Adventure 00 | ๐ŸŸข Beginner (Stand up the lab)** configuration. +- Select the **Adventure 04 | ๐ŸŸข Beginner (Stand up the lab)** configuration. > โš ๏ธ **Important:** The challenge will not work if you choose another configuration (or the default). The Codespace will install a Java 21 toolchain and resolve the Maven dependencies. Once it is ready you'll have a terminal in -`adventures/planned/00-blind-by-design/beginner/`. +`adventures/planned/04-blind-by-design/beginner/`. ### 2. Start the Lab diff --git a/adventures/planned/00-blind-by-design/docs/index.md b/adventures/04-blind-by-design/docs/index.md similarity index 96% rename from adventures/planned/00-blind-by-design/docs/index.md rename to adventures/04-blind-by-design/docs/index.md index 1d4a8e84..f9a1e288 100644 --- a/adventures/planned/00-blind-by-design/docs/index.md +++ b/adventures/04-blind-by-design/docs/index.md @@ -1,4 +1,4 @@ -# ๐Ÿงช Adventure 00: Blind by Design +# ๐Ÿงช Adventure 04: Blind by Design Three levels of OpenFeature with **flagd** as the provider, in a Java + Spring Boot service. Wire the SDK against a flagd sidecar (Beginner), layer evaluation context to target by cohort (Intermediate), then instrument flag evaluations with OpenTelemetry and roll back a misbehaving fractional rollout (Expert) โ€” all without redeploying. @@ -29,7 +29,7 @@ Each level is a standalone challenge with its own Codespace, building on the sto Wire OpenFeature into a Spring Boot service so the lab's `vision_state` reading is resolved by a flagd sidecar against a `flags.json` instead of a hard-coded literal. -[**Start the Beginner Challenge**](./beginner.md){ .md-button .md-button--primary } +[**Start the Beginner Challenge**](beginner.md){ .md-button .md-button--primary } ### ๐ŸŸก Intermediate: Outcome by cohort diff --git a/adventures/planned/00-blind-by-design/mkdocs.yaml b/adventures/04-blind-by-design/mkdocs.yaml similarity index 62% rename from adventures/planned/00-blind-by-design/mkdocs.yaml rename to adventures/04-blind-by-design/mkdocs.yaml index 3180a33d..a9987e1c 100644 --- a/adventures/planned/00-blind-by-design/mkdocs.yaml +++ b/adventures/04-blind-by-design/mkdocs.yaml @@ -1,4 +1,4 @@ -site_name: '๐Ÿงช 00: Blind by Design' +site_name: '๐Ÿงช 04: Blind by Design' nav: - Introduction: index.md diff --git a/docs/index.md b/docs/index.md index 7c5a34ef..2b37d651 100644 --- a/docs/index.md +++ b/docs/index.md @@ -20,6 +20,16 @@ headaches. Browse the available adventures and pick one that interests you: +### May 2026: [Blind by Design](04-blind-by-design/index.md) + +**Story:** The Aletheia Institute's lab has been recording every subject as "untreated" for eight months โ€” the OpenFeature integration was never finished. Wire the SDK, read the chart by cohort, and roll back a misbehaving Phase 3 trial before the next enrollment batch is signed off. + +| Level | Name | ๐Ÿง  Key Learnings | +|-----------------|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ๐ŸŸข Beginner | [Stand up the lab](04-blind-by-design/beginner.md) | | +| ๐ŸŸก Intermediate | Outcome by cohort | | +| ๐Ÿ”ด Expert | Read the chart | | + ### February 2026: [The AI Observatory](03-the-ai-observatory/index.md) **Story:** Investigate a mysterious bandwidth anomaly at a remote research station by instrumenting its AI system with OpenTelemetry.