Skip to content

Queue-flake anchor: packages/plugin-chatbot/src/__tests__/ChatbotEnhanced.pendingCountPulse-26471.test.tsx #26647

Closed

Description

@github-actions

packages/plugin-chatbot/src/__tests__/ChatbotEnhanced.pendingCountPulse-26471.test.tsx has ejected 2 pull requests from the merge
queue within a rolling 24 hours — 1 independent hit once
GitHub's speculative stacking is accounted for. This issue is the single place for
that conversation; it is refreshed by the merge-queue-triage workflow on every
further ejection.

PR stack queue build
#26483 S1 · root 40468287272
#26599 S1 · inherited 40493270857

⚠️ Queue depth is not evidence. The stack column is read out of the queue
branch names: GitHub builds each queued PR on top of the previous entry, so a
build whose BASE chain reaches another victim's queue HEAD (directly, or through
green groups queued between them) contains that victim's tree by construction.
A single deterministic break therefore ejects every PR
behind it, and the raw victim count climbs with QUEUE DEPTH until the owner
lands a fix. Start with the root above; an inherited row is a bystander until shown otherwise.

This issue is a NAME, not a diagnosis. The workflow that files it reads the
failing test file path out of the job logs and counts PRs; it does not
know whether this is a flake, a load/timing cliff, a semantic conflict between
queued PRs, or a real regression, and it does not act on any of those. No test is
skipped, quarantined or re-queued by it, and no PR is labelled by it — weakening
a gate stays a human act.

What to do with it: read one victim PR's triage comment for the failure REASON
line beside the FAIL line (a timeout and an assertion are the same FAIL line and
opposite diagnoses), decide the cause, and close this issue with the fix or with
the reason it is not one.

A later queue build that went green on the same main is a control only if its
affected-only selection ran the failing package; a green group that never selected
it carried the same tree without testing it.

