Runnable handbook deliveries

rascunho 4 min de leitura 760 palavras Editar no GitHub

A delivery joins a validated content bundle to a versioned, compiled host and its installed labs. Extract its ZIP and run node serve.mjs with Node.js 24. Recipients need no repository checkout, compiler, registry access or npm install. The same files can be served by an existing HTTPS static host.

Three interaction contracts

openlabs/lab/v1 describes an implementation, not executable model behavior:

KindStructural contractExecution
flowCanonical .mmd, openlabs/mermaid-skeleton/v1Explicit runtime and model
stateDomain model, such as the native Kubernetes manifestExplicit event/state runtime
directDomain-specific inputs and outputsDedicated implementation; no flow engine required

Mermaid is the structural source for compositional flows. Its exact source file ships in the delivery and has a digest; it is not a visualization generated from an alternative graph. The existing Collector parser and conformance tests still enforce the relationship between that source and the compiled model. Changing a delivered .mmd alone does not recompile a lab.

State and direct labs are first-class contracts. The Pod lifecycle lab uses interactive-core and kubernetes-domain; cardinality uses direct manipulation. Neither is adapted into a flow graph. Behavior stays in reviewed TypeScript, with the model’s tests, rather than a new universal programming language in YAML.

Every descriptor pins an id, version, route and interaction. Flow and state also pin their runtime version. The host resolves both lab id and route, supports the interaction kind and matches runtime versions exactly. Missing implementations, duplicate identities and mismatched descriptors prevent release or execution.

Independent content and runtime releases

The existing openlabs/handbook/v1 and openlabs/bundle/v1 remain readable. Optional assessment banks travel in openlabs/bundle/v2; content-only exports keep v1. The alpha.2 portable host mounts end-of-lab and final assessments with late feedback, objective scores and local attempt reports. See Interactive assessments. Authors can edit and release content without changing an engine. A bundle contains the normalized curriculum and Markdown; it never installs lab code.

openlabs/host-template/v1 identifies a compiled host, capabilities, installed lab descriptors and file digests. openlabs/delivery/v1 pins the handbook release, host, required lab descriptors and SHA-256 digests of all shipped assets. release.json is the index and does not hash itself. Contract versions, package versions and an author’s release version have different purposes. Explicit release versions use major.minor.patch, optionally with a SemVer prerelease suffix. This alpha uses exact compatibility, with no range solver.

The generic assembly API lives in @ovh/handbook-format/contract (alpha.4). The separate handbook-catalog package holds this host’s reviewed lab catalog. It keeps subject-specific installation decisions out of the SDK.

Build or download

In the Studio, open Delivery, inspect the required implementations, set a release version and select Download runnable release. Validation errors or unknown labs block this download. Source ZIP and content bundle exports remain available for their own purposes. The browser fetches the prebuilt host assets; the handbook stays local and is assembled into the ZIP in the browser.

From a framework checkout:

pnpm install
pnpm delivery:build --handbook kubernetes --version 0.1.0
# Or content exported by an independent author:
pnpm delivery:build --bundle /path/to/handbook.json --version 0.1.0

Output is a folder and ZIP under dist/deliveries/. An existing output folder is refused. After extracting:

cd kubernetes-0.1.0
node serve.mjs
# Open the address printed by the server.

The server verifies every indexed file before listening and serves only those verified bytes. Modified or missing files refuse startup. The browser validates the bundle, host and lab compatibility, handbook digest and canonical Mermaid digests before mounting a lab. SHA-256 detects inconsistent files; the release index is not a publisher signature. Distribute the complete archive through your organization’s trusted channel.

Private use and current limits

Companies can build the framework, keep handbook sources private and serve the result entirely inside their infrastructure. System fonts and bundled assets allow the learning interactions to run without a public OpenLabs origin. Article references are optional outbound navigation. HTTPS or localhost is required by browser integrity checks. Organization access control belongs to the existing hosting or proxy layer; the bundled server provides local serving.

The alpha host compiles three reviewed adapters: Pod lifecycle, Collector pipeline and cardinality. Only required labs appear in a handbook’s curriculum; the compiled host contains all three. Adding another implementation currently requires extending the host’s catalog/component registry and rebuilding it. Content cannot import remote modules or arbitrary plugin code. General adapter packaging, publisher signatures, hosted organization management and automatic deployment are future work. AI assistance currently uses the Studio’s explicit brief handoff, without sending private sources to a model automatically.