Skip to content

[finding] AGENTS.md 的「It has teeth」段只描述 check:durability-log-level 的日志级别那半 —— #5186 之后同一条命令还跑读接缝规则,散文没跟上 #5981

Description

@hotlong

观察类发现,记录于 #5186 实施期。今天没有用户会撞到,也不影响闸门行为——纯粹是 AGENTS.md 的描述面比闸门实际执行面窄了一条规则。#5186 的文件面是 scripts/ + .changeset/(⛔ 越界即停),AGENTS.md 不在其中,故只记录不改。

事实

#5186 之后,pnpm check:durability-log-level(scripts/check-durability-degradation-log-level.mjs)执行两条独立规则:

  1. 原有的日志级别规则:DURABILITY_CRITICAL_CALLEES 词表 + warn/静默即红,baseline 是 scripts/durability-degradation.baseline.json;
  2. 新增的读接缝编造空值规则(check:durability-log-level 结构性看不见「读接缝把故障答成空值」这一类 —— #4825 / #5108 全家都在闸门盲区里 #5186,族源 [metadata] database-loader 吞掉 sys_metadata 的 DDL 失败后仍置 schemaReady=true —— 第二类降级(#4632 规则),本轮因包冻结未修 #4728[metadata] nextEventSeq() 把驱动读失败也当成「表还没建」,静默从 1 重新发号 —— #4632 同形,机械检查覆盖不到 #4825DatabaseLoader 把存储读故障吞成空结果 —— ADR-0110 D3 的 miss/outage 之分在复数读路径上不成立 #5108):catch 无日志 + return 空值/零值 + 块内含读调用 + 未按错误类型区分 → 红,扫描面收窄到 packages/metadata / packages/metadata-protocol / packages/objectql,baseline 是另一个文件 scripts/durability-read-invention.baseline.json

AGENTS.md「Degradation log levels — warn vs error」末尾的 It has teeth 段(约 642–657 行)只描述第 1 条。两处会误导:

建议(一段散文的量)

在 It has teeth 段后补一段,说明同一条命令还跑读接缝规则、判据是什么、baseline 是哪个文件、扫描面为什么是收窄的(维护者 2026-08-06「裁 3——收窄先行」),并把「发现新的读接缝?」的去处指向该规则的 READ_FAILURE_DISCRIMINATORS / baseline,与现有「Found a new one? Add it to DURABILITY_CRITICAL_CALLEES」对称。

⚠️ 这不是 #5186 被否决的「方向 2」(纯散文靠 review)——闸门已经落地,这里补的是指路牌。

关联

#5186(落地本规则)、#5979 / #5980(其 baseline 里两条待修条目)、#4632(规则起点)、#4754 / #5241(同一脚本此前两次扩张,当时也各自更新了这段散文)。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions