T2 chain · creators / media:nika:image_fxmakes a duotone twin of each sample photo, thennika:image_composelays the two photos side by side and the four images out as a 2×2 contact sheet. No model, no image program to install, no network: the same photos give the same sheet, byte for byte, on the same pinned engine.
The job
A contact sheet used to mean a round trip through an image editor, or anexec: call to an image program, with a shell boundary to grant and a tool to
install. Here the sheet is a builtin call: the layout is written once in
YAML, every input is a read the check judges, and the result carries its own
recipe.
The shape
The file
image-compose-sheet.nika
Two things this file teaches
- Every input is a read, every sheet a write. The
permits:block names the exact files: the two photos and the two duotones the sheet reads back, and the four files the run writes.nika checkjudges each literal input ofnika:image_composeagainstpermits.fs.readbefore anything runs, so a missing grant is a check-timeNIKA-SEC-004, not a surprise at run. - The sheet waits for what it reads.
sheetreads the duotones thatsunset_duotoneandharbour_duotonewrite, soafter:orders it behind both.stripreads only the photos, so it runs in the first wave.
Run it
What it needs: The two sample PNG files. No model, no key, no network.
1
Rehearse it
2
Get your own copy
Save the file above as
image-compose-sheet.nika in a new folder, then download the samples it reads:3
Check it, then run it
out/contact/strip.png and
out/contact/sheet.png. Each sheet’s output carries its path, sha256,
width and height; run it again and identical bytes already at out: are
an idempotent skip.