Skip to main content

IL Syntax and Structure

The documented Intermediary Language (IL) expresses one property or relationship per line. It uses predictable phrases to make a CRADLE scenario easier to read during design and review.

note

This page defines a documentation convention, not a production parser grammar. The current reference branch does not provide an IL parser or automated converter.

General patterns

Most statements follow one of these forms:

component has property value
named-component Name has property value
named-component Name action object value

Examples:

environment has name ExampleEnvironment
instance Client has os ubuntu 20.04
event 1 run object InitializationScript

Value conventions

Because no parser contract currently exists, use these conventions to reduce ambiguity:

ValueConventionExample
NameUse a stable name without spacesTargetServer
BooleanUse lowercase true or falsefalse
DurationUse whole seconds10
Date-timeUse ISO 8601 with a time-zone designator2026-01-15T10:00:00Z
AddressUse an IPv4 address, CIDR range, or DHCP as appropriate192.168.10.0/24
Free textQuote text containing spaces"Initialize the client"
ParametersQuote the complete parameter string"mode=safe;count=1"
important

Names are cross-references. Use the same spelling and capitalization everywhere an instance, network, object, or event is referenced.

Environment statements

The environment statements correspond conceptually to CRADLE metadata.

PurposeIL formCRADLE concept
Scenario nameenvironment has name \{Name\}name("...")
Event modelenvironment has event type \{sequence|DAG\}eventType("...")
Remote repositoryenvironment has repository remote \{URI\}repositoryRemote("...")

Example:

environment has name ExampleEnvironment
environment has event type sequence
environment has repository remote https://example.com/repository

The documented IL notation does not contain a separate object-declaration statement for metadata. A manual translation must collect object names from instance, event, and object-location statements and declare them in CRADLE metadata.

Instance statements

PurposeIL formCRADLE concept
Operating systeminstance \{Name\} has os \{Platform\} \{Version\}os("...", "...")
Object associationinstance \{Name\} has object \{Object\}object("...")
Configurationinstance \{Name\} has config \{Configuration\}config("...")
Roleinstance \{Name\} has role \{Collection\} \{Role\} \{Variables\}role("...", "...", "...")

Example:

instance Client has os ubuntu 20.04
instance Client has object InitializationScript
instance Router has os ubuntu 20.04
instance Router has config linux-router
instance Router has role example.collection router "lan=lan_0"

The current compiler’s role form distinguishes a collection name from a role name. Older IL documentation represented only a role and variables, which is not sufficient for a lossless mapping to the current compiler form.

Network statements

PurposeIL formCRADLE concept
Subnetnetwork \{Name\} has subnet \{CIDR\}subnet("...")
Endpointnetwork \{Name\} has endpoint \{Instance\} \{Address\}endpoint("...", "...")

Example:

network lan_0 has subnet 192.168.10.0/24
network lan_0 has endpoint Client DHCP
network lan_0 has endpoint Router 192.168.10.1

Network and instance declarations are inferred during manual translation. Each network and endpoint name must be declared explicitly in formal CRADLE.

Event-phase statements

PurposeIL formCRADLE concept
Pre-event membershippreEvent has event \{Event\}Event listed in preEvent()
Main-event membershipmainEvent has event \{Event\}Event listed in mainEvent()
Post-event membershippostEvent has event \{Event\}Event listed in postEvent()

Example:

mainEvent has event 1
important

Every event should belong to one phase. Event names or order values should be unique within a scenario.

Event statements

PurposeIL formCRADLE concept
Instanceevent \{Event\} has instance \{Instance\}instance("...")
Elevated privilegesevent \{Event\} need root \{true|false\}needRoot("...")
Subjectevent \{Event\} has subject \{Subject\} \{Parameters\}subject("...", "...")
Objectevent \{Event\} run object \{Object\} \{Parameters\}runObject("...", "...")
Delay beforeevent \{Event\} pause before run \{Seconds\}pauseBeforeRun("...")
Delay afterevent \{Event\} pause after run \{Seconds\}pauseAfterRun("...")
Dependencyevent \{Event\} wait for \{false|Event\}waitfor("...")
Scheduleevent \{Event\} has schedule execution \{DateTime\}scheduleExecution("...")
Descriptionevent \{Event\} has description \{Text\}description("...")

Example:

event 1 has instance Client
event 1 need root false
event 1 has subject bash ""
event 1 run object InitializationScript ""
event 1 pause before run 0
event 1 pause after run 0
event 1 wait for false
event 1 has schedule execution 2026-01-15T10:00:00Z
event 1 has description "Initialize the client"
important

Advanced wait modules and asynchronous execution settings do not have a stable IL mapping in the current documentation.

Object statements

PurposeIL formCRADLE concept
Artifact locationobject \{Name\} has location \{Location\}location("...")

Example:

object InitializationScript has location ${uriRemote}/scripts/initialize.sh
important

Object names must be added to CRADLE metadata and must match instance and event references.

Mapping coverage

CRADLE areaIL coverageLimitation
Basic metadataPartialLocal repositories and some metadata extensions are not represented.
InstancesPartialArchitecture, I/O, descriptions, and heuristics are not defined.
RolesPartialThe current three-part role form supersedes older two-part IL examples.
NetworksBasicPlatform-specific network behavior is not represented.
Event phasesBasicPhase membership is represented one event at a time.
EventsPartialExecution flow, advanced waits, and heuristics are not defined.
ObjectsBasicLocation is represented; heuristic annotations are not defined.

Translation checks

When translating an IL document into formal CRADLE, verify that:

  • all required top-level CRADLE sections are present
  • instances, networks, events, and objects are declared before use
  • every named reference resolves exactly
  • free-text and parameter boundaries remain intact
  • IL values use the types and allowed values expected by the target CRADLE release
  • unsupported compiler properties have not been omitted
  • the resulting CRADLE specification is reviewed independently of the IL text