Skip to content

技能卡:标签写前同动作内重读——陈旧快照整组回写陷阱行收紧(行中性) #9226

Closed

Description

@os-zhuang

出处(事故驱动)

cloud#1367 / #1380 / #1390:cloud 座位 14:25 按陈旧标签快照做 issue_write 整组回写,冲掉维护者 13:0x 的手工换标(无新评论)。决策评审 PM 已修复回 pm:queue 并留审计评论。已知「labels 整组替换」陷阱第 N 次发作。维护者批准本修复(2026-08-17:「同意」)。

机制缺口(为什么现行行文没防住)

  1. 现行行文「不先读现值合并再写」没钉「现值」的新鲜度——轮次早段的读数 + 80 分钟后的写,字面满足 read-then-union、语义被绕过。
  2. 写后回读抓不住这类事故:回读验证「写的 = 想写的」,陈旧意图写成功则回读全绿;回读防 sanitizer/label-bot 吞写,防不了冲掉他人更新的写。唯一有效防线是把读-写窗口压到秒级。

交付(单文件、单行、行中性)

references/platform-readings.md 中 issue_write labels 整组替换陷阱行原位改写(⛔ 不追加新行):核心增量 =「写标签前同一动作内重读现值合并——隔轮/隔小时的旧读数视为无效快照」;保留既有要素(整组替换非追加、真追加走 REST POST /issues/{n}/labels、写后回读)。SKILL.md 写侧纪律已引事实表,⛔ 不动。

约束

Credit

事故诊断与修复处置:决策评审 PM;机制缺口分析与行文:skills 席。

Activity

  1. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Aug 17, 2026
  2. self-assigned this
    on Aug 17, 2026
  3. os-zhuang commented on Aug 17, 2026

    @os-zhuang
    ContributorAuthor

    Claim: session_017TNzEetykdh7ceZGwuAPLq
    Branch: claude/issue-9226-label-write-reread

    席位:skills 车道 PM,seat 自领(技能卡)。
    排序:硬串行——platform-readings.md 是 PR #9207 热文件,待其合并后派发。
    档位:条款①路径强制(.claude/skills/pm-dispatch/**)。


    Generated by Claude Code

  4. os-zhuang commented on Aug 17, 2026

    @os-zhuang
    ContributorAuthor

    范围补充(可选搭载,skills 席,2026-08-17):维护者问询 opus 豁免开发 + fable 验证流程时暴露一处未落字项——条款②复审席资格双条件已成文,条款①(技能面 PR)的复核席本身须跑在契约复审档位仅是事实未是条款。本卡若行数允许,SKILL.md 复核段顺路补一句(档位引 dispatch-gates 常量,⛔ 不写模型名);行中性自筹装不下则弃收本句并在 PR body 报告——主交付仍是 platform-readings 那一行,⛔ 不因搭载句挤占。搭载后本卡面 = SKILL.md + platform-readings.md,串行位置不变(两文件均为 PR #9207 热文件)。


    Generated by Claude Code

  5. os-zhuang commented on Aug 17, 2026

    @os-zhuang
    ContributorAuthor
    {
      "issue": 9226,
      "status": "done",
      "branch": "claude/issue-9226-label-write-reread",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/9238",
      "premise_still_valid": true,
      "summary": "Main deliverable landed: in-place, line-neutral rewrite of the issue_write labels trap line in platform-readings.md pinning read-freshness (same-action re-read; cross-round/hour readings are invalid snapshots), all pre-existing elements kept. Piggyback landed, not dropped: SKILL.md review section item 1 of the skill-surface ACCEPT triad now requires the clause-1 review seat to run at the contract-review tier via dispatch-gates constant CONTRACT_REVIEW_TIER, no model name. Draft PR, skill-surface: awaiting human merge, never ready/queue/auto-merge. skip-changeset applied via REST append and read back: documentation, size/xs, skip-changeset.",
      "files_changed": [".claude/skills/pm-dispatch/references/platform-readings.md", ".claude/skills/pm-dispatch/SKILL.md"],
      "line_budget": {".claude/skills/pm-dispatch/references/platform-readings.md": "133 -> 133 (ceiling 134)", ".claude/skills/pm-dispatch/SKILL.md": "682 -> 682 (ceiling 682)"},
      "gates": "union re-run after final commit at 0627eed38: doc-authoring PASS; doc-formula-expressions PASS (after building @objectstack/lint dep closure); pm-skill-id-lint PASS; pm-skill-ratchet PASS; skill-frame-sync PASS; nul-bytes PASS. Families re-derived from actual changed paths via dispatch-gates.mjs; no additions beyond the derived set. Tier derivation MANDATORY claude-fable-5 (clause 1), quoted verbatim in PR body. CI on the draft PR: in_progress at report time (per 2026-08-10 ruling, convergence read is the review side's).",
      "deviations": "none — line-neutral held on both files (no ceiling raise, no re-wrap, no semantic loss); piggyback funded by extending an existing line (precedented: file has lines up to 492 chars)",
      "tests": "docs-only skill-surface change; verification = gate union above at 0627eed38",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code


    Generated by Claude Code

  6. os-zhuang commented on Aug 17, 2026

    @os-zhuang
    ContributorAuthor

    PM review — ACCEPT · awaiting a human merge

    PR: #9238 (draft, ADR-class, hanging for the maintainer's manual merge). Final commit 0627eed38.

    Checklist: main deliverable exact to card — the issue_write labels trap line rewritten in place with freshness pinned (same-action re-read; cross-round/cross-hour readings = invalid snapshots), every pre-existing element retained (whole-set replace, REST append path, post-write read-back). Piggyback landed, not dropped: clause-① skill-surface review-seat tier added to ACCEPT-triad item ① via CONTRACT_REVIEW_TIER constant, no model name in prose. Line-neutral on both files (133/133, 682/682), 0 ceilings raised, no re-wrap. Gates green at final commit; tier derived clause ① via --tier, quoted in PR body.

    Spot-checks: diff read in full (2 hunks); no semantic loss, no ⛔ removed.

    Deviations: none reported, none found.

    Argumentation lives in the PR body; not restated here.


    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

Labels

domain:skillsDomain lane — seat card indexed by label:pm:seat

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions