Showcase Packaging for Academy Labs¶
Status¶
Proposed — Showcases remain a documentation lens under docs/showcases/ while Academy lab packaging lives under deployment/academy/showcases/, reusing the same automation rather than forking it.
1. Context¶
HybridOps.Studio uses showcases to tell end-to-end stories about the platform: architecture, automation and evidence. These are primarily documented under the MkDocs tree as:
docs/showcases/<slug>/README.mdfor the narrative; and- auto-generated catalogue and by-audience views.
The same scenarios are strong candidates for Academy labs. Lab users
need task-focused material and a stable way to run the scenarios themselves.
Previously, there was an idea to keep a separate showcases/ tree at the repo
root, with per-showcase Makefiles, vars and scripts. This risks duplication and
drift from the canonical automation in:
deployment/(environment orchestration, inventories, overlays),core/(reusable roles, modules and helpers),control/(operator tools and decision helpers),ci/(lint, render, dry-run, and pipelines).
We want:
- A single source of truth for automation and infrastructure definitions.
- A clean separation between docs lenses and lab packaging.
- A repeatable pattern for turning any showcase into a lab, without forking or re-implementing core logic.
- A clear signal in documentation that a given showcase has an Academy variant and where it is packaged.
ADR-0023 is part of the broader docs and Academy model defined in:
- ADR-0021 – Documentation Access and Gating Model
- ADR-0022 – Documentation, Public Site, and Academy Strategy
2. Decision¶
- No separate root
showcases/code tree
There will be no dedicated showcases/ folder at the repository root for
holding roles, playbooks or pipelines. All automation remains in the
existing platform folders:
deployment/for inventory, vars, overlays and orchestration;core/for roles, collections, helpers and modules;control/for tools, wrappers and decision artefacts;-
ci/for CI/CD definitions and pipeline documentation. -
Showcases remain a documentation lens under
docs/showcases/
Each showcase has a narrative page in the docs tree:
docs/showcases/<slug>/README.md
This page:
- tells the story (executive summary, case study, architecture);
- links to ADRs, runbooks, briefings and CI docs;
- links to evidence via the Evidence Map and Proof Archive;
-
advertises any associated Academy lab.
-
Academy lab packaging lives under
deployment/academy/showcases/
When a showcase is promoted to a full lab, its packaging (not core automation) lives under:
deployment/academy/showcases/<slug>/
Typical contents:
README.lab.md— student-facing lab instructions (tasks, pre-reqs, expected outcomes);tasks/— step-by-step task descriptions, checklists or YAML task specs;solutions/— model answers, diff outputs, or reference scripts;overlays/— inventory/vars overlays specific to the lab flavour of the scenario;files/— any lab-only assets that do not belong in core roles or environment overlays.
This folder must not contain independent copies of roles, core playbooks or pipelines. It only composes and constrains the existing platform code for the lab use case.
- Showcase README advertises the lab via
academyfront-matter
The showcase docs template is extended with an academy block, for example:
academy:
enabled: true
package_path: "deployment/academy/showcases/<slug>"
lab_id: "HOS-SH-001"
access: "academy"
The Academy track section in docs/showcases/<slug>/README.md explains
what the lab covers and references this packaging path and lab id.
- CI/CD and evidence remain platform-wide
Labs use the same CI/CD pipelines and evidence collection patterns as the
rest of the platform. Where extra scripts are needed for lab ergonomics,
they are added under appropriate control/ tooling or deployment/ helpers,
not under docs/.
3. Rationale¶
-
Single source of truth
Keeping all automation indeployment/,core/,control/andci/prevents drift between “demo code” and “real code”. Labs become thin overlays on top of the same system that backs the portfolio and production-style examples. -
Clear separation of concerns
docs/showcases/focuses on narrative, diagrams and links.
deployment/academy/showcases/focuses on learner tasks, overlays and packaging. Neither tries to duplicate the other. -
Better story for assessors and hiring managers
Assessors see that each showcase: -
has a rigorous underlying implementation;
- can be turned into a lab without creating a forked codebase;
-
is wired into evidence and CI/CD like the rest of the platform.
-
Scalable for Academy growth
As new labs are added, they follow the same pattern.gen_showcase_index.pyand the docs templates can surface which showcases have labs without introducing per-lab logic into the codebase.
4. Consequences¶
Positive¶
- Labs and showcases both reuse the same core building blocks.
- No duplicate roles, playbooks or pipelines under a separate
showcases/tree. - Easier maintenance: changes to environment definitions or roles automatically flow through to labs and demos.
- Documentation cleanly separates story (docs) from lab packaging
(
deployment/academy/showcases/). - Future Academy-specific tooling (for example lab launchers or grading scripts)
can target the
deployment/academy/showcases/structure consistently.
Negative / trade-offs¶
- There is no single
showcases/folder that can be zipped and shipped as a standalone bundle without additional tooling. Packaging a lab for external delivery may require a dedicated script or export process. - Lab authors must understand the platform layout (deployment/core/control/ci) rather than working in a completely isolated mini-project.
- Some scenarios may need care to avoid putting large artefacts in the docs tree; heavy artefacts remain in proof/evidence locations and are only linked from showcase READMEs.
5. Options considered¶
-
Dedicated
showcases/project tree at repo root
Rejected due to duplication risk, maintenance overhead and drift from canonical automation. -
Labs implemented only as docs (Markdown + copy-paste commands)
Rejected as too weak: lacks structured packaging, overlays and solution material for serious Academy use. -
Academy packaging under
deployment/academy/showcases/(chosen)
Balances re-use of existing automation, clarity of structure and room for future tooling.
6. Follow-up actions¶
- Update the showcase README template to include the
academyfront-matter block and refinedAcademy tracksection. - Create an initial example lab package under
deployment/academy/showcases/<slug>/to validate the pattern end-to-end. - Extend internal documentation for lab authors to reference this ADR and provide a checklist for new labs.
- Optionally, add a small CI smoke test that validates the presence and basic
structure of
deployment/academy/showcases/*packages.
Maintainer: HybridOps.Studio
License: MIT-0 for code, CC-BY-4.0 for documentation unless otherwise stated.