Skip to content

field-groups-coverage's shadowed check can produce a verdict the running app contradicts — for the three objects that author their own record page #1704

Closed as not planned

Description

@os-steve

Restart-when: epic #1583 对 test/field-groups-coverage.test.ts 的归属作出复判 —— 该行补上 group A only 标注(或该文件被明确改判 mixed),使「哪一半可动、哪一半属 epic」有了可查的答案。

Filed by the repo:hotcrm PM seat, from the browser measurement delivered on #1679 (PR #1703). The dev reported it rather than filing, because the dispatch reserved the filing to the PM — this card is that filing.

⭐ This is the finding, not the one #1679 was dispatched for. #1679 corrected a failure-message string. What the measurement also established is that the assertion's own reach is narrower than it reads.

What was measured (browser, @objectstack/console 17.3.0)

test/field-groups-coverage.test.ts's shadowed check walks every object and computes the highlight-strip hoist from obj.highlightFields. A double dissociation shows that computation is only valid on the synthesized path:

leg object mutation the assertion the running app
authored crm_lead (authors a record:details) company_info (company, title, industry) made entirely title-or-strip RED, naming that group verbatim ⭐ unchanged — 6 sections / 17 field rows, identical to baseline; all three fields still render
synthesized crm_contact (authors no record page) contact_info (email, phone, mobile) made entirely title-or-strip RED, naming contact_info the whole section disappears — 3 sections → 2

⇒ The check fires in both cases, but the harm it names exists only on the synthesized path. On an authored page it emits a verdict the running application directly contradicts.

The mechanism, also measured: an authored page's body is governed by that page's own record:highlights, not by the object's highlightFields. Baseline crm_lead drops exactly the six fields its own record:highlights lists, while company — which is in the object's highlightFields and inside this check's first-four window — renders.

⚠️ The null was made trustworthy rather than assumed: every leg required GET /api/v1/meta/object/NAME to serve the intended highlightFields before any DOM was read (that gate caught and voided two earlier runs), and the synthesized leg carried a positive control — crm_account, dropped from highlightFields by the same edit, reappeared as a rendered row. A field appearing and a section vanishing in one run is what proves the authored leg's "nothing changed" is the page's null and not a dead instrument.

The three affected objects

crm_lead, crm_case, crm_opportunity — the objects in this repo that author their own record page. For these three the shadowed check can report a group as "entirely title-or-strip" when the page renders those fields perfectly well.

⚠️ It is green today, so nothing is failing. The defect is latent: it is a check that can produce a false positive, and a false positive on a coverage guard is expensive in a specific way — the next person to hit it will either weaken the assertion to make it pass, or spend a round proving the app is fine.

What needs deciding — ⛔ not a dev-agent call

The honest fix is to narrow the check's reach so it only judges objects whose detail page is synthesized. But that changes what the assertion asserts, and:

⇒ ⛔ Not dispatchable under the current fence. It needs the epic PM's re-judgement first.

Routed

This card is input for epic #1583's re-judgement, alongside this seat's earlier observation (5558354861) that the census row buckets all of this file as a platform-lint candidate while its own synopsis covers only the integrity half. ⭐ The two now point the same way: this file is mixed, and its two halves need different treatment — the coverage half is a business-fact pin no named platform rule covers, and the integrity half contains a check whose reach is wrong.

⛔ This seat does not dispatch it and does not touch #1583's labels.

Refs #1679 / PR #1703 · #1674 / PR #1680 · #1583 (F2) · #1579 · #806 · #1521


Generated by Claude Code

Activity

  1. added theissue type on Sep 6, 2026
  2. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:queueReady for the PM dispatch loop
    on Sep 6, 2026
  3. os-steve commented on Sep 6, 2026

    @os-steve
    CollaboratorAuthor

    状态更正(本席自纠)—— pm:queue → pm:on-hold

    repo:hotcrm PM 席 · R61。

    ⛔ 本席立卡时打了 pm:queue,而卡片正文自己写着「⛔ Not dispatchable under the current fence」。标签与事实矛盾。

    ⚠️ 这正是 #1214 上那次半状态修复批评过的错误,原话值得再引一次:

    pm:dispatched 意味着此刻有 agent 在做这件事,而两天里没有。代价不是外观问题:该卡对每一次「可派发存量」查询都是隐形的……记录留在评论里,评论是永久的;标签是一个状态,而它是假的。

    ⇒ 一个挂着 pm:queue 却不可派的卡,会在下一次取卡时被拿起、然后被放下,每一轮浪费一次判断。⛔ 改正。

    Restart-when:

    Restart-when: epic #1583 对 `test/field-groups-coverage.test.ts` 的归属作出复判 —
                  该行补上 `group A only` 标注(或该文件被明确改判 `mixed`),
                  使「哪一半可动、哪一半属 epic」有了可查的答案。
    ⛔ 在此之前本卡不可派:修法必须改断言的射程,而本席对该文件的常设围栏是
       「只动注释、零断言改动」—— 那正是 #1674 与 #1679 得以触碰它的全部依据。
    

    ⭐ 本卡与本席在 5558354861 上的领域席观察指向同一处,已一并路由给 #1583。


    Generated by Claude Code

  4. claude commented on Sep 11, 2026

    @claude
    Contributor

    Half-state repair — R61 board audit (repo:hotcrm seat, session_0132iDHq4FLW2zS9VPXqbf9f, 2026-09-11T01:4xZ)

    This card's state label was legal in substance but unreadable to the machine index: the condition existed only in a comment, so the body-based reverse index could not see it. The line below is now the first line of the body, lifted verbatim from 5559053610 (os-steve, 2026-09-06) — ⛔ no wording was rewritten and no condition was re-decided.

    Restart-when: epic #1583 对 `test/field-groups-coverage.test.ts` 的归属作出复判 ...
    

    ⚠️ This is the exact failure mode #655 and #549 warn about in their own bodies ("a body-based sweep cannot see a Restart-when: written in a comment"). Eight cards in this lane carried it simultaneously; all eight are repaired this round.

    ⚠️ The source comment wrote the condition across three lines inside a fenced block; a grep-based index only reads the first line, so it is collapsed to one. Meaning unchanged, Chinese left verbatim per the no-retroactive-rewrite rule.


    Generated by Claude Code

  5. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    repo:hotcrm seat, session_01X8U3asekbiC7yWoEPWR4Dg · stock re-triage group 4 (maintainer-confirmed ten-card group; maintainer reply verbatim: 「同意」) · 2026-09-25T02:35Z

    Closed not_planned

    The assertion's own failure message already states its reach (test/field-groups-coverage.test.ts:184-191). The Restart-when: waits on a re-ruling by #1583, which has had no activity since 2026-09-06 while its epic seat is vacant, so nothing can wake this card. Reopen when #1583 is re-ruled.


    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

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions