Filed unassigned and unlabelled by the domain:ui execution seat — recording a cross-seat request, not claiming it. ⛔ domain:*, type and grading belong to triage.
Where this came from
Triage's grading comment on #6614 (2026-08-27T16:49Z) states the one confidence gap in that decision and asks this seat to close it, verbatim:
置信缺口(本分析看不见什么):看不见已发布页面里有多少正依赖当前「严格 JSON」行为 —— 若有页面把单引号内容当普通字符串消费,A 会改变它们的解析结果,那是本分析唯一可能的回旋镖;本席没有已发布页面的语料读数,建议裁 A 前由执行席补一次实测。
Filed as a card because ⛔ a cross-seat request that lives only in a comment is invisible to every candidate query, sweep and ageing alarm.#6614 itself is needs-user-decision and can never be dispatched, so the measurement needs its own card.
The question, stated so it can go red
#6614 option A would make interpretBrace materialize a JS-literal subset — single-quoted strings and unquoted object keys — that today falls through to the deferred $expr marker.
The boomerang: a published page that writes a braced value with single quotes and whose consumer treats the result as an ordinary string would, under A, start receiving a parsed value instead. That is a silent change in meaning for pages that work today.
So the measurement is not "how many pages use single quotes" — it is:
- How many published pages carry a braced attribute value that is not strict JSON?
- Of those, how many have a consumer that reads the value as a string (rather than defensively degrading it, as ListView does for
columns)? - ⭐ Is there any page for which A changes rendered behaviour, as opposed to merely replacing silence with a working binding?
⛔ (1) alone does not answer the question — it is the population, not the finding. A count of single-quoted spellings with no consumer analysis would look like a measurement and settle nothing.
Method notes, so a zero counts
- ⛔ A zero needs a positive control in the same query shape. If the corpus search for non-JSON braced values returns nothing, prove the query can find something by running it against a spelling known to exist.
- The corpus is published/authored pages, not fixtures. ⚠️ This lane has already been burned this week by treating sdui-parser fixtures as evidence about live behaviour — they are evidence about the fixtures. Say explicitly which corpus was reachable and which was not.
- If a corpus is genuinely unreachable from this repo, ⛔ do not report "clean" — report unreachable, and name what would have to be queried and by whom.
What this does NOT do
⛔ Not an implementation of #6614, and ⛔ not a ruling on it. It produces a reading that goes back onto #6614 so the maintainer decides with the gap closed instead of open. Option A stays entirely the maintainer's call.
Related
Filed unassigned and unlabelled by the
domain:uiexecution seat — recording a cross-seat request, not claiming it. ⛔domain:*, type and grading belong to triage.Where this came from
Triage's grading comment on #6614 (2026-08-27T16:49Z) states the one confidence gap in that decision and asks this seat to close it, verbatim:
Filed as a card because ⛔ a cross-seat request that lives only in a comment is invisible to every candidate query, sweep and ageing alarm.#6614 itself is
needs-user-decisionand can never be dispatched, so the measurement needs its own card.The question, stated so it can go red
#6614 option A would make
interpretBracematerialize a JS-literal subset — single-quoted strings and unquoted object keys — that today falls through to the deferred$exprmarker.The boomerang: a published page that writes a braced value with single quotes and whose consumer treats the result as an ordinary string would, under A, start receiving a parsed value instead. That is a silent change in meaning for pages that work today.
So the measurement is not "how many pages use single quotes" — it is:
columns)?⛔ (1) alone does not answer the question — it is the population, not the finding. A count of single-quoted spellings with no consumer analysis would look like a measurement and settle nothing.
Method notes, so a zero counts
What this does NOT do
⛔ Not an implementation of #6614, and ⛔ not a ruling on it. It produces a reading that goes back onto #6614 so the maintainer decides with the gap closed instead of open. Option A stays entirely the maintainer's call.
Related
columnsnever reaches the renderer because the registration's declared inputs omit it #6598 — the production report blocked behind [Decision] html 层 braced 属性值的字面量语法 —— interpretBrace 是否材料化 JS 字面量子集(单引号字符串 / 无引号键) #6614 (Blocked-by)@objectstack/sdui-parserneeds theinert-expressiondiagnostic in lockstep with objectui, or the save gate and the renderer speak different dialects objectstack#12719 — the framework-side sibling; A is only sound if both parser copies move in lockstep, and that repo's half isdomain:devx, a different seatinert-expressionwarning); the grammar half is what [Decision] html 层 braced 属性值的字面量语法 —— interpretBrace 是否材料化 JS 字面量子集(单引号字符串 / 无引号键) #6614 rules on