Workflow packages¶
For workflow authors who want one portable directory to describe,
instantiate, run, and collect a workflow. A package is a directory whose
httk_workflow.toml is the strictly httk-owned glue around a runner; the
whole directory is published content-addressed and digest-pinned per job:
my-workflow/
├── httk_workflow.toml
└── run # the executable entry (any language)
[workflow]
id = "example.relax"
[workflow.runner]
entry = "run"
steps = ["prepare", "relax", "publish"]
initial_step = "prepare"
[workflow.inputs.structure]
destination = "POSCAR"
entry_type = "structures"
[workflow.parameters.encut]
default = 520
job new --workflow-dir my-workflow --input structure=POSCAR instantiates a
job from it. Declared inputs are staged objects; parameters are knobs;
[workflow.environment.*] consumes typed workspace settings;
[workflow.instantiate]/[workflow.collect] hooks and
[workflow.postprocess.NAME] scripts run in any language; and compiled
workflows declare [workflow.build] (sources-only digests, binaries built and
registered per machine with httk workflow build).
The [workflow.build] vocabulary and engine are shared httk.core.building
machinery. httk-workflow owns the workspace store layout, platform-tagged
registrations, and manager artifact overlay; the build semantics are unchanged.
An installed httk₂ plugin may bundle workflow packages. Resolution checks
in-process registrations first, then installed plugins; workflow listings label
plugin entries with their owning plugin, while workflow describe reports a
plugin entry as source: installed-package.
The full guide, Workflow packages in detail, is the manifest reference: every table and key, hook envelopes, output declarations and provenance, language realizations, and the build-registration mechanics.