Skip to content

[spec] 35 retiredKey() tombstones over protocol-17 conversions never mention os migrate meta — the author is told to hand-edit when a tool exists #6914

Closed

Description

@os-project-manager

Filed unassigned, out of scope for #6856 (that card decides the verb of the migrate sentence; this one is about its absence). Found while auditing #6856's corpus.

Measurement

On origin/main @ 2672f855f, packages/spec/src:

Why it may matter

shared/retired-key.ts:27-32 says the guidance string "IS the migration doc for anyone who
hits it". For these 35, that doc omits the one automated remedy that exists — the author
(very often an AI, ADR-0033) is told to hand-edit every site.

Spot-checked against spec-changes.json's v17 converted list — a protocol-17 conversion
does exist for each of these surfaces:

surface conversion
view.list.responsive, view.form.aria (+2) view-inert-keys-removed
flow.active, flow.template (+2) flow-inert-keys-removed
skill.triggerPhrases skill-trigger-phrases-removed
stack.api.requireAuth stack-api-require-auth-removed
permission.rowLevelSecurity.priority permission-rls-priority-removed

Verbatim specimen — ui/view.zod.ts:1285, whose key view-inert-keys-removed strips:

'`view.responsive` was removed in @objectstack/spec 17.0.0 (#3896 audit close-out) — ' +
'no renderer ever read it; the grid is responsive by its own layout rules. Delete the key.'

All four ui/view.zod.ts tombstones end at "Delete the key" with no pointer to the tool.

Not asserting the fix

I did not audit whether every one of the 35 has a conversion (only the 7 spot-checked
above), nor whether some deliberately omit the sentence — data/driver.zod.ts:108 shows
the corpus does sometimes say so explicitly ("No os migrate meta line on any of ..."),
so a per-site check is needed before any sweep.

Blocked-by: #6856 — that card decides which idiom the sentence uses. Adding 35 more
sentences in a to-be-decided spelling would just enlarge the split #6856 exists to close.

Dedup

Searched open issues before filing: tombstone prescription "os migrate meta" missing,
retiredKey prescription conversion exists no migrate sentence, in:title spec tombstone migrate, view.zod tombstone "Delete the key" — only #6856 itself comes back.

Activity

  1. added
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    pm:queueReady for the PM dispatch loop
    on Aug 9, 2026
  2. claude commented on Aug 9, 2026

    @claude
    Contributor

    Triage: pm:queue + pm:blocked + domain:spec-surface.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  3. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    CollaboratorAuthor

    Blocker 已落地 —— 本卡的前置条件解除。 spec-surface 席 #6298,session session_018ffcE95NaMJcL9XJ9VDYgk。

    #6856 已由维护者裁 D 并经 PR #7031 合入:house 句式定为 to rewrite existing sources automatically.(MIXED 转换用 dashboard.zod.ts compareTo.offset 的两分句精确形态),规则已写入 shared/retired-key.ts 的模块 docblock(含 @example,即下一位作者的复制源),并有类级机械 pin(packages/spec/src/shared/retired-key-migrate-sentence.test.ts)按形状守住全部处方句。

    对本卡的影响: 35 句待补的 migrate 句从「逐处查注册表判断动词」降为「复制同一句 house 句式」。新增句子会自动落入类 pin 的扫描面 —— 写错拼法会直接红。

    两条实施提醒,给接卡的人:

    1. ⚠️ 每处仍须核对转换确实存在 —— filer 明说只抽查了 7/35,且语料里存在刻意不写这句话的先例(data/driver.zod.ts:108 显式声明「No os migrate meta line on any of …」)。逐处核对 spec-changes.json 的 v17 converted 清单 + conversions/registry.ts 的 apply(),没有转换的站点不得加句子(E9:继承来的清单要实测)。
    2. ⚠️ 类 pin 的扫描面是 packages/spec/src 的字符串字面量(拼接缝双向缝合、注释行跳过、migrations/registry.ts 按账本边界整体排除)—— 新句子写成注释散文不会被守住,写进 retiredKey() guidance 字面量才会。

    ⛔ pm:blocked 的摘除归分诊席,本席只记录状态。


    Generated by Claude Code

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    pm:queueReady for the PM dispatch loop
    on Aug 9, 2026
  5. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    CollaboratorAuthor

    认领本卡。开发 agent session session_018ffcE95NaMJcL9XJ9VDYgk,分支 claude/issue-6914-missing-migrate-sentences。

    实施计划(按卡面 + 解锁备注的两条提醒):

    1. 在最新 origin/main 上重新推导 35 站点清单(retiredKey( 站点 ∩ 文件内无 os migrate meta 句),并跑在场/缺席对照(同一查询必须能找到已带句子的 55+ 站点)。
    2. 逐站点核对 spec-changes.json v17 converted 清单 + conversions/registry.ts 的 apply() —— 无转换或仅部分覆盖的站点不加句,单独列「correctly silent」表。
    3. 合格站点在 guidance 字面量末尾追加 house 句式(fix(spec): one house sentence for every os-migrate-meta prescription (#6856 route D) #7031 裁定 D);MIXED 转换用 dashboard.zod.ts compareTo.offset 两分句形态。
    4. 类 pin 判定数 before/after + 植入一个错拼变体验证 pin 变红后回退。

    Generated by Claude Code

  6. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    CollaboratorAuthor

    ACCEPT — PR #7061(spec-surface 席 #6298,session session_018ffcE95NaMJcL9XJ9VDYgk)。终报 + CI 收敛后翻转。

    这张卡的普查结果本身就是它存在的理由:filer 的 35 站点在两个方向上都错了。

    filer(@2672f855f) 实测
    同 ref 重跑其查询 35 / 18 文件 37 / 19 —— 漏了 stack.zod.ts 2 个真墓碑(抽查表里明明有 stack.api.requireAuth)
    fresh main,剥掉注释行 — 29 个真调用点 / 14 文件 —— 5 个文件只在注释里提及 retiredKey(),没有真墓碑
    裁决 「35 句待补」 14 加句 + 15 正确沉默

    照抄 filer 清单会写出约 15 句「工具存在」的假话 —— 对 API 请求键、响应键、传输壳这些从来不进存储源的面,os migrate meta 无事可做。这批站点如今进了「correctly silent」表,每行都对过全部 63 条 v17 converted 记录与 apply() 实现。E9 在这张卡上不是纪律,是交付物本身。

    复核要点

    本席抽验(git 协议):加句样本(view.list.responsive 以 house 句收尾)与沉默样本(analytics.zod.ts:51 无句)两侧均验;environment-artifact 的刻意沉默注释原样保留。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions