Repository navigation
sources: the site's sources pinned and checked in Gate, and a daily sync (R5, R6, R7) - #52
Merged
Merged
Conversation
…fetched by Gate with the sources App versions.yaml pins what the site is generated from, in go-tools' versions format and held by versions/gate (tools/sources/repo_test.go): spin at main's 77380b13d, the commit the reference documents, since v20261019.02 has no board and no release has been cut since; spin-terraform-aws at v20261024.01; brand at its main. What refgen writes that records a commit - reference.json, figures.json, shots.json, the CLI's goldens, the reference pages - is the gate's Elsewhere, and refgen fails when reference.json's commits, or the release a pin at one names, are not the pins. task sources (tools/sources) fetches exactly those commits, with their history and tags, into .sources/, where SPIN, TERRAFORM and BRAND now point; reference:public fetches the public two the same way, in place of the task that read reference.json for them. A checkout already at its pin is left alone, so only the fetch needs a token. tools/sources hands SOURCES_TOKEN to its own git commands as GIT_CONFIG_* (an http.extraheader, Basic as checkout sends it: git's HTTP takes no Bearer), and writes it nowhere. task sources:bump moves the pins to the newest releases: spin to one only once it holds the commit pinned, as GitHub's compare says, a release never back, brand along its main. Gate mints a read-only token of the sources App on spin alone, fetches, and runs task check; with no secret - a fork's pull request - it runs task check:public, the gate, whose reference:public needs none. setup-go's cache is keyed on versions.yaml too, so spin's modules and its CLI's build come from it until spin's pin moves. Plan steps R5 and R6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…quest, and what spin's commits say in one issue in spin sync.yml runs every day, and on a sources-released repository_dispatch: task sources:bump with the sources App's token, task reference with none, and the result force-pushed to sync/sources as the sync App - whose push starts Gate, as GITHUB_TOKEN's would not - with its one pull request opened or updated. Nothing merges it. The website is public and spin private, so the pull request names the pins that moved and the files that changed, and nothing of what spin's commits say. That goes in one issue in spin, "Site vs spin main", written with the sources App: the commits the bump took in, each under every path of spin it touches that feeds a page - the generated pages' own source, the diagrams', and what refgen holds the hand-written pages to - with the pages; and the release chain: spin-machine as spin main pins it against its newest release, when machine.yml, propose.yml and fresh-install.yml last ran and how, and the release and module ref spinbox.dev runs. Every Monday the same issue says what spin main has past the pin, as advice that fails nothing. Each job writes its own section and keeps the others; the issue is found by its author, not by search, which lags. tools/sync writes all of it, tested against httptest servers and a local bare repository; -print shows an issue's sections without writing them. Plan step R7. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e has without installing one Gate runs task check now, and its runner has no task on PATH: go tool task in spin's checkout is the Task spin's Taskfile is written for. Plan step R6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Plan steps R5, R6 and R7: the site pins what it is generated from, Gate checks the reference against those pins, and a daily job opens one sync pull request.
R5: pins
versions.yaml(go-tools versions format, held byversions/gateintools/sources/repo_test.go) pins:77380b13d. This is the commit the reference already documents. No release has been cut since v20261019.02, and that release has no board.v20261024.01.Elsewhere.reference.json's commits are not the pins (tools/refgen/pins.go).task sources(tools/sources) fetches exactly the pinned commits, with history and tags, into.sources/.SPIN,TERRAFORMandBRANDnow default to those directories. It is tested against a local bare repository.reference:publicusestools/sourcesin place of thesourcetask.task sources:bumpmoves the pins:check:publicis the path with no credentials.R6: Gate
task sourcesandtask check.task check:publicinstead.tools/sourceshands the token to its own git commands asGIT_CONFIG_*(http.extraheader). It is only in the Sources step's environment and is written nowhere.versions.yamlas well, so spin's modules and CLI build stay cached until the spin pin moves.R7: sync
sync.ymlruns daily and on asources-releasedrepository_dispatch. It bumps the pins, regenerates with no token, and force-pushessync/sourcesas the sync App. It opens or updates one pull request and does not auto-merge.tools/syncbuilds all of it and is tested withhttptest.go tool taskin spin's checkout. Gate has notaskon PATH, so this uses the Task version spin's own go.mod pins.Gate time
task check: 27 s.🤖 Generated with Claude Code