The temporal-guides contract passed its cross-repo acceptance gate (spec M6): an external SSGI/SVGF consumer replaced its private temporal front-end with upscaler.guides and measured bit-identical still-camera stability, 1.275 s vs 1.288 s teleport reconvergence. @experimental came off the raw surface and MomentsPass in #1.
TemporalGuidesNode / temporalGuides() / UpscalerNode's guides option kept the tag. The reason is narrow and worth preserving: the contract those expose is the accepted one — what has no external mileage is the graph plumbing:
- stable node identity across frames while ping-ponged products get re-pointed
- the 1×1 nearest placeholder that keeps r32float format inference from ever seeing a filterable stand-in
- graph-dep registration order (the guides node must precede the color chain so its dispatch lands before effect renders)
- linked vs standalone mode selection, and the monolithic-
dispatch() fallback on frames where the early stage couldn't run
All of that is verified by us only, via examples/13-guides-node and its dispatch-spy probe (120 guides + 120 late, 0 monolithic over 1 s).
Close when: a consumer outside this repo has built a THREE.PostProcessing graph on temporalGuides(...) + upscale(..., { guides }) and reported it working — then drop the tag from src/TemporalGuidesNode.ts, src/UpscalerNode.ts, and the status lines in README/TEMPORAL-GUIDES-SPEC.md. If integration instead surfaces ergonomic problems, this is the issue to redesign under while the tag still permits it.
The temporal-guides contract passed its cross-repo acceptance gate (spec M6): an external SSGI/SVGF consumer replaced its private temporal front-end with
upscaler.guidesand measured bit-identical still-camera stability, 1.275 s vs 1.288 s teleport reconvergence.@experimentalcame off the raw surface andMomentsPassin #1.TemporalGuidesNode/temporalGuides()/UpscalerNode'sguidesoption kept the tag. The reason is narrow and worth preserving: the contract those expose is the accepted one — what has no external mileage is the graph plumbing:dispatch()fallback on frames where the early stage couldn't runAll of that is verified by us only, via
examples/13-guides-nodeand its dispatch-spy probe (120 guides + 120 late, 0 monolithic over 1 s).Close when: a consumer outside this repo has built a
THREE.PostProcessinggraph ontemporalGuides(...)+upscale(..., { guides })and reported it working — then drop the tag fromsrc/TemporalGuidesNode.ts,src/UpscalerNode.ts, and the status lines in README/TEMPORAL-GUIDES-SPEC.md. If integration instead surfaces ergonomic problems, this is the issue to redesign under while the tag still permits it.