Skip to content

[Recon] Lumos render-path heat attribution (condition 1) #68

@wow-miley

Description

@wow-miley

Suggested model tier: Opus 4.x high

Context

Lumos regressed to a static radial gradient and #67 is already bisecting that across the artifact boundary. If animation has since returned, it may have returned via an expensive fallback — a per-frame recomposition of a Brush is dramatically hotter than a GPU shader. This recon determines whether the orb is a primary heat source independent of any Arc (isolation condition 1: Lumos animating, no Arc).

Depends on the socket-link/socket#1011 harness for the static-frame seam and ThermalProbe readout.

Objective

Quantify Phosphor's standalone render cost under condition 1 and classify the bottleneck as GPU-bound, CPU/recomposition-bound, or allocation-bound.

Steps (each verifiable)

1. Run condition 1. Capture a Metal System Trace + Core Animation FPS.
Validation: you have a frame-rate number and GPU utilization %. High FPS + high GPU → Phosphor implicated immediately.

2. Confirm the render path is hardware-accelerated (Skiko → Metal), not a software/CPU draw fallback.
Validation: Metal trace shows real GPU command buffers per frame.

3. Inspect the animation driver: paced by withInfiniteAnimationFrameNanos / display-link sync, or an uncapped loop / tight delay? On ProMotion an uncapped loop renders at 120Hz.
Validation: measured frame cadence matches an intentional cap, not a busy spin.

4. Check whether VoxelFrame DTOs are recomputed per frame and on which thread, and whether recomposition scope leaks beyond the draw surface (whole orb recomposing vs. isolated drawWithCache/Canvas).
Validation: allocation rate per frame in Instruments; recomposition counts scoped to the draw node only.

Expected outcome

Verdict — Phosphor is / isn't a primary culprit — with a GPU/CPU/allocation breakdown and the specific hot path if implicated. Findings feed #67's version-axis bisection.

Technical constraints

Compose Multiplatform + Skiko/Metal on iOS; VoxelFrame DTO contract from Phosphor; consumes the socket-link/socket#1011 static-frame Koin seam and ThermalProbe.

Out of scope

Fixing the renderer. The #67 regression root-cause (this recon may hand it evidence).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions