Skip to content

v2.8.3

Choose a tag to compare

@ChongCyrus ChongCyrus released this 04 Oct 10:34
· 1654 commits to main since this release

本页为 dsh-vibe-math 2.8.3 的双语发布说明(中文在前,English below)。

dsh-vibe-math 2.8.3 — 发布说明

上一版本:2.8.2。本版是补丁版,修两处 v5 的会议与定稿问题:会议收束后到达的发言不再被静默丢弃(改成具名的"会后补记");force 重启后 paperEditor="office" 的定稿拒绝会说明原因(计数已随新论文重置、需重新征询)。参数名与默认值、数据格式与目录结构未变,DSH 支撑窗口不变,无需迁移。

概述

  • 成员的会议发言不会再无声消失:即使发言在会议收束(看门狗放弃停滞会议,或所办提前定稿)之后才到达,也会作为「会后补记」写进会议纪要,并在群聊里具名说明一次。
  • 会议纪要只增不覆盖:先前发言者的内容一律保留。
  • force 重启后的定稿拒绝可解释:响应新增 restarted: true 并写明 forceReason,消息直接告诉你"计数随新论文重置、重启前的消息/会议不再计入、请重新征询"。
  • 文档明确:force = 一张新论文(consult 的两个计数随之从 0 开始),因此重启后必须重新征询。

新增

  • vibe_v5_finalize_paper 在因征询不足被拒时,响应新增 restarted 字段(布尔;该论文是否由 force 重启而来)。

变更

  • 会议纪要新增一种条目:「会后补记」(### <成员>(会后补记:该发言到达时会议已收束))——针对会议已收束后到达的发言;同一段文本重复提交只记一次。
  • V5_PAPER_CONSULT_REQUIRED 的文案在 restarted 时追加重置说明(行为逻辑不变,只是把原因说清)。
  • docs/final-paper.md §7 增补一条「force = 一张新论文」的口径。

修复

  • 症状:某位成员(真机实测中正是会议的召集人)的发言没有出现在会议纪要里——纪要在头部写着 - 发言顺序: r-1 → acad,正文却只有 ### r-1;同一张论文的 consult.meetings 一直为 0,定稿被连续拒绝。原因:成员结束块里的 input 只认「有活会议」这一条路径,而会议一旦停滞会被看门狗收束,之后到达的发言无处可去、静默丢弃。现在这类发言会作为「会后补记」写入纪要(具名、去重、追加而非覆盖)。守卫:tests/e2e-v5-round2.test.mjs(★ [real1004-minutes])、tests/v5-institute-fixes.mutants.mjs。
  • 症状:force 重启论文后,所办按老流程定稿会被 V5_PAPER_CONSULT_REQUIRED 反复拒绝,而提示里没有任何线索说明"刚刚重启导致计数清零"(真机实测连续 11 次、只能靠成员自行推断)。原因:这一语义只存在于代码里,文档与拒绝文案都没写。现在拒绝会具名说明重置与"请重新征询",文档也把「force = 新论文」写清楚。守卫:tests/e2e-v5-round2.test.mjs(★ [real1004-consult])、tests/v5-institute-fixes.mutants.mjs(18/18 具名红)。

兼容性与迁移

  • 破坏性变更:无。
  • 纯新增:restarted 响应字段;纪要里一种新的条目类型。
  • 迁移:无需迁移;既有 paper.meta.json、会议纪要与目录结构不变。
  • DSH 支撑窗口不变(见 package.json 的 engines.dsh)。

已知限制

  • 非标准位置的 TeX 仍不会被自动发现:默认探测只覆盖 PATH 与文档化的常见安装根;装在其它目录请用 paperLatexCommand 指绝对路径。
  • 随包套件不覆盖宿主层行为(例如「中断后调用方被丢弃」),这类行为需要真机才能观察。
  • 根代理提问会阻塞整所流程(运维注意项,不改产品):答复到达前其余流程停摆;长跑时请把问题与验收条件一次说清。详见 slv-playbook.md §5。
  • 会议「因长时间无新发言被看门狗放弃」之后,纪要里会留下放弃标记;放弃前的发言仍保留,之后到达的发言进「会后补记」。

验证方式

  • node tests/run-tests.mjs —— 全部通过(106 项:44 套件 + 62 探针)。
  • node scripts/release-check.mjs —— 退出 0(版本三处一致/两份说明章节顺序/files[] 登记/包内无 CRLF);发布后加 --registry 比对线上 shasum 与本地 tarball。
  • 本版两处修复:node tests/e2e-v5-round2.test.mjs(★ [real1004-minutes]、★ [real1004-consult])与 node tests/v5-institute-fixes.mutants.mjs(18/18 具名红)。
  • 真机复测方式:用 registry 上的精确版本(-Pin <version>)跑一个精简会议+论文任务(跳过研究),核对纪要是否含两位发言人、以及 force 重启后拒绝是否具名。

依赖

  • 无新增运行时依赖;DSH 支撑窗口不变。

dsh-vibe-math 2.8.3 — Release Notes

Previous release: 2.8.2. This is a patch release fixing two v5 issues around meetings and finalisation: a speech that arrives after the meeting closed is no longer dropped silently (it becomes a clearly-marked late note), and an office finalisation refused after a force restart now explains why (the counters restarted with the new paper, so a fresh consultation is required). Parameter names and defaults, data formats and the directory layout are unchanged, the DSH support window is unchanged, and no migration is needed.

Overview

  • A member's meeting speech no longer disappears silently: even when it arrives after the meeting closed (the watchdog abandons a stalled meeting; the office may finalise early) it is written into the minutes as a clearly-marked "late note", with one named line in the group chat.
  • Meeting minutes are append-only: earlier speakers are always preserved.
  • A refusal after a force restart is now explainable: the response carries restarted: true plus the forceReason, and the message states that the counters restarted with the new paper, that earlier messages/meetings no longer count, and that a fresh consultation is required.
  • The documentation now states it plainly: force means a new paper (both consult counters start at 0), so a restart requires a new consultation.

Added

  • When vibe_v5_finalize_paper is refused for insufficient consultation, the response now carries restarted (boolean: was this paper started by a force restart?).

Changed

  • Meeting minutes gained one kind of entry: ### <member>(会后补记:该发言到达时会议已收束) — used for speeches that arrive after the meeting closed; identical text submitted again is recorded only once.
  • The V5_PAPER_CONSULT_REQUIRED message appends the reset explanation when restarted (behaviour is unchanged; it only states the cause).
  • docs/final-paper.md §7 gained the "force = a new paper" rule.

Fixed

  • Symptom: a member's speech — on a real host, the convener's own speech — never appeared in the minutes: the header said - 发言顺序: r-1 → acad while the body contained only ### r-1; the paper's consult.meetings stayed 0 and finalisation was refused repeatedly. Cause: a member's end-block input was only consumed when a meeting was live, and a stalled meeting is closed by the watchdog — speeches arriving later had nowhere to go and were dropped silently. Such speeches are now appended as "late notes" (named, de-duplicated, appended rather than overwritten). Guards: tests/e2e-v5-round2.test.mjs (★ [real1004-minutes]), tests/v5-institute-fixes.mutants.mjs.
  • Symptom: after a force restart of the paper, the office's usual finalisation was refused by V5_PAPER_CONSULT_REQUIRED with no hint that the restart had reset the counters (on a real host: 11 consecutive refusals, leaving the members to infer it). Cause: that semantics existed only in the code — neither the docs nor the refusal message said it. The refusal now names the reset and asks for a fresh consultation, and the docs state "force = a new paper". Guards: tests/e2e-v5-round2.test.mjs (★ [real1004-consult]), tests/v5-institute-fixes.mutants.mjs (18/18 named reds).

Compatibility & Migration

  • Breaking changes: none.
  • Additive only: the restarted response field; one new kind of minutes entry.
  • Migration: none needed; existing paper.meta.json files, meeting minutes and the directory layout are unchanged.
  • The DSH support window is unchanged (see engines.dsh in package.json).

Known Limitations

  • TeX installed in a non-standard location is still not auto-discovered: the default probe covers PATH and the documented common install roots; use an absolute path in paperLatexCommand otherwise.
  • The shipped suites do not cover host-level behaviour (for example "the caller is dropped after an interrupt"); that needs a real host.
  • A root-agent question blocks the whole institute (operational note, product unchanged): nothing else proceeds until the answer arrives — state the problem and acceptance criteria up front for unattended runs. See slv-playbook.md §5.
  • After a meeting is abandoned by the watchdog, the minutes keep the abandonment marker and all earlier speeches; speeches that arrive later land in the "late note" section.

Verification

  • node tests/run-tests.mjs — all green (106 items: 44 suites + 62 probes).
  • node scripts/release-check.mjs — exits 0 (version triple, section order of both notes, files[] registration, no CRLF in the package); after publishing, add --registry to compare the registry shasum with the local tarball.
  • The two fixes in this release: node tests/e2e-v5-round2.test.mjs (★ [real1004-minutes], ★ [real1004-consult]) and node tests/v5-institute-fixes.mutants.mjs (18/18 named reds).
  • Real-host re-check recipe: install the exact published version (-Pin <version>) and run a trimmed meeting + paper task (no research), then check that the minutes contain both speakers and that a refusal after a force restart is named.

Dependencies

  • No new runtime dependencies; the DSH support window is unchanged.