Introduction
Scope
The scope of this manual is instrument-team developers and integrators who
author OTTO Instrument Packages (IPs) for ELT-era instruments using the IpTool
YAML authoring layer, its compiler (ifwIpToolCompiler) and validator
(ifwIpToolValidator).
The manual does not describe the OTTO IP JSON schemata themselves nor the CII Config Service in depth; for those, the appropriate ESO documentation must be consulted (see the references in Overview).
What IpTool is
IpTool is the YAML authoring layer for OTTO Instrument Packages (IPs). An Instrument Package is the configuration bundle an instrument’s software team delivers to ESO’s observation preparation team so observations with that instrument can be prepared: it declares the observation templates the instrument supports, what parameters they take, what observing constraints apply, and what checks the astronomer must complete before an observation is accepted. Without an IP, an instrument is invisible to ESO’s preparation tools and no observation can be prepared for it.
The OTTO IP format itself is JSON. JSON is fine for machines but a poor authoring format: no comments, no inheritance, and a lot of repetition between similar templates. IpTool lets you author the same content in YAML — with comments, with file includes, and with per-template overrides on shared parameter definitions — and compiles it down to the OTTO JSON the preparation tools expect.
IpTool is shared ESO infrastructure for ELT-era instruments, not a tool built for any single instrument. The first real-instrument workload is FORS3, but the same authoring conventions, validator, parallel compile, and tooling are intended to serve every ELT instrument that joins (MICADO, METIS, HARMONI, MOONS, ANDES, and others). Feedback from one instrument team becomes a feature for every subsequent one.
What IpTool gives you
A YAML authoring layer, based on the CII Config Service, with file inclusion (
!cfg.include) and field-level inheritance (!cfg.merge) over typed instances.A compiler (``ifwIpToolCompiler``) that produces every artefact defined by the OTTO IP schemata — Format, TemplateIndex, Template Signatures, Constraints, Checklist, Laser, plus sample OBDs and Sequencer Script stubs ready to dry-run in the ELT IFW Sequencer. Parallel template loading by default keeps the inner loop fast even on real-instrument-sized projects.
A validator (``ifwIpToolValidator``) that checks a generated IP against the OTTO JSON schemas.
Three bundled examples: TSTINS (“test instrument”) exercising every shape the OTTO IP schemata define, TSTNLS (“test instrument, no laser”) covering the no-laser branch, and the full-scale FORS3 IPT (77 templates, 5-prefix parameter library) showing what a real-instrument IP looks like end-to-end. See Examples.
Who should read this manual
Instrument-team developers and integrators who need to author an IP for a new or evolving ELT-era instrument. The manual assumes you have heard of OTTO IPs but does not assume you have built one before. Read the chapters in order:
Overview — what an IP actually is, what artefacts make it up, and how IpTool fits into the operations pipeline. Also introduces the CII Config Service features IpTool relies on.
Schema — the three IpTool YAML file roles and the typed instances inside them, with an end-to-end walkthrough of one parameter from author’s YAML to OTTO JSON.
CLI — the compiler and validator, with a step-by-step Quickstart you can run in five minutes.
Examples — the bundled TSTINS example walked through template by template, plus the full-scale FORS3 IPT example as an at-scale reference (77 templates, per-prefix parameter library).
Tutorial — recipes for the tasks an instrument team actually performs (bootstrap a new instrument; author each parameter type; per-template overrides; common validator errors).
Acronyms
Acronym |
Expansion |
|---|---|
CII |
Common Infrastructure for Instrumentation. |
ELT IFW |
Extremely Large Telescope Instrument SoftWare framework. |
IP |
Instrument Package. |
IPT YAML |
IpTool YAML source file ( |
OB |
Observation Block. |
OBD |
Observation Block Description. |
OTTO |
“Otto Tackles Telescope Observations”. |
Glossary
Term |
Meaning |
|---|---|
CFGPATH |
Colon-separated list of root directories the CII Config Service
searches for files referenced by relative path ( |
CII Config Service |
The CII service IpTool builds on: a typed YAML configuration
engine providing |
ELT IFW Sequencer |
The ELT IFW component that executes Observation Block Descriptions (OBDs) by running the instrument’s Sequencer Scripts. |
Instrument Package (IP) |
The full set of OTTO JSON artefacts an instrument team produces and ESO’s observation preparation tools consume. Defines the observation templates the instrument supports, their parameters, the observing constraints that apply, and the checklist items astronomers must complete. See Overview. |
INTROOT / PREFIX |
The user-local install root used by ESO build systems ( |
IpTool |
The tool described in this manual ( |
Keyword |
In OTTO context: a single parameter declaration (one
|
Observing constraint |
One of the OTTO-named observing conditions an OB depends on
( |
Parameter |
Used interchangeably with Keyword in this manual: one
|
Phase 1 / Phase 2 |
ESO’s proposal preparation (Phase 1) and observation preparation (Phase 2) workflow steps. Phase 1 templates are the ones an astronomer can pick when writing a proposal; Phase 2 templates cover the rest (acquisition, calibration, technical). |
PYTHONPATH |
Colon-separated list of root directories the Python runtime
searches for importable packages and modules. The ELT IFW
Sequencer expects the IpTool-generated stubs to be reachable via
|
Sequencer Script |
The instrument-team-authored Python module that implements one
observation template’s logic. The Sequencer loads it via
|
Template |
An observation template: a named, parameterised “kind of
observation” the instrument supports (e.g.
|
Template Signature |
The OTTO JSON file describing one template
( |