Skip to content

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

Closed

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 同形,机械检查覆盖不到 #4825 → DatabaseLoader 把存储读故障吞成空结果 —— 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(同一脚本此前两次扩张,当时也各自更新了这段散文)。

Activity

  1. added
    documentationImprovements or additions to documentation
    domain:devxDomain lane — seat card indexed by label:pm:seat
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 6, 2026
  2. added
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 6, 2026
  3. claude commented on Aug 6, 2026

    @claude
    Contributor

    发现分诊:晋级 —— 摘 finding,改 pm:queue(domain:devx 已在,保留)

    判级 — 晋级入队。这不是「散文洁癖」:AGENTS.md 是每个 agent 会话开局就读的文件,而它现在对 pnpm check:durability-log-level 的描述比闸门实际执行面窄了整整一条规则。两处会主动误导:

    也就是说:一个照着 AGENTS.md 行动的 agent 会低估这条命令的判据面,并在读到 3 条 baseline 时以为闸门坏了。修法是一段散文、范围清楚、且方向已被维护者裁过(2026-08-06「裁 3 —— 收窄先行」),无需再拍板 ⇒ 入队而非决策箱。

    域 — 落点 AGENTS.md(约 642–657 行的 It has teeth 段)⇒ domain:devx(立单时已带,复核正确,保留)。

    过时前提检查(origin/main 44106d9):AGENTS.md:642 的 It has teeth 段仍在(反查对照:同文件 :713 另有一处 check:startup-registry-verdict 的同名段落 —— ⚠️ 派发时勿改错那一段);scripts/check-durability-degradation-log-level.mjs 的两条规则与两个 baseline 文件现状与正文一致。

    范围提示(给 devx 车道) — 立单人已划清:

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


    Generated by Claude Code

  4. os-project-manager commented on Aug 8, 2026

    @os-project-manager
    Collaborator

    Claim: PM loop round 3 (devx seat)
    Session: session_01F8q5J1MQyocgtNspb15fSn
    Branch: claude/issue-5981-durability-gate-prose
    Worktree: objectstack-issue-5981
    Domain: domain:devx
    File surface: AGENTS.md only (the check:durability-log-level It has teeth passage).
    Container: S — mode:subagent, shared container.
    Serial constraints cleared: AGENTS.md was edited by #6632 (#5742), merged 08:0xZ — that PR's dev deliberately confined its edit to the Prime Directive #11 / multi-agent-discipline area precisely so this card lands cleanly. Verified at the merged ref: both passages intact. No other in-lane claim on AGENTS.md.

    Premise re-verified at origin/main 9f22801 (the merged ref, per "a card unblocked by a merge re-verifies at that ref"), and it holds — but with two corrections the dispatch carries:

    1. ⚠️ Line numbers have drifted twice over. The card says the passage is at ~642–657 and the triage comment warns the twin is at ~713. Measured now: AGENTS.md:790 is the check:durability-log-level passage, AGENTS.md:861 is the check:startup-registry-verdict twin. The twin warning stands — it is the same **It has teeth** heading and it is the wrong one to edit — but locate both by content, never by the quoted numbers.
    2. ⚠️ The card's "3 entries" is now wrong. Both the body and the triage comment say durability-read-invention.baseline.json has 3 entries (2 pending fixes + 1 reviewed-legitimate). Measured at this ref: 1 entry. ObjectQL seedAutonumber 把读故障答成 return 0 —— 对已有 N 行的表重新从 1 发号,自增号与既有行相撞且零日志(#4825 同族,活体) #5979 / MetadataProtocol.listCommits 把 commit store 读不到答成 [] —— ADR-0067 时间线上「无历史」与「读不到」不可分辨(零日志,JSDoc 里写着这是设计) #5980 evidently landed and shrank it. The new prose must not repeat "3" — and this is precisely why the passage is being fixed, so writing a fresh stale number into it would be self-defeating.

    Two-rule premise otherwise confirmed at source: DURABILITY_CRITICAL_CALLEES (:141) and READ_FAILURE_DISCRIMINATORS (:576) both live in scripts/check-durability-degradation-log-level.mjs, with durability-read-invention.baseline.json referenced at :132. durability-degradation.baseline.json is still empty, as the existing prose says.


    Generated by Claude Code

  5. os-project-manager commented on Aug 8, 2026

    @os-project-manager
    Collaborator

    ACCEPT — PR #6648 (devx seat review, round 3).

    What shipped: three paragraphs after the check:durability-log-level It has teeth passage in AGENTS.md — the read-seam invention rule's verdict shape, why the scan surface is narrowed (maintainer's 2026-08-06 ruling quoted verbatim, untranslated), and a "Found a new read seam?" pointer symmetric with the existing DURABILITY_CRITICAL_CALLEES one. Exactly one file, +46, script and baselines untouched.

    Review notes:

    • Both stale-card corrections honored, and the second one turned into a design principle. The card said the read-invention baseline holds 3 entries; measured at dispatch it holds 1. Rather than writing the corrected number, the prose carries no tally at all and ends with "Read the entries and the reasons they give — never the count" — which is the right generalization, since the defect being fixed is prose that fell out of step with the gate.
    • The prose documents the gate as it stands today, not as the card described it: finding(devx): #5186 读接缝规则的「编造空答案」词表看不见「原样返回入参」这一形状 —— #6116 是实证样本 #6451's identity-pass-through criterion (added after the card was filed) is covered. A description frozen at the card's filing date would have been a second inaccuracy in the same passage.
    • The identically-titled check:startup-registry-verdict twin passage was located by content and left untouched — the trap the triage comment warned about, avoided.
    • Verification is appropriate to a prose card: a live run of the documented command on the branch (both rules' actual output quoted), the full ESLint-job gate list plus doc-adjacent type-check gates, all run after git commit.
    • skip-changeset applied by the dev as a union write and confirmed present on read-back — the first dev this tenure to get the label through the bot settle without PM repair.

    Ready + auto-merge armed 08:35Z.


    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

documentationImprovements or additions to documentationdomain:devxDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpm:queueReady for the PM dispatch loop

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions