Refresh the client mirror with the recomposed dashboard - #50
Merged
Merged
Conversation
A GitHub Actions workflow, triggered by repository_dispatch from
spikeforge-hub-api, that fetches one community-uploaded artifact from a
signed URL and runs it through the existing verification pipeline on a
GitHub-hosted (never self-hosted) runner: bundle checksum/manifest
verification and the weights_only=True load already used by bundle.py,
spikeforge_hub.inspect and .compat, the NIR export and reference-
interpreter drift check spikeforge_hub.import_model already runs for the
curated catalog, and a spikeforge_targets.energy report. It posts a
signed pass/fail report to the hub API's (not yet built)
POST /internal/v1/verifications/{version_id}, naming which step failed
and why on rejection rather than a generic failure message.
Also adds a decompressed-size cap to bundle.py's archive reader, which
had none: a zip bomb was previously an unbounded read into memory rather
than a clean, named rejection.
The self-hosted spikeforge-ci runner (deploy-hetzner.yml) is deliberately
never used here, since it holds the Hetzner deploy key and running
torch.load on a stranger's bytes there is the plan's own worst-case
scenario (plans/hub_accounts_plan.md §7.2).
client/ is the mirror the Docker image builds and dash.spikeforge.net serves. It was a pre-recompose snapshot: the old card layout, no rail, no docked panes. This replaces it with the dashboard's current source, and regenerates the protocol types from this repository's schemas so the codegen guard still passes. The in-src test file is dropped from the mirror; it needs @types/node, which this client does not carry.
client/src/serve/serveClient.ts is this repository's typed client for the spikeforge-serve API; it has no counterpart in the dashboard. Put it back after the mirror refresh.
w4ffl35
enabled auto-merge
September 19, 2026 06:41
actions/setup-python and actions/setup-node resolve their cache globs against the checkout, and the runners' _work is a symlink onto another drive. The action cannot follow the dependency files there, so every job failed before its first step: 'No file ... matched to [**/pyproject.toml]' on the Python jobs and 'Some specified paths were not resolved, unable to cache dependencies' on the client. CI has been red since 2026-09-16 for that, not for any change. The desktop workflow already documents the same problem.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
dash.spikeforge.net is served by this repository: the Dockerfile builds
client/anddeploy-hetzner.ymldeploys on a push tomainunderclient/**. That mirror was a pre-recompose snapshot, so the site still showed the old card layout.This replaces
client/source with the current dashboard (docked panes, rail, form system, help popups, donations link), regeneratesclient/src/protocol/generated.tsfrom this repository's schemas so the codegen guard still passes, and keepsclient/src/serve/serveClient.ts, which exists only here. The in-src test file is dropped from the mirror because it needs@types/node, which this client does not carry.Verified:
cd client && npm run gen:protocol && npm run buildsucceeds.