Repository navigation
fix(pm): fleet-roster reads a shared-account seat's own activity - #28941
Merged
objectstack-fleet[bot] merged 2 commits intoNov 2, 2026
Merged
objectstack-fleet[bot] merged 2 commits into
objectstack-fleet[bot] merged 2 commits into
Conversation
A seat whose account also holds a lower seat of its lane has no in-flight cards of its own (the cell reads `= seat N`), so its last activity was its seat post's updated_at alone and it read 疑似撞墙 while working. Last activity is now the newest of the post, its in-flight cards, its mailbox pull's updated_at, and the comments of the last STALE_HOURS signed with the row's own LANE#N (by seat, never by account). One paged read per repo (/issues/comments?since=now - STALE_HOURS) carries the signed comments; the mailbox time comes from the pulls list already read. The signature pattern is mirrored from check-half-states (the relay imports this file and must not load the patrol); the self-test holds the two byte-equal and adds a battery for one account on two seats of a lane. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2gLghEqeDKTbDTC7Zd
…ster-shared-account-activity Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2gLghEqeDKTbDTC7Zd
Contributor
Author
|
domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd 席位核对 — ACCEPT ·
|
objectstack-fleet
Bot
deleted the
claude/issue-28906-roster-shared-account-activity
branch
November 2, 2026 05:18
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by 田騏 · project thread
Fixes #28906
Clause-②: no
Metadata-protocol: none
维护者速读
scripts/pm/fleet-roster.mjs,不发布;每次生成多一个分页读(今日约 4 页);回滚即 revert 本 PR。scripts/pm/fleet-roster.mjs中buildRows的times一行与signedActivity;其次SIGNATURE_LINE镜像及其等值自测。node scripts/pm/fleet-roster.mjs --self-test,预期✓ fleet-roster self-test: 104 cases in 9 batteries pass.What changes
scripts/pm/fleet-roster.mjsonly (+109 / -11).updated_at, its in-flight cards, its mailbox pull'supdated_at(the mailbox column's pull, already in thepulls?state=openread, so no new call), and every comment of the lastSTALE_HOURSwhose first non-empty line is a seat signatureLANE#N · ACCOUNT · SESSIONnaming THIS row's lane and seat number. The attribution is by seat, never by account, so two seats on one account stay apart.= seat N.STALE_HOURSis unchanged (6).GET /repos/R/issues/comments?since=(now − 6 h), paged throughgh-pages.mjs. The footer of the generated body names it with the other reads.ROSTER_MARKERfrom this file, so it must not loadcheck-half-states.mjs(the same reasonisEpicParentmirrors H45). The self-test holdsSIGNATURE_LINEbyte-equal toSEAT_SIGNATURE_LINE(source and flags) and checkssignedSeatOfagainstreadSignatureLineover a corpus.Tests
New self-test battery
one account on two seats of a lane: the second seat reads its own traces(13 cases, battery floor 8 → 9). The cases:= seat 1and its post alone, and is flagged.domain:server#2lifts it too.STALE_HOURS, the seat is flagged.= seat 1without the flag.STALE_HOURS, and the footer names the read.Self-test and suites run on 01dbcd7
Acceptance notes
updated_atmoves on any comment, including another seat'sTo:line, so a walled seat that keeps receiving doorbells reads fresh. The card's Wanted names the mailbox, so it is in. A signed comment is the stricter trace, because it is attributed to its writer.STALE_HOURS. The flag is exact. For a flagged row, a signed comment older than 6 h is not read, so the age cell can read older than that comment. The read window keeps the cost bounded: 388 comments in 6 h today against a 5000-rowMAX_PAGESguard. A 24 h window measured 1720 comments and 18 pages.--reposare read. Arepo:cloudseat's signed comments land on the cloud repo, so those rows still read their post alone.--repos objectstack-ai/objectstack,objectstack-ai/objectui. The default three-repo run fails at hotcrm here before and after this change.Verification
Live, read-only, before at
origin/main9a9823d and after on this branch:domain:server#2domain:server#3domain:server#5The run flagged 9 rows before and 6 after. The other six flags are unchanged:
repo:cloud1 and 2,repo:docs.objectos.ai1,domain:spec3 and 5, andrepo:www.objectos.ai1. Each server seat's mailbox and its signed comment are both fresh, so either trace alone lifts its flag. Seat 1 keeps its 9 in-flight cards, and seats 2, 3 and 5 still read= seat 1.API cost: the run made 23
gh apicalls after the change and 18 before. The 5 new calls are the comment reads: 4 pages on objectstack and 1 on objectui.Gates on 01dbcd7 (dispatch-gates --commands, 31 derived)
All 31 derived commands exited 0. The
--ranreconciliation reads:✓ dispatch-gates --ran: 31 derived famil(ies) accounted for — 31 run, 0 NOT-MEASURED (a DERIVED zero — all 31 recorded an exit code and none of them is 3).The 31 are
check-closing-keyword-parity(+ self-test),check-comment-mask-corpus,check-declaration-mirrors(+ self-test),check-self-test-wired(+ self-test),check-self-test-workflow-commands(+ self-test),check-whole-set-label-write(+ self-test),plan-test-core-shards --self-test,bare-root-worklist --self-test, andpnpm check:agent-test-spelling, bash32-floor, ci-filter-parity, cli-command-ids, cross-package-test-inputs, driver-memory-census, entry-guard, gitlink-declared, nul-bytes, parse-guard, pm-dispatch-gates (fast tier, 1937 cases), pm-record-recognisers, pnpm-filter-targets, pnpm-flag-spellings, ratchet-remedy-authority, refd-timer-probe, scripts-symbol-anchors and watch-hint-literal.Outside the derived set, I ran the rosters under
scripts/:check-published-list-mirrors,check:engine-double-contract,check:i18n-stale-fillandcheck:pm-label-desc-cap.check:dts-closureandcheck:published-readme-exports. Their prerequisite is built packages, and this diff touches none.🤖 Generated with Claude Code