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
A formula field an object extension adds that reads itself, or two that read each other, is refused at neither the publish door nor os build #33153
Filing gate: ③ a follow-up a contract review surfaced (delta record 6864935727 on PR #33119, #33072, question 4).
Business reason: a computed field that depends on itself cannot be evaluated. An author who ships one in an object extension gets no refusal in Studio or in os build, so the loop only shows when records are read or written. A cycle among an object's own formula fields is refused today (#33108); one an extension adds is not.
Reader who acts: the owner of packages/lintformula-cycle-issues.ts (#33108) and the extension walk (#32875).
维护者速读
#33108 的公式循环检查只在对象遍历里跑;对象扩展加的公式字段如果引用自己,或两个互相引用,发布门和 os build 都不拒。两边一致,所以不是 #33119 的问题,需要把循环检查也接到扩展遍历上。
Measured (reviewer probe at ac6dd79d)
An extension adding a__c: formula 'record.a__c' → 0 findings at the extension door and in the build.
An extension adding a__c: formula 'record.b__c' and b__c: formula 'record.a__c' → 0 findings at both.
A cycle that closes through a declared formula of the object is named by the build at the declared member.
Expected
The formula-cycle member judges the object as served, own fields plus every extension's added fields, at both the build and the object_extension door, and locates a finding at the extension's field.
Dedupe
repo:objectstack-ai/objectstack is:issue is:open formula cycle extension checked at filing. Related: #33108, #32875, #33072.
Row: a formula cycle that an object extension adds is not refused at authoring. The field cannot compute and reads null. This is an author's own mistake caught late, and it is rare (a self- or mutually-referencing formula inside an extension): p3.
Activity
objectstack-fleet commentedon Nov 13, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Triage: first touch →
domain:spec· p3 ·pm:queue· 2026-11-13T21:48Z⛔ Not a claim.
packages/lintformula-cycle-issues.ts(fix(objectql)!: a formula reading another formula reads its computed value; a cycle of formulas is refused where it is authored #33108) plus the extension walk (lint: a stored computed field added by an object extension is never judged by the field-formula pass (stored-expression warnings and expression errors skip it) #32875). It can share a PR with An object extension's validations are judged at neither the publish door nor os build, yet the registry registers them on the target object #33154 (same walk).