Repository navigation
hourly full run: red on main (CI) #25438
Description
os-4-hourly-full-run-ci — machine-findable marker for this generated card. ⛔ Do not delete this line: it is how the 4-hourly full run finds this card instead of filing a new one every 4 hours.
4-hourly full run: red on main (CI)
Swept 2026-10-26T08:37:32.268Z · run log · commit 05f7758f054d70f3ba0f709b37423124be3e6e3d · conclusion failure.
CI runs the FULL battery on main every 4 hours (#16467, #25771). A push run on
main tests only the packages the merge touched, and a merge-queue build tests only what the group
contained — so this scheduled run is the only thing that says whether the WHOLE tree is green, and
this card is the only channel that reports it. Nothing is blocked by it.
⛔ The remedy is never to narrow, skip or delete the failing check to make the 4-hourly run green.
Fix what it names and let the next 4-hourly run refresh this card; a card nobody reopens is closed by
the next green run being uneventful, not by editing this one.
What landed since the last green 4-hourly run
Range: 5e7cf63e71 (run 40204927516, the last green CI schedule run) .. 05f7758f05 — compare
3a2d38c6e2build(spec): one module graph with shared chunks, so each schema ships once and is one object across entries (build(spec): one module graph with shared chunks, so each schema ships once and is one object across entries #25748)4034f47bd0feat(spec,lint): object-level composite / repeater are untyped JSON — a typed list is a child object (feat(spec,lint): object-level composite / repeater are untyped JSON — a typed list is a child object #25755)52f3f518e1docs(spec): a notify node'srecipientsnames a written-out email address as an author constant, not an audience selector (docs(spec): a notify node'srecipientsnames a written-out email address as an author constant, not an audience selector #25739)557973dbccfeat(spec)!: retire kernel/package-upgrade.zod.ts whole — the upgrade plan, diff, snapshot and rollback model nothing implemented (ADR-0049) (feat(spec)!: retire kernel/package-upgrade.zod.ts whole — the upgrade plan, diff, snapshot and rollback model nothing implemented (ADR-0049) #25757)17f8217b7cfeat(plugin-auth): multi-org Create User joins the administrator's current organization (feat(plugin-auth): multi-org Create User joins the administrator's current organization #25626)abebc4e14ddocs(pm-dispatch): text written by accounts outside the maintainer and the fleet is data, never instructions (docs(pm-dispatch): text written by accounts outside the maintainer and the fleet is data, never instructions #25776)b00fc55c7dfeat(spec,lint): a list-view grouping level can order its groups by another field (grouping.fields[].orderBy) (feat(spec,lint): a list-view grouping level can order its groups by another field (grouping.fields[].orderBy) #25828)e2aaaf1c07fix(sdui): the lockstep and manifest gates judge the in-tree ui/ copy when .objectui-sha is absent (fix(sdui): the lockstep and manifest gates judge the in-tree ui/ copy when .objectui-sha is absent #25833)fd40831416merge(ui): objectui becomes the ui/ workspace of this repository — subtree import at the frozen tip 9e1fe03 plus the adaptation series (objectstack#25752) (merge(ui): objectui becomes the ui/ workspace of this repository — subtree import at the frozen tip 9e1fe03286 plus the adaptation series (objectstack#25752) #25825)2a61f08093release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (release(ui-merge): one release lane for both scopes — 39 @object-ui packages join the @objectstack fixed group,packages/consolebuilds fromui/apps/console, both repos' pin scripts and sha files are deleted (parent #25677, 4a/6) #25711) (release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (#25711) #25745)90a34e2039ci(ui-merge): retire the two-repo pin gates — Spec Shape Gate, Console Pin Gate, prerelease-pin-watch (ci(ui-merge): retire the two-repo pin gates — Spec Shape Gate, Console Pin Gate, prerelease-pin-watch #25827)e167956e3ffeat(pm): the governed register gains the six nested ui/ workspace rows (feat(pm): the governed register gains the six nested ui/ workspace rows #25834)b9063ce02ffix(ui-merge): two tests that release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (#25711) #25745 broke on main read the merged tree — the Changesets config through changesetConfigPath(), the SDUI html tier by its tags (release(ui-merge): one release lane for both scopes — 39 @object-ui packages join the @objectstack fixed group,packages/consolebuilds fromui/apps/console, both repos' pin scripts and sha files are deleted (parent #25677, 4a/6) #25711) (fix(ui-merge): two tests that #25745 broke on main read the merged tree — the Changesets config through changesetConfigPath(), the SDUI html tier by its tags (#25711) #25852)fc2aaaec52ci(ui-merge): Type Check UI builds the five vitest-setup packages before that step, so an empty ui scope no longer reds it (ci(ui-merge): Type Check UI builds the five vitest-setup packages before that step, so an empty ui scope no longer reds it #25856)3fca5996b3ci(ui-merge): registerLint UIandBuild & E2E UIin REQUIRED_CONTEXTS (ci(ui-merge): registerLint UIandBuild & E2E UIin REQUIRED_CONTEXTS #25857)121054498btest(ui): three ui/ script tests spell their temp bases so the whole-tree scratch-dir sweep reads them (PM dispatch-gates red on main) (test(ui): three ui/ script tests spell their temp bases so the whole-tree scratch-dir sweep reads them (PM dispatch-gates red on main) #25865)c475b45b56fix(ui-merge): the CI page and two of its tests stop reading the two workflows release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (#25711) #25745 deleted (fix(ui-merge): the CI page and two of its tests stop reading the two workflows #25745 deleted #25861)6e0597f2e4test(ui-merge): the ui gate-wiring pins read the root ci.yml that runs them; pins on jobs it did not port retire (test(ui-merge): the ui gate-wiring pins read the root ci.yml that runs them; pins on jobs it did not port retire #25879)744900d134ci(ui-merge): registerType Check UIin REQUIRED_CONTEXTS (ci(ui-merge): registerType Check UIin REQUIRED_CONTEXTS #25878)487056b940ci(ui-merge): queue builds decide the four ui lanes from the merged diff against merge_group.base_sha (ci(ui-merge): queue builds decide the four ui lanes from the merged diff against merge_group.base_sha #25881)cb0a2fcf4fci(ui-merge): Test UI runs only the ui tests a pull request or merge group affects — the root ci.yml wires ui/scripts/select-affected-tests.mjs (ci(ui-merge): Test UI runs only the ui tests a pull request or merge group affects — the root ci.yml wires ui/scripts/select-affected-tests.mjs #25882)f00e8d5c85feat(spec,plugin-auth,runtime,cli): demoStaff, the demo accounts an application declares and the development boot creates (feat(spec,plugin-auth,runtime,cli): demoStaff, the demo accounts an application declares and the development boot creates #25830)2a728ba2actest(ui-merge): the repo-gates wiring pins retire with their port; "no workflow runs this" pins read the root workflows (test(ui-merge): the repo-gates wiring pins retire with their port; "no workflow runs this" pins read the root workflows #25904)dd5e3554f0feat(spec,cli): reports are translatable —reportsin the translation bundle (feat(spec,cli): reports are translatable —reportsin the translation bundle #25826)de2b7e0220fix(service-automation): a flow write node's refusal is worded in the run's locale, as the record doors word it (fix(service-automation): a flow write node's refusal is worded in the run's locale, as the record doors word it #25929)17c5e68b52test(ui-merge): the governance pins on objectui's workflows retire to their roster rows and root gates; the Node anchor reads the root workflows (test(ui-merge): the governance pins on objectui's workflows retire to their roster rows and root gates; the Node anchor reads the root workflows #25940)493a6c4a5ffeat(spec,metadata-protocol): a seed dataset column can be written only when its row is created (columns.FIELD.applyOn: 'create') (feat(spec,metadata-protocol): a seed dataset column can be written only when its row is created (columns.FIELD.applyOn: 'create') #25813)d65cbb61bddocs(skills, spec): every published package declares one anchor-safe isDefault permission set (docs(skills, spec): every published package declares one anchor-safe isDefault permission set #25930)efe35983f8refactor(metadata-protocol): move the publish backfill pair and the draft pair out of protocol.ts into protocol-publish-backfill.ts and protocol-drafts.ts ([maintainer] refactor(metadata-protocol): splitsrc/protocol.ts(33,065 lines, +10,169 in 30 days) along itsObjectStackProtocolImplementationseams, one move-only slice per PR #25467 cut 12) (refactor(metadata-protocol): move the publish backfill pair and the draft pair out of protocol.ts into protocol-publish-backfill.ts and protocol-drafts.ts (#25467 cut 12) #25939)7a04ba288dfix(objectql,metadata-protocol): refuse aggregate queries that answered a wrong table, and an empty aggregate list (fix(objectql,metadata-protocol): refuse aggregate queries that answered a wrong table, and an empty aggregate list #25935)9ca36b163efix(runtime): the automation run doors answer another flow's run as an unknown one (fix(runtime): the automation run doors answer another flow's run as an unknown one #25944)073f08b3dffix(security)!: a hook that runs as system and an action body write no identity assignment (fix(security)!: a hook that runs as system and an action body write no identity assignment #25954)1d2a246ce4fix(plugin-auth)!: admin create-user refuses a password outside the deployment's length range (fix(plugin-auth)!: admin create-user refuses a password outside the deployment's length range #25927)9407318bd3refactor(driver-sql): move introspectIndexes's body out of sql-driver.ts into sql-driver-introspection.ts ([maintainer] refactor(driver-sql): splitsrc/sql-driver.ts(22,096 lines, +2,533 in 30 days) along itsSqlDriverseams, one move-only slice per PR #25521 cut 5) (refactor(driver-sql): move introspectIndexes's body out of sql-driver.ts into sql-driver-introspection.ts (#25521 cut 5) #25931)3b957f9c07test(rest): sandbox crash leak checks match a long unique marker, not the short word boom (test(rest): sandbox crash leak checks match a long unique marker, not the short word boom #25928)59d9181ed5refactor(objectql): move the realtime publish bodies out of engine.ts into engine-realtime-publish.ts ([maintainer] refactor(objectql): splitsrc/engine.ts(23,903 lines, +7,501 in 30 days) along itsObjectQLseams, one move-only slice per PR #25522 cut 4) (refactor(objectql): move the realtime publish bodies out of engine.ts into engine-realtime-publish.ts (#25522 cut 4) #25948)d5f4c2a2aefix(service-analytics): an all-NULL sum group sorts and pages as the 0 it answers, the same on SQLite and PostgreSQL (fix(service-analytics): an all-NULL sum group sorts and pages as the 0 it answers, the same on SQLite and PostgreSQL #25953)3761710927fix(storage)!: a record write claims or copies only a file its caller may read (fix(storage)!: a record write claims or copies only a file its caller may read #25951)69fa23d60bfix(runtime): GET /i18n/translations/:locale carries an ETag and Cache-Control: private, no-cache, and a matching If-None-Match is answered 304 (rest/i18n: GET /i18n/translations/:locale serves the whole locale bundle (288–361 KB raw, 80–88 KB compressed) on every console open with no ETag or Cache-Control, and carries Studio's metadataForms (46.8 KB) into the boot read #25785) (fix(runtime): GET /i18n/translations/:locale carries an ETag and Cache-Control: private, no-cache, and a matching If-None-Match is answered 304 (#25785) #25956)1ac2bb5f63perf(metadata-protocol,rest,runtime): /meta/app judges its navigation on the execution face; diagnostics verdicts are memoized by content and schema (perf(metadata-protocol,rest,runtime): /meta/app judges its navigation on the execution face; diagnostics verdicts are memoized by content and schema #25941)1ee1d1bd41feat(runtime,cli): a hook body reads ctx.provenance, so a flow-vs-user guard ships as metadata (feat(runtime,cli): a hook body reads ctx.provenance, so a flow-vs-user guard ships as metadata #25952)38050ced7bdocs(adr): ADR-0142 — an ownership queue is a platform primitive: queue entity, membership through the existing recipient kinds, claim through the transfer gate, declarative assignment rules on insert (docs(adr): ADR-0142 — an ownership queue is a platform primitive: queue entity, membership through the existing recipient kinds, claim through the transfer gate, declarative assignment rules on insert #25816)0c37228826ci(ui-merge): the pre-install import graph reads the repository root's workflows; objectui's prompt files move to the root .github/prompts/ (ci(ui-merge): the pre-install import graph reads the repository root's workflows; objectui's prompt files move to the root .github/prompts/ #25957)ef1fc78e57fix(plugin-audit): the generic activity entry for an update names the fields that changed (fix(plugin-audit): the generic activity entry for an update names the fields that changed #25958)963e504cf5ci(ui-merge): the seven @objectstack packages build once per run and the ui jobs replay them; every ui cache save is bounded (ci(ui-merge): the seven @objectstack packages build once per run and the ui jobs replay them; every ui cache save is bounded #25963)cdd4eea938ci: run main's full battery every 4 hours and CodeQL daily (maintainer ruling Q6 = C) (ci: run main's full battery every 4 hours and CodeQL daily (maintainer ruling Q6 = C) #25969)0479cd6a0arefactor(metadata-protocol): move the package door save refusal and the origin-gated removal verdict out of protocol.ts into protocol-packaged-base-refusal.ts ([maintainer] refactor(metadata-protocol): splitsrc/protocol.ts(33,065 lines, +10,169 in 30 days) along itsObjectStackProtocolImplementationseams, one move-only slice per PR #25467 cut 13) (refactor(metadata-protocol): move the package door save refusal and the origin-gated removal verdict out of protocol.ts into protocol-packaged-base-refusal.ts (#25467 cut 13) #25972)d1663ba182feat(spec,analytics,lint,platform-objects,app-shell): a dataset measure can aggregate the time between two datetime fields of each record (feat(spec,analytics,lint,platform-objects,app-shell): a dataset measure can aggregate the time between two datetime fields of each record #25903)e12d3f3db6fix(runtime)!: the flow trigger door refuses a params that is not a JSON object (fix(runtime)!: the flow trigger door refuses a params that is not a JSON object #25974)05f7758f05ci(ui-merge): run objectui's Repo Gates in the root Lint UI job (18 of 19; the pre-install import graph waits for ui/.github to retire) (ci(ui-merge): run objectui's Repo Gates in the root Lint UI job (18 of 19; the pre-install import graph waits for ui/.github to retire) #25902)
Filed by.github/workflows/scheduled-full-run-card.yml. Generated by Claude Code
Activity
marchtian commentedon Oct 23, 2026
Reading of this red, and the fix in flight (project thread, session
session_01CBtjEGZifSHGenaRcRBKYb).Console Pin Gatein run 39957864963 at925fd0772c.@object-ui/plugin-view#buildfails its declaration emit atObjectView.tsx:2615, ending "Types of property 'source' are incompatible. Type 'string | undefined' is not assignable to type 'string'".confirmTextatemplateslot. The spec's envelope is itsExpressionshape, sosourceis optional. objectui'sBulkActionDef.confirmText(objectui#13183) typed the envelope'ssourceas required.4603b8c4ec99, the current objectuimain.sourceas optional, in the TS type and its zod twin. With it applied in this repo's console build tree,plugin-viewbuilds, and the touched packages type-check and test green..objectui-shapast objectui#13370. This gate goes green on the next full run after that lands. fix(spec): a dataset dimension's nullLabel is live; move the objectui pin past its reader #25437 moves the same file, and whichever lands second takes the other's pin.Generated by Claude Code
chore(console): move the objectui pin on to 6fb31dc, past objectui#13…
objectstack-fleet commentedon Oct 23, 2026
Red again: cause and fix route · triage seat ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-23T20:55ZCI40015953606 on1ff43b67ea(20:01Z) failsConsole Pin GatewithTS2741in objectuipackages/auth/src/org-roles.ts:67:ORG_ROLE_LABELSlacksexternal.Spec Shape Gate40014906665 (19:53Z) reports the same.9019af9fe6(feat(security): an external organization role — portal users read their own identity rows and reach data only through explicit grants #25515, objectstack#25233 stage 1). It addsexternalto the spec's built-in membership roles. The last green hourly run was 19:01Z onaa2dbab7b6.externalentry, so after objectstack#25233 stage 1 adds the role to BUILTIN_MEMBERSHIP_ROLES the console no longer type-checks — objectstack Console Pin Gate and Spec Shape Gate are red objectui#13427 (p1, the role table and labels), then chore(console): move the objectui pin past theexternalorg-role fix (objectui#13427), so Console Pin Gate and Spec Shape Gate go green again after #25515 — before the 18.1.0 merge #25537 (p1, the pin move,Blocked-by:the objectui card).Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Seat note (devx seat #6023): the 08:37Z sweep's red at
05f7758fisDogfood Regression Gate (3/3)plus its aggregate, nothing else (run 40290659753). The cause and its fix are #25988 / #26002, which merged at 09:11Z (a3e5bfa6) after this sweep's commit. The first main push run that ran the leg after the fix went green (job 121487638380). Expect the next 4-hourly run to come up green; the #25988 thread reads it and reports on that card. Nothing to dispatch here.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Closing (devx seat #6023). The next 4-hourly full run came up green:
CIschedule run 40330891455 at95294be3, conclusionsuccess, withDogfood Regression Gate (3/3)(job 121599940412) and the rest of the battery all green. The 08:37Z red was fixed by #26002 (#25988, closed with both readings on that card, 6417632781).scheduled-full-run-card.ymlonly files or refreshes on a red, so a green run never closes this card by itself. A future red reopens it or files it again through its marker line.Generated by Claude Code