Rainbow — Development Decisions

Parent: Rainbow development

2026-10-16: Follow README/documentation-in-notes: keep project documentation in Notes and repository Markdown files as one-line pointers. No implementation language, framework, or tooling has been selected in this session.

2026-10-16 — Finalized design

User requested individual-droplet images, efficient CPU use, full parameterization including size and density, and a finalized design before implementation. Select C++20, OpenMP, CMake/Ninja, toml++ configuration and OpenEXR HDR output. Separate reusable Mie scattering from particle projection and tile accumulation. Use physical and weighted particle modes with explicit normalization, spectral reference and derived XYZ acceleration, independent seeds, versioned caches and resource-bounded independent jobs. Support cores and sockets; keep multi-machine job interface available without assuming hosts or deploying workers. No application code or installation authorized by this design step.

Reasoning: precomputation avoids repeated scattering solves; exclusive tile ownership avoids pixel-write contention; separate physical density and numerical sample count preserve image meaning during tuning; independent jobs make processor allocation, sweeps and resumption straightforward.

Architecture

Parameter contract

Execution and dependencies

2026-10-16 — Implementation and diagnostic logging

The user's later explicit request to develop the code superseded the earlier no-coding instruction. Use the vendored MIT toml++ header to avoid a package installation; libpng provides standard PNG output and OpenEXR provides linear HDR output. Local Git uses .git-local with the git-local wrapper because .git is read-only.

After the blackout, user explicitly requested remote diagnostic logging to existing hosts. Choose outbound SSH to gravlax and durable append/ACK records, with local rotating fsynced copies, rather than modifying infrastructure or introducing new listening ports. Gravlax-to-pomelo discovery failed (unresolved pomelo alias; existing kelp:2222 route rejected the key). Use the already-working pomelo-to-gravlax route. Sender failures are bounded and logged without stalling sampling; source includes boot/collector IDs for duplicate recognition. No credential or firewall changes. Local systemd service activation is a user-terminal step because the tool sandbox denies D-Bus access. Do not use SSH back into pomelo to bypass that boundary.

Keep incident causality open. Build writes coincide with the final unlogged interval, but thermal, GPU, memory or power failure has not been established. Source checkpoint is explicitly unverified; image and performance checks remain outstanding.

2026-10-16 — Explicit localhost SSH authorization and working renderer

John explicitly instructed use SSH localhost to issue the link/enable/start commands. This supersedes the earlier session-specific restriction recorded above; the authorized commands succeeded. Fix authentication by reusing a private user-owned unlocked SSH agent rather than altering credentials or the global service environment. Service is now enabled with verified remote acknowledgements.

After live logging was confirmed, resume with two-job builds and two-thread renders. Choose reproducible mono and truncated-lognormal presets; reduce default render threads to two while additional scaling is assessed. Source readback fixes input/table checks, thread-setting propagation, proximity bounds and image-I/O memory allowance; source digest, complete timings and peak RSS are saved. Release/numerical/shard/telemetry tests passed; address/undefined checks passed with LeakSanitizer unavailable in the sandbox. The image milestone is achieved at f4e0751; measured evidence and remaining physical-model limits are in rainbow/dev/review.

version 4  ·  created 2026-10-16  ·  updated 2026-10-16