What is moving, read from the forge.
read from git.snalpha.com/alex/phaethon on 27 Sep 2026 · every rung is an issue, every bar is closed over all
Jak X: bring-up complete
milestone 15 · 43 openJak X: Combat Racing runs from a cold boot with its world, sky and actors rendering, and the bring-up scaffolding retired.
JakX Enhanced
milestone 20 · 30 openThe enhanced preset's eye candy for the Jak X port, one issue per effect, every one a toggle that ships off so the retail preset is untouched (the two-mode rule). Bloom, explosion flashes, sun shafts, heat haze, motion blur, garage depth of field, tonemapping with a per-track color grade, and damage
Renderer: OpenGL to Vulkan
milestone 21 · 2 openThe renderer conversion, from the 2012-era OpenGL path to a direct Vulkan backend with ray query, in the order issue 2059 sets: SPIR-V shaders under GL 4.6 (landed), the frame replay oracle (landed), an in-house device layer implemented on GL first (landed), the Vulkan backend of that layer with the
Kernel: efficiency
milestone 22 · 2 openThe runtime's C side made efficient without the GOAL side noticing: the EE thread's frame, the barrier to the render thread, the Overlord's host IO, the loader and the memory card, the frame limiter, and the dead code the port carries. This is the goal the whole arc served (the renderer swap, the mu
Repository: structure
milestone 23 · all landedThe fifteen-rung restructure of the fork: five words for the product parts, one directory per fork process, a fixed out layout. Approved in full on 2026-09-23.
Release: v0.1.0
milestone 24 · 3 openThe first cut: a protected tag, the release job that builds and publishes the runtime bundle with its manifest, the releases unit on, the changelog from the train PRs, and the launcher installing from the store.
CI: audit and normalization
milestone 25 · 3 openThe inherited CI read against what it claims: the short-circuit made symmetric, the false greens closed, the contributor token hardened, one naming scheme, the stale upstream text gone. Every rung rides its own train and is exercised by dispatching the workflow on the train branch first.
Jak 3: visual parity
milestone 17 · closedJak 3 on PC renders and animates like the PS2, in this tree. An issue here closes when its fix is accepted into `develop`; the upstream contribution pipeline is tracked separately by the `state/` labels (staged, submitted, merged-upstream), which is what that axis exists for. So the meter reads pari
Contributor on-ramp
milestone 18 · closedAn ordered introduction to working in this tree, built from the open issues that are self-contained enough to not need the accumulated Jak X bring-up context. The intended order and the reasoning live in the pinned roadmap issue #71; this milestone exists for the progress meter and the filter view.
The next things to land.
the open rungs of the four smallest milestones · each one links to its issue
Renderer: OpenGL to Vulkan
#2369chore(jakx): the shadow unit note in background_common.cpp is stale, its override claim untestedgraphicsjakx#2090Direct and background receivers emit different GL blend state for two GS alpha blend modesgraphicsjakxKernel: efficiency
#2628The DGO hold backstop sleeps 1 ms where retail re-enters its 200 us and 4 ms armsruntimejak3jakxretail-divergence#2586Plain-boot memory audit: size the level heaps from the port's own x86 objectsruntimejakxRelease: v0.1.0
#2649The release job's pre-flight accepts any tag suffix and marks only -rc as pre-releasebuildall#2638A remastered boot applies the renderer's remastered levers without the debug windowruntimeallfeature#2623Release process: protected tags, the release job, the releases unit, the changelogbuildalltoolingIn the order it is likely to arrive.
None of it has a date. Each item says where it stands today and what done looks like, so progress can be read rather than promised.
Online multiplayer for Jak X
Jak X shipped with online races, deathmatch and the rest of its multiplayer modes over a service that no longer exists. The port keeps the game's own session, lobby and race code, and the goal is to run those modes again over the port's own networking, driven by the game's code as retail was.
Today
the game's network road runs in loopback on one machine (the runtime's own net manager exchanges its packets with itself), which is how the net-player and net-game-mgr landings are exercised. Nothing crosses a wire yet.
Done looks like
two ports on one LAN race each other through the game's own net game manager, then two across the internet, with the retail modes' rules intact.
First-class mod APIs
Custom levels, texture packs and GOAL-level changes exist today as files placed in the right directories, which is how OpenGOAL's community works with the trilogy. The goal is a documented, versioned surface for mods on the trilogy, and on Jak X once its port is complete, that the launcher installs and manages without touching the tree.
Today
custom levels build from custom_assets, texture packs are written beside them by the launcher and applied at extraction, and any GOAL change is a fork of the source.
Done looks like
a mod installs from the launcher, survives a runtime update, declares what it hooks through a documented API with a version, and is disabled as easily as it was enabled.
macOS release
The renderer runs on Vulkan, so macOS follows through MoltenVK rather than a second renderer. Windows is the daily platform and the Linux build compiles and boots in CI on every landing.
Today
macOS is not built. The CMake presets carry Darwin entries under the one build root, but no machine builds them and no reading has been taken.
Done looks like
a macOS build in the launcher's releases, the oracle's scene set green on it, a full race on Apple silicon at the faithful preset.
Steam Deck
The Linux build on the Deck's GPU at its 1280 by 800 panel, controller-first from the launcher to the race, with the remastered preset's frame cap and upscaler sized for the device.
Today
the Linux build exists and boots; the Deck has not been read, and the launcher is a Windows application.
Done looks like
a full race on the Deck at its cap under the remastered preset, verified from the Deck's own log, the launcher or an equivalent path running on SteamOS, and the game playable without a keyboard from power-on.
Achievements for all four games
Each game gets an achievement set of its own, awarded by the port from the game's own state and kept per profile beside the save data: the story milestones, the collectibles and the times in the trilogy, the races, the arenas and the cups in Jak X. A retail-faithful run and a remastered run both count. The sets are Phaethon's own: the titles, the descriptions, the badges and the unlock logic are written here, since the port's memory layout is not the console's and no console set's logic runs on it as it stands. RetroAchievements' PlayStation 2 sets for the four games (61, 94, 88 and 65 achievements) are a reference for what is worth awarding, not a source: their written policy excludes decompilations and unofficial ports from their service, so there is no account sync, and their text and badges stay theirs.
What is not coming.
- Sending work back to OpenGOAL or taking its changes: this fork is its own line.
- A compatibility layer of any kind, at any point.
- A date for any of the above.