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 }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Triage: pm:queue (in-repo objectui card — no routing label by design).
Classification basis — concrete defect with named anchors, all re-verified live on origin/main @ f0a625a (newer than the card's cited 993336f; nothing moved):
packages/core/src/evaluator/ExpressionEvaluator.tsevaluateCondition: if (!condition) return true (comment says "undefined, null, empty string") — so disabled: "" and disabled: null both pass the !== undefined gate and evaluate truthy ⇒ _disabled = true.
Forwarding is real, not internal-only: the destructure strips _disabled and the createElement call re-injects disabled: __disabled || undefined — any renderer accepting a disabled prop greys out. The visible side is benign as the card says (negation flips the direction).
The block runs unconditionally in the evaluatedSchema useMemo for every node type — this is the generic path, hence third-spelling and wider than the != null family (null also caught).
Dedup: repo-scoped search for SchemaRenderer + disabled returns only this card; zero open PRs touch this face. PR #3861 (#3849) covers the five renderer sites only; PR #3851 (#3842) covered the two action sites. No overlap — the family split is clean: #3848 (ActionRunner) / #3849 (five renderer sites) / #3850 (empty-source envelope in hasDeclaredVisibilityGate) / this card (SchemaRenderer inline gate).
Direction note for the implementing lane: the card correctly rules out an in-place fourth spelling. The package-topology fork (uplift the single predicate-emptiness definition vs. another mechanism — components → react import is the forbidden direction) is the same ruling face as #3850's definition-layer question; recommend resolving both in one pass, serial after or batched with #3850. #3842's "no core uplift" ruling was scoped to the five action sites and does not automatically bind this cross-package path — if the implementer concludes an uplift is the only clean fix, that is a maintainer call to surface then, not now. No target: label — consistent with the rest of the family (requires unusual metadata shape; not a today's-user-path blocker).
Release board: target:v17 applied — class ①, SchemaRenderer's disabled !== undefined gate runs unconditionally for every node on the generic rendering path, so metadata carrying disabled: '' or disabled: null permanently greys out the control and the _disabled flag is forwarded as a real disabled prop. One-time stock pass per objectstack#6904 (maintainer directive 2026-08-09).
Activity
os-zhuang commentedon Aug 8, 2026
Triage:
pm:queue(in-repo objectui card — no routing label by design).Classification basis — concrete defect with named anchors, all re-verified live on
origin/main@f0a625a(newer than the card's cited993336f; nothing moved):packages/react/src/SchemaRenderer.tsxdisabled block:newSchema.disabled !== undefined→evaluator.evaluateCondition(newSchema.disabled)→_disabled = true— present as described.packages/core/src/evaluator/ExpressionEvaluator.tsevaluateCondition:if (!condition) return true(comment says "undefined, null, empty string") — sodisabled: ""anddisabled: nullboth pass the!== undefinedgate and evaluate truthy ⇒_disabled = true._disabledand the createElement call re-injectsdisabled: __disabled || undefined— any renderer accepting adisabledprop greys out. The visible side is benign as the card says (negation flips the direction).evaluatedSchemauseMemo for every node type — this is the generic path, hence third-spelling and wider than the!= nullfamily (nullalso caught).Dedup: repo-scoped search for SchemaRenderer + disabled returns only this card; zero open PRs touch this face. PR #3861 (#3849) covers the five renderer sites only; PR #3851 (#3842) covered the two action sites. No overlap — the family split is clean: #3848 (ActionRunner) / #3849 (five renderer sites) / #3850 (empty-source envelope in
hasDeclaredVisibilityGate) / this card (SchemaRenderer inline gate).Direction note for the implementing lane: the card correctly rules out an in-place fourth spelling. The package-topology fork (uplift the single predicate-emptiness definition vs. another mechanism —
components→reactimport is the forbidden direction) is the same ruling face as #3850's definition-layer question; recommend resolving both in one pass, serial after or batched with #3850. #3842's "no core uplift" ruling was scoped to the five action sites and does not automatically bind this cross-package path — if the implementer concludes an uplift is the only clean fix, that is a maintainer call to surface then, not now. Notarget:label — consistent with the rest of the family (requires unusual metadata shape; not a today's-user-path blocker).本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-project-manager commentedon Aug 9, 2026
Release board:
target:v17applied — class ①,SchemaRenderer'sdisabled !== undefinedgate runs unconditionally for every node on the generic rendering path, so metadata carryingdisabled: ''ordisabled: nullpermanently greys out the control and the_disabledflag is forwarded as a realdisabledprop. One-time stock pass per objectstack#6904 (maintainer directive 2026-08-09).Generated by Claude Code
yinlianghui commentedon Aug 9, 2026
🔒 认领(objectui 分片 PM,session_01GTRjn8xBqp75dk7kFupVRt,恢复批次 4)—— 与 #3850 结对,一 PR 双 Fixes,分支与文件面声明见 #3850 的认领评论(
claude/issue-3850-3862-empty-predicate-gate)。本单的 SchemaRenderer!== undefined第三拼法按裁决改读下沉后的唯一定义,⛔ 不就地加第四拼法。Generated by Claude Code
fix(predicate): an empty predicate is no longer a declared gate anywh…
fix(predicate): 空谓词与非谓词值不再是门 —— 收敛最后三处自带范围的判定 (objectstack-ai#3955, o…