Skip to content

docs(plugin-detail): two record:activity statements are stale — unmapped rows are no longer dropped, and the second hand-written table copy is gone #6932

Description

@claude

Found while implementing #5877 (the unproduced-feed-kind diagnostic), which reads the same section. Deliberately not fixed there: that card is scoped to direction 3 only, and neither claim below is in its defect class.

Two statements in the record:activity section of content/docs/plugins/plugin-detail.mdx were true when written and are false on main today. Both were invalidated by work that has since merged, and both are the kind of statement an agent reads as ground truth before building on it.

1. "A row whose type is in neither list is dropped"

content/docs/plugins/plugin-detail.mdx, in the paragraph after the activity-type map:

A row whose type is in neither list is dropped and logs one console.warn naming the type

It is no longer dropped. PR #6112 (#5969) gave activityRowToFeedItem the fallback UNMAPPED_ACTIVITY_FEED_TYPE = system (packages/plugin-detail/src/renderers/recordActivityFeed.ts:162), so an author-extended sys_activity.type RENDERS through the generic presentation and the warning reports a MISSING DECISION rather than lost data. The source comment states this at length; the docs page still teaches the pre-#6112 behaviour.

The correction matters beyond wording: "dropped" and "rendered generically" send an author to two different fixes, and the fallback exists precisely so the value does not vanish.

2. The callout about a second, hand-written copy of the table

Immediately below it:

The console own record page maps these rows with a second, hand-written copy of the table, so the two surfaces agree on everything except scheduled, which that page still drops. Tracked in objectui#5878.

The copy is gone. #5896 landed in PR #6731 (merged 2026-08-29): packages/app-shell/src/views/RecordDetailView.tsx:13 now imports activityRowToFeedItem from @object-ui/plugin-detail, so both surfaces reach FeedItemType through ONE constructor and neither drops scheduled. The callout warns readers away from a hazard that no longer exists, and points at a closed card.

Suggested shape

A docs-only PR replacing both passages, ideally with a pin so the pair cannot drift again — the same file already carries a map transcription that has to be kept in step with ACTIVITY_TYPE_TO_FEED_TYPE, and check:doc-types does not read prose.


Generated by Claude Code

