@twinsearth/w2m-dsh-plugin 0.46.0 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,41 @@ All notable changes to this project are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
5
5
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.47.0] — 2026-10-15
8
+
9
+ **Correcting my own counts: 0.46.0 said 54/32/22, the table says 61/53/8.**
10
+
11
+ 0.46.0's entry claimed *"**54 rows** across twelve sections"*, *"**32 of 54** rows are executed; **22** are not"*.
12
+ **All three numbers were typed by hand, and all three were wrong.** Read from `docs/TEST-MATRIX.md`:
13
+
14
+ | | 0.46.0 said | the table says |
15
+ |---|---|---|
16
+ | rows | 54 | **61** |
17
+ | executed | 32 | **53** |
18
+ | not executed | 22 | **8 never run**, plus **11 blocked**, **1 skipped**, **2 refuted** |
19
+
20
+ ### The cause is that I merged two words that are not the same
21
+
22
+ **`阻塞` means the command RAN and the environment stopped it. `待执行` means it never ran at all.** I collapsed
23
+ both into "not executed" — **and a count that merges two categories is wrong in both directions at once**: it
24
+ overstates what was never attempted and understates what was attempted and blocked.
25
+
26
+ **The matrix now marks `阻塞` as "the command executed" explicitly, and carries a note recording this mistake**,
27
+ because the distinction is the one a reader needs in order to tell "we have not tried" from "we tried and were
28
+ stopped".
29
+
30
+ ### It is the same error the matrix itself documents, one level up
31
+
32
+ The matrix's own rule is that **a row's result may only be changed by re-running its `Instance` and reading the
33
+ output**, and that a count copied from an older plan becomes more true-looking each time it is copied. **I then
34
+ wrote the headline counts of the document from memory instead of reading the document.** The rule was in the
35
+ file I was writing.
36
+
37
+ **So the counts are no longer asserted anywhere by hand.** They are read from the table, and the reading is
38
+ recorded: `61 = 39 通过 + 8 待执行 + 11 阻塞 + 1 跳过 + 2 证伪`.
39
+
40
+ **No new tests.** What changed is three numbers and the reason they drifted.
41
+
7
42
  ## [0.46.0] — 2026-10-15
8
43
 
9
44
  **The test matrix the plans asked for — with every row it could not earn left as `待执行`, and the reason named.**
@@ -118,6 +118,7 @@ was not re-measured keeps its old date — **a stale date is information, and qu
118
118
  | `GATE-002` | an accepted orphan that is no longer an orphan fails — the list cannot go stale | **PASS** | 2026-10-15 | `field-authority` was removed when 0.41.0 gave it a caller, **because this check went red** |
119
119
  | `GATE-003` | `layer-check` prints `clean` **and exits 0** | **PASS** | 2026-10-15 | after the fix. **Before it printed `clean:` and exited `1`** — every reader trusting the status read a passing check as a failure; the pre-flight never noticed because its step reads the *printed text* |
120
120
  | `HARNESS-001` | a hand-rolled test harness measures the harness | **PASS (as a warning)** | 2026-10-15 | **41 failures** running every suite in one process with `--experimental-test-isolation=none`, vs **1** via the project's own entry. The other 38 were `mdns-discover`'s fetch stub leaking into `outbound-only` |
121
+ | `HARNESS-002` | **a count typed by hand drifts from the table it describes** | **FAIL, then corrected** | 2026-10-15 | CHANGELOG 0.46.0 claimed *"54 rows / 32 executed / 22 not"*. Read from `TEST-MATRIX.md`: **61 rows / 53 executed / 8 never run / 11 blocked / 1 skipped / 2 refuted.** I had merged **`阻塞`** (the command ran and the environment stopped it) with **`待执行`** (never run) — so 61 became 54 and 8 became 22 |
121
122
 
122
123
  ---
123
124
 
@@ -13,12 +13,16 @@
13
13
  |---|---|
14
14
  | **通过** | 已执行,且期望成立 |
15
15
  | **失败** | 已执行,且期望不成立 |
16
- | **阻塞** | 已执行,但被环境挡住(**并写明被什么挡住**) |
16
+ | **阻塞** | **命令执行了**,结果被环境挡住(**并写明被什么挡住**) |
17
17
  | **跳过** | 平台不适用,套件自报原因 |
18
18
  | **待执行** | **未执行**。必须写明为什么,否则这一行只是噪声 |
19
19
  | **证伪** | 计划中的一条主张被测量推翻 |
20
20
 
21
21
  > **一行"通过"必须能追到一个 `Instance`。追不到的,写"待执行"。** 这一条比表里任何数字都重要——它是本表唯一不能违反的规则。
22
+ >
23
+ > **"阻塞"与"待执行"不是同一件事,而我把它们混为一谈过一次。** 阻塞 = 命令**执行了**,被环境挡住;待执行 = **从未运行**。
24
+ > 在 CHANGELOG 0.46.0 里我手数成"54 行 / 22 未执行",把两者合并了——**而从本表读出来是 61 行 / 8 待执行 / 11 阻塞**。
25
+ > **手数的计数会漂移,所以本节的所有数字都是从表格里读出来的。**
22
26
 
23
27
  ---
24
28
 
@@ -159,9 +163,10 @@
159
163
  | 热修复 | 对应失败项 + 相邻模块回归 | 修复后必须回归通过 |
160
164
  | 季度/半年 | 全表重跑一次 | 防止环境漂移导致漏测 |
161
165
 
162
- ### 这张表当前的"未执行"分布,以及它们是不是同一件事
166
+ ### 这张表当前未通过的分布,以及它们是不是同一件事
163
167
 
164
- **54 项里 32 项已执行,22 项未执行。** 未执行的**不是 22 个独立问题,而是 4 个阻塞源**:
168
+ **61 项里 53 项已执行,8 项从未运行,11 项被执行但被环境挡住,1 项平台跳过。**
169
+ 未通过的**不是一堆独立问题,而是 4 个阻塞源**:
165
170
 
166
171
  | 阻塞源 | 卡住的项 | 解锁条件 |
167
172
  |---|---|---|
@@ -170,7 +175,7 @@
170
175
  | **没有可用配对码** | `TC-PAIR-003/004/005` | 一次可控的配对实验;会惊动编队,需你同意 |
171
176
  | **需要真实中断或外部资源** | `TC-UPD-001/002/004/005/007` | 一次真实更新检查;`TC-SEC-007` 需要 macOS/Linux |
172
177
 
173
- > **22 项未执行 ≠ 22 项风险。** 它们集中在 4 处,其中**两处**(中继升级、唤醒 Windows 机器)是可以立刻解决的。
178
+ > **未通过的项 ≠ 未通过的项数那么多风险。** 它们集中在 4 处,其中**两处**(中继升级、唤醒 Windows 机器)是可以立刻解决的。
174
179
 
175
180
  ---
176
181
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twinsearth/w2m-dsh-plugin",
3
- "version": "0.46.0",
3
+ "version": "0.47.0",
4
4
  "description": "DSH: Windows2MacOS — drive the same project on online Windows and macOS machines from one DeepSeek account, across networks and regions. P2P hole punching is the default path (relay + shared server as rendezvous, ledger and fallback), with a bundled STUN responder, Tailscale/public-VPS/tunnel shapes, Rabbit relay + per-machine Localside + eight DSH tools (replicate / split), nine aggregate verdicts and signed requests.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -208,7 +208,7 @@ const MAX_STAGES = 16;
208
208
  * `package.json` during `scripts/pack.mjs` rather than hand-maintained, and `W2M_PLUGIN_VERSION`
209
209
  * overrides it at runtime for tests and packagers.
210
210
  */
211
- const PLUGIN_VERSION = '0.46.0';
211
+ const PLUGIN_VERSION = '0.47.0';
212
212
 
213
213
  /** How long any single HTTP call may take before it is aborted, in milliseconds. */
214
214
  const DEFAULT_REQUEST_TIMEOUT_MS = 15_000;