Latest Results
SRE-946: Report why a mise download failed in `.config/mise/install.sh`
The install script gave no usable diagnostic when a Vercel build failed in it:
`-f` discarded GitHub's response body, so a 4xx surfaced as a bare
`curl: (22)` with no status or URL, and the `curl | grep | sha256sum -c -`
pipeline reported a non-checksum body as a checksum parse failure.
Route both downloads through a `fetch` helper that drops `-f`, records
`%{http_code}` and the response headers, and on failure prints the URL,
curl's exit code with a label, the HTTP status, any rate-limit headers and
the first 2000 bytes of the body. Add retries and timeouts so a transient
drop is retried rather than failing the build, and send an `Authorization`
header when `GITHUB_TOKEN`/`MISE_GITHUB_TOKEN` is set, since curl does not
read those variables itself.
The checksum entry is now grepped into a file before verification, so a
truncated or error-page response is reported as such. Verification itself
is unchanged.claude/sre-946-mise-install-error-output Add a Starlight site that renders the docs bundle
The bundle is meant to be portable — the same artefact rendering locally, in
hash.dev, or read as plain text by an agent. Nothing proved that. A generator
with exactly one consumer, and no consumer at all in this case, drifts toward
whatever that consumer happens to need.
This is that consumer, and it deliberately owns no content. Everything it
serves is synced from `bundle/`, and `src/content/` is git-ignored, so anything
it renders had to survive the trip through a bundle a different host could
equally well read. When something cannot be expressed portably, the site is
where that shows up as a failure rather than as a quiet coupling.
`sync:bundle` only copies. It used to spawn the generator itself with
`spawnSync`, which put a cross-package build step inside a shell call
Turborepo could not see, order or report on. The whole chain now resolves in
the task graph:
build / lint:tsc / dev → sync:bundle → @local/petrinaut-arch-docs#doc:architecture
Running the sync without a bundle exits 1 naming the Turborepo command to use,
rather than failing partway through a copy.
`trailingSlash: "never"` is required, not stylistic: links between generated
pages are relative and assume slugs map to URLs without a trailing slash. A
host serving `/architecture/core/simulation/` has to rewrite them, and
`manifest.json` carries every slug for exactly that.
This is the largest part of the change by line count and almost all of it is
`yarn.lock` — Astro, Starlight and sharp bring 311 packages. It is separated
from the generator for that reason: none of it needs reviewing to judge whether
the architecture model is right, and none of it ships to a URL yet. Where the
site is deployed is still open, and worth settling against FE-1157 so there is
one canonical location.cf/fe-1322-arch-docs-site Latest Branches
-15%
-15%
claude/sre-946-mise-install-error-output -15%
deps/gha/hashintel-.github-digest © 2026 CodSpeed Technology