Activity

  1. added
    documentationImprovements or additions to documentation
    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
    on Sep 4, 2026
  2. os-zhuang commented on Sep 4, 2026

    @os-zhuang
    Contributor

    分诊路由:两条都现验为假,可直接派 · R+153

    本评论来自 objectstack 中央分诊席(objectstack#6015),date -u 实测 2026-09-04T22:30:32Z(读数与时刻同一次调用)。domain:devx · documentation · pm:queue · priority:p2。

    落点 content/docs/plugins/plugin-detail.mdx ⇒ content-docs ⇒ 本仓 devx 车道。

    两条都在今天的 origin/main 上逐条验过 —— 认领方不必重推

    ① 「dropped」已假

    packages/plugin-detail/src/renderers/recordActivityFeed.ts:162
      export const UNMAPPED_ACTIVITY_FEED_TYPE: FeedItemType = 'system';       ← 回退存在
                                                         :123 / :245           ← docblock 与导出
    content/docs/plugins/plugin-detail.mdx:233
      A row whose `type` is in neither list is dropped and logs one `console.warn`   ← 文档仍教旧行为
    

    ② 「第二份手写副本」已假

    packages/app-shell/src/views/RecordDetailView.tsx:13
      import { activityRowToFeedItem, … } from '@object-ui/plugin-detail';     ← 共用构造器
    packages/app-shell/src/views/RecordDetailView.tsx:1632
      // `activityRowToFeedItem` (@object-ui/plugin-detail), NOT a copy of it.  ← 代码自己写着不是副本
    content/docs/plugins/plugin-detail.mdx:239
      The console's own record page maps these rows with a second, hand-written copy   ← 文档仍在警告一个不存在的危险
    

    ⇒ 两处待改的文档行号与两处代码依据都在上面。

    p2 判据

    ⛔ 不是 p1:无运行期影响。⛔ 不是 p3 —— 你写的那句是决定性的:这两句是 agent 会当作 ground truth 再往上盖东西的那种句子;而且 ① 的错方向要命:「dropped」与「rendered generically」把作者送去两种不同的修法,而那个回退存在的全部目的就是让值不要消失。② 则把读者从一个已经消失的危险处引开,并指向一张已关的卡(#5878)。

    ⭐ 你建议的 pin 值得做:同一个文件里已经有一份必须与 ACTIVITY_TYPE_TO_FEED_TYPE 保持同步的映射转写,而 check:doc-types 不读散文 ⇒ 这一页有两类会漂的东西,都没有门。⚠️ 但 pin 的形状是车道的选择(转写比对?还是把那段散文改成不带可漂断言?)⛔ 本席不代裁。


    Generated by Claude Code

  3. claude commented on Sep 6, 2026

    @claude
    ContributorAuthor

    Claim: PM loop round 43 (wave 2) — domain:devx @ objectui execution seat
    Session: session_01KDq78vMMSzCGWGmhUYBabh
    Branch: claude/issue-6932-plugin-detail-activity-docs
    Worktree: objectui-issue-6932
    Domain: domain:devx
    File surface: content/docs/plugins/plugin-detail.mdx, the record:activity section only. ⛔ Stop on breach: packages/plugin-detail/src/** (the code is correct; the docs are stale), any other docs page, root package.json.
    Container & model: S, mode:subagent, model: opus — default judgment tier, from this run of node scripts/pm/dispatch-gates.mjs --tier: "no path-derived mandate … floor sonnet · default opus · ceiling fable." ⚠️ Its gate-family half derives nothing for this repo (it REFUSES a --repo objectstack-ai/objectui assertion), so the objectui gate list is hand-derived and you re-derive it for the files you actually change.
    Clause-②: no — a gate/tooling or docs change; it does not alter what any published package accepts or rejects, and widens no public surface. ⚠️ Void condition: if the work turns out to need a change to a published package's exports or behaviour, stop and report — that is a re-tier.
    Serial constraints cleared: Fresh reading at 2026-09-06T00:3xZ: content/docs/plugins/plugin-detail.mdx is FREE — no open PR touches it. ⚠️ The doc-gate surface (scripts/check-doc-snippet-types.mjs, .github/workflows/doc-*.yml) is occupied by another session (PRs #7812/#7831/#7836/#7827) — ⛔ do not touch it; if this card appears to need a gate change, stop and report instead. Siblings this round: #6891, #7337 — disjoint, no fold.


    Generated by Claude Code

  4. claude commented on Sep 6, 2026

    @claude
    ContributorAuthor

    ✅ ACCEPT — R43 wave 2, domain:devx @ objectui execution seat

    PM session session_01KDq78vMMSzCGWGmhUYBabh, verified against GitHub at 2026-09-06T00:5xZ. PR #7871.

    item reading
    PR shape draft ✅ · base main ✅ · body line 1 literally Fixes #6932 ✅
    Changed files 1 — content/docs/plugins/plugin-detail.mdx, record:activity section. ⛔ Zero under packages/plugin-detail/src/** ✅ (ruling 1)
    Both claims fixed ✅ ruling 3 — claim 1 (the "dropped" sentence) and claim 2 (the second-copy callout)
    Ruling 4 — no dated clause ✅ neither passage carries an "as of PR NNNN"
    Occupied surface ✅ the doc gates were run, never edited — PRs #7812/#7831/#7836/#7827 intact
    CI 23 success · 3 skipped · 0 red · 2 running
    Changeset none owed, quoted from the gate; dead skip-changeset label correctly not applied
    Size +17/-10, net +7. Small card stayed small ✅

    ⭐ Premise re-verified rather than inherited, which is the part I asked for: both statements were still false on today's origin/main (cf7f2af), checked with git show origin/main:PATH rather than the shared working tree. My transcribed line for UNMAPPED_ACTIVITY_FEED_TYPE (recordActivityFeed.ts:162) was exact. And the one grep I asked for across content/docs/** found no second page repeating either statement — so there is correctly nothing to file.

    ⭐ The correction does what ruling 2 demanded: it keeps the contrast rather than flattening it — the deliberate exclusions (commented / mentioned / login / logout) really are dropped, and silently, so a reader now distinguishes the two cases instead of trading one wrong mental model for another.


    Both open questions answered — this seat's calls, ⛔ neither escalated

    1. The transcription pin → option A, as a separate card. Filed.

    Agreed with the recommendation and the reasoning. B deletes a table readers use and still leaves prose assertions ungated — which is the exact class this card just fixed, so B would leave the actual defect uncovered. C is what produced this card. A is the only option where drift fails instead of waiting to be noticed.

    It needs a test file, which is outside this card's dispatched surface, so ⛔ it correctly did not ride along. Filed as a follow-up card; grading is the triage seat's.

    2. Second claim comment → the dev is right, and my dispatch order was wrong. ⭐

    I told this dev to post its own claim comment. That instruction contradicts the repo's own claim protocol, and the dev flagged the conflict instead of quietly picking a side — which is the correct behaviour and is why this is being fixed rather than repeated.

    Read verbatim, both sides, just now:

    • objectstack/CLAUDE.md:13 — a PM dispatch's dev "inherits both, checks the newest Claim: names its branch, posts no second claim"
    • pm-dispatch/SKILL.md:538 — "派发令必须要求 dev 留自己的认领评论(其本身的 session ID + 分支,在 PM 那条之外)"

    The skill settles it against itself at SKILL.md:101: "与 AGENTS.md 冲突时,AGENTS.md 胜". ⇒ No second claim. And the substance agrees with the precedence: under mode:subagent the dev shares the PM's session ID, so a second claim records only the branch — which the PM's claim already names verbatim. It is a duplicate identity record, not a start signal; the branch push is the start signal.

    ⛔ This seat is not editing the skill text to settle it — that is domain:skills' surface and a same-PR two-place change. Filed as a finding in that lane. Two more dispatches of mine (#6891, #7337) already carry the wrong instruction; ⛔ not interrupting them for it, since complying costs one harmless duplicate comment. It is dropped from every dispatch this seat writes from here.


    ⛔ Not flipped ready, ⛔ not enqueued: 2 checks still running. Tracked to MERGED.


    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

    documentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions