WIP: ci: add an owner-approved hardware fixture pilot #100

Draft
mooki wants to merge 1 commit from mooki/Longshot:ci/opt-in-hardware into main
First-time contributor

Why

Volunteers need a small, opt-in way to run authored Vulkan checks on real GPUs without giving an ordinary pull request access to their machines. This adds a disabled-by-default, owner-controlled pilot, not an upstream hardware service; it stays WIP until its real isolation and Forgejo execution are demonstrated.

I offer my Arch Linux PC with an RTX 4090 and an Intel UHD 770 as a second adapter, carrying the explicit longshot-hardware-linux label. Registration would happen only after a maintainer agrees and I confirm the proposed setup.

What changed

  • .forgejo/workflows/hardware-fixtures.yml: manual dispatch only, only an owner's main, explicitly disabled in MagicBeanDev/Longshot. The full approved SHA must match the dispatch and still be the remote head before execution. A repository variable enables the job; an explicit hardware label routes it. No PR trigger, arbitrary PR checkout, release secret or required merge check.
  • scripts/hardware_fixtures.py: probe the selected GPU, then compile/run the existing five write-back cases and one copy-span case inside bounded, offline rootless Podman containers. The default --no-gpu path writes not_run without probing hardware or starting a container. Missing devices, skips, wrong-device results, repeated/missing cases, missing validation activation and command/cleanup failures are not passes.
  • Export only six tracked regular source files from the approved commit and mount them with the pinned Vulkan headers. Do not mount .git, untracked files, a home, a dump, saves, a display socket or a writable host directory. The payload receives no inherited token/proxy environment. Only fixed configuration rows leave it; raw command output and directory artifacts do not.
  • tests/test_hardware_fixtures.py: GPU-free parsing, reporting, resource-command, cleanup, source-export and workflow-contract regressions. Authored command results exercise the orchestration without pretending to prove a real GPU or container.
  • docs/forgejo-runners.md: put runner placement and security first; document the optional workflow, settings, prerequisites, limits, safe reporting command and human fallback. Replace its stale blanket claim that Actions is off and no runner exists with instructions to inspect current availability.

Scope: this first slice tests an owner-reviewed default-branch snapshot, not an arbitrary PR head. Labels are routing, not isolation: another eligible workflow can select the same runner. Use only an owner's fork or dedicated control repository with trusted workflows and writers, never a personal PC in the shared upstream/organization runner pool. Game-based work, automatic request consumption and per-PR label approval remain decisions and separate work under #43.

The action and Vulkan-header pins match main. tools.lock and scripts/tools.py supply the Windows builder, not this Linux driver image, so they are unchanged. The owner must provision a reviewed image pinned by digest; the job never pulls an image, installs packages or accepts an SDK license. The aspect fixture is deliberately excluded until its explicit selector lands; the software-driver proposal in #67 remains separate.

Flags and settings

No game setting, menu option, ini key or runtime default changes. These controls are documented in the runner guide and the command's help. Recommendations apply to this opt-in command, not to enabling hardware execution for everyone.

