Skip to content

docs: reconcile public WebGPU evidence and release boundaries - #34

Draft
lxsolutions wants to merge 3 commits into
mainfrom
docs/public-evidence-refresh
Draft

docs: reconcile public WebGPU evidence and release boundaries#34
lxsolutions wants to merge 3 commits into
mainfrom
docs/public-evidence-refresh

Conversation

@lxsolutions

@lxsolutions lxsolutions commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Summary

Reconciles the repository's public WebGPU story with the current machine-readable and GitHub evidence, without changing renderer behavior.

Contradictions found

  • Public current-state prose still reported 8- and 13-patch checkpoints while engine-lock.toml contains patches 0001–0022.
  • README/runtime prose described Forward+ as not hardware-tested, although merged patches 0018–0022 record P40 runs; the latest measured result is 18 GPUValidationError entries and no rendered frame.
  • Provenance docs still said there were no accepted artifacts or public game proof after p0014 templates and Chariot source were published.
  • The Pages landing page called the 14-patch release the current patch series and said Chariot source was unavailable.
  • Current main and the published p0014 release were treated as one moving artifact in several places.
  • The p0014 release assets do not match the separately accepted local pair in [artifacts.export_templates]; the release description also told readers to rebuild from moving main.
  • Historical shader counts and pending states were presented beside current claims without a clear dated boundary.

Files and behavior corrected

  • Reworked README.md, BOOTSTRAP_REPORT.md, NOTICE.md, ADRs 0002/0008, WebGPU provenance/runtime/performance/startup docs, engine docs, patch docs, and the update runbook.
  • Added docs/architecture/webgpu-evidence.md as the canonical claim/evidence/reproduction/caveat matrix.
  • Added separate machine-readable lock records for:
    • the actual p0014 release bytes and patch-through boundary;
    • the locally accepted build-pair provenance;
    • current Forward+ hardware state (patch 0022, 18 errors, no frame, no published templates).
  • Added a prominent README table that makes p0014 (0001–0014, Forward Mobile, published) distinct from current main (0001–0022, unfinished Forward+, no p0022 artifacts).
  • Added canonical Pages source under docs/pages/ and a trusted-main workflow that updates only gh-pages/index.html, preserving the existing demo/showcase exports.
  • Added tools/ci/validate_public_evidence.py, 10 focused tests, local-link/Pages-link validation, and wiring through just test-python, just lint, and therefore just ci-local.
  • Updated the existing GitHub p0014 release description with the correct release/main boundary, attribution, exact public hashes, hardware scope, and rebuild caveat.

Verification

Passed:

  • just engine-verify-patches — 22 patches, checksums/order valid.
  • just public-evidence-validate — 22 current patches, p0014 through patch 0014.
  • uv run --project tools python -m unittest discover -s tools/ci/tests -p "test_*.py" -v — 10 passed.
  • just test-python — 170 tests passed across studio MCP, infra, evidence CI, engine scripts, and selected bforge suites.
  • npm.cmd ci --prefix infra/nakama — locked dependency installed; 0 vulnerabilities.
  • just test — passed on rerun, including Rust, Python, protocol, Nakama, and Godot (25 methods / 139 asserts / 0 failures; 2 PostgreSQL tests intentionally ignored).
  • Changed-file Ruff check and format check — passed.
  • uv run --project tools python tools/ci/validate_workflows.py — 1 workflow passed trust/action-pin policy.
  • git diff --check — passed.
  • Downloaded both p0014 release assets and independently recomputed the published byte counts/SHA-256 values; both match the new release lock table.
  • Generated Pages run 30172422561 — passed.
  • Live landing, demo, showcase, p0014 release, and branch evidence-matrix URLs — HTTP 200.
  • Live HTML — reports 22 current patches, p0014 through 0014, and Forward+ at 18 errors/no frame; the old “currently 14 patches,” unavailable-game-source, not-hardware-tested, and no-public-proof phrases are absent.

Attempted but blocked by unchanged main baselines:

  • just lint — Rust fmt/clippy and Ruff check passed; Ruff format failed because unchanged tools/godot/run_godot.py would be reformatted.
  • just ci-localtest stage passed; stopped at the same unchanged Ruff-format baseline.
  • just release-validate --allow-dirty — stopped because unchanged games/chariot/server/Cargo.lock needs regeneration for its manifest and the validator correctly uses --locked.

No engine rebuild or new GPU run was performed for this documentation-only change.

Remaining unverified claims

  • Forward+ WebGPU still does not render; 18 validation errors remain after patch 0022.
  • No p0022 template pair has been rebuilt, browser-accepted, recorded as a public release, or published.
  • Safari/iOS, native Android/iOS, and non-NVIDIA GPU vendors remain unverified.
  • The known p0014 Jolt concave-collider regression remains unresolved.
  • The evidence was produced by the repository team, not independent third-party validation.

Rollback

