Skip to content

NXForge 0.19.0: pinned nxnative engine plus NXForge layer - #46

Merged
gnosticgeek merged 6 commits into
mainfrom
release-0.19.0
Nov 8, 2026
Merged

gnosticgeek merged 6 commits into
mainfrom
release-0.19.0

Conversation

@gnosticgeek

Copy link
Copy Markdown
Owner

What and why

Tom asked to take nxnative's engine whole instead of merging it piecemeal, with the player, the converter and NXForge's fixes as a separate layer. This release makes that the layout:

  • layer/ENGINE pins an untouched nxnative commit (c78d737, nxnative main of 2026-11-08).
  • layer/patches/ holds NXForge's changes to nxnative's files as 9 themed patches: host-player, host-threads, host-video, gfx-metal, shader-tools, packing, dev-tools, games and docs.
  • layer/files/ holds the engine files NXForge adds.
  • scripts/layer.py has five commands: assemble, status, update, try and export. It assembles them into tree/, which is git-ignored and is where builds run.
  • The Converter (now 0.4.0), the nxforge CLI, the other scripts and CI all assemble first, then work in tree/.
  • The repository root is now NXForge's own: app/, scripts/, tests/, docs/ and the changelogs.

On the move to c78d737, two NXForge copies were dropped for nxnative's own landed versions:

The shader chain is now 98747cde2289, so every game's shaders are translated again on its next build.

Checked

  • Cloud:
    • layer.py assemble from clean.
    • Round trip: assembling at the old pin reproduced main.
    • The dm/tools/tests failures match an untouched c78d737 checkout. The exceptions are a Linux-only cp -X failure and a missing lz4 module.
    • Root tests/ pass, as do ruff and pyright on scripts and tests, and release_check.py lint.
  • Mac (M4 Pro):
    • Assemble and the host build (GAME=0400C3F00006E000) pass.
    • swift build and swift test for the converter pass.
    • gfx and host engine tests are in progress.
  • Games: not yet. One rebuild and play test is planned before merging.

Docs

  • A chain tool changed: dmsh_chain.py --header was run and dmsh_chain.h is part of the shader-tools patch.
  • No game files, keys or data extracted from a game.

Generated by Claude Code

claude and others added 5 commits November 8, 2026 13:22
layer/ENGINE pins seedds/nxnative (bd979ce, what main merged); NXForge's
changes to nxnative's files are 9 themed patches in layer/patches; the files
NXForge adds to the engine are in layer/files. scripts/layer.py assemble
builds tree/ (a git-ignored worktree: the pin, one commit per patch, then the
layer files). The root keeps only NXForge's own parts: the converter (app/),
its scripts and tests, docs, changelogs and workflows.

Assembling at bd979ce gives back today's main byte for byte (dm/, docs/ and
scripts/ outside the files that moved to the root).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qteK4U7UAc5p3k4mJJhPJ
…e tree

- Converter: Layer.swift (tree/ of a layered checkout, else the checkout; layer
  paths as engine paths for the rebuild advice; the pin for the upstream count).
  The Toolchain check assembles tree/ and the engine row says when it cannot;
  a build assembles again first and runs in tree/. Old checkouts still work.
- nxforge CLI, source_info.py, perf_release.py, smoke_mac.sh: same, via tree/.
- layer.py try: a dry run of an update (per patch: applies, in nxnative,
  conflicts). The nightly upstream-check posts it instead of a test merge;
  the watch job compares pull requests with main's assembled engine.
- CI: engine jobs assemble tree/ and run there; NXForge's own script tests run
  from tests/. pr-areas, issue-areas and triage-report (nxnative's label and
  triage tools; issues are off here) are removed.
- UPSTREAM.md: Engine and layer (from 0.19.0) replaces the thin-fork rules;
  AGENTS.md is NXForge's own; README links engine docs on nxnative.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qteK4U7UAc5p3k4mJJhPJ
Drops NXForge's copy of nxnative seedds#1368 (mesh prewarm) for upstream's own fix, and
NXForge's post-first-frame recapture for upstream's period-based compaction (keeps
PSO_ARCH_COMPACT 24 and DM_PSO_ARCH_COMPACT). Shader chain 98747cde2289. The engine
docs no longer describe NXForge's own scripts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qteK4U7UAc5p3k4mJJhPJ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qteK4U7UAc5p3k4mJJhPJ
nxnative c78d737 added findings to files the layer does not touch (new gfx tests, nvn_queue.inc) without raising its baseline; the ratchet holds the layer to the pinned engine's counts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qteK4U7UAc5p3k4mJJhPJ

Copy link
Copy Markdown
Owner Author

The label check fails here, and this PR can't fix it.

  • First run: GitHub's API returned a 502.
  • Re-run: Labels can have a maximum of 100 labels. This PR moves the whole engine out of the repository root, so main's pr-areas.yml maps its file list to more than 100 area labels.

pr-areas.yml runs from main (pull_request_target), so no change on this branch can reach it. This PR deletes that workflow along with the engine tree, so the check goes away once it merges. The engine and tool checks in tests.yml are the ones that matter for this PR.


Generated by Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qteK4U7UAc5p3k4mJJhPJ
@gnosticgeek
gnosticgeek merged commit d9682c7 into main Nov 8, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants