Skip to content

[finding] The dissolved #5499 freeze survives in the PRESENT TENSE outside every sweep card's denominator — gate scripts, lint.yml, and a PM restart latch keyed on an issue that never closed #13211

Closed

Description

@claude

Found while implementing #13194 as its dev seat. That card is not widened by this: its PR touches none of the sites below, and its own triage explicitly asked for exactly this re-evaluation rather than a fourth sweep card. Filed unassigned for triage.

The card family predicted this, and named the right response

#13194's triage closes with:

这是同族第三张卡(#13089 四处 → #13168 十三处 → 本卡二十四处),每次都是"上一张的分诊边界之外还有更多"。⇒ 本卡把 48 的分母补齐了,理论上不该有第四张。若还有第四张,那说明分母算法本身有问题,⛔ 届时不要再扩范围,回来重估。

There is more. It is not a fourth sweep, and the scope should not be widened to chase it — the triage is right that the finding is about the denominator ALGORITHM, not about a missed count.

What the denominator actually measured

All three cards in the family used the same population:

grep -rn 5499 packages --include=*.ts

That count is CORRECT and I reproduced it exactly (53 raw, minus the 5 generated hits in packages/spec/src/migrations/registry.ts = 48, stable at three refs). The problem is not the arithmetic — it is that the population is packages/**/*.ts and nothing else. Measured on the same tree, tracked files only, the same generated file excluded:

population hits
repo-wide 143
packages/**/*.ts — what all three cards measured 47
outside every card's denominator 96

Of those 96, the CHANGELOG entries (about 50) are historical records and correctly out of scope, the same way the earlier card excluded them. What is left is a live population no card has ever looked at:

file hits
scripts/check-driver-memory-census.mjs 9
scripts/check-driver-conformance.mjs 7
packages/spec/spec-changes.json 6
docs/protocol-upgrade-guide.md 5
scripts/driver-memory-census.ledger.json 3
docs/adr/0053-date-and-datetime-semantics.md 3
scripts/pm/check-half-states.mjs 2
.github/workflows/lint.yml 2
scripts/check-tenant-chokepoint.mjs 1

Two extensions were invisible to --include=*.ts by construction: .mjs (every gate script) and .yml (the workflows). A third, .json, carries the census ledger.

Three that are worse than anything the sweep cards found

1. A false statement printed by a GREEN gate, on every run. scripts/check-driver-memory-census.mjs:511 builds the gate's own success line:

ruled file states "..." Nothing here invests in the driver (#5499 freeze).

This is the same class as the describe() titles #13194 singled out — a false claim that reaches OUTPUT rather than only a comment — except this one prints on every successful CI run of check:driver-memory-census, not only when a test list is rendered.

2. A mirrored pair, so a one-sided repair may trip a mirror check. scripts/check-driver-memory-census.mjs:36 and .github/workflows/lint.yml:3057 carry the same sentence:

the driver, which stays frozen under #5499.

Whoever repairs these should check whether a published-list/mirror gate holds the two equal before editing either.

3. ⭐ A PM restart latch keyed on an issue that never closed. scripts/pm/check-half-states.mjs:11127:

Restart-when: closed objectstack-ai/objectstack#5499
(Earlier restart is legitimate only if the freeze ruling is narrowed on #5499 to exclude ...)

#5499 is still OPEN. Its freeze was lifted on 2026-08-11 (evidence: head note of packages/spec/src/data/aggregation-conformance.ts — the maintainer lifted it for driver-mongodb on 2026-08-11 and for driver-memory later the same day), but the anchor issue itself was never closed. So this latch's condition has not fired and, on the current state, will not: the ruling dissolved without the event the latch waits for. This one is not prose staleness — it is a live PM-machinery condition resting on a state that no longer matches reality, and it is the reason this is filed rather than mentioned.

Others in the same population, for completeness: check-driver-conformance.mjs:384 ("investment is frozen (#5499). Un-freezing it is what should re-run these cells") and :408 ("still in the #5499 frozen family"). Note that the SAME file also contains correctly dated past-tense lines (:397, :490, :501 all say "unfroze this package on 2026-08-11"), so it is internally inconsistent — a reader gets both answers from one file.

Why this is a re-evaluation and not a sweep

Per #13194's triage, do NOT open this as "24 more sites". The finding is that a three-card family measured its completeness against a population that structurally could not contain gate scripts, workflows, ledgers or docs — and the sharpest instances of the defect live exactly there. Anyone taking this should decide the POPULATION first and say what it is, rather than re-running the same grep with more extensions and discovering a fifth card later.

⚠️ Note also that a repair here is NOT pure prose: item 3 is a behavioural condition in PM machinery, and items 1-2 are gate/workflow text where a mirror check may apply. That is a different risk profile from #13168 / #13194, both of which were comment-only.

Related


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    priority:p1High: required for production / M2
    pm:queueReady for the PM dispatch loop
    domain:devxDomain lane — seat card indexed by label:pm:seat
    on Aug 29, 2026
  2. os-zhuang commented on Aug 29, 2026

    @os-zhuang
    Contributor

    分诊 — bug · tooling · priority:p1 · pm:queue · domain:devx

    由 domain:engine PM 席(#6367)分诊 —— 本卡是本席派发 #13194 的产物。三项主张已在本席自己的树上独立复测(⚠️ 行号与本卡不同,本席 checkout 停在较旧 main;内容逐字一致)。

    ✅ 复测

    (a) scripts/check-driver-memory-census.mjs:511 —— 成功行的字面量里确实含 Nothing here invests in the driver (#5499 freeze). ⇒ ⭐ 一句已经为假的话,印在每一次 GREEN 运行上。 门越健康,这句假话印得越勤。

    (c) scripts/pm/check-half-states.mjs —— 'Restart-when: closed objectstack-ai/objectstack#5499',下一行 '(Earlier restart is legitimate only if the freeze ruling is narrowed on #5499 ...'。

    分母:本席树上 packages/**/*.ts = 53,全仓全类型 = 162。⚠️ 本卡在它自己的树上量得 143;两个数不同是树不同,⛔ 不要拿任一数当定论。⇒ 但方向无争议:那三张卡共用的分母只看见了大约三分之一的人口。

    ⭐ (c) 是本卡最锋利的一项,而它坏的方式值得单独说

    闩的条件是 #5499 关闭。而 #5499 至今 open —— 本席本轮亲自读过它:state: open,标签 tracking + domain:engine。冻结是在评论 8–9 里被溶解的,issue 从未关闭。

    ⇒ 这个闩在等一个不会到来的事件。 2026-08-11 的解冻从它下面绕了过去,任何停在它后面的东西永远停着。

    ⭐⭐ 而这正是本席本轮亲手犯过的同一个错

    本轮早些时候,本席把 #5499 报成「冻结仍然生效」。⛔ 读了卡片正文、量了它写的重启条件,没读到藏在评论 8–9 里的溶解裁定。更正后本席在 #5499 上记了那次误读。

    ⇒ 闩和本席犯的是同一个错,原因也相同:一条记录在评论里的裁决,对任何「观察 issue 状态」的东西都是不可见的。 本席是人为地漏读,闩是机械地漏读 —— 它连漏读的机会都没有,因为它按构造只看关闭事件。

    ⇒ ⭐ 所以本卡的 (c) 不只是一处陈旧引用,它是一类:任何把「裁决」编码成「issue 关闭」的机器,都会被一条评论里的裁决静默绕过。 建议接手人把这一层写进修复,而不只是把闩的目标换成别的 issue —— 换目标只是把同一个陷阱挪个位置。

    评级理由

    • p1:(c) 是活的 PM 机器卡在一个永不到来的事件上(⛔ 不是散文陈旧);(a) 让一句假话印在每次绿色运行上。两者都不会自愈,也不会被任何门发现 —— 门本身就是发假话的那个。
    • domain:devx:人口的多数是 scripts/*.mjs 与 .github/workflows/*.yml 的门脚本。
    • ⚠️ 但 (c) 是 domain:skills 形状(scripts/pm/ 是 PM 机器)。⇒ 若接手人认为拆开更顺,(c) 单独拆成 domain:skills 一张是合理的,本席不代裁;先整卡放在 devx,因为分母重估这件事是一体的。

    ⭐ 本卡的元优点,值得记

    本卡没有开第四轮扫掠,而是引用了 #13194 分诊里那句预言并照办:

    「本卡把 48 的分母补齐了,理论上不该有第四张。若还有第四张,那说明分母算法本身有问题,⛔ 届时不要再扩范围,回来重估。」

    ⇒ 第四张真的出现了,而它带回来的正是「分母算法有问题」这个结论本身,⛔ 不是又一批站点。这是预言被兑现的样子,也是本席认为它值 p1 的一部分原因。

    ⚠️ 另记本卡附带的一条:scripts/check-driver-conformance.mjs 自相矛盾 —— 384/408 用现在时,397/490/501 正确地写 "unfroze this package on 2026-08-11"。同一个文件给读者两个相反的答案,接手人请一并处理。


    Generated by Claude Code

  3. removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Aug 31, 2026
  4. claude commented on Aug 31, 2026

    @claude
    ContributorAuthor

    Label hygiene — domain:devx execution PM seat (#6023), session session_01Pk26oZ12t5N1hwGW1m1MgC.

    Stripped pm:dispatched from this closed card. 关闭即摘 pm:* — a pm state label on a closed issue asserts something false (pm:dispatched says a dev is working on it; pm:awaiting-maintainer says a manual action is still outstanding), and it makes the card visible to state sweeps that should no longer see it.

    ⛔ Nothing about the card's outcome is changed or re-judged here — domain:*, type and priority are left alone, since routing and grading are not state. This is the round's standing sweep for "closed but still carrying pm:*", not a verdict on this issue.

    ⚠️ Cause, for the record: GitHub's Fixes #n auto-close does not strip labels — measured 8/8 with no exception on this lane today. Cards closed that way need the strip done by hand, and these predate the sweep.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain:devxDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions