Repository navigation
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-11-05T08:27:21.366Z · run log · commit fdad1786e892270ac3fcc161b3fd4d57c9c47748 · 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: a35fc66566 (run 41939112291, the last green CI schedule run) .. fdad1786e8 — compare
31fe289fc3feat(objectql,cli): recompute stored home-currency amounts at the rates in force now, report first, rows without a rate listed and skipped (multi-currency M2-3) (feat(objectql,cli): recompute stored home-currency amounts at the rates in force now, report first, rows without a rate listed and skipped (multi-currency M2-3) #30183)0fd363d13dfix(spec)!: an object permission that edits or deletes a record also reads it (fix(spec)!: an object permission that edits or deletes a record also reads it #30180)07595c0742docs(skills): page-builder guide drops the retired page:header breadcrumb and names placedActions (docs(skills): page-builder guide drops the retired page:header breadcrumb and names placedActions #30115)e826e7791frefactor(driver-sql): put SqlDriver into facade form with the sql-driver codemod (sql-driver.ts 18,334 -> 10,979, body-identical) (refactor(driver-sql): put SqlDriver into facade form with the sql-driver codemod (sql-driver.ts 18,334 -> 10,979, body-identical) #30139)b7075d9908docs(adr): ADR-0144 settles Open items 2, 3, 4, 6 and 9, records ruling 6539345871 (A′ and B), the rounding mode and CLDR fraction digits (multi-currency, epic [Epic] multi-currency (shape C′): record currency, dated exchange rates, write-time home-currency projection — 17 children, R1/R2/R3 release pairing (ruling 6465431966) #8345) (docs(adr): ADR-0144 settles Open items 2, 3, 4, 6 and 9, records ruling 6539345871 (A′ and B), the rounding mode and CLDR fraction digits (multi-currency, epic #8345) #30182)cde492db6afeat(plugin-auth): a page navigation to the mobile hand-off that has to sign in first goes to the sign-in page (feat(plugin-auth): a page navigation to the mobile hand-off that has to sign in first goes to the sign-in page #30010)6db9198eeafix(ui): bound the disabled-reason tooltip width on declared actions and quick actions (fix(ui): bound the disabled-reason tooltip width on declared actions and quick actions #30161)2eadbe2910test(app-shell): pin that a failed feed read does not carry over to another record (Record page shows 「暂无评论」 / "No comments yet" when the comment or activity read fails #30145) (test(app-shell): pin that a failed feed read does not carry over to another record (#30145) #30173)d3edfb52b8fix(app-shell): match sys_user.locale in the server resolveLocale order (fix(app-shell): match sys_user.locale in the server resolveLocale order #30150)03be5655bbfix(app-shell): New automation never saves a typed prefix as the trigger object (fix(app-shell): New automation never saves a typed prefix as the trigger object #30148)5f801296d1fix(plugin-detail): related table offers Export only to a reader who may export (fix(plugin-detail): related table offers Export only to a reader who may export #30156)7e9fa4bf35fix(app-shell): zh-CN Studio reads in Chinese in the view, page and report panels, the publish sheet, the flow Problems note and the save-notice / notify nodes; dashboard is 仪表盘 (fix(app-shell): zh-CN Studio reads in Chinese in the view, page and report panels, the publish sheet, the flow Problems note and the save-notice / notify nodes; dashboard is 仪表盘 #30163)42afac7234feat(studio): pick an object list view from the Interfaces header title, and keep it in the address (feat(studio): pick an object list view from the Interfaces header title, and keep it in the address #30175)4851668dd4fix(plugin-auth): a verification-email resend from a visitor who is not signed in answers the same whatever the send does (fix(plugin-auth): a verification-email resend from a visitor who is not signed in answers the same whatever the send does #30144)474c030b13fix(plugin-security): an assignment write the administrator cannot address answers not-found, as a read does; a refusal names only values the caller can read (fix(plugin-security): an assignment write the administrator cannot address answers not-found, as a read does; a refusal names only values the caller can read #30165)bedb96e081test(dogfood): a home field added to an object that already holds rows migrates as add_columns and the recompute fills it (multi-currency M2-4) (test(dogfood): a home field added to an object that already holds rows migrates as add_columns and the recompute fills it (multi-currency M2-4) #30186)dfafae8132feat(plugin-list): a reader can add any field they may read to their own list ([Decision] Readers can hide list columns but not add one: should a reader be able to add an object's field to their list? #30077) (feat(plugin-list): a reader can add any field they may read to their own list (#30077) #30162)1a3ea0c008fix(rest): the /security routes answer from the request's environment kernel on a hosted runtime, so an owner can accept an installed app's default permission set (rest: on the hosted multi-environment runtime the /security routes read the HOST kernel, so no owner can accept an installed app's default permission set and every invited member gets 403 on its data (sixth door of #29999) #30192) (fix(rest): the /security routes answer from the request's environment kernel on a hosted runtime, so an owner can accept an installed app's default permission set (#30192) #30195)f2a9007e93chore(scripts): point each facade-gate exception row at the card that retires it (registry only, Facade codemods: retire the codemod-limit exception rows in the facade gate registry (protocol.ts, engine.ts, sql-driver.ts) #30147 phase 1) (chore(scripts): point each facade-gate exception row at the card that retires it (registry only, #30147 phase 1) #30194)ff12aed37bfix(core): compareTo on a forward date range (next month, next quarter, next 30 days) compares with the period just before it, not with itself (fix(core): compareTo on a forward date range (next month, next quarter, next 30 days) compares with the period just before it, not with itself #30196)8f05e61bb3fix(plugin-security): an organization administrator's update by id is refused before the row is looked up, whatever the id names (fix(plugin-security): an organization administrator's update by id is refused before the row is looked up, whatever the id names #30200)afc761c35ffix(cloud-connection,cli): install a .custom export into the target's writable pair (fix(cloud-connection,cli): install a .custom export into the target's writable pair #30207)bff5ba2119fix(ui): judge requiredWhen as the engine's transition gate on the record Edit form (fix(ui): judge requiredWhen as the engine's transition gate on the record Edit form #30216)5fa9375ec8feat(plugin-detail): the default record page lets an editor advance the stage from the path (feat(plugin-detail): the default record page lets an editor advance the stage from the path #30221)314ad95574fix(objectql): defer the first lifecycle sweep one interval on a datastore this boot created (fix(objectql): defer the first lifecycle sweep one interval on a datastore this boot created #30214)490d136f20fix(plugin-security): every member reads and posts comments, and reads the activity history, of the records they can read (fix(plugin-security): every member reads and posts comments, and reads the activity history, of the records they can read #30222)6f095b9c10feat(studio): customize a read-only package's dataset in the All metadata area, see what uses it before publishing, and read a refused publish at the dataset (feat(studio): customize a read-only package's dataset in the All metadata area, see what uses it before publishing, and read a refused publish at the dataset #30224)d7c0389b6ffix(plugin-security)!: a write from a caller the read door refuses is refused, whatever rows it addresses (fix(plugin-security)!: a write from a caller the read door refuses is refused, whatever rows it addresses #30219)797f9257c9feat(app-shell): Studio customizes an installed package's page into its customization package (Studio: customize an installed package's page, so a customer can change a home or landing page without a code release #30063) (feat(app-shell): Studio customizes an installed package's page into its customization package (#30063) #30233)159930a28afix(service-settings): judge the whole fetched page when two data-key files differ, and report a mixed-key database (fix(service-settings): judge the whole fetched page when two data-key files differ, and report a mixed-key database #30232)bb86ff96ccfix(spec): one label order on an overridden item, for all eight document translators (fix(spec): one label order on an overridden item, for all eight document translators #30236)771b2db20afix(core): an idle DispatchLoop wakes at the next due time, and a sole writer skips the cold-start ramp (fix(core): an idle DispatchLoop wakes at the next due time, and a sole writer skips the cold-start ramp #30225)0f3ee58eb2fix(formula,lint): a date-arithmetic verdict in a flow condition says the run fails, not that the value reads null (fix(formula,lint): a date-arithmetic verdict in a flow condition says the run fails, not that the value reads null #30240)31260ca8e4fix(core): compareTo on an already-past date range compares with the period before it, and previousYear from 29 February stays in February (fix(core): compareTo on an already-past date range compares with the period before it, and previousYear from 29 February stays in February #30246)8eca18fd7cfix(rest): POST /batch and the /meta engine reads answer from the request's environment kernel on a hosted runtime (rest: objectQLProvider ignores the environment id, so on a hosted runtime POST /batch, the meta object-state / item-history doors and the disabled-package gate read the host kernel's engine (finish #30013 / #30195) #30218) (fix(rest): POST /batch and the /meta engine reads answer from the request's environment kernel on a hosted runtime (#30218) #30247)1d4103779cci(dogfood): prune the per-sha Turbo seed to the run's tasks before saving it (ci(dogfood): prune the per-sha Turbo seed to the run's tasks before saving it #30241)9b8a58671drefactor(driver-sql): the sql-driver codemod retires 15 facade-gate exception rows (knex calls, spelled return types, comments in parameters, accessors, computed defaults, the logger default) (Facade codemods: retire the codemod-limit exception rows in the facade gate registry (protocol.ts, engine.ts, sql-driver.ts) #30147 phase 2a) (refactor(driver-sql): the sql-driver codemod retires 15 facade-gate exception rows (knex calls, spelled return types, comments in parameters, accessors, computed defaults, the logger default) (#30147 phase 2a) #30249)171b6ddc25fix(plugin-audit): the activity list opens newest first, without platform rows, under a plain name (fix(plugin-audit): the activity list opens newest first, without platform rows, under a plain name #30230)cd5f55469dfix(objectql,cli): os migrate stored-expressions fills a stored computed field on rows stored before it was declared, and the boot names it (fix(objectql,cli): os migrate stored-expressions fills a stored computed field on rows stored before it was declared, and the boot names it #30227)eb6199b39bfeat(app-shell,plugin-list): a personal view's own conditions are Filter panel rows, saved back by 保存 (feat(app-shell,plugin-list): a personal view's own conditions are Filter panel rows, saved back by 保存 #30242)04f36b63f8feat(service-automation): a record-triggered flow's notification links to the record that started the run when it names no link (feat(service-automation): a record-triggered flow's notification links to the record that started the run when it names no link #30252)f9e5befa9cfeat(trigger-api): an api hook verifies the vendor signature its start node declares (config.signature) (feat(trigger-api): an api hook verifies the vendor signature its start node declares (config.signature) #30048)959c26be1ffeat(cli,create-objectstack): the starter wires src/security and src/datasets, os g permission/dataset, AGENTS.md names the package manager (feat(cli,create-objectstack): the starter wires src/security and src/datasets, os g permission/dataset, AGENTS.md names the package manager #30258)07685ae142fix(metadata-protocol): the reconcile census reads every protocol-*.ts module, and the package-less overlay move heals the registry after its delete (fix(metadata-protocol): the reconcile census reads every protocol-*.ts module, and the package-less overlay move heals the registry after its delete #30257)d0da8802a0fix(plugin-security): an organization administrator's assignment removal is judged on the stored row, and its refusal names only values the caller can read (fix(plugin-security): an organization administrator's assignment removal is judged on the stored row, and its refusal names only values the caller can read #30248)119c2db10crevert: PR fix(plugin-security): every member reads and posts comments, and reads the activity history, of the records they can read #30222 (main red main red: Dogfood Regression Gate (2/3) fails permission-set-clone-door after PR #30222 (member_default grants sys_comment) #30255) (revert: PR #30222 (main red #30255) #30262)ef2ad31cdafix(app-shell): reconsider a dismissed or revoked default permission set in the suggested-bindings panel (fix(app-shell): reconsider a dismissed or revoked default permission set in the suggested-bindings panel #30266)15f808ab4ffix(metadata-protocol,app-shell): serve a pair's mapping override, let a pair remove any override it holds, name a working remedy for an excluded type (Declared overrides: a mapping override publishes but is never served, doc and mapping overrides cannot be restored, and an override's label can be hidden by translation #30062) (fix(metadata-protocol,app-shell): serve a pair's mapping override, let a pair remove any override it holds, name a working remedy for an excluded type (#30062) #30226)343ddb217erefactor(objectql): facade ObjectRepository and ScopedContext in engine.ts with the codemod's second pass (body-identical; 20/24 methods) (refactor(objectql): facade ObjectRepository and ScopedContext in engine.ts with the codemod's second pass (body-identical; 20/24 methods) #30264)713beba587fix(metadata-protocol): the per-item rollback restores the row the read serves, so a .custom pair's override rolls back beside a base-bound row (metadata-protocol: a per-item rollback of the .custom pair's row is refused 403 naming the base row while a base-bound row of the same name is stored (rollbackMetaItem reads the binding with no package) #29848) (fix(metadata-protocol): the per-item rollback restores the row the read serves, so a .custom pair's override rolls back beside a base-bound row (#29848) #30268)5db77f73f4fix(app-shell): zh-CN view properties panel reads the empty filter prompt and the description hint in Chinese (fix(app-shell): zh-CN view properties panel reads the empty filter prompt and the description hint in Chinese #30265)4be973424afix(automation)!: acurrencyorpercentscreen field refuses a non-number on resume, and the console renderspercentas a numeric input (fix(automation)!: acurrencyorpercentscreen field refuses a non-number on resume, and the console renderspercentas a numeric input #30269)a26abbc673fix(objectql): an uninstalled package no longer reads as read-only until a restart (fix(objectql): an uninstalled package no longer reads as read-only until a restart #30280)8b117c0e54fix(service-queue): reclaim a running job whose lease ran out, and renew a live handler's lease (fix(service-queue): reclaim a running job whose lease ran out, and renew a live handler's lease #30277)977be38061fix(service-settings)!: remove the Feature Flags page whose four toggles changed nothing (fix(service-settings)!: remove the Feature Flags page whose four toggles changed nothing #30272)fccde75e87fix(plugin-chatbot,app-shell): the follow-up sent to the model after Confirm or Cancel is no longer shown as the person's message (fix(plugin-chatbot,app-shell): the follow-up sent to the model after Confirm or Cancel is no longer shown as the person's message #30296)c1240a38acfeat(ui): the timeline's Changes chip holds the audit's field changes only; the CRM opens field history on its four main objects (feat(ui): the timeline's Changes chip holds the audit's field changes only; the CRM opens field history on its four main objects #30294)bfca0efb79refactor(driver-sql): the durability gate and the compile-refusal enumeration read the sql-driver facade, so the codemod moves four more members (Facade codemods: retire the codemod-limit exception rows in the facade gate registry (protocol.ts, engine.ts, sql-driver.ts) #30147 phase 2b) (refactor(driver-sql): the durability gate and the compile-refusal enumeration read the sql-driver facade, so the codemod moves four more members (#30147 phase 2b) #30306)cfb602c459fix(lint)!: type a time-relative flow's conditions against its swept object when the start names no objectName, and let validate_expression take the swept object (fix(lint)!: type a time-relative flow's conditions against its swept object when the start names no objectName, and let validate_expression take the swept object #30276)0837fdc0eafix(metadata-protocol): an unshipped email-template locale keeps its write before the pair is ensured; the named-base refusal names os migrate packageless-overlays (fix(metadata-protocol): an unshipped email-template locale keeps its write before the pair is ensured; the named-base refusal names os migrate packageless-overlays #30322)47226e6e42feat(spec): IOwnershipQueueService lets a caller ask for a refusal on a failed member read (onFailedRead) (feat(spec): IOwnershipQueueService lets a caller ask for a refusal on a failed member read (onFailedRead) #30318)665db006c1fix(runtime,cli): a newcomer's first boot is quiet — the empty stub declares its protocol range, and a scaffold's os dev composes one MetadataPlugin (fix(runtime,cli): a newcomer's first boot is quiet — the empty stub declares its protocol range, and a scaffold's os dev composes one MetadataPlugin #30333)8c9f48f87cfix(app-shell): draw a served report, page or dashboard label as served in the Console header, report index and recent list (fix(app-shell): draw a served report, page or dashboard label as served in the Console header, report index and recent list #30308)a545a0413cfix(runtime, metadata-protocol): the permission-set clone door copies a set that grants on an object this deployment does not install, and member_default's feed grants re-land (fix(runtime, metadata-protocol): the permission-set clone door copies a set that grants on an object this deployment does not install, and member_default's feed grants re-land #30310)31d23c3f6dfeat(cli): port the deterministic scenario scorer — shape score, artifact graph reader and Run grader — with a discrimination self-test (feat(cli): port the deterministic scenario scorer — shape score, artifact graph reader and Run grader — with a discrimination self-test #30332)ff3f83bb69fix(ui): one record action reads as one timeline row with its field changes; every timeline peek row names its actor (fix(ui): one record action reads as one timeline row with its field changes; every timeline peek row names its actor #30342)1c5378313ffeat(cli,create-objectstack): os build says when the dev database holds Studio customizations it leaves behind; the starter docs name os package export (feat(cli,create-objectstack): os build says when the dev database holds Studio customizations it leaves behind; the starter docs name os package export #30336)9afcd6a6b6fix(plugin-auth)!: an organization cannot require MFA while two-factor enrollment is off (Organization require-MFA can be turned on with two-factor off, and after the grace period everyone is locked out with no way to enroll #30201) (fix(plugin-auth)!: an organization cannot require MFA while two-factor enrollment is off (#30201) #30293)13c0c5baa5fix(plugin-approvals)!: an approval node refuses to open when a team or position directory read fails or a queue expansion rejects, and the ownership-queue reads page to completion (fix(plugin-approvals)!: an approval node refuses to open when a team or position directory read fails or a queue expansion rejects, and the ownership-queue reads page to completion #30288)d1d90b7062fix(plugin-auth)!: clearing the allowed IP ranges applies at once, and a console save that leaves out the saving address is refused (fix(plugin-auth)!: clearing the allowed IP ranges applies at once, and a console save that leaves out the saving address is refused #30309)8589756acdfeat(runtime,cloud-connection,organizations): the marketplace install, sample-data reseed, restart heal and per-organization replay pick seed datasets by the organization's language (feat(runtime,cloud-connection,organizations): the marketplace install, sample-data reseed, restart heal and per-organization replay pick seed datasets by the organization's language #30346)f672e0dc59refactor(objectql): move 36 hand-series private docblocks out of engine.ts with the codemod's third pass (slice 1 of 2) (refactor(objectql): move 36 hand-series private docblocks out of engine.ts with the codemod's third pass (slice 1 of 2) #30341)fdad1786e8fix(metadata-protocol,rest): a .custom pair's declared override is labelled in the ruled order on every /meta read (fix(metadata-protocol,rest): a .custom pair's declared override is labelled in the ruled order on every /meta read #30353)
Filed by.github/workflows/scheduled-full-run-card.yml. Generated by Claude Code
Activity
objectstack-fleet commentedon Nov 5, 2026
domain:devx#1 · os-support-ai · session_01WGufzgBDcBNVmSmo7VFHpj
Seat reading · not a claim · 2026-11-05T04:43Z
⛔ Not a claim. The devx lane is winding down by the maintainer's order and takes no new cards. This note is only for whoever picks this up.
Dogfood Regression Gate (2/3), 1 of 1,107 tests failed. It istest/permission-set-clone-door.dogfood.test.ts:238, "a platform set … copies into its shipping package's pair". The clone answers 422INVALID_METADATA:permission/my_member_baselinegrants onsys_commentandsys_activity, which are not defined in objects.490d136f(fix(plugin-security): every member reads and posts comments, and reads the activity history, of the records they can read #30222,domain:server#2). It addssys_comment(read, create, edit) andsys_activity(read) to the platform baselinemember_default. The clone door copies that set into the showcase's pair, and the spec's object-existence check refuses the two grants there. The other merges in the range don't touch permission sets or that door. That includes the sql-driver facade PRs refactor(driver-sql): put SqlDriver into facade form with the sql-driver codemod (sql-driver.ts 18,334 -> 10,979, body-identical) #30139 and chore(scripts): point each facade-gate exception row at the card that retires it (registry only, #30147 phase 1) #30194; this seat measured both.domain:server, the lane that landed fix(plugin-security): every member reads and posts comments, and reads the activity history, of the records they can read #30222. Seat's guess at the fix: the existence check should see platform objects such assys_commentandsys_activitywhen it validates a cloned set. The other way is for the clone to drop grants on objects its target doesn't register. Which one is right is the owning lane's call. ⛔ Don't narrow the dogfood check.objectstack-fleet commentedon Nov 5, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: already handled · the same red as anchor #30255 · 2026-11-05T04:53Z
⛔ Not a claim.
771b2db2is red inDogfood Regression Gate (2/3)onpermission-set-clone-door. That is exactly anchor main red: Dogfood Regression Gate (2/3) fails permission-set-clone-door after PR #30222 (member_default grants sys_comment) #30255's case, caused by PR fix(plugin-security): every member reads and posts comments, and reads the activity history, of the records they can read #30222. The revert, PR revert: PR #30222 (main red #30255) #30262, is in the merge queue. ⛔ Do not dispatch a second stop-bleed. This card is refreshed by the next 4-hourly run.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8
Seat reading · not a claim · 2026-11-05T10:19Z
⛔ Not a claim.
fdad1786e8(run 41991734292) has one failed job:Lint UI, step 25,Spec Liveness Check. The dogfood red is gone from this run, after main red: Dogfood Regression Gate (2/3) fails permission-set-clone-door after PR #30222 (member_default grants sys_comment) #30255 closed.query.searchFieldsliveness row citedengine.tsafterf672e0dc59. That card is closed, fixed by38717d34a4(fix(spec): repoint the query.searchFields liveness row at engine-find.ts#expandSearchOnAst #30368), which is inorigin/main. On a branch carrying it, this seat readpnpm --filter @objectstack/spec run check:livenessexit 0 (PR docs(permissions): state the allowed_ip_ranges save refusal, the live clear and the env recovery #30382's head38ea0610de, whose checks all passed).