PlayTime, Scriptbook, and CentrMark

Write this so someone with no background can follow.

What do I need?

You only need this page if you are changing how playbooks run, or how they talk to the Equivalence Engine.

The three names

Think of a cookbook, a kitchen, and the recipes on the page.

Three layers: CentrMark the book, PlayTime the stage, Scriptbook the app
Figure 1. Cookbook, kitchen, waiter
Layer Name Job

Format

CentrMark (.cmk files)

The writing. Directives like ::: playbook and ::: step. CentrMark does not run anything.

Engine

PlayTime

The kitchen. It reads a playbook, learns what computer you are on, asks the Equivalence Engine for the right command, runs it, and writes a sidecar. It does not own package catalogs. It does not rewrite the .cmk.

App

Scriptbook

The reader. Today this is the scriptbook CLI. Later it is also a DevCentr screen. It opens a .cmk, talks to the user, and asks PlayTime to play.

Keep the word playbook for the document (`

playbook`). PlayTime is the moment it runs. Scriptbook is the app that starts that moment.

Do not split PlayTime into a new GitHub repo yet. Today PlayTime is the D library in lib/. The CLI in cli/ is Scriptbook. The binary name stays scriptbook. It rhymes with OpenShellOrg (argv, host honesty). It stays here while it is being built.

PlayTime in the Dev-Centr workshop; dotted maybe-later path to OpenShellOrg
Figure 2. Aligned, not moved
Five boxes: snapshot, filter, ask, bind, run
Figure 3. Detect, filter, maybe ask, bind, run

Who may call whom

  • CentrMark must not call the Equivalence Engine.

  • PlayTime may call libequivalence.

  • Scriptbook may call PlayTime. It must not rank install methods itself.

  • The Equivalence Engine must not parse .cmk files.

What this is not

This is not a translator that rewrites bash into PowerShell.

A Linux apt script enters a hot-replace grinder and comes out as broken Windows commands
Figure 4. Do not put a bash script through a blender

A playbook should name an intent (what you want). PlayTime binds that intent to a command for this computer. Glue that is already portable can stay as a Nushell (or other) script cell.

See: