Conversation
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
skymap | a7e2d8b | Commit Preview URL Branch Preview URL |
May 08 2026, 02:03 AM |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Spec D, the design follow-on to Specs A/B/C. Specs A → B → C cut
engine.tsfrom 2377 to 1129 lines (52%) and gave every file a logical folder; what's left mangled is the abstractions still missing inside the relocated files. This spec proposes four small, independently-mergeable migrations that fix those gaps:FrameContext— derive the per-frame snapshot once, consume in bothrunFrameandrenderFrame. Eliminates the duplicateddrawPxPerRad/drawCamPosderivation and replaces the 5-way "is engine ready?" null-check with a single discriminated narrowing.Passabstraction — formalise each draw block inrenderFrame.tsas aPass(name,enabled,draw);renderFramebecomes afor (const p of PASSES)loop over 4 HDR passes plus an inlined tone-map post-process. Each pass becomes a one-file unit underengine/frame/passes/.selectionSubsystem— extract the hover/select cluster fromengine.tsinto a sibling oftweenManager/thumbnailSubsystem.isEngineReadypredicate — one TypeScript discriminated narrowing for "post-bootstrap" checks; replaces 7+ scattered re-spellings of the same probe.Targets after all four PRs land:
engine.ts ≤ 1000lines,runFrame.ts ≤ 250,renderFrame.ts ≤ 150plus 5–6 new pass files, all 931+ tests green.Test plan
This is a design spec only — no source changes. Implementation lands as four follow-up PRs, each with at least one regression test for the contract being introduced (full test plan in the spec's Testing section).
engine.ts; 13 distinct readiness-check sites across 5 files; 22 closure-snapshot references inrunFrame.ts)This PR can merge before the impl PRs (so they can reference it) or after (so the spec only lands when the work is done) — at the user's discretion.
🤖 Generated with Claude Code