Adventure: π§ͺ Blind by Design β π’ Beginner#42
Conversation
KatharinaSick
left a comment
There was a problem hiding this comment.
It's a lot of fun to play this adventure and the end result is rewarding :D It follows a bit of a different approach than the ones I created so far but that's awesome and exactly the reason I was looking forward to contributions π
I left a couple of comments but nothing big. Thanks for contributing again π
|
I just had a little conversation with Claude about the Backstory and "we" had some ideas. Feel free to take some inspiration from it, copy it, or just skip it if you want :) Overall Story (index.md)You are the new technical lead at the Aletheia Institute, a clinical research facility running a multi-phase vision-enhancement trial. The lab software Supposed to. The previous engineer left without finishing the integration. For the past eight months, every subject through the door has received the same hard-coded label: That's bad. But it isn't the crisis. Phase 3 is the crisis. Eight weeks ago, the Institute began its flagship trial: a new amplifier variant, delivered to a fractional cohort via a targeting rule in No one can see what's happening. The monitoring is dark β not by accident, but because no one ever turned the lights on. Your mission across three levels: stand up the lab so it reads the chart, layer in evaluation context so outcomes can be tracked by cohort, then wire up the observability stack, find the misbehaving Phase 3 variant in the dashboard, and roll it back before the director signs off on the next enrollment batch. BeginnerYou arrived at the Aletheia Institute this morning. Your key card still has temporary clearance printed on it in red. The previous technical lead β whose name you keep seeing in commit messages β cleared out their desk three weeks ago, no documentation, no handoff, no answers. What they left behind: a Spring Boot service on The lab is taking readings. Every reading says Your mission: wire the OpenFeature SDK into the service so the lab actually reads the chart, author the |
- move idea to ideas/.implemented/ (was: ideas/) - mkdocs.yaml: drop solution walkthroughs from nav (kept only for post-deadline release) - rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' for cross-adventure consistency - verify.sh: lean on lib/scripts helpers, follow Adventure 03 shape - pin all docker images (drop ':latest') - architecture: drop 'the chart' metaphor labels in favour of direct technical names - drop the 'Solution Walkthrough' promo section (solutions are unpublished pre-deadline) - add 'Start the Lab' step before 'Access the UIs' so the port doesn't 502 - devcontainer: forward only :8080 (was: 8080+8013+8014+8015+8016) - verify section: replace smoke-test / GitHub Actions wording with the Adventure 03 template Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Layer the three OpenFeature evaluation-context tiers (global, transaction, invocation) onto the Spring Boot lab and register a custom audit Hook so the targeting in flags.json fires per cohort (species, country, dose) and every evaluation lands in the audit log. Replaces the placeholder intermediate.md stub with the full level doc, ships the Intermediate solution walkthrough, broken-state code, verify.sh, and devcontainer. Stacked on top of off-on-dev#42 (π’ Beginner). Review that one first. Part of off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin flagd image to v0.15.4 (was: ':latest') - devcontainer: forward only :8080 (was: 8080+8013+8014+8015+8016) - drop the published flagd ports β sidecar reaches the lab on the docker-internal network as flagd:8013 - drop the inline solutions/intermediate.md cross-link and the closing 'Spoiler ahead?' callout (solutions are unpublished pre-deadline) - replace 'Run the Verification Script' wording with the Adventure 03 template (verify.sh + Certificate of Completion) - verify.sh: lean on lib/scripts/http.sh test_http_endpoint for the reachability check Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
|
Thank you for the editorial care here β and honestly, running it through Claude first is exactly the kind of pre-work that makes a suggestion easy to engage with, because the voice and the structure are already aligned enough that I can read it as a draft rather than a sketch. The three pieces doing the most work in your draft, to my eye, are: the Aletheia Institute as the place β the Greek pun on truth/disclosure lands the vision theme more cleanly than "a research lab" ever did; the eight-months / eight-weeks timeline, which makes the stakes concrete instead of abstract; and the "the monitoring is dark β not by accident, but because no one ever turned the lights on" sentence, which is the one line in the draft that explicitly previews the Expert-level resolution. I have cherry-picked those three into That said, the key-card opening is genuinely strong on its own merits, and if you would rather see it kept somewhere β perhaps as an optional "π¬ Set the scene" callout that participants can fold open β I am happy to revisit. Push back any time. |
Layer the three OpenFeature evaluation-context tiers (global, transaction, invocation) onto the Spring Boot lab and register a custom audit Hook so the targeting in flags.json fires per cohort (species, country, dose) and every evaluation lands in the audit log. Replaces the placeholder intermediate.md stub with the full level doc, ships the Intermediate solution walkthrough, broken-state code, verify.sh, and devcontainer. Stacked on top of off-on-dev#42 (π’ Beginner). Review that one first. Part of off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin flagd image to v0.15.4 (was: ':latest') - devcontainer: forward only :8080 (was: 8080+8013+8014+8015+8016) - drop the published flagd ports β sidecar reaches the lab on the docker-internal network as flagd:8013 - drop the inline solutions/intermediate.md cross-link and the closing 'Spoiler ahead?' callout (solutions are unpublished pre-deadline) - replace 'Run the Verification Script' wording with the Adventure 03 template (verify.sh + Certificate of Completion) - verify.sh: lean on lib/scripts/http.sh test_http_endpoint for the reachability check Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
β¦inner-only PR The two stub level-docs and the matching index.md cards were carried in solely so docs/index.md links did not 404. With the nav already trimmed (per @KatharinaSick on PR off-on-dev#42), and now with the cards out of the landing page, the Beginner PR is genuinely scoped to a single level. Intermediate and Expert each add their own card + level doc as part of their respective PRs (off-on-dev#43 / off-on-dev#44). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Layer the three OpenFeature evaluation-context tiers (global, transaction, invocation) onto the Spring Boot lab and register a custom audit Hook so the targeting in flags.json fires per cohort (species, country, dose) and every evaluation lands in the audit log. Replaces the placeholder intermediate.md stub with the full level doc, ships the Intermediate solution walkthrough, broken-state code, verify.sh, and devcontainer. Stacked on top of off-on-dev#42 (π’ Beginner). Review that one first. Part of off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin flagd image to v0.15.4 (was: ':latest') - devcontainer: forward only :8080 (was: 8080+8013+8014+8015+8016) - drop the published flagd ports β sidecar reaches the lab on the docker-internal network as flagd:8013 - drop the inline solutions/intermediate.md cross-link and the closing 'Spoiler ahead?' callout (solutions are unpublished pre-deadline) - replace 'Run the Verification Script' wording with the Adventure 03 template (verify.sh + Certificate of Completion) - verify.sh: lean on lib/scripts/http.sh test_http_endpoint for the reachability check Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
|
The Intermediate / Expert stub docs and their landing-page cards are out of this PR now. They were only ever there to keep From here, each level's card and level-doc travel together: Intermediate gets its card + |
605dabc to
631cdd9
Compare
KatharinaSick
left a comment
There was a problem hiding this comment.
made some minor adjustments but looks great - thank you! π
Wire the OpenFeature Java SDK and the flagd contrib provider into a Spring Boot service. Author the first flag, prove hot-reload of flags.json without restarting the app. Ships shared adventure infrastructure (idea, README, mkdocs.yaml, docs/index.md) alongside the Beginner level (challenge doc, solution walkthrough, broken-state code, devcontainer, verify.sh). Intermediate and Expert level docs are placeholder stubs pointing at the tracking issue; subsequent PRs will fill them in. Part of off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- move idea to ideas/.implemented/ (was: ideas/) - mkdocs.yaml: drop solution walkthroughs from nav (kept only for post-deadline release) - rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' for cross-adventure consistency - verify.sh: lean on lib/scripts helpers, follow Adventure 03 shape - pin all docker images (drop ':latest') - architecture: drop 'the chart' metaphor labels in favour of direct technical names - drop the 'Solution Walkthrough' promo section (solutions are unpublished pre-deadline) - add 'Start the Lab' step before 'Access the UIs' so the port doesn't 502 - devcontainer: forward only :8080 (was: 8080+8013+8014+8015+8016) - verify section: replace smoke-test / GitHub Actions wording with the Adventure 03 template Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Cherry-picking from @KatharinaSick's story suggestion on PR off-on-dev#42: the institute name (a Greek pun on truth/disclosure that lands the vision theme), the eight-months / eight-weeks timeline, and the "the monitoring is dark β not by accident, but because no one ever turned the lights on" framing. Beginner-level cinematic intro left out β it doubles the story length in a section that was deliberately trimmed. Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
β¦only PR Per @KatharinaSick's first instinct on review β and on reflection the author agrees: when the placeholder stubs are reachable from the side-nav they create more confusion than they resolve. The stub files stay on disk so docs/index.md's links don't 404, but they're not surfaced in navigation. Intermediate and Expert come back into the nav in off-on-dev#43 and off-on-dev#44 once their content is real. Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
β¦inner-only PR The two stub level-docs and the matching index.md cards were carried in solely so docs/index.md links did not 404. With the nav already trimmed (per @KatharinaSick on PR off-on-dev#42), and now with the cards out of the landing page, the Beginner PR is genuinely scoped to a single level. Intermediate and Expert each add their own card + level doc as part of their respective PRs (off-on-dev#43 / off-on-dev#44). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Signed-off-by: Katharina Sick <katharina.sick@dynatrace.com>
Signed-off-by: Katharina Sick <katharina.sick@dynatrace.com>
Layer the three OpenFeature evaluation-context tiers (global, transaction, invocation) onto the Spring Boot lab and register a custom audit Hook so the targeting in flags.json fires per cohort (species, country, dose) and every evaluation lands in the audit log. Replaces the placeholder intermediate.md stub with the full level doc, ships the Intermediate solution walkthrough, broken-state code, verify.sh, and devcontainer. Stacked on top of off-on-dev#42 (π’ Beginner). Review that one first. Part of off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin flagd image to v0.15.4 (was: ':latest') - devcontainer: forward only :8080 (was: 8080+8013+8014+8015+8016) - drop the published flagd ports β sidecar reaches the lab on the docker-internal network as flagd:8013 - drop the inline solutions/intermediate.md cross-link and the closing 'Spoiler ahead?' callout (solutions are unpublished pre-deadline) - replace 'Run the Verification Script' wording with the Adventure 03 template (verify.sh + Certificate of Completion) - verify.sh: lean on lib/scripts/http.sh test_http_endpoint for the reachability check Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
8e50d7c to
94a4a88
Compare
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Layer the three OpenFeature evaluation-context tiers (global, transaction, invocation) onto the Spring Boot lab and register a custom audit Hook so the targeting in flags.json fires per cohort (species, country, dose) and every evaluation lands in the audit log. Replaces the placeholder intermediate.md stub with the full level doc, ships the Intermediate solution walkthrough, broken-state code, verify.sh, and devcontainer. Stacked on top of off-on-dev#42 (π’ Beginner). Review that one first. Part of off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin flagd image to v0.15.4 (was: ':latest') - devcontainer: forward only :8080 (was: 8080+8013+8014+8015+8016) - drop the published flagd ports β sidecar reaches the lab on the docker-internal network as flagd:8013 - drop the inline solutions/intermediate.md cross-link and the closing 'Spoiler ahead?' callout (solutions are unpublished pre-deadline) - replace 'Run the Verification Script' wording with the Adventure 03 template (verify.sh + Certificate of Completion) - verify.sh: lean on lib/scripts/http.sh test_http_endpoint for the reachability check Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Mirrors the structure Beginner adopted in PR off-on-dev#42 review (06789e7) β a discrete "Start the Lab" step before any forwarded-port click, so users who open the Ports tab early don't hit a 502. Renumbers downstream sub-steps (3a/b/c β 4a/b/c) and renames the post-fix run section to "Re-run the Lab with a Cohort" to disambiguate from the new step 2. Carries the same review feedback Katharina left on the Beginner level forward to the Intermediate level so the per-level shape stays consistent. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Wire the OpenTelemetry meter provider, register the OpenFeature MetricsHook + TracesHook, author a ContextSpanHook that copies the merged evaluation context onto Tempo spans, then diagnose and roll back a misbehaving fractional rollout (vision_amplifier_v2) on the Grafana LGTM dashboard β no redeploy. Replaces the placeholder expert.md stub with the full level doc, ships the Expert solution walkthrough, broken-state code (including the dashboard JSON and k6 loadgen), verify.sh, and devcontainer. Stacked on top of off-on-dev#43 (π‘ Intermediate). Review off-on-dev#42 then off-on-dev#43 first. This is the last PR in the series, so it closes the tracking issue. Closes off-on-dev#41 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
- rename 'π§ͺ The story (optional)' β 'πͺ The Backstory' - pin all docker images: flagd v0.15.4, otel-lgtm 0.26.0, k6 1.7.1 - devcontainer: drop flagd ports (8013/8014/8015/8016) from forwardPorts; the LGTM-stack ports (3000/9090/3200/4317/4318) and :8080 stay forwarded as before - drop the published flagd ports from docker-compose β flagd reaches the lab on the docker-internal network as `flagd:8013` - drop the 'Solution Walkthrough' section and the inline solutions/expert.md cross-link (solutions are unpublished pre-deadline) - replace the verify-script blurb with the Adventure 03 template - 'Access the UIs / flagd' subsection: explain flagd is internal-only now that the ports aren't forwarded - verify.sh: lean on test_http_endpoint for the reachability check; point FLAGD_HTTP at flagd:8013 (docker network DNS) since the host no longer forwards :8013 Refs: PR off-on-dev#42 review by @KatharinaSick Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Simon Schrottner <simon.schrottner@gmail.com>
Summary
Stand up the lab: wire the OpenFeature Java SDK + flagd contrib provider into a Spring Boot service, author the first flag, and prove hot-reload of
flags.jsonwithout restarting the app.What this PR ships
ideas/.implemented/blind-by-design.mdβ the approved idea, moved to.implemented/per the contributing guideadventures/planned/00-blind-by-design/README.mdadventures/planned/00-blind-by-design/.gitignoreadventures/planned/00-blind-by-design/mkdocs.yamladventures/planned/00-blind-by-design/docs/index.mdβ adventure landing page; only the π’ Beginner card is shown at this stage. The π‘ Intermediate and π΄ Expert cards land with their own PRs.adventures/planned/00-blind-by-design/docs/beginner.md(challenge)adventures/planned/00-blind-by-design/docs/solutions/beginner.md(walkthrough β kept in repo, hidden frommkdocs.yamlnav until challenge launch)adventures/planned/00-blind-by-design/beginner/(broken-state Spring Boot project +verify.sh).devcontainer/00-blind-by-design_01-beginner/Stacking
This is PR 1 of 3, per
docs/contributing/adventures.md:160("ship one level at a time"):Each subsequent PR adds its own level card to
index.mdalongside its level docs + code + devcontainer.The original full-state PR #40 is kept open for reference and will be closed once these three land.
Part of #41