Revert commits d368c46, f542923, and 944610c in that order. After a merge, the Pages workflow will sync the reverted canonical landing page on the next trusted main push. The externally edited p0014 release description can be restored separately with gh release edit godot-4.7.1-webgpu-p0014 --notes-file <previous-notes> if the documentation rollback requires it.

To roll back the immediate Pages deployment before this PR lands, revert 9b97625025bb8e3db4ef1d45bc17411750cc0ed0 on gh-pages and push the revert.

Scope confirmation

No engine implementation, patch content, patch checksum, downloadable archive, or existing artifact hash was changed. The lockfile additions record already-published release hashes and already-measured Forward+ state; the original local accepted-artifact hashes remain byte-for-byte unchanged.

@lxsolutions

Copy link
Copy Markdown
Owner Author

Evidence relevant to this reconciliation, from PR #39's branch: the visual QA gate ran The Chariot Club's full 13-shot sweep on smeagol through --method forward_plus --renderer vulkan (Tesla P40, driver 580.173.02) — 27 stills, 0 findings, renderer_method: forward_plus recorded in the report. That is a hardware-rendered, measured Forward+ result for a full game scene (SSAO/SSIL/SDFGI/volumetric fog active on desktop_high), which the README's current 'not yet hardware-verified' ceiling row predates. Details in PR #39 and its comments.

🤖 Generated with Claude Code

lxsolutions pushed a commit that referenced this pull request Jul 27, 2026
…lean"

My own wording in this branch was too generous. "Boots, compiles, does not yet
render clean" implies a frame appears with validation errors on it. It does not.
No frame has ever rendered under Forward+.

The evidence was already sitting in the PR chain and I under-read it. #29 says
it outright -- "Forward+ still does not render. This clears the abort layer, not
the finish line" -- and nothing since contradicts it: 0019-0022 report
GPUValidationError counts and abort counts and never once an fps figure or a
draw count, which is precisely what every Forward Mobile verification does
report. Absence of that number across four consecutive patches is the tell.

Credit to the draft in #34, which states this correctly and more precisely than I
did: "pipeline warm-up and shader compilation are not a rendered-frame claim".
This branch now matches it. If #34 lands, its webgpu-evidence.md matrix
supersedes this section wholesale.

Also downgrades the gate row from amber to red, because amber reads as
"nearly there" and the honest signal is that rendering has not started.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@lxsolutions

Copy link
Copy Markdown
Owner Author

Verified this draft end to end on a fresh worktree — everything in it is green.
It has been sitting in draft for two days; nothing here is blocking on defects.

tools/ci/validate_public_evidence.py   public evidence OK: 22 current patches, p0014 through patch 0014
tools/ci/tests                         10 tests  OK
engine/scripts/tests                   11 tests  OK
test_release_tools.py                  18 tests  OK
tools/ci/validate_workflows.py         workflows ok (1 file; trust and action-pin policy enforced)

You are right about Forward+ and I was not

webgpu-evidence.md states it correctly — "18 GPUValidationError entries
remain and no frame renders"
, and "pipeline warm-up and shader compilation are
not a rendered-frame claim."
My #42 said "does not yet render clean," which
implies a frame appears with errors on it. It does not. #29 says so outright, and
0019–0022 report validation and abort counts but never an fps or draw figure —
which is exactly what every Forward Mobile verification does report. I have
corrected #42 to match this wording; if this lands, its evidence matrix
supersedes that section of #42 wholesale.

Interaction with #41 (CI is now installed)

#41 installs .github/workflows/ for real, so two things change for this branch:

  1. docs/ci/README.md will conflict. This branch appends a "Public evidence
    drift" section while leaving the "not yet installed" prose above it; ci: install the gate that proves the central claim #41
    rewrites that file and moves docs/ci/patch-series.yml into
    .github/workflows/. Merge ci: install the gate that proves the central claim #41 first, then re-apply the appended section —
    the content is still correct, only its surrounding text is gone.
  2. pages.yml passes the policy gate (checked above). It uses no actions at
    all, so the 40-char SHA pin rule does not bite it.

Two suggestions

validate_public_evidence.py should be a CI job. Right now it is reachable
only through just lint / just ci-local, which nothing runs automatically —
so a checker built specifically to stop public-claim drift would depend on
someone remembering to run it. It needs no toolchain, so it slots straight into
checks.yml from #41 as a step. That is the difference between this branch
fixing today's drift and preventing tomorrow's.

pages.yml puts logic in workflow YAML. It inlines a clone → fetch →
worktree → cp → diff → commit → push script. CLAUDE.md is explicit: "never
put logic in the justfile or workflow YAML"
— logic belongs in tools/ or
scripts/. Extracting it to something like tools/pages/sync_landing.py would
also make it testable and runnable locally, which a 20-line inline heredoc is
not.

Neither is a defect in what the branch claims to do. Worth landing.

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.

1 participant