ablative docs
↑↓ move↵ openesc close
Stack Notebook ablative.com.au

AWL recipes, walls and artifacts

Assembly parameters, dependency steps, artifact digests, preconditions and execution receipts.

Open .md

Assembly words

recipe awl 18

Declares an assembly act: typed parameters with declared kinds, and the ordered steps those parameters feed.

  • form declaration
  • positions top-level
//! Order the acts of a staging assembly, and say what each one does.

workflow staging_assembly
  outcome fired: type String, route success

push_branch branch:
  git push -- {{branch}}

artifact known_answer_red ".fleet/gate-entry.sh"
  digest "77f0333fcea03ada0c017af9fdea725231c3e2aecce8ade71781571daff9115d"
  restores ".fleet/gate-entry.sh"

artifact operating_ground "dispatch-rigs/sleepreap/OPERATING-GROUND.md"
  digest "032ee3d7598ac361a731a5f0917b47a6b1ea7c32c3cc3b9670b3c11c32db23b7"

recipe stage_the_flight
  parameter branch: String per_item
  step read_ground
    captures ground: String of artifact operating_ground
  step self_test
    after read_ground
    requires "workers serving the queue"
    fires artifact known_answer_red expecting "deliverable_absent"
  step push
    after self_test
    runs command push_branch

step announce
  route fired("stage declared")
parameter awl 18

Declares one of a recipe's typed parameters and its kind — `skeleton`, `per_item`, `both`, or `re_derive`.

  • form assembly-clause
  • positions recipe-body
//! Declare what a rig supplies once, what it supplies per dispatch, and what
//! it re-derives.

workflow investigation_rig
  outcome composed: type String, route success

open_clone remote:
  git clone -- {{remote}}

recipe compose_investigation
  parameter tracker: String = "github" skeleton
  parameter issue: String per_item
  parameter investigate_prompt: String both
  parameter control_expect: String re_derive derives "origin/main:workflows/investigate/investigate_worker.awl" extract "line 22"
  step clone
    runs command open_clone

step announce
  route composed("input declared")
derives awl 18

Names the source address a `re_derive` parameter is read from at the fire minute, never at the compose minute.

  • form assembly-clause
  • positions recipe-body
//! Declare what a rig supplies once, what it supplies per dispatch, and what
//! it re-derives.

workflow investigation_rig
  outcome composed: type String, route success

open_clone remote:
  git clone -- {{remote}}

recipe compose_investigation
  parameter tracker: String = "github" skeleton
  parameter issue: String per_item
  parameter investigate_prompt: String both
  parameter control_expect: String re_derive derives "origin/main:workflows/investigate/investigate_worker.awl" extract "line 22"
  step clone
    runs command open_clone

step announce
  route composed("input declared")
extract awl 18

Names what a derivation takes out of its source — `line <n>` or `whole`, and nothing an evaluator would be needed for.

  • form assembly-clause
  • positions recipe-body
//! Declare what a rig supplies once, what it supplies per dispatch, and what
//! it re-derives.

workflow investigation_rig
  outcome composed: type String, route success

open_clone remote:
  git clone -- {{remote}}

recipe compose_investigation
  parameter tracker: String = "github" skeleton
  parameter issue: String per_item
  parameter investigate_prompt: String both
  parameter control_expect: String re_derive derives "origin/main:workflows/investigate/investigate_worker.awl" extract "line 22"
  step clone
    runs command open_clone

step announce
  route composed("input declared")
wall awl 18

Declares a wall once, so its prompt rendering and its mechanical enforcement come from one source and cannot disagree.

  • form declaration
  • positions top-level
//! Declare the wall a round enforces and the artifact its census measures.

workflow staging_sources
  outcome staged: type String, route success

diff_census base_pin:
  git diff --name-only {{base_pin}}..HEAD

/// One wall, one home: this declaration is projected into the prompt a role
/// reads AND into the mechanical census, so the two cannot disagree.
wall changed_paths
  allows "crates/aion-awl"
  allows ".fleet/"
  excludes "mutation vocabulary"

/// The gate the flight fires, declared with the digest the census measures
/// its deployed bytes against.
artifact gate_entry ".fleet/gate-entry.sh"
  digest "1e1e3ad2ae66bb0bef5b82a8e154491032ee3d7598ac361a731a5f0917b47a6b"
  excludes "RECORD-RUN-PENDING"

recipe measure_the_tree
  parameter base_pin: String per_item
  step census
    runs command diff_census

step announce
  route staged("sources declared")
allows awl 18

Declares one path pattern a wall admits; the patterns are what both of the wall's renderings are projected from.

  • form assembly-clause
  • positions wall-body
//! Declare the wall a round enforces and the artifact its census measures.

workflow staging_sources
  outcome staged: type String, route success

diff_census base_pin:
  git diff --name-only {{base_pin}}..HEAD

/// One wall, one home: this declaration is projected into the prompt a role
/// reads AND into the mechanical census, so the two cannot disagree.
wall changed_paths
  allows "crates/aion-awl"
  allows ".fleet/"
  excludes "mutation vocabulary"

/// The gate the flight fires, declared with the digest the census measures
/// its deployed bytes against.
artifact gate_entry ".fleet/gate-entry.sh"
  digest "1e1e3ad2ae66bb0bef5b82a8e154491032ee3d7598ac361a731a5f0917b47a6b"
  excludes "RECORD-RUN-PENDING"

recipe measure_the_tree
  parameter base_pin: String per_item
  step census
    runs command diff_census

step announce
  route staged("sources declared")
excludes awl 18

Declares bytes that must not appear — a term a round measured out of a wall, or the sentinel that says an artifact was never filled.

  • form assembly-clause
  • positions wall-body, artifact-body
//! Declare the wall a round enforces and the artifact its census measures.

workflow staging_sources
  outcome staged: type String, route success

diff_census base_pin:
  git diff --name-only {{base_pin}}..HEAD

/// One wall, one home: this declaration is projected into the prompt a role
/// reads AND into the mechanical census, so the two cannot disagree.
wall changed_paths
  allows "crates/aion-awl"
  allows ".fleet/"
  excludes "mutation vocabulary"

/// The gate the flight fires, declared with the digest the census measures
/// its deployed bytes against.
artifact gate_entry ".fleet/gate-entry.sh"
  digest "1e1e3ad2ae66bb0bef5b82a8e154491032ee3d7598ac361a731a5f0917b47a6b"
  excludes "RECORD-RUN-PENDING"

recipe measure_the_tree
  parameter base_pin: String per_item
  step census
    runs command diff_census

step announce
  route staged("sources declared")
artifact awl 18

Declares something a recipe reaches for outside the document, by the address its bytes live at, so the reference census can measure it.

  • form declaration
  • positions top-level, recipe-step
//! Declare the wall a round enforces and the artifact its census measures.

workflow staging_sources
  outcome staged: type String, route success

diff_census base_pin:
  git diff --name-only {{base_pin}}..HEAD

/// One wall, one home: this declaration is projected into the prompt a role
/// reads AND into the mechanical census, so the two cannot disagree.
wall changed_paths
  allows "crates/aion-awl"
  allows ".fleet/"
  excludes "mutation vocabulary"

/// The gate the flight fires, declared with the digest the census measures
/// its deployed bytes against.
artifact gate_entry ".fleet/gate-entry.sh"
  digest "1e1e3ad2ae66bb0bef5b82a8e154491032ee3d7598ac361a731a5f0917b47a6b"
  excludes "RECORD-RUN-PENDING"

recipe measure_the_tree
  parameter base_pin: String per_item
  step census
    runs command diff_census

step announce
  route staged("sources declared")
digest awl 18

Declares an artifact's content digest, which the fire step measures the deployed bytes against before anything runs.

  • form assembly-clause
  • positions artifact-body
//! Declare the wall a round enforces and the artifact its census measures.

workflow staging_sources
  outcome staged: type String, route success

diff_census base_pin:
  git diff --name-only {{base_pin}}..HEAD

/// One wall, one home: this declaration is projected into the prompt a role
/// reads AND into the mechanical census, so the two cannot disagree.
wall changed_paths
  allows "crates/aion-awl"
  allows ".fleet/"
  excludes "mutation vocabulary"

/// The gate the flight fires, declared with the digest the census measures
/// its deployed bytes against.
artifact gate_entry ".fleet/gate-entry.sh"
  digest "1e1e3ad2ae66bb0bef5b82a8e154491032ee3d7598ac361a731a5f0917b47a6b"
  excludes "RECORD-RUN-PENDING"

recipe measure_the_tree
  parameter base_pin: String per_item
  step census
    runs command diff_census

step announce
  route staged("sources declared")
restores awl 18

Declares the path a fired artifact must restore byte-exactly; the restoration is byte-compared and refuses if inexact.

  • form assembly-clause
  • positions artifact-body
//! Order the acts of a staging assembly, and say what each one does.

workflow staging_assembly
  outcome fired: type String, route success

push_branch branch:
  git push -- {{branch}}

artifact known_answer_red ".fleet/gate-entry.sh"
  digest "77f0333fcea03ada0c017af9fdea725231c3e2aecce8ade71781571daff9115d"
  restores ".fleet/gate-entry.sh"

artifact operating_ground "dispatch-rigs/sleepreap/OPERATING-GROUND.md"
  digest "032ee3d7598ac361a731a5f0917b47a6b1ea7c32c3cc3b9670b3c11c32db23b7"

recipe stage_the_flight
  parameter branch: String per_item
  step read_ground
    captures ground: String of artifact operating_ground
  step self_test
    after read_ground
    requires "workers serving the queue"
    fires artifact known_answer_red expecting "deliverable_absent"
  step push
    after self_test
    runs command push_branch

step announce
  route fired("stage declared")
runs awl 18

Names the declared command a recipe step or a worker action runs; neither ever carries a shell string, which is unparseable rather than discouraged.

  • form header-clause
  • positions worker-block, recipe-step
//! Order the acts of a staging assembly, and say what each one does.

workflow staging_assembly
  outcome fired: type String, route success

push_branch branch:
  git push -- {{branch}}

artifact known_answer_red ".fleet/gate-entry.sh"
  digest "77f0333fcea03ada0c017af9fdea725231c3e2aecce8ade71781571daff9115d"
  restores ".fleet/gate-entry.sh"

artifact operating_ground "dispatch-rigs/sleepreap/OPERATING-GROUND.md"
  digest "032ee3d7598ac361a731a5f0917b47a6b1ea7c32c3cc3b9670b3c11c32db23b7"

recipe stage_the_flight
  parameter branch: String per_item
  step read_ground
    captures ground: String of artifact operating_ground
  step self_test
    after read_ground
    requires "workers serving the queue"
    fires artifact known_answer_red expecting "deliverable_absent"
  step push
    after self_test
    runs command push_branch

step announce
  route fired("stage declared")
captures awl 18

Declares the typed result a step reads a declared artifact into.

  • form assembly-clause
  • positions recipe-step
//! Order the acts of a staging assembly, and say what each one does.

workflow staging_assembly
  outcome fired: type String, route success

push_branch branch:
  git push -- {{branch}}

artifact known_answer_red ".fleet/gate-entry.sh"
  digest "77f0333fcea03ada0c017af9fdea725231c3e2aecce8ade71781571daff9115d"
  restores ".fleet/gate-entry.sh"

artifact operating_ground "dispatch-rigs/sleepreap/OPERATING-GROUND.md"
  digest "032ee3d7598ac361a731a5f0917b47a6b1ea7c32c3cc3b9670b3c11c32db23b7"

recipe stage_the_flight
  parameter branch: String per_item
  step read_ground
    captures ground: String of artifact operating_ground
  step self_test
    after read_ground
    requires "workers serving the queue"
    fires artifact known_answer_red expecting "deliverable_absent"
  step push
    after self_test
    runs command push_branch

step announce
  route fired("stage declared")
fires awl 18

Names the declared demonstration artifact a step fires, so a known-answer red is executed rather than remembered.

  • form assembly-clause
  • positions recipe-step
//! Order the acts of a staging assembly, and say what each one does.

workflow staging_assembly
  outcome fired: type String, route success

push_branch branch:
  git push -- {{branch}}

artifact known_answer_red ".fleet/gate-entry.sh"
  digest "77f0333fcea03ada0c017af9fdea725231c3e2aecce8ade71781571daff9115d"
  restores ".fleet/gate-entry.sh"

artifact operating_ground "dispatch-rigs/sleepreap/OPERATING-GROUND.md"
  digest "032ee3d7598ac361a731a5f0917b47a6b1ea7c32c3cc3b9670b3c11c32db23b7"

recipe stage_the_flight
  parameter branch: String per_item
  step read_ground
    captures ground: String of artifact operating_ground
  step self_test
    after read_ground
    requires "workers serving the queue"
    fires artifact known_answer_red expecting "deliverable_absent"
  step push
    after self_test
    runs command push_branch

step announce
  route fired("stage declared")
expecting awl 18

Names the known answer a fired artifact is compared against, typed; a mismatch refuses the stage with both sides' bytes.

  • form assembly-clause
  • positions recipe-step
//! Order the acts of a staging assembly, and say what each one does.

workflow staging_assembly
  outcome fired: type String, route success

push_branch branch:
  git push -- {{branch}}

artifact known_answer_red ".fleet/gate-entry.sh"
  digest "77f0333fcea03ada0c017af9fdea725231c3e2aecce8ade71781571daff9115d"
  restores ".fleet/gate-entry.sh"

artifact operating_ground "dispatch-rigs/sleepreap/OPERATING-GROUND.md"
  digest "032ee3d7598ac361a731a5f0917b47a6b1ea7c32c3cc3b9670b3c11c32db23b7"

recipe stage_the_flight
  parameter branch: String per_item
  step read_ground
    captures ground: String of artifact operating_ground
  step self_test
    after read_ground
    requires "workers serving the queue"
    fires artifact known_answer_red expecting "deliverable_absent"
  step push
    after self_test
    runs command push_branch

step announce
  route fired("stage declared")
requires awl 18

Declares a required precondition. Fire requires the operator to mark it as met.

  • form assembly-clause
  • positions recipe-step
//! Order the acts of a staging assembly, and say what each one does.

workflow staging_assembly
  outcome fired: type String, route success

push_branch branch:
  git push -- {{branch}}

artifact known_answer_red ".fleet/gate-entry.sh"
  digest "77f0333fcea03ada0c017af9fdea725231c3e2aecce8ade71781571daff9115d"
  restores ".fleet/gate-entry.sh"

artifact operating_ground "dispatch-rigs/sleepreap/OPERATING-GROUND.md"
  digest "032ee3d7598ac361a731a5f0917b47a6b1ea7c32c3cc3b9670b3c11c32db23b7"

recipe stage_the_flight
  parameter branch: String per_item
  step read_ground
    captures ground: String of artifact operating_ground
  step self_test
    after read_ground
    requires "workers serving the queue"
    fires artifact known_answer_red expecting "deliverable_absent"
  step push
    after self_test
    runs command push_branch

step announce
  route fired("stage declared")

Parameters and boundaries

A parameter’s kind says how it is filled. A re-derived parameter is read from its declared source at fire time, because an earlier composition can become stale. Unfilled skeleton values are refused by name.

Walls declare admitted paths and excluded content. Artifacts declare their address, digest and any restoration promise. The reference census compares deployed bytes with the declared digest before steps run.

Syntax examples

wall changed_paths
  allows "crates/aion-awl"
  allows ".fleet/"
  excludes "mutation vocabulary"

artifact gate_entry ".fleet/gate-entry.sh"
  digest "1e1e3ad2ae66bb0bef5b82a8e154491032ee3d7598ac361a731a5f0917b47a6b"
  excludes "RECORD-RUN-PENDING"

recipe stage_the_flight
  parameter branch: String per_item
  parameter control_expect: String re_derive derives "origin/main:workflows/investigate/investigate_worker.awl" extract "line 22"
  step self_test
    requires "workers serving the queue"
    fires artifact gate_entry expecting "deliverable_absent"
  step push
    after self_test
    runs command push_branch

Ordering and receipts

Step dependencies determine execution order. The operator must mark each required precondition as met. A refused fire still returns a receipt naming what was measured and which stage refused.

The CLI’s recipe commands implement the local tree and process ports. They do not bypass the language’s composition and fire checks. Read recipe command help.

Parameter kinds and checks

skeleton
Fixed across dispatches of the assembly.
per_item
Supplied for each dispatch.
both
Partly fixed and partly supplied per dispatch.
re_derive
Read from the declared source at fire time. It has no hand-written literal. Extraction is whole or a one-based line number.
Venue values
A parameter for a value already supplied by dispatch has no default; consume the dispatch value rather than restating it.
Artifact digest
Exactly 64 lowercase hexadecimal SHA-256 characters; fire compares the referenced deployed bytes.
Preconditions
Every required at-fire precondition must be answered by name. Missing answers refuse before execution.