# Changelog

## Unreleased

## v0.1.0-rc4 - 2026-09-25

### Launcher contract

- **The session journal holds up under failure, and the tree names alex/phaethon (#2682).** A journal line whose format throws gives its ring slot up, where it used to wedge the writer and `stop()`; a full ring drops an event before making its line; a string in the kernel's range is read only to that range's end; the session event reads strings only where `print_string` does; and the pipe admits only the user gk runs as, its security warning naming the call that failed. The landing status posts to alex/phaethon, and the documents and rows name it and its launcher.

### Jak X

- **The extractor knows Jak X, so the launcher imports the retail disc (#2683).** `-g jakx` is accepted, the disc database knows SCUS-97429 v2.00 by its ELF hash, file count and content hash, the jakx decompiler config extracts levels only by default as the trilogy's do, the compile stage creates `out/jakx/iso` on a fresh install, and a decompile or compile pointed at a folder that is not the requested game stops with its own exit code, 4003, instead of running Jak 1's config. The launcher's three stages run the disc end to end in 36 s on a warm cache.

### Delivery

- **The release manifest carries each game's rebuild keys, and the release carries this changelog (#2688).** `games` holds a decompile key and a compile key per game, derived from the git object ids of each stage's inputs, so the launcher rebuilds only the games and stages a runtime update reaches; `changelog.md` sits beside the manifest and at the zip's root and is never a runtime file.

### CI

- **The verdict script names the review account phaethon-bot (#2690).** After the account's rename its approvals no longer moved a pull request to train-ready; the default follows the new name and `REVIEW_ACCOUNT` still overrides it.

## v0.1.0-rc3 - 2026-09-25

### Launcher contract

- **The runtime keeps a session journal the launcher reads (#2674).** One JSON line per event, under the local Phaethon folder and on a named pipe: Jak X reports its title, menus, races, cutscenes and loads, and Jak 1 to 3 their session and loads. The events, the paths and the versioning rule are in `docs/recipes/session-journal.md`, and this candidate is the runtime the launcher's session reader (v0.2.0-rc2 and after) is written against.

### Kernel

- **The kernel's residue landed (#2655, #2662, #2667, #2670).** The v3 link road's packing assert and top allocation checks in all four games, the DGO hold's retail arms, and the ISO thread woken by a queued command.

### CI

- **The CI image is built and published by CI (#2674, #2676, #2678).** The Linux jobs run on the image the image job builds from `.forgejo/ci-image/Dockerfile` and publishes.

## v0.1.0-rc2 - 2026-09-24

### CI

- **The release job publishes its package with a package-scoped token (#2647).** The job token cannot write a package, so the package step takes the repository secret `PACKAGE_TOKEN`, and the pre-flight refuses a tag while it is unset. This candidate exercises that step, the one rc1's run could not complete.
- **The review account's verdict moves a pull request's state label (#2647).** Whoever posts the review runs the verdict, and approval sets `state/train-ready` where a request for changes sets `state/wip`.
- **A nightly run of both full suites (#2647).** Over the head of `develop`, every goalc-test row but the manual ones on the Linux clang and the Windows MSVC builds, with the checker battery.
- **The full suite runs on both CI platforms (#2647).** Every landing builds and runs it on Linux clang and on Windows MSVC.

## v0.1.0-rc1 - 2026-09-24

### All games

- **The first cut of Phaethon: retail-faithful native ports of all four games on the Vulkan renderer.** Jak and Daxter, Jak II, Jak 3 and Jak X: Combat Racing.
- **The remastered preset.** `--preset remastered` boots it, and it keeps its own settings file.
- **The level heap audit.** A level load logs its audit lines, and the boot smoke reads them.
- **The debug window.** Whether it opens is one startup decision, from `-debug`.
- **The log files every line under a subsystem.** Lines print in time, level, thread and subsystem columns, and the debug window's Log tab shows the same columns.

### Launcher contract

- **The bundle is the layout the launcher installs, with its manifest.** The runtime, the MSVC runtime, the notices and the sources the launcher's disc import decompiles and compiles from, never anything disc-derived, and a `manifest.json` naming every file's sha256.

### CI

- **An annotated version tag becomes a release.** Pushing a `v*` tag starts the release job, which builds Windows with NGX and FSR on, packages the bundle, and publishes it as the tag's forge release and as the `phaethon-runtime` generic package; this candidate exercises that job.