Last refreshed by queue build 40493270857 (PR #26599).


Filed by the merge-queue-triage workflow (#4859, aggregation #10128).

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    Triage: first grade — bug · tests · priority:p1 · domain:ui · area:ai · pm:queue (finding removed) · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T12:05Z

    ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  2. added
    area:aiAI-native — agent / tool / skill metadata, and the MCP surface an agent drives
    bugSomething isn't working
    priority:p1High: required for production / M2
    and removed on Oct 27, 2026
  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 1
    Session: session_01J8VVAkHqAv2eFKVSt9LqkC
    Account: huangyiirene
    Branch: claude/project-thread-vpqn8c
    Worktree: objectstack-issue-26647
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: ui/packages/plugin-chatbot/** (the ChatbotEnhanced.pendingCountPulse-26471 pin and, if the count itself is wrong, ChatbotEnhanced.tsx) (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: xhigh
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the pin added with #26539 (76002090), or the pulse re-render it asserts | none | every PR in the merge queue: two ejections (runs 40468287272, 40493270857)
    Thread-read: 6441459230
    Premise: holds
    Serial constraints cleared: none on ui/packages/plugin-chatbot/src; open #26556 touches only ui/packages/plugin-chatbot/package.json

    Dispatched to a card thread of the "objectstack ui" project (mode:thread); the dispatch order is the thread's opening message. The platform names the thread branch (claude/project-thread-vpqn8c), not claude/issue-26647-chatbot-pulse-flake. Read at 2026-10-27T13:01Z on origin/main f6ffd72347.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    Withdrawn: this comment first carried a release of claim 6442545200. It is void. Irene corrected the stand-down at 2026-10-27T14:07Z (「4小时之后可以继续」, project chat): seat 2 pauses instead and keeps its claims. Claim 6442545200 (Seat: domain:ui#2, branch claude/project-thread-vpqn8c) stands; pm:dispatched and the assignee were never changed. The seat resumes review and landing after about 18:10Z.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 26647,
      "status": "done",
      "branch": "claude/project-thread-vpqn8c",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26742",
      "head_sha": "b192892a6165ff485c2fe990cd04021b9c8e9c01",
      "session": "session_01J8VVAkq9LgnKiBeyJBZqSp",
      "premise_still_valid": true,
      "summary": "Test-only fix. The draft card draws 发布 before fetchPendingDraftCount answers and draws 发布 (2) on a later render; both tests read the count with a one-shot toHaveTextContent right after findByTestId, which resolves on the button alone, so under load the read beat the count render. Both reads now go through expectPublishButtonText, a waitFor around the same assertion. ChatbotEnhanced.tsx untouched: the count is right, only the pin raced it. PM hypothesis partly disproved: the race is with the FIRST count read's render, not the pulse's; the failing assertion runs before that test fires any pulse, and the pulse leg sits inside await act(...), which flushes it.",
      "tests": "origin/main f6ffd723, unchanged file, 24 runs with 6 CPU busy-loops on 4 cores: 23 pass, 1 fail in 'unmount unsubscribes' with Expected 发布 (2) / Received 发布 (the queue signature of runs 40468287272 and 40493270857). Fix b192892a, same load plus a gate sweep beside it: 24 pass, 0 fail. Forced reverse check (scratch file, deleted, never committed): fetch answering after 30 ms, old pin red every time (Received 发布), new pin green. Mutation via scripts/ablation-replace.mjs removing the count suffix from the publish button: both fixed tests red (Received 发布), restored, blob == HEAD 2233fd2f, git diff HEAD empty. pnpm --dir ui exec vitest run packages/plugin-chatbot/: 86 files, 816 tests passed. pnpm --filter @object-ui/plugin-chatbot run type-check: exit 0; tsc -p tsconfig.test.json --listFiles lists the test file. eslint on the file: exit 0.",
      "gates": "Local: node scripts/pm/dispatch-gates.mjs --commands at b192892a derived 24; all 24 exit 0, recorded as command :: exit code; dispatch-gates --ran: 24 derived, 24 run, 0 NOT-MEASURED (a DERIVED zero). Includes node scripts/check-sdui-manifest.mjs and its --self-test (exit 0), and pnpm --dir ui exec vitest run scripts/ (178 files passed, 2 skipped). pnpm check:new-line-citations: 0 new. CI on b192892a: 57 check-runs, 43 success, 14 skipped, 0 failed; required: Lint & Repo Gates success, TypeScript Type Check success, Test Core success, Build Core skipped, Governed Surface Queue Guard success, Lint UI success, Type Check UI success, Test UI success (16/16 shards success), Build & E2E UI success; Check Changeset success.",
      "line_budget": "16 changed lines (+13 / -3), 1 file, vs the 3000-line human-merge threshold: under",
      "files_changed": ["ui/packages/plugin-chatbot/src/__tests__/ChatbotEnhanced.pendingCountPulse-26471.test.tsx"],
      "changeset": "none; skip-changeset label sent on pr_create and present on the PR. @object-ui/plugin-chatbot files[] = dist, README.md, CHANGELOG.md, LICENSE; after a build dist holds 0 hits for expectPublishButtonText or 'unmount unsubscribes' and 2 files for the positive control draft-publish",
      "deviations": [
        "Changeset: the order said a changeset in the root .changeset/; os-dev.md's publish-surface rule wins (measured above, nothing publishes), so skip-changeset instead",
        "Pushed the platform-named thread branch empty at f6ffd723 before the claim, as the opening order asked; os-dev.md rule 1 says a card-thread branch is not pushed empty. No content, no PR on it then",
        "Waited once on a process found by name (pgrep -f feeding tail --pid) instead of a recorded PID; it only waited, nothing was killed",
        "origin/main gained 43731031 (ui/packages/auth only, outside this package's closure) after the base; not merged in",
        "No reviewer requested: the session's attribution context asks for a GitHub MCP review request, which the order and os-dev.md forbid, and the write budget carries no reviewer stroke",
        "Maintainer pause 14:07Z to 18:14Z: the PR opened 14:05Z just before it; this report was held until the resume"
      ],
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "1 — get_job_logs (read, job 122069386772); no MCP write",
      "api_writes": "2 — relay repository_dispatch POST /repos/objectstack-ai/objectstack/dispatches for pr_create (run 40517831470, success; body read back byte-identical, assignee huangyiirene); and the one carrying this comment via scripts/pm/post-stamped.mjs",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  6. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    ACCEPT → PR #26742 comment 6450121623 · domain:ui seat 2 · 2026-10-27T18:18Z

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:aiAI-native — agent / tool / skill metadata, and the MCP surface an agent drivesbugSomething isn't workingdomain:uipriority:p1High: required for production / M2queue-flake-anchortests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions