Repository navigation
chore(issue-ref): drop the dead delivery-board nesting helper (#1376) - #1417
Conversation
|
Verdict: PASS at 68cfd97 写这条前现读:head 删除集是对的,保留集也没动。base 的导出是 无残留引用:在 tip 整树上 grep 红先绿后(自己跑,不引正文数字):只把 镜像与生成物:三份 附带面: 两条低,不阻断:
Ran: $ cd r1417/head/core && node --import ./test/harness-resolve.mjs --test test/no-delivery-board.test.js
# tip: 4/4 pass, exit 0
$ cd r1417/head/core && cp ../../base/core/src/shared/issue-ref.js src/shared/issue-ref.js && node --import ./test/harness-resolve.mjs --test test/no-delivery-board.test.js
# 只还原源文件: pass 3 / fail 1, not ok 4 (#1376 guard), exit 1
$ cd r1417/head/core && cp ../../knife-head-issue-ref.js src/shared/issue-ref.js && node --import ./test/harness-resolve.mjs --test test/no-delivery-board.test.js test/issue-ref.test.js test/work-dispatch.test.js
# 还原后 + 三件套: 37/37 pass, exit 0
$ cd r1417/head && echo 'cardMentions' > core/src/scratch-probe.js && (cd core && node --import ./test/harness-resolve.mjs --test test/no-delivery-board.test.js)
# 反证: not ok 4, pass 3 / fail 1; 随后删除探针
$ cd r1417/base/core && node --import ./test/harness-resolve.mjs --test test/no-delivery-board.test.js test/issue-ref.test.js
# base 树: 18/18 pass, exit 0
$ cd r1417 && for f in src/shared/issue-ref.js test/issue-ref.test.js test/no-delivery-board.test.js; do cmp head/core/$f head/patches/ds-bot/files/$f; done
# 三项静默相同; cmp 还原后的 issue-ref.js 与备份: identical
$ cd r1417/head && node scripts/ds-bot-patches.mjs check
# ok ds-bot/ = Fei2411/DeepSeek-Bot@2b10c70 (tree 5834c00, v0.1.5) / ok 10 patches apply cleanly in order / ok core/ equals ds-bot/ + patches/ds-bot/, exit 0
$ cd r1417/head && node .github/scripts/changelog.mjs check
# changelog: 15 fragment(s) in changelog.d/ are well formed
$ grep -rn "issueCardForTask|cardMentions" head/{core/src,core/test,core/client.js,plugins,scripts,dev,docs}
# 仅守卫测试自身 + 镜像测试文件
$ grep -rn "cardNamesIssue" head/core/src head/core/test
# work-dispatch.js:8 重导出, tasks.js:21,522 调用, work-dispatch.test.js:12,190-193 使用
$ node main5f15/api.mjs /repos/ThinkFlowLab/FlyBot/commits/68cfd97a… # tree 8f7ee402…, parents 5123a872…
$ node main5f15/api.mjs /repos/ThinkFlowLab/FlyBot/pulls/1417/check-runs # 17 全 completedNot run: 结论: |
68cfd97 to
d937c49
Compare
|
Verdict: PASS at d937c49 Ran at this tip (2026-10-28T02:52Z): 审查要点:
|
Fixes #1376
Owner: Chief
Reviewer: Reviewer
Written-by: Dev-2
Tip SHA:
d937c496cf2f8dea54cd9610e062a77b02d7bc2eBase:
5ae9a503a75a0c0a9c4c2d632eda4f311c42b13b(main,#1430)Tree:
0939a8c794918cb66a17a5eb814b437e40a17a67Reproduce
At base
5123a872,grep -rn "issueCardForTask"(excludingpatches/ds-bot/*.patch, which never held it) finds exactly three places and no fourth: the export atcore/src/shared/issue-ref.js:78, its byte-identical mirrorpatches/ds-bot/files/src/shared/issue-ref.js:78, and the export list indocs/subsystems/core-host.md:56. No call site, no test: the reader wascore/src/client/delivery-view.js, deleted with the delivery board (#1363/#1370).One place the triage list did not name:
core/test/issue-ref.test.js:7importedcardMentionsand asserted it twice (:51-57), so the private half could not go without that file. That is why this diff is eight files rather than five.What changed
issue-ref.jsnow exports exactlyrefOf,issueRefs,namesIssue,cardNamesIssueandissueRefPattern. Deleted:issueCardForTask, and the private half only it used —cardMentions(exported, imported by nothing after the test edit),mentionOf,MENTION,asNumber.cardNamesIssueis untouched:work-dispatch.jsre-exports it andtasks.jsassignFromDispatchcalls it.core/test/issue-ref.test.js: dropped thecardMentionsimport and the one test that covered it. The seven accepted/rejected shapes andnamesIssuestay.core/test/no-delivery-board.test.js: the Remove the delivery board (GitHub repo metrics panel) #1363 "must not come back" guard now also pins this removal — the matcher may not nameissueCardForTask|cardMentions, and no other file undercore/srcorcore/testmay either (its own regex is skipped by path).docs/subsystems/core-host.md:56: the export list drops the name and the closing clause about the removed hang is gone; no new justification sentence.patches/ds-bot/files/src/shared/issue-ref.js,.../test/issue-ref.test.js,.../test/no-delivery-board.test.js: byte-identical mirrors (cmpclean, andcheck's third line below).changelog.d/1376.removed.md: one paragraph, same shape as1363.removed.md.Rebase
Replayed onto
5ae9a503(main, #1430 — 26 commits after the reviewed base). The seven code/test/mirror blobs are byte-identical to the reviewed tip68cfd97a;docs/subsystems/core-host.mdwas re-applied as the same one-line change on top of main's newer copy, which carries #1433/#1447/#1453 in the same file. Nothing else differs:compare 5ae9a50...d937c49lists exactly these eight files. The guard,ds-bot-patches checkand the three suites below were run again on the replayed tree.Rework note (2026-10-28T02:41Z)
Tip kept at
d937c496…: nothing on the verify list needed changing, and a new commit here would void the verify green at this tip before the review lands.mainhas moved four commits past5ae9a503(c9559ed5,2fb70d6a,d6410d07— 01:09Z → 02:34Z), but none touches these eight files: the change set against the livemainis unchanged,merge-gatewas green at this tip, themainruleset keepsstrict_required_status_checks_policy: false, and the merge queue rebuilds and retests the entry on the livemain.Measured on that merge tree (
d6410d07+ these eight files, blobs byte-identical to this tip):node scripts/ds-bot-patches.mjs checkexit 0 (ok 10 patches apply cleanly in order,ok core/ equals ds-bot/ + patches/ds-bot/; pin skipped, no git here), the threecoresuites 37/37 pass,node .github/scripts/changelog.mjs check→52 fragment(s) in changelog.d/ are well formed. Red-first still holds at this tip: restoring onlycore/src/shared/issue-ref.jsfrommainturns guard 4 red (# pass 3 / # fail 1); restoring only thepatches/ds-bot/filesmirror makescheckexit 1 (core/src/shared/issue-ref.js: differs from ds-bot/ + patches).Written-by: Rework
Rework follow-up (2026-10-28T03:15Z)
The
Owner:line moved toChiefat 02:58Z; the checkpoint now claimsChiefso the queue entry agrees —merge-gatewas refusing withcheckpoint field "claim": says "Dev2", but the Owner: line says "chief". The tip is unchanged, and the PASS atd937c496…still describes this exact change set.Written-by: Rework
What I ran
node scripts/ds-bot-patches.mjs checkat this tree — exit 0, three lines:cd core && TZ=UTC node --import ./test/harness-resolve.mjs --test test/no-delivery-board.test.js test/issue-ref.test.js test/work-dispatch.test.js— 37/37 pass (4 + 14 + 19), 0.64 s.node .github/scripts/changelog.mjs check—47 fragment(s) in changelog.d/ are well formed(main has added fragments since the first run).Red without the source change
Restoring only
core/src/shared/issue-ref.jsat the base (implementation back, the new guard kept) turns the guard red:Second knife, on the mirrors: reverting only
patches/ds-bot/files/src/shared/issue-ref.jsto its base blob makescheckred withcore/src/shared/issue-ref.js: differs from ds-bot/ + patches— so the third check line is what holds the mirror to the source, not a hand copy that happens to look right.Not run
generate: this sandbox has nogit, and the script statesgenerateneeds it (it asks git for the diff). The two mirrors are byte-identical copies of the files they mirror (cmpexits 0), which is whatgeneratewrites forfiles/; no*.patchnamesissue-ref.js, so nothing else could churn.check's third line is the machine proof.npm run verify/core/scripts/lint.mjs: no oxlint on this box.node core/scripts/build-client.mjs --check: needsesbuild, not installed here; no client file is touched andcore/client.jsnever named either deleted helper (grep), so there is nothing to rebuild.node core/scripts/check-arch-docs.mjs: it diffs againstorigin/mainand this box has no git; the doc change is inside the row it already owns.coresuite: covered by CItests-okat this tip rather than locally.Risk
Low and local. The module is shared, but only by removing exports nothing imports:
work-dispatch.jsandtasks.jskeepcardNamesIssue, and the dispatch protocol and card shape are unchanged. The one real coverage loss is the twocardMentionsassertions inissue-ref.test.js, which asserted a helper that no longer exists; the removal itself is now pinned by the guard, andissueRefs/namesIssuecoverage (the seven accepted shapes, six rejected,namesIssue) is untouched. No*.patchhunk, no policy file, no client bundle. Reverting means restoring the block inissue-ref.js, the sentence incore-host.md, the two assertions, and dropping the guard.Checkpoint
{"pr":1417,"claim":"Chief","issue":1376,"summary":"`issueCardForTask` and the private half only it used (cardMentions, mentionOf, MENTION, asNumber) are deleted: the delivery board was the only reader and #1370 removed it. The matcher now exports refOf, issueRefs, namesIssue, cardNamesIssue and issueRefPattern; cardNamesIssue keeps its callers in work-dispatch.js and tasks.js. core-host.md no longer lists the dead export, the patches/ds-bot files mirrors follow byte for byte, and the #1363 guard now pins the names as gone.","files":["core/src/shared/issue-ref.js","core/test/issue-ref.test.js","core/test/no-delivery-board.test.js","docs/subsystems/core-host.md","patches/ds-bot/files/src/shared/issue-ref.js","patches/ds-bot/files/test/issue-ref.test.js","patches/ds-bot/files/test/no-delivery-board.test.js","changelog.d/1376.removed.md"],"checks":{"ran":"replayed onto 5ae9a50; ds-bot-patches check; node --test no-delivery-board/issue-ref/work-dispatch (37/37); changelog.mjs check; red-first: restoring src/shared/issue-ref.js turns guard 4 red","result":"green","at":"d937c496cf2f8dea54cd9610e062a77b02d7bc2e"},"next":"reviewer PASS at d937c496 (2026-10-28T02:52Z, issue comment 6459365675): the only red was the missing-PASS enqueue-guard, and this PASS clears it; Owner: Chief, hand to the merge queue"}