Blocked-by: #1874
Split out of #1342 on landing PR #1801, per the seat ruling on that card (option B). ⛔ Not a defect in PR #1801 — items 1–3 of the maintainer's ruling are delivered and verified there. This card carries the fourth.
What the ruling asked for, verbatim
Maintainer ruling on #1342, 2026-08-31 (决裁批 #19 ⑤, 5481124881), item 4:
pins:四语言 × 两对象的顶级值渲染各不塌缩(zh-CN 新增的区分入守卫,防回归)
⚠️ The operative clause is 入守卫,防回归 — put the distinction into a guard, against regression. It is not a statement that four locales happen to agree; it asks for a test that pins the non-collapse.
⭐ That reading was itself a finding. The dispatching seat assumed "four-locale pins" meant cross-locale consistency, flagged the assumption as falsifiable, and the dev falsified it — which is what turned this from a delivered item into a fenced one.
Measured state today (d01d27b3)
en Critical / Urgent
es-ES Crítica / Urgente
ja-JP 重大 / 緊急
zh-CN 严重 / 紧急 ← PR #1801 moved this half
The four locales now do all distinguish the two values. What does not exist is anything that keeps it that way.
- ⛔ Nothing under
test/ asserts non-collapse of the two top values in any locale.
紧急 under test/ returns exactly one line — test/automation-docs-coverage.test.ts:233, the task-side task_urgent_alert name.
- ⛔ Nothing compares the Chinese docs prose against the pack in either direction. Proved by ablation, not assumed:
content/docs/administration/profiles.zh-Hans.mdx was mutated back to 紧急工单 with the pack left at 严重 (mutation proved on disk by blob hash before the run, restored under an EXIT trap after, git diff HEAD empty) — and the full suite stayed green, 165 files / 3453 passed, byte-identical to the unmutated run.
⇒ the sweep PR #1801 performed was owed to the ruling and to AGENTS.md Documentation discipline rule 6, ⛔ not to any gate. That is precisely the hole item 4 was written to close, and it is still open.
⭐ The design finding — the obvious home does not fit
test/docs-object-term-consistency.test.ts looks like where this belongs: it already derives a Chinese term from the pack and bans retired spellings. It cannot express this rule as built.
Its retired-spelling scan runs over every zh page, over the pack itself, and over every ledger under test/. So adding 紧急 to crm_case's retired list goes red on:
- the pack —
crm_task.priority.urgent is legitimately still 紧急;
- the twelve task-side documentation sites, all correct;
test/automation-docs-coverage.test.ts:233, also correct.
⛔ A term that must die on one object and live on another is not expressible in that guard without redesign. crm_case's pins entry is currently empty. ⇒ this is a real design job, ⛔ not a one-line addition, which is why it is a card rather than a rider.
⛔ Why this is pm:blocked rather than pm:queue
The deliverable is a file under test/**, which is epic #1579's declared territory. This lane's rule is that the fence is crossable only by a maintainer or director ruling that names a card.
⚠️ This card has an unusually strong claim to that, and the seat is deliberately not deciding it:
⇒ ⛔ not self-authorised. One sentence from the maintainer or the director seat unblocks it.
⭐ Note the relationship to #1730, already in the decision box: that card asks whether a seat ruling can authorise a test/** crossing. This one asks whether an older maintainer ruling prescribing a guard does. They are the same question at two different strengths, and answering the pair settles the class.
Scope when it unblocks
Refs #1342 (the ruling and items 1–3) · PR #1801 (what landed) · #1730 (the same fence question at seat strength) · #1579 (the epic that holds test/**).
Generated by Claude Code
Blocked-by: #1874
Split out of #1342 on landing PR #1801, per the seat ruling on that card (option B). ⛔ Not a defect in PR #1801 — items 1–3 of the maintainer's ruling are delivered and verified there. This card carries the fourth.
What the ruling asked for, verbatim
Maintainer ruling on #1342, 2026-08-31 (决裁批 #19 ⑤,
5481124881), item 4:⭐ That reading was itself a finding. The dispatching seat assumed "four-locale pins" meant cross-locale consistency, flagged the assumption as falsifiable, and the dev falsified it — which is what turned this from a delivered item into a fenced one.
Measured state today (
d01d27b3)The four locales now do all distinguish the two values. What does not exist is anything that keeps it that way.
test/asserts non-collapse of the two top values in any locale.紧急undertest/returns exactly one line —test/automation-docs-coverage.test.ts:233, the task-sidetask_urgent_alertname.content/docs/administration/profiles.zh-Hans.mdxwas mutated back to 紧急工单 with the pack left at 严重 (mutation proved on disk by blob hash before the run, restored under anEXITtrap after,git diff HEADempty) — and the full suite stayed green, 165 files / 3453 passed, byte-identical to the unmutated run.⇒ the sweep PR #1801 performed was owed to the ruling and to
AGENTS.mdDocumentation discipline rule 6, ⛔ not to any gate. That is precisely the hole item 4 was written to close, and it is still open.⭐ The design finding — the obvious home does not fit
test/docs-object-term-consistency.test.tslooks like where this belongs: it already derives a Chinese term from the pack and bans retired spellings. It cannot express this rule as built.Its retired-spelling scan runs over every zh page, over the pack itself, and over every ledger under
test/. So adding紧急tocrm_case's retired list goes red on:crm_task.priority.urgentis legitimately still 紧急;test/automation-docs-coverage.test.ts:233, also correct.⛔ A term that must die on one object and live on another is not expressible in that guard without redesign.
crm_case'spinsentry is currently empty. ⇒ this is a real design job, ⛔ not a one-line addition, which is why it is a card rather than a rider.⛔ Why this is
pm:blockedrather thanpm:queueThe deliverable is a file under
test/**, which is epic #1579's declared territory. This lane's rule is that the fence is crossable only by a maintainer or director ruling that names a card.zh-CNrenderscrm_case.priority.criticalandcrm_task.priority.urgentas the same word 紧急 — the only locale of four that collapses them, and ja-JP deliberately did not #1342, and its item 4 explicitly prescribes a guard. On the fence's own wording that reads as authorised.guides/email-and-calendar.mdxcitesSettings → Email Templates— there is no Settings app, and the real page is Studio's #1730 this same round for assuming less than that.⇒ ⛔ not self-authorised. One sentence from the maintainer or the director seat unblocks it.
⭐ Note the relationship to #1730, already in the decision box: that card asks whether a seat ruling can authorise a
test/**crossing. This one asks whether an older maintainer ruling prescribing a guard does. They are the same question at two different strengths, and answering the pair settles the class.Scope when it unblocks
crm_case.priority.criticalandcrm_task.priority.urgentrender as different words, in each of the four locales.AGENTS.mdrule 11 residual: it requires both a comment beside the code and a roster entry in the guard. ⭐ The comment half is delivered by PR fix(i18n): zh-CN renders case Critical as 严重, task Urgent keeps 紧急 #1801 (objects.service.ts,objects.activity.ts); the roster half is this card.Refs #1342 (the ruling and items 1–3) · PR #1801 (what landed) · #1730 (the same fence question at seat strength) · #1579 (the epic that holds
test/**).Generated by Claude Code