Repository navigation
[PR] thirdparty-scan: flag dsh-live-compact as a known conflict (#5984) - #6166
Conversation
dsh-live-compact is a competing compaction engine that takes over dsh's stock compaction row (its bundled cordis.patch.yml disables compaction-basic and registers its own engine row; its preset takeover renames the preset's compaction row to itself), so bili's load-time compaction-disable overlay (#3354), which recognizes only the stock row names, is structurally blind to it. Its checkpoints can land outside bili's knowledge and destroy the compression substrate - the #5984 session. - scanDsh: dsh-live-compact entries (bare name / npm spec / bounded path segment, isDshLiveCompactEntry mirroring isOpencodeAcpEntry's discipline) are now a deterministic "known" finding (knownId "dsh-live-compact") instead of a keyword [suspected] one, so the conflict ledger / acp_status / web banner surface it as a confirmed conflict; lookalikes stay at most keyword-suspected - announcements/remote.json: web notice (#5548) for dsh profiles with the plugin, with the removal recipe (dsh plugin remove dsh-live-compact) and a CTA to #5984 - docs: known-conflicts list updated (configuration.md / zh-CN) - tests: 3 new cases + detail-shape / not-benign / not-sibling / not-display-only assertions
📦 Built Package ArtifactBranch: Latest build — install this exact versionnpm install -g billion-context@0.0.9044-pr.6166.c4a377dThis exact version is immutable and reproducible. The rolling Recent builds (commit → version)
Download artifact
tar xzf billion-context-pr6166.tgz
npm install -g packageInstall instructions are refreshed on each push. |
(ai: vllm-qwen/qwen3.8-27b) 查重: not a duplicate — this thread is the single fix PR for the #5984 detection gap (GitHub #6166, branch Live status (checked against the pushed head I reviewed the code and mechanism independently (did not re-run locally — deps aren't installed here and CI already ran the full suite green on this same sha; re-running would only burn shared fleet resources for no new signal):
Tests have teeth: assert 结构化八问
结论:代码正确、完整、测试有牙、CI 在同一 sha 全绿、无回归、one-fix-one-PR 成立。建议合入。auto-merge 不适用(跨 scan+notice+docs 且带用户可见通知,属产品决策档)→ 走人工 review/merge,与当前 |
📦 Merged Build PublishedThis merge to master was published as npm install -g billion-context@0.0.1172-master.e3220ad # this exact build
npm install -g billion-context@master # always the newest merged build
|
… round 9) Master advanced 33104b1 -> c26c31a (ranxianglei#6260, ranxianglei#5441, ranxianglei#6186, ranxianglei#5774, ranxianglei#6166 et al.). Clean auto-merge, no conflicts: the new window's blockOps work (ranxianglei#5765/ranxianglei#6166) and this PR's decide-lane keys land in different regions of every shared file. Also completes the round-8 docs regeneration that was left unstaged: the committed head carried the decide-lane keys in the compress.yaml seed but not in the generated output. Re-ran node tools/gen-config-docs.mjs generate on the merged seed (341 entries; i18n ok: 256 keys, EN/ZH equal) — generated output now matches the seed in docs/configuration[.zh-CN].md, website/main.js and website/docs/index.html (blockOps + decide-lane keys, both languages). Verified: tsc --noEmit clean; unused-exports gate clean; targeted suites green (nudge-decide + issue3004 selfheal + config-surface-guard + nudge-model-decided e2e). Full-suite verdict = remote CI.
#5984 showed a dsh session whose compression substrate was destroyed by a compaction checkpoint landing outside bili's knowledge. Source-level analysis (issue comment) identified the actor: the third-party plugin dsh-live-compact (Tranquillitatis-Lab), which takes over dsh's stock compaction engine:
cordis.patch.ymldisables the stockcompaction-basicrow and registers its own engine row (compaction-spine/dsh-live-compact);@deepseek-ai/dsh-compaction-basic/@deepseek-ai/dsh-command-compact) — so this plugin is structurally invisible to the overlay, and its inherited-official LLM summaries land as foreign compaction checkpoints.Before this PR the conflict scan (#1206) only flagged the plugin at the keyword tier (
compacttoken →[suspected], "verify first"), which does not raise the imperative keep-one-compressor alarm.What
src/thirdparty-scan.ts—scanDshnow matchesdsh-live-compact(bare name / npm spec / bounded path segment, newisDshLiveCompactEntrymirroringisOpencodeAcpEntry's discipline) and reports it as a deterministic known conflict (knownId: "dsh-live-compact"). Lookalikes (e.g.dsh-live-compact-viewer) stay at most keyword-suspected.announcements/remote.json— web notice (Unified Announcement Panel Design (Approved): Built-in declarations + local JSON + remote GitHub raw — a single renderer | 公告面统一设计(已批准):内置声明 + 本地 JSON + 远程 GitHub raw,三来源一套渲染器 #5548) for dsh profiles with the plugin: what it is, why it conflicts, the removal recipe (dsh plugin remove dsh-live-compact), CTA to [Bug][compress] After rebase, the ref reported by acp_status/nudge is inconsistent with the ledger used by compress for | [Bug][compress] rebase 后 acp_status/nudge 报的 ref 与 compress 校验用的台账不一致:提示的区间必然 unknown,连续三次即熔断 #5984. Dismissible (persistent).docs/configuration.md+docs/configuration.zh-CN.md— known-conflicts list updated (BILI_CONFLICT_SCAN row + 自动识别其他压缩插件存在并在任何可能的情况下报告警告 #1206 section), mechanism in one sentence, EN/ZH in sync.tests/issue1206-thirdparty-scan.test.ts— 3 new tests (known bare, known versioned spec, lookalike stays keyword) + detail-shape assertions (parses back, no[suspected]tag, not sibling, not display-only) +isDesignBenign === false.Why the "known" tier
A known (non-suspected) finding is exactly what the conflict banner treats as a "confirmed third-party compressor" → the imperative keep-one-compressor warning surfaces in the web UI,
acp_status'sCOMPRESSION CONFLICTSsection,GET /__bili/stats→conflicts, and the launcher pre-launch stderr line. No behavior change for any other entry.Verification
npm run typecheck— cleantests/issue1206-thirdparty-scan.test.ts— 49/49 (46 + 3 new)node --import tsx scripts/validate-remote-announcements.ts(the CI announcements-lint gate) — OK, 1 entry validNotes