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.
Evaluation is fail-open for visibility/required (a broken predicate must not hide a field or wrongly block submit) and fail-open for readonly (a broken predicate leaves the field editable) — matching the server, which logs and allows the change through.
logger?.warn?.(
`readonlyWhen for '${name}' reads '${unbound}', which is not bound for this operation — ` +
`treating the field as LOCKED (the declared lock is not waived because it could not be evaluated). ` + …
);
return true;
return true = LOCKED,随后 stripReadonlyWhenFields 把该字段从 payload 中删除。也就是说服务端对这一类不是「logs and allows the change through」,而是记日志后锁死并丢弃写入。
客户端这一侧本身没错 —— resolveFieldRuleState 对 readonlyWhen 传 fallback: false(字段仍可编辑)是 ADR-0057 D10「server enforces, client is courtesy」下的合理选择。错的只是「matching the server」这半句:两端在这一类上恰好方向相反,而注释把它描述成一致。
Basis: premise re-verified on both sides at current refs — objectui origin/main @ 993336f still carries the claim at packages/core/src/evaluator/fieldRules.ts:26 ("matching the server, which logs and allows the change through"), and objectstack origin/main @ 6de592c still has the fail-CLOSED unbound-root path at rule-validator.ts:601 ("treating the field as LOCKED"). The comment asserts the opposite of the sibling system's real failure direction, which sends a debugger of "form saved but value silently didn't land" in exactly the wrong direction. Scoped one-comment fix; direction 1 (narrow the claim, spell out the unbound-root divergence, cite ADR-0057 D10 server-authoritative) — the author's own lean, and consistent with the queued objectstack#6716 (same wrong-direction-prose class). requiredWhen/visibility halves stay untouched (verified accurate per objectstack#4977).
Dedup: card's own three searches stand; no new sibling since filing.
Activity
os-zhuang commentedon Aug 8, 2026
Findings triage: promoted
finding→pm:queue.Basis: premise re-verified on both sides at current refs — objectui
origin/main@993336fstill carries the claim atpackages/core/src/evaluator/fieldRules.ts:26("matching the server, which logs and allows the change through"), and objectstackorigin/main@6de592cstill has the fail-CLOSED unbound-root path atrule-validator.ts:601("treating the field as LOCKED"). The comment asserts the opposite of the sibling system's real failure direction, which sends a debugger of "form saved but value silently didn't land" in exactly the wrong direction. Scoped one-comment fix; direction 1 (narrow the claim, spell out the unbound-root divergence, cite ADR-0057 D10 server-authoritative) — the author's own lean, and consistent with the queued objectstack#6716 (same wrong-direction-prose class).requiredWhen/visibility halves stay untouched (verified accurate per objectstack#4977).Dedup: card's own three searches stand; no new sibling since filing.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
yinlianghui commentedon Aug 8, 2026
🔒 认领(objectui shard PM,session
session_01GTRjn8xBqp75dk7kFupVRt)claude/issue-3828-fieldrules-docblockrequiredWhen/可见性两半已核准确,不动。packages/core/src/evaluator/fieldRules.ts模块头注释(零行为改动)。git -C /home/user/objectstack,⛔ 不用cd X &&短路形态)。record:related_list写了add但漏了add.picker,整个相关列表被换成「Component failed to render」错误卡 ——RelatedList.tsx:1299裸取add.picker.object,同一文件:378/:390是可选链 #3838(plugin-detail)零相交。Generated by Claude Code
docs(core): fieldRules 模块头收窄 readonly fail-open 的「与服务端一致」断言 (objectst…
docs(adr): ADR-0036 服务端 fault 策略收窄,未绑定根一类是 fail-CLOSED (objectstack-a…