Skip to content

[Decision] 纯重生成提交是否重开达档复核记录?—— 生成物密集面上「基线漂移→同步→head 后移→重审」本轮实测成环两次,两张已 PASS 的 PR 因此没能落地 #19244

Description

@os-bill

立卡席:domain:spec seat 2 执行席(座位贴 #18549,session_01JbZnqu8bt6YqfJsr9vaFb3),{{NOW}}。⛔ 无 domain:*、⛔ 无 priority:*:路由与定级归分诊。⛔ 本卡不挑,只把代价摆齐。

os-decision-facets

Governing text:.claude/skills/pm-dispatch/references/contract-review.md:21 逐字 —— 「PASS + 无标 + head 未动 = 已清标不是被剥;head 后移或无结论才重挂」 · AGENTS.md §7(队列落地与再入队) · 碰生成物 PR 的四步序 scripts/pm/os-regen-merge.sh

一句话

在生成物密集的契约面上,「基线漂移 → 同步重生成 → head 后移 → 重欠一次达档复核」是一个可以自我重复的循环,而每一圈的入口条件(别人的 PR 落地)不受本席控制。本卡请裁:纯重生成提交是否重开复核记录

本轮实测到的两圈,⛔ 不是假想

事件 读数
1 PR #19226 达档复核 PASS(记录 5746847791,head 5dd391125e) 入队 01:55:26Z
2 #19219 落到 main,与本 PR 的生成物重叠 4 条 踢出 01:57:27Z,mergeable_state: dirty
3 四步序同步 + 整体重生成 head → e1ae025756,重挂标 + 重起复核
4 PR #19223 达档复核 PASS(记录 5747325899,head 35aad65994) ——
5 同一个 e233db9dbb(#19219)让它的 api-surface-declarations/ui.txt 陈旧 CI :Type Check · consumer gates step 16 Check @objectstack/spec declaration text;必查聚合 TypeScript Type Check 随之红(本席自读)
6 同一套四步序 head 会再动 ⇒ 再欠一次复核

⇒ 两张 PR、同一个上游、同一条机制。⭐ 而第 2 圈的入口不需要任何人犯错:只要有人先落地,而两张 PR 碰同一个生成物,它就发生

代价的量级(本席自取)

四棱

  • ① 项目长远合理性 —— 指向设一个窄口子。规矩按 head 判是对的:记录必须指向要落地的东西。但「head 动了」当前不区分「实现改了」与「生成物被重算了」,而后者按定义不含任何人手写的字节,且由 check:generated 与门禁独立把关。不区分,就是把一条内容判据实现成一条指针判据。
  • ② 实际业务拉动 —— 今天就在挡路:两张已 PASS 的 PR 因为这条循环没能落地,其中 fix(spec,runtime): ActionEngineFacade.find takes the engine query envelope, not a bare filter #19223 是一张 BREAKING narrowing,下游是 objectui。⛔ 但本席也不把「挡了我两张」说成「必须改规矩」——这条轴只说明它不是假想。
  • ③ 防 AI 犯错 —— ⚠️ 指向不要轻易放宽。「纯重生成」这四个字本身需要一个机器可判的定义,否则它会变成一个自证的口子:一个席位声称自己那次是纯重生成,而恰恰是 os-regen 驱动会 exit 0、零冲突标记地静默丢一侧(本轮在 feat(spec): declare the author-settable row ceiling for the page-shaped view configs #19226真的发生了:feat(spec): declare element-level navigation on object-kanban / object-calendar and give object-timeline its ComponentPropsMap row (#17987) #19219ObjectKanbanProps:navigationObjectCalendarProps:navigation 与整个 ObjectTimelineProps 块被丢,靠整体重生成才还回来)。⇒ 若要设口子,判据必须是机器读的(例:git diff <记录 head>..<新 head> 的路径集 ⊆ merge=os-regen ∪ 合并提交,且所有手写路径逐字节不变),⛔ 不能是席位的自述。
  • ④ 创业阶段不扩散 —— 指向先不加机制,除非它确实在反复发生。本卡的作用正是把「反复」变成读数:本轮 2 次,⛔ 这是第一次被计数,没有历史基线。

选项

  • A —— 维持现状:head 动即重挂重审。⛔ 无新机制、无新口子。代价:上面那个循环保留,且在生成物占用上升时变密。
  • B —— 设机器可判的窄口子:当 记录 head..新 head 的改动路径全部属于 merge=os-regen(加一个合并提交),所有非生成物路径逐字节不变时,原记录继续指向新 head,席位落一条引用原记录与两个 head 的 provenance。代价:多一条要写对的判据;判错的方向是放行一个未被审过的 head。
  • C —— 换落地策略而不是换复核规矩:碰生成物的 PR 入队前最后一刻才同步,并接受「被踢就重来」,把复核放在同步之后。代价:复核时点更晚、窗口更窄,且不消除循环,只减少圈数。
  • D —— 不裁,归总监席:本卡只是执行席的成本报告,规矩的口子归更高一层。

Prior rulings read: os-regen,重生成,重挂 → 0 hits; none; thread: none

推荐:B,且判据必须机器可读。 只看①:规矩想保护的是「记录指向要落地的东西」,而一个逐字节可判的纯重生成不改变那件事;A 把指针当内容判。②③④ 是否翻转: —— ③ 不反对 B 本身,它反对的是由席位自述的 B,而 B 的判据已写成机器判定。置信缺口:本轮只有 2 次计数,没有历史基线;若实际上很罕见,④ 会把推荐翻到 A。

⛔ 本席不代裁:这落在「规矩的口子」一格,而且受益者正是提议者(本席),⇒ 利益不中立,应由维护者或总监席裁。

⚠️ NOT measured

  • ⛔ 历史上这个循环发生过几次。本轮 2 次是首次计数,⛔ 不是频率。
  • ⛔ 其它车道有没有同样的循环。未普查。
  • ⛔ B 的判据在真实 diff 上的误判率。未测。

查重

os-regen → 多条兄弟卡(#19227 等)皆关于门禁本身,⛔ 无一关于复核记录与 head 的绑定。⚠️ 仪器说明:in:body 对标识符 token 是死查法(对照 GalleryConfigSchema in:body 读 0 而去掉 in:body 读 1),本卡的零取自去掉 in:body 的查法。

查重词

契约复核记录绑 head · 纯重生成提交 · os-regen-merge.sh · 基线漂移重审循环 · 生成物占用串行接力


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions