An explainable image compiler
troid & robby
The reverse-obverse image duality — a two-sided photographic object whose other face is a deterministic, inspectable image, produced by a compiler that shows its working.
A working compiler, on the page
From obverse to reverse.
MS201306-BipashaAashish0192.jpg · 2271 × 1703 · Teppanyaki Counter resolved · K = 8
A photograph in the gallery, chosen by the user. The compiler reads its bytes, builds the recipe's reverse, and binds them together — the obverse stays sacred; the reverse is born. Right of the obverse, the Teppanyaki Counter shows every visible stage as it runs: Intake MEASURED, Read VERIFIED with C2PA PRESENT, Measure MEASURED, Split DERIVED.
What you see is the working mechanism — not a simulation. The compiler's eight stages drive the right panel in real time; the palette swatches and palette K slider above are the controls; the button below turns the photograph to its inverse.
A two-sided image
What if an image had a reverse?
Digital photographs normally have one visible face. Their origins, transformations, credentials, colour material, and computational history are usually hidden, fragmented, stripped away, or inaccessible.
Troid proposes a different image form — a digital photograph can become a two-sided object, like a postcard or a coin. One face is the photograph. The other is a related, deterministic, inspectable image.
A 2023 MFA thesis · Ulster PHT 805
Compilers do not have to be black boxes.
Robby extends a thesis first articulated in [Tech.City.Night.Work.Man]: a compiler can be a beautiful instrument whose visible working mechanism becomes part of the object it produces.
"I am now once again surrendering control to the compiler which picks apart my world and makes sense of it so that I can reassemble a new fictional world more representative of reality than dull reality itself." <br />— Mahesh Shantaram, Ulster MFA PHT 805, 2022
An Obverse–Reverse Image Object
Meet the orio cookie
MS201306-BipashaAashish0192.jpg · 2271 × 1703 · Teppanyaki Counter resolved
A real robby session: the obverse on the left, the Teppanyaki Counter on the right. The counter shows the live status of every visible stage — Intake MEASURED, Read VERIFIED with C2PA PRESENT, Measure MEASURED, Split DERIVED — and a one-line provenance statement: This reverse belongs to the active obverse, recipe, evidence policy, and compiler runtime.
Every photograph in the gallery is a candidate for an orio cookie. The user selects one. The compiler reads its bytes, builds the recipe's reverse, and binds them together — the obverse stays sacred; the reverse is born.
The format and the compiler
troid and robby
Troid is the Reverse-Obverse Image Duality: the format, the concept, and the two-sided image-object itself. Robby is the explainable compiler and working museum that produces and displays it.
The gallery gives the compiler corporeality — before compilation it is a calm photo viewer; after an intentional request, it becomes a laboratory.
Authored, lexed, validated
The recipe is the author's instrument
The user writes a compact, human-readable program. It is not a fake settings panel — the compiler submits the authored text verbatim.
A recipe edit makes an earlier reverse visibly stale until the user compiles again. Invalid drafts are not silently fixed or guessed by the UI.
What the eight stages produce
Eight visible stages of an orio
MS201306 · PALETTE GRID · K = 8 · SEED C92D2A2F
Once all eight stages run, the inverse appears. This is the same photograph from slide 5, flipped to its reverse: a palette grid at K = 8, arranged from the photo's dominant colours by a deterministic seed. The image is born — and it carries a binding to the original obverse, recipe, evidence policy, and runtime.
Act I · Read the source.01 Intake — record the source artifact and its byte identity.02 Read — extract EXIF / IPTC / XMP evidence + C2PA status.03 Measure — compute canonical pixel identity.
Act II · Author the program.04 Split — extract deterministic palette weights.05 Declare — lower the authored recipe to canonical IR.
Act III · Produce the artifact.06 Bind — form the reproducibility binding.07 Resolve — run the deterministic renderer.08 Marry — bind obverse + reverse into the session's orio cookie.
A real compiler stack
A real compiler, not a filter
Robby source flows through a Rust lexer, parser, validator, and canonical IR — then through measurement, palette split, and binding, before a deterministic renderer produces the reverse image and runtime record.
The IR wire format stays intentionally stable as robby-ir-v1 while the compiler and execution contracts evolve behind it.
No semantic recognition
Opaque input, not image surveillance
Semantic content
Robby does not perform recognition of faces, bodies, rooms, landscapes, relationships, or events. It never claims to know what the photograph means.
Inspectable material
Exact source bytes, canonical decoded pixels, colour distributions, palette weights, explicit user settings, selected embedded evidence, and the compiler and renderer versions.
The reverse is derived from what the file materially is,
not a claim about what the photograph means.
Deterministic colour extraction
Palette — colour becomes material
MS201306 · PALETTE GRID · K = 24 · SEED FD049AAB
The user picks a palette size K. K = 24 means twenty-four distinct dominant colours are sampled from the obverse and arranged by a deterministic seed. The grid grows denser, more nuanced — closer to the source's actual chromatic material. Same source, same K, same seed, same recipe — identical pixel hash.
When the source has fewer distinct colours than K, Robby clamps honestly and explains why — rather than fabricate swatches or duplicate colours. The palette is not a mood board. It is traceable.
A deterministic object
The binding is not ownership
Robby forms a deterministic object binding from real compile inputs: source bytes, canonical pixels, the recipe, the canonical IR, the disclosure policy, the approved evidence, and the runtime versions.
The binding answers one question — does this reverse belong to this exact source, recipe, policy, and runtime? It does not claim copyright, authorship, ownership, or metaphysical truth.
Five run-bound states
C2PA — precise, not performative
5 run-bound outcomes
NOT INSPECTED · ABSENT · PRESENT (valid, trusted signer) · PRESENT (valid, untrusted signer) · PRESENT (invalid) · UNAVAILABLE. The result is shared across counter, provenance, manifest, and orio.
The reverse never inherits
A Robby reverse never inherits or impersonates the obverse's C2PA credential. C2PA is inspected from the original, untouched source bytes — never from generated output.
NOT INSPECTED · ABSENT · PRESENT · VALID · TRUSTED · UNTRUSTED · INVALID · UNAVAILABLE
Sacred source, explicit disclosure
Privacy as a creative boundary
Edit the source
Rewrite, recompress, resize, or strip metadata in place. Overwrite the source with a derivative. Write generated reverse files into a watched source folder. The source artifact is read; the workspace is transient or Robby-managed.
Private vs share-safe material
Original photograph, raw EXIF/IPTC/XMP, exact GPS and capture time, filename, device IDs, full C2PA manifest — these are private. The reverse carries only share-safe material: abstract palette field, binding mark, bounded evidence states, disclosure summary.
Working, advanced, deliberately unfinished
What has been achieved
MS201306 · PALETTE GRID · K = 48 · SEED A2400E79
<strong>The compiler.</strong> Lexer → renderer, end-to-end. A working Rust-based image compiler with all stages, plus a WASM-connected web interface. <strong>The laboratory.</strong> A gallery/laboratory/museum for viewing and compiling two-sided image-objects on demand. <strong>The K axis.</strong> 3 → 64. The same source, the same recipe, the same seed — and the palette grid scales from sparse to fine-grained chromatic representation.
Robby is advanced, but intentionally unfinished in the most important artistic sense. What kind of reverse becomes a work of art worth preserving and sharing? The studio table is set.