Flag What it does Default now Recommendation Helps on Doesn't help on Untested on
--run Explicitly execute the GPU probe and fixtures Off Off by default; owner opt-in only Reviewed Linux hardware jobs Ordinary source checks Real GPU/container execution
--no-gpu Write a truthful not-run row, without GPU access Default behavior On by default; safe reporting path GPU-free checks Hardware qualification Windows execution
--commit Require a full approved SHA matching the checkout Required On by default; require explicit provenance Exact revision reporting Mutable branch approval Forgejo dispatch
--output Write one new Markdown report, never overwrite evidence Required new file On by default; preserve existing evidence Reviewed configuration rows Raw log collection Artifact upload
--image Select a preloaded digest-pinned container image Required with --run Off by default; provision and review before opting in Repeatable fixture dependencies Unprovisioned machines Real image startup
--gpu-device Expose one render node or one NVIDIA CDI GPU Required with --run Off by default; no implicit adapter Deliberate device access All-device access Intel, AMD and NVIDIA pass-through
--device-name Require one matching hardware GPU and identical fixture selection Required with --run Off by default; require explicit selection Multi-adapter PCs Ambiguous/software devices Real device inventory
--headers Select pinned Vulkan headers Required with --run; workflow uses main's v1.4.345 pin On by default; use explicitly pinned headers Fixture compilation Game builds Container compilation
HARDWARE_TESTS_ENABLED Permit manual jobs in the control repository Unset/off; only true enables Off by default; owner chooses availability Owner availability control Runner access isolation Forgejo evaluation
HARDWARE_TEST_IMAGE Supply the digest-pinned image to --image Unset Off by default; no unreviewed image Owner provisioning Dependency installation Forgejo execution
HARDWARE_TEST_DEVICE Supply the single adapter to --gpu-device Unset Off by default; no implicit device Owner provisioning Hardware inventory automation Forgejo execution
approved_sha Approve the full current owner-main revision Required On by default; require explicit revision approval Reviewed snapshots Arbitrary PR authorization Live changed-head refusal
device_name Supply the intended GPU-name substring Required Off by default; require a deliberate device choice Explicit hardware selection Software Vulkan lane Forgejo execution
VK_INSTANCE_LAYERS Enable Khronos core validation VK_LAYER_KHRONOS_validation in payload On by default; check API errors in these fixtures API error detection Speed measurements Actual layer activation
VK_LOADER_DEBUG Require layer insertion evidence layer in payload On by default; prove validation was activated Rejecting unvalidated passes Game logging Actual loader output
VK_LAYER_SETTINGS_PATH Send validation errors to bounded private output Private container temporary directory On by default; capture errors without public raw logs Fixtures without a debug callback Public raw logs Actual layer behavior

Measurements

main: 77f605a25f (2026-11-13)
this PR: move/ci/opt-in-hardware @ 2d9962311e
Base suite: 509 passed, 0 failed, 19 skipped.
Head suite: 510 passed, 0 failed, 19 skipped.

Hardware: Arch Linux; Python 3.14.8 for the focused checks. No GPU was probed.
Scene: none; authored parser inputs and a no-GPU reporting invocation.
Method: focused standard-library tests, YAML parsing, a limited workflow-syntax check, the final-head no-GPU command and the whole game-free source suite. No frame rate, timing comparison or real hardware pass is claimed. The shared base suite was read rather than repeated.
How to reproduce: python3 -I -B tests/test_hardware_fixtures.py; python3 -I -B scripts/hardware_fixtures.py --no-gpu --commit "$(git rev-parse HEAD)" --output hardware-results.md with a new output path; python -I -B tests/run_all.py --jobs 6 --strict.

Check main @ 77f605a25 this PR @ 2d996231
New parser/report/workflow regressions Not present 27 tests passed
No-GPU reporting command Not present Exit 0; not_run, GPU not probed
Whole game-free suite 509 passed, 0 failed, 19 skipped 510 passed, 0 failed, 19 skipped
Ran 27 tests in 0.132s
OK
hardware fixtures: not_run (no GPU access)
510 passed, 0 failed, 19 skipped in 219 s (linux, 6 at once)

YAML parsing passed. Unmodified actionlint 1.7.12 returned three errors because it rejects the full-origin action URLs required by Forgejo. With only those known origins removed in a validation-only copy, and the custom runner label declared, its remaining syntax/expression/shell checks passed. The original workflow was not rewritten to suit GitHub's checker. This limited check is not a successful Forgejo job.

Testing

Tested: on Linux, all 27 focused tests above, including authored GPU/driver records, wrong/missing/repeated results, validation activation, bounded output and timeout, cleanup refusal, non-overwrite behavior, exact source export and no-GPU orchestration. The committed no-GPU command wrote the existing eight-column configuration-row format, naming the full head with not_run and not probed; that artifact was inspected. YAML parsing passed; the actionlint limitation and validation-only copy are recorded above. These are correctness checks, not hardware or speed measurements.

The whole source suite also passed on the exact final head: 510 passed, 0 failed, 19 declared skips. The shared base is 509 passed, 0 failed, 19 skips; its former updater dependency failure no longer applies because PR 13 removed that updater test.

Not tested: no runner was installed, registered or started; no real Forgejo dispatch/checkout/upload or changed-head refusal was exercised. Podman is unavailable on this PC, so no image, resource-limit enforcement, confinement/escape resistance, GPU pass-through or real cleanup/cancellation was tested. No hardware GPU, Windows execution, AMD/Deck run, game build/run, swapchain or performance measurement. Mock command results prove controller logic only. The first real isolation and publication trial is still required before activation.

Needs other testers:

  • Runner operator/security reviewer: demonstrate the repository allocation boundary, no owner-file/token/network access, enforced resource limits, stale-SHA refusal, cancellation cleanup and the bounded private artifact, expecting refusal rather than a weakened boundary on any failure (request to open)
  • Linux NVIDIA and Intel: after isolation approval, run the selected-device fixtures, expecting all six authored cases, active core validation, correct GPU/driver reporting and no driver fault (request to open)
  • AMD Mesa and SteamOS: qualify a separate owner-controlled environment before enabling a lane, expecting the same isolation and strict device/case checks rather than inferred NVIDIA coverage (request to open)
  • Windows: run the GPU-free parsing/reporting tests, expecting them to pass apart from the explicitly Linux-only process-group case; this does not add Windows hardware execution (request to open)

Screenshots

Nothing on screen. No window or game screenshot was produced.

Risk and rollback

A hardware label or a manual workflow is not a security boundary. Another eligible workflow can bypass this command, and a rootless container still shares the host kernel and GPU driver. Keep the controller in a trusted owner-controlled repository and separate environment without personal/game files or release credentials; never register this PC upstream merely because this workflow is gated. A pinned image, CDI mapping and runner configuration still need review. Driver hangs/escapes and forged results remain possible.

Missing tools, unsupported driver features or changed validation output deliberately fail. An offline, skipped, refused or timed-out job is not a pass and must fall back to human testing. Disable HARDWARE_TESTS_ENABLED and stop the runner to withdraw the machine; reverting these four files removes the pilot without touching game settings or saves.

Reviewer notes

Start with container_command(), export_source(), capture() and the fixed-format parser/report functions. The workflow/controller accepts only the owner's reviewed main; it is not a secure arbitrary-PR executor. Decide runner ownership/placement, the label and image policy, who approves exact revisions and who reviews publication before activating anything. No payload signing/publishing secret is required; Forgejo's job token remains in trusted controller/action processes, not the containers.

Keep #43 open. Automatic queue consumption, revision-bound PR labels, a separate PR publisher, other OS/device qualification and any dump-using workload are outside this first slice. #69's owner-controlled rolling monitor is not a Forgejo runner and is unchanged.

Issues

See #43. Related: #67 for software Vulkan fixtures and #69 for the separate local rolling record.

Checklist

For everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description).
  • Rebased on current main. — Tested on the assigned base 77f605a25; not rebased over the later main changes.
  • python -I -B tests/run_all.py run and passing (any failure that also fails on main is named above). — Exact final head: 510 passed, 0 failed, 19 skipped.
  • Tested in the game, or what wasn't is named under Testing.
  • Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests).
  • Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. — No real hardware/runner trial or timing comparison; remains WIP.
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

If applicable

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Flags noted, and the switch reference updated (docs/development.md, the README). — Test/operator controls are documented in the runner guide and command help; game-switch references are unchanged.
  • A check under tests/ that reads changed source updated in this PR, not weakened. — New workflow-contract checks; existing fixture checks unchanged.
  • Docs updated.

New on this forge; not opened on GitHub.

Assisted-by: GPT-6 Astra
Co-Authored-By: GPT-6 Astra [email protected]

## Why Volunteers need a small, opt-in way to run authored Vulkan checks on real GPUs without giving an ordinary pull request access to their machines. This adds a disabled-by-default, owner-controlled pilot, not an upstream hardware service; it stays WIP until its real isolation and Forgejo execution are demonstrated. I offer my Arch Linux PC with an RTX 4090 and an Intel UHD 770 as a second adapter, carrying the explicit `longshot-hardware-linux` label. Registration would happen only after a maintainer agrees and I confirm the proposed setup. ## What changed - `.forgejo/workflows/hardware-fixtures.yml`: manual dispatch only, only an owner's `main`, explicitly disabled in `MagicBeanDev/Longshot`. The full approved SHA must match the dispatch and still be the remote head before execution. A repository variable enables the job; an explicit hardware label routes it. No PR trigger, arbitrary PR checkout, release secret or required merge check. - `scripts/hardware_fixtures.py`: probe the selected GPU, then compile/run the existing five write-back cases and one copy-span case inside bounded, offline rootless Podman containers. The default `--no-gpu` path writes `not_run` without probing hardware or starting a container. Missing devices, skips, wrong-device results, repeated/missing cases, missing validation activation and command/cleanup failures are not passes. - Export only six tracked regular source files from the approved commit and mount them with the pinned Vulkan headers. Do not mount `.git`, untracked files, a home, a dump, saves, a display socket or a writable host directory. The payload receives no inherited token/proxy environment. Only fixed configuration rows leave it; raw command output and directory artifacts do not. - `tests/test_hardware_fixtures.py`: GPU-free parsing, reporting, resource-command, cleanup, source-export and workflow-contract regressions. Authored command results exercise the orchestration without pretending to prove a real GPU or container. - `docs/forgejo-runners.md`: put runner placement and security first; document the optional workflow, settings, prerequisites, limits, safe reporting command and human fallback. Replace its stale blanket claim that Actions is off and no runner exists with instructions to inspect current availability. **Scope:** this first slice tests an owner-reviewed default-branch snapshot, not an arbitrary PR head. Labels are routing, not isolation: another eligible workflow can select the same runner. Use only an owner's fork or dedicated control repository with trusted workflows and writers, never a personal PC in the shared upstream/organization runner pool. Game-based work, automatic request consumption and per-PR label approval remain decisions and separate work under #43. The action and Vulkan-header pins match main. `tools.lock` and `scripts/tools.py` supply the Windows builder, not this Linux driver image, so they are unchanged. The owner must provision a reviewed image pinned by digest; the job never pulls an image, installs packages or accepts an SDK license. The aspect fixture is deliberately excluded until its explicit selector lands; the software-driver proposal in #67 remains separate. ## Flags and settings No game setting, menu option, ini key or runtime default changes. These controls are documented in the runner guide and the command's help. Recommendations apply to this opt-in command, not to enabling hardware execution for everyone. | Flag | What it does | Default now | Recommendation | Helps on | Doesn't help on | Untested on | |---|---|---|---|---|---|---| | `--run` | Explicitly execute the GPU probe and fixtures | Off | Off by default; owner opt-in only | Reviewed Linux hardware jobs | Ordinary source checks | Real GPU/container execution | | `--no-gpu` | Write a truthful not-run row, without GPU access | Default behavior | On by default; safe reporting path | GPU-free checks | Hardware qualification | Windows execution | | `--commit` | Require a full approved SHA matching the checkout | Required | On by default; require explicit provenance | Exact revision reporting | Mutable branch approval | Forgejo dispatch | | `--output` | Write one new Markdown report, never overwrite evidence | Required new file | On by default; preserve existing evidence | Reviewed configuration rows | Raw log collection | Artifact upload | | `--image` | Select a preloaded digest-pinned container image | Required with `--run` | Off by default; provision and review before opting in | Repeatable fixture dependencies | Unprovisioned machines | Real image startup | | `--gpu-device` | Expose one render node or one NVIDIA CDI GPU | Required with `--run` | Off by default; no implicit adapter | Deliberate device access | All-device access | Intel, AMD and NVIDIA pass-through | | `--device-name` | Require one matching hardware GPU and identical fixture selection | Required with `--run` | Off by default; require explicit selection | Multi-adapter PCs | Ambiguous/software devices | Real device inventory | | `--headers` | Select pinned Vulkan headers | Required with `--run`; workflow uses main's v1.4.345 pin | On by default; use explicitly pinned headers | Fixture compilation | Game builds | Container compilation | | `HARDWARE_TESTS_ENABLED` | Permit manual jobs in the control repository | Unset/off; only `true` enables | Off by default; owner chooses availability | Owner availability control | Runner access isolation | Forgejo evaluation | | `HARDWARE_TEST_IMAGE` | Supply the digest-pinned image to `--image` | Unset | Off by default; no unreviewed image | Owner provisioning | Dependency installation | Forgejo execution | | `HARDWARE_TEST_DEVICE` | Supply the single adapter to `--gpu-device` | Unset | Off by default; no implicit device | Owner provisioning | Hardware inventory automation | Forgejo execution | | `approved_sha` | Approve the full current owner-main revision | Required | On by default; require explicit revision approval | Reviewed snapshots | Arbitrary PR authorization | Live changed-head refusal | | `device_name` | Supply the intended GPU-name substring | Required | Off by default; require a deliberate device choice | Explicit hardware selection | Software Vulkan lane | Forgejo execution | | `VK_INSTANCE_LAYERS` | Enable Khronos core validation | `VK_LAYER_KHRONOS_validation` in payload | On by default; check API errors in these fixtures | API error detection | Speed measurements | Actual layer activation | | `VK_LOADER_DEBUG` | Require layer insertion evidence | `layer` in payload | On by default; prove validation was activated | Rejecting unvalidated passes | Game logging | Actual loader output | | `VK_LAYER_SETTINGS_PATH` | Send validation errors to bounded private output | Private container temporary directory | On by default; capture errors without public raw logs | Fixtures without a debug callback | Public raw logs | Actual layer behavior | ## Measurements <!-- branch-state --> main: 77f605a25f175fbda9ad131ac6be96bbde85d9c2 (2026-11-13) this PR: move/ci/opt-in-hardware @ 2d9962311e23b6762d1a6c511f9391749fd419b2 Base suite: 509 passed, 0 failed, 19 skipped. Head suite: 510 passed, 0 failed, 19 skipped. <!-- /branch-state --> Hardware: Arch Linux; Python 3.14.8 for the focused checks. No GPU was probed. Scene: none; authored parser inputs and a no-GPU reporting invocation. Method: focused standard-library tests, YAML parsing, a limited workflow-syntax check, the final-head no-GPU command and the whole game-free source suite. No frame rate, timing comparison or real hardware pass is claimed. The shared base suite was read rather than repeated. How to reproduce: `python3 -I -B tests/test_hardware_fixtures.py`; `python3 -I -B scripts/hardware_fixtures.py --no-gpu --commit "$(git rev-parse HEAD)" --output hardware-results.md` with a new output path; `python -I -B tests/run_all.py --jobs 6 --strict`. | Check | main @ 77f605a25 | this PR @ 2d996231 | |---|---|---| | New parser/report/workflow regressions | Not present | 27 tests passed | | No-GPU reporting command | Not present | Exit 0; `not_run`, GPU not probed | | Whole game-free suite | 509 passed, 0 failed, 19 skipped | 510 passed, 0 failed, 19 skipped | ```text Ran 27 tests in 0.132s OK hardware fixtures: not_run (no GPU access) 510 passed, 0 failed, 19 skipped in 219 s (linux, 6 at once) ``` YAML parsing passed. **Unmodified actionlint 1.7.12 returned three errors because it rejects the full-origin action URLs required by Forgejo.** With only those known origins removed in a validation-only copy, and the custom runner label declared, its remaining syntax/expression/shell checks passed. The original workflow was not rewritten to suit GitHub's checker. This limited check is not a successful Forgejo job. ## Testing **Tested:** on Linux, all 27 focused tests above, including authored GPU/driver records, wrong/missing/repeated results, validation activation, bounded output and timeout, cleanup refusal, non-overwrite behavior, exact source export and no-GPU orchestration. The committed no-GPU command wrote the existing eight-column configuration-row format, naming the full head with `not_run` and `not probed`; that artifact was inspected. YAML parsing passed; the actionlint limitation and validation-only copy are recorded above. These are correctness checks, not hardware or speed measurements. The whole source suite also passed on the exact final head: 510 passed, 0 failed, 19 declared skips. The shared base is 509 passed, 0 failed, 19 skips; its former updater dependency failure no longer applies because PR 13 removed that updater test. **Not tested:** no runner was installed, registered or started; no real Forgejo dispatch/checkout/upload or changed-head refusal was exercised. Podman is unavailable on this PC, so no image, resource-limit enforcement, confinement/escape resistance, GPU pass-through or real cleanup/cancellation was tested. No hardware GPU, Windows execution, AMD/Deck run, game build/run, swapchain or performance measurement. Mock command results prove controller logic only. The first real isolation and publication trial is still required before activation. **Needs other testers:** - Runner operator/security reviewer: demonstrate the repository allocation boundary, no owner-file/token/network access, enforced resource limits, stale-SHA refusal, cancellation cleanup and the bounded private artifact, expecting refusal rather than a weakened boundary on any failure (request to open) - Linux NVIDIA and Intel: after isolation approval, run the selected-device fixtures, expecting all six authored cases, active core validation, correct GPU/driver reporting and no driver fault (request to open) - AMD Mesa and SteamOS: qualify a separate owner-controlled environment before enabling a lane, expecting the same isolation and strict device/case checks rather than inferred NVIDIA coverage (request to open) - Windows: run the GPU-free parsing/reporting tests, expecting them to pass apart from the explicitly Linux-only process-group case; this does not add Windows hardware execution (request to open) ## Screenshots Nothing on screen. No window or game screenshot was produced. ## Risk and rollback A hardware label or a manual workflow is not a security boundary. Another eligible workflow can bypass this command, and a rootless container still shares the host kernel and GPU driver. Keep the controller in a trusted owner-controlled repository and separate environment without personal/game files or release credentials; never register this PC upstream merely because this workflow is gated. A pinned image, CDI mapping and runner configuration still need review. Driver hangs/escapes and forged results remain possible. Missing tools, unsupported driver features or changed validation output deliberately fail. An offline, skipped, refused or timed-out job is not a pass and must fall back to human testing. Disable `HARDWARE_TESTS_ENABLED` and stop the runner to withdraw the machine; reverting these four files removes the pilot without touching game settings or saves. ## Reviewer notes Start with `container_command()`, `export_source()`, `capture()` and the fixed-format parser/report functions. The workflow/controller accepts only the owner's reviewed `main`; it is not a secure arbitrary-PR executor. Decide runner ownership/placement, the label and image policy, who approves exact revisions and who reviews publication before activating anything. No payload signing/publishing secret is required; Forgejo's job token remains in trusted controller/action processes, not the containers. Keep #43 open. Automatic queue consumption, revision-bound PR labels, a separate PR publisher, other OS/device qualification and any dump-using workload are outside this first slice. #69's owner-controlled rolling monitor is not a Forgejo runner and is unchanged. ## Issues See #43. Related: #67 for software Vulkan fixtures and #69 for the separate local rolling record. ## Checklist ### For everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`). - [ ] Rebased on current `main`. — Tested on the assigned base `77f605a25`; not rebased over the later main changes. - [x] `python -I -B tests/run_all.py` run and passing (any failure that also fails on `main` is named above). — Exact final head: 510 passed, 0 failed, 19 skipped. - [x] Tested in the game, or what wasn't is named under Testing. - [x] Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests). - [ ] Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. — No real hardware/runner trial or timing comparison; remains WIP. - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### If applicable - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Flags noted, and the switch reference updated (docs/development.md, the README). — Test/operator controls are documented in the runner guide and command help; game-switch references are unchanged. - [x] A check under `tests/` that reads changed source updated in this PR, not weakened. — New workflow-contract checks; existing fixture checks unchanged. - [x] Docs updated. --- New on this forge; not opened on GitHub. Assisted-by: GPT-6 Astra Co-Authored-By: GPT-6 Astra <[email protected]>
ci: add an owner-approved hardware fixture pilot
Some checks are pending
Linux AppImage / appimage (pull_request) Blocked by required conditions
Windows builder / Longshot Builder zip (pull_request) Blocked by required conditions
Windows builder / Windows Vulkan back end (llvm-mingw) (pull_request) Blocked by required conditions
Windows builder / dav1d for Windows (llvm-mingw) (pull_request) Blocked by required conditions
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / Python source checks (windows-2022, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (windows-2022, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 2s
2d9962311e
Keep the pilot manual, optional and confined to a trusted owner-controlled repository. Check the exact reviewed revision, isolate two existing game-free Vulkan fixtures, and publish only bounded configuration rows. See #43.

Assisted-by: GPT-6 Astra
Co-Authored-By: GPT-6 Astra <[email protected]>
Some checks are pending
Linux AppImage / appimage (pull_request) Blocked by required conditions
Windows builder / Longshot Builder zip (pull_request) Blocked by required conditions
Windows builder / Windows Vulkan back end (llvm-mingw) (pull_request) Blocked by required conditions
Windows builder / dav1d for Windows (llvm-mingw) (pull_request) Blocked by required conditions
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / Python source checks (windows-2022, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (windows-2022, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 2s
This pull request has changes conflicting with the target branch.
  • docs/forgejo-runners.md
Some workflows are waiting to be reviewed.
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u 'ci/opt-in-hardware:mooki-ci/opt-in-hardware'
git switch 'mooki-ci/opt-in-hardware'
Sign in to join this conversation.
No description provided.