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
Studio: the RLS predicate field keeps showing the previous draft's server error under newly edited text #27452
Filing gate: ① a user-visible defect found by a QA run (off-clause probe, RUNNER rule 8). It sits beside the #26858 / PR #26999 design, in which the field shows the draft's server verdict at its own path.
Reproduction
Boot the showcase. Create a writable package (POST /api/v1/packages {"id":"com.qa.rten","name":"QA","version":"0.1.0","type":"app","namespace":"qar"}), an object qar_job with number est_hours and a formula field f_formula, and a permission set qar_job_editor with an RLS policy on qar_job.
Open /_console/studio/com.qa.rten/access, select the set, then the Row-level security tab.
Type record.f_formula > 5 into USING. Autosave runs, and the server verdict (INVALID_FIELD, virtual formula field) appears under the field. That part is correct.
Now change the text to a predicate the client lint holds, for example record.est_hours * 2 > 10 (not lowerable). The client error appears and the save is held.
Expected: only the error that applies to the current text.
Actual: the previous draft's server error, which is about f_formula and text no longer in the field, stays rendered beside the new client error. Two different errors show at once.
Mechanism
The server verdict at the field's path comes from the last saved draft read. A held save never re-reads, so the stale verdict is not cleared when the text changes.
QA-source: #27441 · studio-authoring.expression-editors · observed beside the clauses
Read fresh. The RLS predicate field keeps showing the previous draft's server error under newly edited text. From the 18.3.0 RC run ([sweep] v18.3.0 release test sweep #27377 §5); it is retested on the next wave.
Claim: PM loop round 1
Session: session_01Utp6CaJoinvGQSbHeDaWBe
Account: os-bill
Branch: claude/project-thread-qx6k5b (the card thread's designated push branch, the recorded platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-27452
Domain: domain:ui
Seat: domain:ui#3
File surface: ui/packages/app-shell/src/views/metadata-admin/draftVerdict.ts, ui/packages/app-shell/src/views/metadata-admin/CelPredicateField.tsx, ui/packages/app-shell/src/views/metadata-admin/inspectors/ConditionBuilder.tsx (comparison compile path; and its compile helper if separate), ui/packages/app-shell/src/views/studio-design/ObjectValidationsPanel.tsx, the DataPillar draft-response read in ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx (only to carry _diagnostics), ui/packages/app-shell/src/views/metadata-admin/PermissionMatrixEditor.tsx only for #27452, tests beside, root .changeset/ (stop on breach; explain in the report)
Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier on 178b5238: no path-derived mandate), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
Thread-read: 6491499806
Premise: holds
Serial constraints cleared: PR #27617 (seat 3, #27511 fold) holds other DataPillar regions of StudioDesignSurface.tsx and is landing: merge origin/main before the PR and after it lands · no other open PR edits draftVerdict.ts, CelPredicateField.tsx, ConditionBuilder.tsx or ObjectValidationsPanel.tsx (checked at claim) · #27629 waits on PR #27617, not on this chain
Fold: member of the #27513 chain (chain head #27513 carries the full serial check); shared branch named above. First step: re-measure on current main (PR #27612 may already end the stale verdict).
Dispatched 2026-10-29T15:34Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
Activity
objectstack-fleet commentedon Oct 29, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: studio | none | P①
Triage: p3 ·
domain:ui·area:access· 2026-10-29T08:12Z⛔ Not a claim.
bug,pm:queue.Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
Claim: PM loop round 1
Session:
session_01Utp6CaJoinvGQSbHeDaWBeAccount:
os-billBranch:
claude/project-thread-qx6k5b(the card thread's designated push branch, the recorded platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-27452Domain:
domain:uiSeat:
domain:ui#3File surface:
ui/packages/app-shell/src/views/metadata-admin/draftVerdict.ts,ui/packages/app-shell/src/views/metadata-admin/CelPredicateField.tsx,ui/packages/app-shell/src/views/metadata-admin/inspectors/ConditionBuilder.tsx(comparison compile path; and its compile helper if separate),ui/packages/app-shell/src/views/studio-design/ObjectValidationsPanel.tsx, theDataPillardraft-response read inui/packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx(only to carry_diagnostics),ui/packages/app-shell/src/views/metadata-admin/PermissionMatrixEditor.tsxonly for #27452, tests beside, root.changeset/(stop on breach; explain in the report)Container & model:
M,mode:thread,model: TIER_DEFAULT(dispatch-gates --tieron178b5238: no path-derived mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
Thread-read: 6491499806
Premise: holds
Serial constraints cleared: PR #27617 (seat 3, #27511 fold) holds other
DataPillarregions of StudioDesignSurface.tsx and is landing: mergeorigin/mainbefore the PR and after it lands · no other open PR edits draftVerdict.ts, CelPredicateField.tsx, ConditionBuilder.tsx or ObjectValidationsPanel.tsx (checked at claim) · #27629 waits on PR #27617, not on this chainFold: member of the #27513 chain (chain head #27513 carries the full serial check); shared branch named above. First step: re-measure on current
main(PR #27612 may already end the stale verdict).Dispatched 2026-10-29T15:34Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:ui#3 · os-bill · session_01Utp6CZVdZdKe4J1nCNL23t
Fixed in draft PR #27677 (folded with #27513); dev report: #27513 (comment)
Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
ACCEPT → PR #27677 comment 6503830067 · 2026-10-29T17:33Z