docs(slides): design and plan for the Nexus Kotlin workshop deck - #8
docs(slides): design and plan for the Nexus Kotlin workshop deck#8nadvolod wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Adds an approved design spec and a step-by-step implementation plan for a future Slidev deck intended to accompany the nexus-kotlin-decouple-monolith Instruqt workshop, focusing on an interleaved “slides then lab” format and a single evolving Mermaid diagram through five states.
Changes:
- Introduces a design spec defining goals, constraints, segment map, and conceptual teaching inventory.
- Introduces a detailed execution plan covering Slidev scaffolding, segment-by-segment slide authoring workflow, and reusable Mermaid diagram states.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| kotlin/docs/superpowers/specs/2026-08-11-nexus-kotlin-workshop-slides-design.md | Defines the deck’s structure, time budgets, and content architecture for the planned workshop slides. |
| kotlin/docs/superpowers/plans/2026-08-11-nexus-kotlin-workshop-slides.md | Provides an implementation checklist for scaffolding a Slidev repo and drafting each slide segment. |
Suppressed comments (1)
kotlin/docs/superpowers/plans/2026-08-11-nexus-kotlin-workshop-slides.md:170
- This
cd /Users/nikk/source/edu-nexus-codecommand is also machine-specific. If you’ve been working insidekotlin/slides, you can return to the repo root with a relative path so the instructions work everywhere.
cd /Users/nikk/source/edu-nexus-code
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| - Kotlin on the Temporal **Java** SDK. | ||
| - No existing deck. Nikk has never used Slidev and does not want to spend the | ||
| session learning it — Slidev is a means, the Temporal concepts are the point. | ||
| - Pacing reality: `track.yml` budgets 120 min of challenge time into a 40-minute |
| mkdir -p /Users/nikk/source/edu-nexus-code/kotlin/slides | ||
| cd /Users/nikk/source/edu-nexus-code/kotlin/slides |
| ```` | ||
|
|
||
| Verify the signatures against the solution file before you present: | ||
| `kotlin/decouple-monolith/solution/src/main/kotlin/shared/nexus/ComplianceNexusService.kt` |
| cd /Users/nikk/source/edu-nexus-code/kotlin/slides | ||
| pnpm init | ||
| pnpm add -D @slidev/cli playwright-chromium | ||
| pnpm add github:temporalio/slidev-theme-temporal |
| packages: write | ||
| steps: | ||
| - name: Checkout repo | ||
| uses: actions/checkout@v4 |
There was a problem hiding this comment.
Opengrep — security.gha.unpinned-action (WARNING)
Unpinned action reference actions/checkout@v4: this uses: resolves a mutable ref (tag or branch), so the code that runs in CI can change without this line changing. A compromised upstream can repoint the tag and execute arbitrary code with access to this repository's secrets and GITHUB_TOKEN (tj-actions/changed-files, March 2025). Pin to the full 40-character commit SHA with the resolved version in a trailing comment, e.g. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2. Prefer deputy pin --ecosystems github-actions, which resolves the ref, writes a version comment that reflects the most specific ref actually pointing at that commit, and verifies the SHA is reachable from a real branch upstream. That last check matters: pinning alone does not detect imposter or dangling commits, and this rule only sees the shape of the ref, never its provenance. Reusable workflow calls (owner/repo/.github/workflows/x.yml@ref) run with the same trust as actions and are pinned the same way. Not reported, by campaign policy: temporalio/* refs (first-party, pinned by internal process), local ./ actions, self-repository $/ refs (resolve to the running commit, so they are already pin-equivalent), and docker:// images (pinned by digest as a separate ecosystem).
Fixed in 748c87a
| - name: Checkout repo | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - uses: docker/login-action@v3 |
There was a problem hiding this comment.
Opengrep — security.gha.unpinned-action (WARNING)
Unpinned action reference docker/login-action@v3: this uses: resolves a mutable ref (tag or branch), so the code that runs in CI can change without this line changing. A compromised upstream can repoint the tag and execute arbitrary code with access to this repository's secrets and GITHUB_TOKEN (tj-actions/changed-files, March 2025). Pin to the full 40-character commit SHA with the resolved version in a trailing comment, e.g. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2. Prefer deputy pin --ecosystems github-actions, which resolves the ref, writes a version comment that reflects the most specific ref actually pointing at that commit, and verifies the SHA is reachable from a real branch upstream. That last check matters: pinning alone does not detect imposter or dangling commits, and this rule only sees the shape of the ref, never its provenance. Reusable workflow calls (owner/repo/.github/workflows/x.yml@ref) run with the same trust as actions and are pinned the same way. Not reported, by campaign policy: temporalio/* refs (first-party, pinned by internal process), local ./ actions, self-repository $/ refs (resolve to the running commit, so they are already pin-equivalent), and docker:// images (pinned by digest as a separate ecosystem).
Fixed in 748c87a
| echo "extra=${IMAGE}:${REF_NAME}" >> "$GITHUB_OUTPUT" | ||
| fi | ||
|
|
||
| - uses: docker/build-push-action@v6 |
There was a problem hiding this comment.
Opengrep — security.gha.unpinned-action (WARNING)
Unpinned action reference docker/build-push-action@v6: this uses: resolves a mutable ref (tag or branch), so the code that runs in CI can change without this line changing. A compromised upstream can repoint the tag and execute arbitrary code with access to this repository's secrets and GITHUB_TOKEN (tj-actions/changed-files, March 2025). Pin to the full 40-character commit SHA with the resolved version in a trailing comment, e.g. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2. Prefer deputy pin --ecosystems github-actions, which resolves the ref, writes a version comment that reflects the most specific ref actually pointing at that commit, and verifies the SHA is reachable from a real branch upstream. That last check matters: pinning alone does not detect imposter or dangling commits, and this rule only sees the shape of the ref, never its provenance. Reusable workflow calls (owner/repo/.github/workflows/x.yml@ref) run with the same trust as actions and are pinned the same way. Not reported, by campaign policy: temporalio/* refs (first-party, pinned by internal process), local ./ actions, self-repository $/ refs (resolve to the running commit, so they are already pin-equivalent), and docker:// images (pinned by digest as a separate ecosystem).
Fixed in 748c87a
| permissions: | ||
| contents: read | ||
| steps: | ||
| - uses: actions/checkout@v4 |
There was a problem hiding this comment.
Opengrep — security.gha.unpinned-action (WARNING)
Unpinned action reference actions/checkout@v4: this uses: resolves a mutable ref (tag or branch), so the code that runs in CI can change without this line changing. A compromised upstream can repoint the tag and execute arbitrary code with access to this repository's secrets and GITHUB_TOKEN (tj-actions/changed-files, March 2025). Pin to the full 40-character commit SHA with the resolved version in a trailing comment, e.g. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2. Prefer deputy pin --ecosystems github-actions, which resolves the ref, writes a version comment that reflects the most specific ref actually pointing at that commit, and verifies the SHA is reachable from a real branch upstream. That last check matters: pinning alone does not detect imposter or dangling commits, and this rule only sees the shape of the ref, never its provenance. Reusable workflow calls (owner/repo/.github/workflows/x.yml@ref) run with the same trust as actions and are pinned the same way. Not reported, by campaign policy: temporalio/* refs (first-party, pinned by internal process), local ./ actions, self-repository $/ refs (resolve to the running commit, so they are already pin-equivalent), and docker:// images (pinned by digest as a separate ecosystem).
Fixed in 748c87a
Interleaved Slidev deck for the nexus-kotlin-decouple-monolith Instruqt track: short slide segments between challenges, filling the ~35 speaking minutes of a 90-minute session with a 40-minute lab block. Question-first spine reusing each challenge's existing framing question, plus a front-loaded concept block that teaches every Nexus term with real Kotlin before anyone opens the editor. Records the vocabulary the lab assumes but never defines, and the tradeoff the concept block accepts. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Nine tasks: scaffold, one per slide segment, then a timing and export pass. Each segment task lists the Temporal concepts to teach before drafting, so the deck author works from understanding rather than from an outline. Includes a paste-ready Slidev syntax reference, the theme's usable layouts, and five Mermaid diagram states written against the workshop's actual code. The scaffold task records why the theme has to be vendored rather than installed: pnpm's #<commit> directory name for a git dependency collides with Vite's CSS url() resolver. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ef77e73 to
748c87a
Compare
All six were seven-line stubs pointing at the plan; no written content is lost. Removes their files and their src: imports, leaving the deck at 19 slides: the cover plus segment 0. The interleaved per-challenge segments the plan describes are no longer part of the deck. If they come back, the plan and its Mermaid diagram states are still in PR #8. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Design spec and implementation plan for the Kotlin Nexus workshop deck. Docs only —
two files under
kotlin/docs/superpowers/. The deck itself is #11.What's here
specs/2026-08-11-nexus-kotlin-workshop-slides-design.mdplans/2026-08-11-nexus-kotlin-workshop-slides.mdApproach
Interleaved, not front-loaded. Slide segments between challenges rather than a
lecture followed by a lab. ~35 speaking minutes against the track's 40-minute lab
block, leaving ~15 for Q&A.
Question-first spine. Each segment opens with the framing question already
written in that challenge's Instruqt
notes, so the notes and the slides reinforcerather than duplicate.
A concept block up front. One definition-plus-code slide per Nexus concept,
taught before anyone opens the editor, with segments 2 through 4 shrinking to recall
rather than first exposure. The spec records the tradeoff this accepts: attendees
meet
WorkflowRunOperationabout 40 minutes before they write it.The vocabulary the lab assumes. Namespace, Task Queue, Workflow ID, Event
History, Update, and the caller/handler pair all appear in the assignments without
being defined. The spec maps each to the slide that owes it, and notes that the real
gap is not the definitions — the audience knows Temporal — but that Nexus repurposes
Namespace and Task Queue as addressing primitives.
Note on scope
track.ymlbudgets 120 minutes of challenge time into a 40-minute live block. Mostattendees will finish challenges 1–2 and get partway into 3. The plan is weighted for
that reality rather than against the nominal timings, which is why the segment
backing challenge 3 keeps the duplicate-Workflow failure slide even though the
concept is introduced up front.
🤖 Generated with Claude Code