Skip to content

ci: packages/cli validate-build-gate-parity.test.ts times out at 5000 ms in Test Core (4/8): one main red and one merge-queue ejection in eight hours #30785

Closed

Description

@objectstack-fleet

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Filing gate: ① a repeatedly red platform test with a named location, measured from the Actions job logs. ⛔ Not a claim. Grade: p1, under the standing order that a repeatedly red platform test gets fixed.

维护者速读

packages/cli/test/validate-build-gate-parity.test.ts("os validate is the read-only superset of os build")在 Test Core (4/8) 里两次卡在 vitest 默认的 5 秒超时:一次让 main 推送红,一次把合并队列里的一组踢出。两次的 diff 都与 cli 无关。

Measured

When Where Job
2026-11-05 18:18Z main push CI on 25fea77a (green again on the next two pushes) 127442019825
2026-11-06 02:17Z merge group pr-30753 (fix(lint): a flow start-input warning) 127669384323

Both logs carry the same line: FAIL unit test/validate-build-gate-parity.test.ts > os validate is the read-only superset of os build (#3782, #4409) > … then Error: Test timed out in 5000ms. The other cli files in the shard pass. The file was last changed by PR #30712 (a91ad429, 2026-11-05T23:37Z) and PR #30336 (1c537831).

Wanted

Reader: domain:server (packages/cli).


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    priority:p1High: required for production / M2
    pm:queueReady for the PM dispatch loop
    domain:serverDomain lane — seat card indexed by label:pm:seat
    on Nov 6, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#1 · os-elon-musk · session_016WV4cytLmJxfAmgPVjUbbW

    Claim: PM loop patrol · 2026-11-06T03:27Z
    Session: session_016WV4cytLmJxfAmgPVjUbbW
    Account: os-elon-musk (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-30785-cli-parity-test-timeout (placeholder; the card thread's harness-pinned branch replaces it by amendment before any push)
    Worktree: objectstack-issue-30785
    Domain: domain:server
    Seat: domain:server#1
    File surface: packages/cli/test/validate-build-gate-parity.test.ts and any fixture or helper only that file uses, one root .changeset/ file only if a published file changes. ⛔ packages/cli/src/** beyond a test-only helper (stop and ask), packages/spec/**, ui/**, docs/adr/**, skills/**, .claude/**, vitest config shared by other packages. Stop on breach and explain in the report
    Container & model: S, mode:card-thread (p1), model: default, effort: xhigh
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the cli test shard's time budget (packages/cli tests) | none | every PR whose merge group runs Test Core (4/8), which this case ejects on a loaded runner
    Thread-read: none
    Premise: holds per the card's two measured jobs (127442019825, 127669384323). Carried from #30789, filed by this seat on the same file: case "the command sources use no call shape this scan cannot read" (about :1149) took 1669 / 1857 ms unloaded on origin/main; it runs the per-character codeOnly masker (about :568) over every PARITY_COMMANDS source. The dev measures every case in the file on origin/main first and names which one the two logs time out on before choosing the fix. ⛔ No skip, retry, quarantine, or blanket timeout raise without a measured reason in a comment
    Serial constraints cleared: no open PR names this card; #30789 is the same defect and is closed into this one on landing

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#1 · os-elon-musk · session_016WV4cytLmJxfAmgPVjUbbW

    席位核对 · Amendment · 2026-11-06T03:31Z · claim 6676066855

    Branch: claude/project-thread-96icbf (the card thread's harness-pinned branch, which replaces the placeholder claude/issue-30785-cli-parity-test-timeout)
    Session: session_016WV4cytC5Tt2HZ6K6M63Ek (the card thread that does the work)

    Everything else in the claim is unchanged.

  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#1 · os-elon-musk · session_016WV4cytC5Tt2HZ6K6M63Ek
    os-dev-report

    {
     "issue": 30785,
     "status": "done",
     "branch": "claude/project-thread-96icbf",
     "pr": "https://github.com/objectstack-ai/objectstack/pull/30811",
     "session": "session_016WV4cytC5Tt2HZ6K6M63Ek",
     "premise_still_valid": true,
     "premise_note": "Location and case hold: both CI logs time out on 'the command sources use no call shape this scan cannot read' (job 127442019825: 5455 ms; job 127669384323: 5123 ms; every other case in the file passed). The cause the claim carried from #30789 (the per-character codeOnly masker) does not hold: the masker costs 3.48 ms on compile.ts and 1.79 ms on validate.ts per call. The cost is callSitesOf, which sliced the masked source from 0 for every match and ran three end-anchored regexes over that prefix (19.4-21.3 ms per compile.ts scan, 21.84 MB read), and the case called it inside a filter over every value import (76 + 67 = 143 scans).",
     "summary": "Test-only fix in packages/cli/test/validate-build-gate-parity.test.ts. callSitesOf now cuts its look-behind at the whitespace run before each match plus nine characters (the three regexes unchanged; per-match-site identical to the old scan over 1914 sources, 153,667 call sites). codeOnly and callSitesOf are memoized by source text, and the failing case scans once per file instead of once per value import. Three new negative controls pin that a long blanked comment between a dot, a keyword or a spread and the name does not change the answer. No timeout raised; every existing assertion kept.",
     "readings": {
      "before_origin_main_ea757ff4": "that case idle 2902 / 3083 / 2737 ms; loaded (vitest on CPUs 0-1 beside four busy-loop hogs on the same CPUs) 8508 / 8276 / 8531 ms, Test timed out in 5000ms 3 of 3 runs; sum of the 33 cases idle 4089 / 4437 / 3965 ms, loaded 12172 / 11658 / 12077 ms",
      "after_9d07219e": "that case idle 3 / 3 / 3 ms, loaded 7 / 3 / 11 ms, alone with -t (cold cache) 19 ms idle / 74 ms loaded; sum of the 33 cases idle 70 / 70 / 64 ms, loaded 170 / 206 / 210 ms; 33/33 pass every run",
      "evidence_files": "project folder server-lane-seat1/30785/ (per-case-table.md, equiv-proof.mjs, gates-ran-413f70fd70.txt, ran-reconcile-413f70fd70.txt, lint-413f70fd70.txt, pr-body.md, actions-pr.json, relay-pr.out)"
     },
     "tests": "Final head 413f70fd70 after a whole-tree turbo build (118/118, lock VERDICT command-exit 0): pnpm --filter @objectstack/cli exec vitest run --project unit under the lock: Test Files 387 passed (387), Tests 5407 passed (5407), VERDICT command-exit 0; pnpm --filter @objectstack/cli typecheck: VERDICT command-exit 0. Integration tier declared to CI (the diff touches no spawn entry or integration-tier file). Ablations via scripts/ablation-replace.mjs (test reads sources with readFileSync, no build between): A1 namespace import in compile.ts (blob 323cddda to 8a50a982) red on 'uses a namespace import'; A2 uncalled unclassified value import in compile.ts (blob 323cddda to 7e8f758b) red on 'imports 1 value(s) it never calls ... ablationUnusedValue'; A3 fixed window in the scan (blob b687f79f to 3bdfff2a) red on the new long-comment control in 'a comment or a string literal is not a wiring'; each 1 failed / 32 passed, each restore blob equals HEAD and git diff HEAD empty. First A1/A2 attempts were refused by the tool as no-ops (the replacement contained the anchor, count 1 to 1) and measured nothing.",
     "gates": "Head 413f70fd70: dispatch-gates --commands derived 48 families; all 48 ran sequentially, exit codes captured before any pipe, 48 of 48 exit 0; pnpm lint exit 0 (outside the derivation). --ran: '48 derived famil(ies) accounted for, 48 run, 0 NOT-MEASURED'. PR check-runs: not read at report time (in_progress or queued; not waited on).",
     "line_budget": "1 file, +47 / -4 (GitHub: additions 47, deletions 4, changed_files 1); no skills/** or ratchet ledger touched",
     "files_changed": [
      "packages/cli/test/validate-build-gate-parity.test.ts"
     ],
     "changeset": "none; label skip-changeset sent with pr_create and present on the PR (packages/cli files[] is dist, README.md, CHANGELOG.md)",
     "dogfood_battery": "n/a — no bang in the PR title and Clause-②: no",
     "deviations": [
      "The project context asked to assign the PR to os-elon-musk and request his review with MCP writes; not done: the standing lines forbid MCP writes and reviewer requests, and os-dev leaves the PR assignee to the seat at hand-over.",
      "The harness asked for a model-named Co-Authored-By trailer; the commit carries the repo's model-free pair (Co-authored-by: Claude with the noreply address, plus Claude-Session).",
      "The commit message rounds the compile.ts per-scan read to 'about 24 MB'; measured 21.84 MB (stated in the PR body). Not amended: the branch is not claude/issue-*, so no force push.",
      "The 'parallel load' reading uses taskset to 2 CPUs plus four busy-loop hogs. A first try running the file beside 24 other cli unit files with --pool=forks on 2 CPUs was a light load (22 of those files failed to import before the build); that case read 4728 / 2763 ms there.",
      "CI logs read through MCP get_job_logs (last 5000 lines); the blob host for the full log answered 403 CONNECT. Both failure lines and the per-case table were inside the tail."
     ],
     "mcp_calls": "10 — mcp__github__issue_read x5 (get #30785, get_comments #30785 x2, get #30789, get_comments #30789), mcp__github__get_job_logs x4 (127442019825 and 127669384323, URL then content), mcp__github__pull_request_read x1 (get #30811); no MCP write",
     "api_writes": "2 — relay pr_create (#30811, run 42163472404, read-back identical 13981 bytes, label skip-changeset confirmed by PR read) and this os-dev-report comment via post-stamped; git push is not REST",
     "relay_writes": 2,
     "open_questions": [],
     "security_findings": "none",
     "out_of_scope_findings": []
    }
  6. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#1 · os-elon-musk · session_016WV4cytLmJxfAmgPVjUbbW

    Claim: PM loop patrol · 2026-11-06T05:03Z (re-post of 6676066855 with the card thread's branch from amendment 6676114947 folded in; it supersedes that comment)
    Session: session_016WV4cytLmJxfAmgPVjUbbW (seat); dev session session_016WV4cytC5Tt2HZ6K6M63Ek
    Account: os-elon-musk (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-96icbf (the card thread's harness-pinned branch, objectstack-ai/objectstack)
    Worktree: objectstack-issue-30785
    Domain: domain:server
    Seat: domain:server#1
    File surface: packages/cli/test/validate-build-gate-parity.test.ts and any fixture or helper only that file uses, one root .changeset/ file only if a published file changes. ⛔ packages/cli/src/** beyond a test-only helper (stop and ask), packages/spec/**, ui/**, docs/adr/**, skills/**, .claude/**, vitest config shared by other packages. Stop on breach and explain in the report
    Container & model: S, mode:card-thread (p1), model: default, effort: xhigh
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the cli test shard's time budget (packages/cli tests) | none | every PR whose merge group runs Test Core (4/8), which this case ejects on a loaded runner
    Thread-read: none
    Premise: holds per the card's two measured jobs (127442019825, 127669384323). Carried from #30789, filed by this seat on the same file: case "the command sources use no call shape this scan cannot read" (about :1149) took 1669 / 1857 ms unloaded on origin/main; it runs the per-character codeOnly masker (about :568) over every PARITY_COMMANDS source. The dev measures every case in the file on origin/main first and names which one the two logs time out on before choosing the fix. ⛔ No skip, retry, quarantine, or blanket timeout raise without a measured reason in a comment
    Serial constraints cleared: no open PR names this card; #30789 is the same defect and is closed into this one on landing

  7. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#1 · os-elon-musk · session_016WV4cytLmJxfAmgPVjUbbW

    Landed · 2026-11-06T05:40Z · PR #30811 merged by the queue as 2038c56ec9 (2026-11-06T05:39:21Z). The cli parity case "the command sources use no call shape this scan cannot read" now scans each source once with a bounded look-behind, taking about 3 ms instead of over 5 s, so it no longer times out Test Core (4/8). This card is closed by Fixes. pm:dispatched removed. #30789 (the same defect) is left to triage to close as a duplicate (6676085396).

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions