You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
docs deploy: Vercel's dashboard Ignored Build Step skips dependency-only changes — the merged OOM fix (#12684) has never been built in production; one dashboard visit: Redeploy + fix the ignore rule #12698
Found at the 2026-08-27 10:29Z verification of the #12677 fix. Maintainer-only: both actions are Vercel dashboard settings; nothing in-repo can perform or fix this (apps/docs/vercel.json carries installCommand/buildCommand but no ignoreCommand — verified on current main).
The mechanism, read from the commit status Vercel posted on PR fix(spec): bound the DTS pass's heap ceiling to the build container's memory #12684's head (a0a64684), verbatim: Vercel — Canceled by Ignored Build Step (08:14:19Z). That PR's diff is packages/spec build config + a changeset — a change to the docs site's own dependency graph (@objectstack/spec is @objectstack/docs's only workspace dependency), and the ignore step canceled its build anyway.
Since the fix merged, main has received only 0d4a6a85 (packages/spec + changeset) and 284fc22d (.claude/** only). Neither touches apps/docs/** or content/docs/** — so under a path-scoped ignore rule, no production build has run since the fix landed. The dpl-id not moving is fully explained; there is no evidence of a new build failure.
Why the ignore rule is itself a defect for this monorepo
The docs build is turbo run build --filter=@objectstack/docs — its output depends on everything in that turbo graph, not only on files under apps/docs/content/docs. A path-scoped ignore rule therefore skips exactly the class of commit that fixes a broken build in a dependency (this one), and will also serve stale pages whenever a dependency change alters generated content. It also interacts badly with the outage class #12333 measured: a two-day-invisible failure, now followed by an invisible non-build.
Fix the Ignored Build Step: replace the path rule with the turbo-aware form — npx turbo-ignore @objectstack/docs — so any commit that changes the docs app's dependency graph builds, and everything else is still skipped. (Minimum fallback: add packages/** to the watched paths, at the cost of some spurious builds.)
Evidence update, 11:24Z re-check — the ignore rule is likely even narrower than this card assumed, or a build failed again; either way the dashboard visit stays the resolution and will disambiguate.
the ignore rule is scoped to apps/docs/** only (the Vercel project's root directory) — the site's content lives at the repo root under content/docs/, so content edits never trigger a production build either, which would make the staleness class worse than filed; or
builds did trigger and failed again — not distinguishable from outside the dashboard.
When visiting the dashboard, one glance at the Deployments list settles which reading is true: builds listed for 709ce17e/a8c00e27 and red ⇒ paste the tail here; no builds listed for them ⇒ reading 1, and the npx turbo-ignore @objectstack/docs fix in this card's item 2 covers it (turbo-ignore follows the dependency graph, which includes the content directory). Item 1 (Redeploy latest main) is unchanged and sufficient to end the outage today.
Off dpl_2nfWjGjSwZjakVEmUG1kBWD6697r. By this card's own criterion it closes. But neither of its two actions was what actually fixed it, so recording why:
Action 2 ("fix the Ignored Build Step — it skips dependency-only changes") rests on a misreading. The project's rule was if [ "$VERCEL_ENV" == "production" ]; then exit 1; else exit 0; fi — exit 1 builds, exit 0 skips. So production always built and Preview always skipped. The Canceled by Ignored Build Step read off PR #12684's head was that PR's Preview deployment being skipped, which is intended. Pushes to main were triggering production builds the whole time; they were failing, not being skipped — 168 failures in the seven days before the fix. The dpl-id not moving was fully explained by that, not by a missed trigger.
Action 1 (redeploy) could not have worked either. Redeploying only produced another exit 137; the cause was the build container's memory, measured in #12711: 403 pages need ≈7.6 GB against an 8192 MB machine. The fix was a larger build machine — this card's "optional" item 3, which was the whole answer. Docs builds went from 46–50 min failing to 3.7 min succeeding.
The suggested command is also not safe as written.npx turbo-ignore @objectstack/docs computes affected packages by package directory, and this repo's MDX lives at the repo root in content/, outside apps/docs. Measured: commit 1265f12b, which touches only content/docs/api/client-sdk.mdx, gets SKIP from it — that rule would have silently stopped publishing documentation, producing this card's own feared failure mode rather than preventing it. (turbo.json does list $TURBO_ROOT$/content/** in inputs, but inputs only feeds the cache hash.) It is additionally deprecated upstream in favour of turbo query affected.
The underlying instinct — stop rebuilding docs on every push — is right and worth doing, just for a different reason (98.6% of the team's build time, a 92-deep queue, ≈$171/month) and with the content/** gap closed. That is #12743 / PR #12746.
Stripped pm:awaiting-maintainer from this closed card. 关闭即摘 pm:* — a pm state label on a closed issue asserts something false (pm:dispatched says a dev is working on it; pm:awaiting-maintainer says a manual action is still outstanding), and it makes the card visible to state sweeps that should no longer see it.
⛔ Nothing about the card's outcome is changed or re-judged here — domain:*, type and priority are left alone, since routing and grading are not state. This is the round's standing sweep for "closed but still carrying pm:*", not a verdict on this issue.
⚠️ Cause, for the record: GitHub's Fixes #n auto-close does not strip labels — measured 8/8 with no exception on this lane today. Cards closed that way need the strip done by hand, and these predate the sweep.
Activity
os-zhuang commentedon Aug 27, 2026
Evidence update, 11:24Z re-check — the ignore rule is likely even narrower than this card assumed, or a build failed again; either way the dashboard visit stays the resolution and will disambiguate.
data-dpl-idstilldpl_2nfW…(unchanged).content/docshave landed onmain—709ce17e(PR runtime-config: serve the client error-reporting DSN from the server #12697, editscontent/docs/deployment/environment-variables.mdx) anda8c00e27(PR feat(core): cache successful sys_setting localization reads, invalidated synchronously on write #12694, same file). A path rule scoped to docs content would have triggered production builds for these. Two readings survive:apps/docs/**only (the Vercel project's root directory) — the site's content lives at the repo root undercontent/docs/, so content edits never trigger a production build either, which would make the staleness class worse than filed; ormain— the OOM it hit is fixed since PR fix(spec): bound the DTS pass's heap ceiling to the build container's memory #12684 (merged 09:56Z).When visiting the dashboard, one glance at the Deployments list settles which reading is true: builds listed for
709ce17e/a8c00e27and red ⇒ paste the tail here; no builds listed for them ⇒ reading 1, and thenpx turbo-ignore @objectstack/docsfix in this card's item 2 covers it (turbo-ignore follows the dependency graph, which includes the content directory). Item 1 (Redeploy latestmain) is unchanged and sufficient to end the outage today.Generated by Claude Code
build(docs): stop emitting the 348 MB of server source maps the OOM-k…
hotlong commentedon Aug 27, 2026
Re-check satisfied — and both stated actions need correcting
Off
dpl_2nfWjGjSwZjakVEmUG1kBWD6697r. By this card's own criterion it closes. But neither of its two actions was what actually fixed it, so recording why:Action 2 ("fix the Ignored Build Step — it skips dependency-only changes") rests on a misreading. The project's rule was
if [ "$VERCEL_ENV" == "production" ]; then exit 1; else exit 0; fi—exit 1builds,exit 0skips. So production always built and Preview always skipped. TheCanceled by Ignored Build Stepread off PR #12684's head was that PR's Preview deployment being skipped, which is intended. Pushes tomainwere triggering production builds the whole time; they were failing, not being skipped — 168 failures in the seven days before the fix. The dpl-id not moving was fully explained by that, not by a missed trigger.Action 1 (redeploy) could not have worked either. Redeploying only produced another
exit 137; the cause was the build container's memory, measured in #12711: 403 pages need ≈7.6 GB against an 8192 MB machine. The fix was a larger build machine — this card's "optional" item 3, which was the whole answer. Docs builds went from 46–50 min failing to 3.7 min succeeding.The suggested command is also not safe as written.
npx turbo-ignore @objectstack/docscomputes affected packages by package directory, and this repo's MDX lives at the repo root incontent/, outsideapps/docs. Measured: commit1265f12b, which touches onlycontent/docs/api/client-sdk.mdx, gets SKIP from it — that rule would have silently stopped publishing documentation, producing this card's own feared failure mode rather than preventing it. (turbo.jsondoes list$TURBO_ROOT$/content/**ininputs, butinputsonly feeds the cache hash.) It is additionally deprecated upstream in favour ofturbo query affected.The underlying instinct — stop rebuilding docs on every push — is right and worth doing, just for a different reason (98.6% of the team's build time, a 92-deep queue, ≈$171/month) and with the
content/**gap closed. That is #12743 / PR #12746.Closing as satisfied. Refs #12711, #12743.
build(docs): stop rebuilding the docs site on every push to main (#12746
claude commentedon Aug 31, 2026
Label hygiene —
domain:devxexecution PM seat (#6023), sessionsession_01Pk26oZ12t5N1hwGW1m1MgC.Stripped
pm:awaiting-maintainerfrom this closed card. 关闭即摘pm:*— a pm state label on a closed issue asserts something false (pm:dispatchedsays a dev is working on it;pm:awaiting-maintainersays a manual action is still outstanding), and it makes the card visible to state sweeps that should no longer see it.⛔ Nothing about the card's outcome is changed or re-judged here —
domain:*, type and priority are left alone, since routing and grading are not state. This is the round's standing sweep for "closed but still carryingpm:*", not a verdict on this issue.Fixes #nauto-close does not strip labels — measured 8/8 with no exception on this lane today. Cards closed that way need the strip done by hand, and these predate the sweep.Generated by Claude Code