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
Description
Activity
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentation
on Aug 27, 2026 - addedpriority:p1High: required for production / M2High: required for production / M2
on 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).- New since the card was filed: two commits touching
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:- the ignore rule is scoped to
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; or - builds did trigger and failed again — not distinguishable from outside the dashboard.
- the ignore rule is scoped to
- Consistent detail: the failing build the maintainer pasted this morning (15:45 local) was plausibly a manual redeploy attempt on pre-fix
main— 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
- added a commit that references this issue
on Aug 27, 2026 Re-check satisfied — and both stated actions need correcting
curl -s https://objectstack.ai/ | grep -o 'data-dpl-id="[^"]*"' data-dpl-id="dpl_3YG2asYDmqBzoQt9eiicVLgZYivP"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.- added a commit that references this issue
on Aug 27, 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.⚠️ Cause, for the record: GitHub'sFixes #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
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.jsoncarriesinstallCommand/buildCommandbut noignoreCommand— verified on currentmain).Measured
mainat 09:56Z (merge commit0d4a6a85). At 10:29Z production still servesdata-dpl-id="dpl_2nfWjGjSwZjakVEmUG1kBWD6697r"(age ≈41.5 h) — the pinned pre-outage build.a0a64684), verbatim:Vercel — Canceled by Ignored Build Step(08:14:19Z). That PR's diff ispackages/specbuild config + a changeset — a change to the docs site's own dependency graph (@objectstack/specis@objectstack/docs's only workspace dependency), and the ignore step canceled its build anyway.mainhas received only0d4a6a85(packages/spec + changeset) and284fc22d(.claude/**only). Neither touchesapps/docs/**orcontent/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 underapps/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.Maintainer actions (one dashboard visit)
main(0d4a6a85or newer), build cache off. ~5–10 min later the re-check below must move offdpl_2nfW…— that is the real end of the docs site: production has not deployed since dpl_2nfW… — 19 merges to main, five epic PRs invisible #12333/docs deploy: Vercel production build OOM-killed —@objectstack/spec:buildexits 137, every production deploy since 2026-08-25 ~16:55 fails (root cause behind #12333) #12677 outage, and epic epic(docs-site): the site is technically un-indexable — fix robots/sitemap/canonical/OG first, then the keyword shape #12243's site verification resumes.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: addpackages/**to the watched paths, at the cost of some spurious builds.)next buildholds ~7.6 GB in ONE process — the docs deploy's next memory ceiling, and no in-repo knob bounds it #12683's option A (build machine memory) if ruled A.Re-check
Any id other than
dpl_2nfWjGjSwZjakVEmUG1kBWD6697rcloses this card.Refs: #12677 (fix, merged as PR #12684) · #12333 (original measurement) · #12683 (memory-margin decision card) · epic #12243.