instar 1.3.525 → 1.3.526

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.
Files changed (34) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +40 -4
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +23 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  8. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  9. package/dist/core/PostUpdateMigrator.js +86 -0
  10. package/dist/core/PostUpdateMigrator.js.map +1 -1
  11. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts +56 -2
  12. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts.map +1 -1
  13. package/dist/monitoring/ActiveWorkSilenceSentinel.js +174 -10
  14. package/dist/monitoring/ActiveWorkSilenceSentinel.js.map +1 -1
  15. package/dist/monitoring/PromiseBeacon.d.ts +48 -0
  16. package/dist/monitoring/PromiseBeacon.d.ts.map +1 -1
  17. package/dist/monitoring/PromiseBeacon.js +186 -41
  18. package/dist/monitoring/PromiseBeacon.js.map +1 -1
  19. package/dist/monitoring/SubagentTracker.d.ts +9 -0
  20. package/dist/monitoring/SubagentTracker.d.ts.map +1 -1
  21. package/dist/monitoring/SubagentTracker.js +11 -0
  22. package/dist/monitoring/SubagentTracker.js.map +1 -1
  23. package/dist/monitoring/sentinelWiring.d.ts +20 -1
  24. package/dist/monitoring/sentinelWiring.d.ts.map +1 -1
  25. package/dist/monitoring/sentinelWiring.js +26 -0
  26. package/dist/monitoring/sentinelWiring.js.map +1 -1
  27. package/dist/scaffold/templates.d.ts.map +1 -1
  28. package/dist/scaffold/templates.js +7 -0
  29. package/dist/scaffold/templates.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/data/builtin-manifest.json +19 -19
  32. package/src/scaffold/templates.ts +7 -0
  33. package/upgrades/1.3.526.md +83 -0
  34. package/upgrades/side-effects/honest-progress-messaging.md +150 -0
@@ -1 +1 @@
1
- {"version":3,"file":"sentinelWiring.js","sourceRoot":"","sources":["../../src/monitoring/sentinelWiring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sentinelWiring.js","sourceRoot":"","sources":["../../src/monitoring/sentinelWiring.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,CA+7CR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,GAC3B,MAAM,CA2TR"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,CAs8CR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,GAC3B,MAAM,CA2TR"}
@@ -1461,6 +1461,13 @@ instar test-as-self --slack # Slack permission demonstr
1461
1461
  **\`--slack\` — the test-as-self-for-Slack demonstration (credential-free):** extends the throwaway-agent primitive from "is the agent alive?" to "does it enforce the RIGHT decision for each (principal, request) pair?". It runs the deterministic scenario suite through the SAME observer the live Slack adapter calls (resolver → permission gate → decision ledger) and asserts BOTH the verdict AND that the matching audit/ledger entry landed — "verified, not narrated". No Slack tokens, no throwaway deploy. The same suite is reachable over HTTP: \`GET /permissions/scenario-suite\` (logic-only view) and \`POST /permissions/scenario-suite/run\` (audit-asserting). Exit 0 = every row produced its expected decision AND its audit entry.
1462
1462
 
1463
1463
  **Proactive trigger:** when you're about to ship or just shipped a change touching the deploy/lifeline/server-startup path, run this against a throwaway home first — don't guess from logs. When you touch the Slack org permission system (\`src/permissions/\`), run \`instar test-as-self --slack\` (or \`POST /permissions/scenario-suite/run\`) to prove the gate still enforces every (principal, request) row.
1464
+
1465
+ ## Honest progress messaging (silent-freeze watchdog + promise beacon)
1466
+
1467
+ Two background notifiers used to post frequent, falsely-confident noise because they judged "work" by whether the terminal *screen* repainted — a busy long task looks identical to a frozen one. Both are now honest. They are SIGNALS, never gates: they only decide whether to notify you, and every error path fails toward silence.
1468
+ - **Silent-freeze watchdog** (ActiveWorkSilenceSentinel): before claiming a session is stuck, it re-captures the LIVE frame and corroborates — if the frame still shows an active-work indicator (spinner / "esc to interrupt"), a sub-agent is live, or it's a clean idle prompt, it stays SILENT. It speaks only when genuinely wedged, and even then hedges ("…hasn't changed in N min and a nudge didn't wake it — it may be stuck, or on a long task I can't see into. Want me to check?"). Threshold raised 15m→30m; a 90m frozen-indicator backstop still surfaces a real mid-tool hang. Tune/disable: \`monitoring.activeWorkSilenceSentinel.enabled\` (off), \`.silenceThresholdMs\` (default 30m), \`.activeWorkMaxFrozenIndicatorMs\` (default 90m).
1469
+ - **Promise beacon** (the ⏳ heartbeats): the zero-information "still on it, no new output" filler is suppressed by default — it speaks only on genuine new progress, deadline pressure, a sparse once-per-60m liveness line, or a one-shot turn-finished close-out. Base cadence relaxed 10m→20m. Tune/disable: \`promiseBeacon.suppressUnchangedHeartbeats: false\` (restore the legacy every-tick heartbeat — the rollback lever), \`promiseBeacon.beaconLivenessIntervalMs\` (default 60m), \`promiseBeacon.turnFinishedCloseoutChecks\` (default 3).
1470
+ - **Doc correction:** the trio's escalations are NOT gated by \`monitoring.sentinelTelegramEscalation\` (that gate governs a different path); they route through the tone-gated \`/attention\` surface and are controlled by each sentinel's own \`enabled\` flag (both default true). Effectiveness is measurable in \`logs/sentinel-events.jsonl\` and the per-feature LLM-metrics surface (feature keys \`active-work-silence\`, \`promise-beacon\`). Spec: \`docs/specs/HONEST-PROGRESS-MESSAGING-SPEC.md\`.
1464
1471
  `;
1465
1472
  if (hasTelegram) {
1466
1473
  content += `
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.525",
3
+ "version": "1.3.526",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-06-13T12:22:22.882Z",
5
- "instarVersion": "1.3.525",
4
+ "generatedAt": "2026-06-13T13:01:50.568Z",
5
+ "instarVersion": "1.3.526",
6
6
  "entryCount": 201,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -11,7 +11,7 @@
11
11
  "domain": "identity",
12
12
  "sourcePath": "src/core/PostUpdateMigrator.ts",
13
13
  "installedPath": ".instar/hooks/instar/session-start.sh",
14
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
14
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
15
15
  "since": "2025-01-01"
16
16
  },
17
17
  "hook:dangerous-command-guard": {
@@ -20,7 +20,7 @@
20
20
  "domain": "safety",
21
21
  "sourcePath": "src/core/PostUpdateMigrator.ts",
22
22
  "installedPath": ".instar/hooks/instar/dangerous-command-guard.sh",
23
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
23
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
24
24
  "since": "2025-01-01"
25
25
  },
26
26
  "hook:grounding-before-messaging": {
@@ -29,7 +29,7 @@
29
29
  "domain": "safety",
30
30
  "sourcePath": "src/core/PostUpdateMigrator.ts",
31
31
  "installedPath": ".instar/hooks/instar/grounding-before-messaging.sh",
32
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
32
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
33
33
  "since": "2025-01-01"
34
34
  },
35
35
  "hook:compaction-recovery": {
@@ -38,7 +38,7 @@
38
38
  "domain": "identity",
39
39
  "sourcePath": "src/core/PostUpdateMigrator.ts",
40
40
  "installedPath": ".instar/hooks/instar/compaction-recovery.sh",
41
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
41
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
42
42
  "since": "2025-01-01"
43
43
  },
44
44
  "hook:external-operation-gate": {
@@ -47,7 +47,7 @@
47
47
  "domain": "safety",
48
48
  "sourcePath": "src/core/PostUpdateMigrator.ts",
49
49
  "installedPath": ".instar/hooks/instar/external-operation-gate.js",
50
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
50
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
51
51
  "since": "2025-01-01"
52
52
  },
53
53
  "hook:deferral-detector": {
@@ -56,7 +56,7 @@
56
56
  "domain": "safety",
57
57
  "sourcePath": "src/core/PostUpdateMigrator.ts",
58
58
  "installedPath": ".instar/hooks/instar/deferral-detector.js",
59
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
59
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
60
60
  "since": "2025-01-01"
61
61
  },
62
62
  "hook:self-stop-guard": {
@@ -65,7 +65,7 @@
65
65
  "domain": "coherence",
66
66
  "sourcePath": "src/core/PostUpdateMigrator.ts",
67
67
  "installedPath": ".instar/hooks/instar/self-stop-guard.js",
68
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
68
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
69
69
  "since": "2025-01-01"
70
70
  },
71
71
  "hook:post-action-reflection": {
@@ -74,7 +74,7 @@
74
74
  "domain": "evolution",
75
75
  "sourcePath": "src/core/PostUpdateMigrator.ts",
76
76
  "installedPath": ".instar/hooks/instar/post-action-reflection.js",
77
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
77
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
78
78
  "since": "2025-01-01"
79
79
  },
80
80
  "hook:external-communication-guard": {
@@ -83,7 +83,7 @@
83
83
  "domain": "safety",
84
84
  "sourcePath": "src/core/PostUpdateMigrator.ts",
85
85
  "installedPath": ".instar/hooks/instar/external-communication-guard.js",
86
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
86
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
87
87
  "since": "2025-01-01"
88
88
  },
89
89
  "hook:scope-coherence-collector": {
@@ -92,7 +92,7 @@
92
92
  "domain": "coherence",
93
93
  "sourcePath": "src/core/PostUpdateMigrator.ts",
94
94
  "installedPath": ".instar/hooks/instar/scope-coherence-collector.js",
95
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
95
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
96
96
  "since": "2025-01-01"
97
97
  },
98
98
  "hook:scope-coherence-checkpoint": {
@@ -101,7 +101,7 @@
101
101
  "domain": "coherence",
102
102
  "sourcePath": "src/core/PostUpdateMigrator.ts",
103
103
  "installedPath": ".instar/hooks/instar/scope-coherence-checkpoint.js",
104
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
104
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
105
105
  "since": "2025-01-01"
106
106
  },
107
107
  "hook:free-text-guard": {
@@ -110,7 +110,7 @@
110
110
  "domain": "safety",
111
111
  "sourcePath": "src/core/PostUpdateMigrator.ts",
112
112
  "installedPath": ".instar/hooks/instar/free-text-guard.sh",
113
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
113
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
114
114
  "since": "2025-01-01"
115
115
  },
116
116
  "hook:claim-intercept": {
@@ -119,7 +119,7 @@
119
119
  "domain": "coherence",
120
120
  "sourcePath": "src/core/PostUpdateMigrator.ts",
121
121
  "installedPath": ".instar/hooks/instar/claim-intercept.js",
122
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
122
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
123
123
  "since": "2025-01-01"
124
124
  },
125
125
  "hook:claim-intercept-response": {
@@ -128,7 +128,7 @@
128
128
  "domain": "coherence",
129
129
  "sourcePath": "src/core/PostUpdateMigrator.ts",
130
130
  "installedPath": ".instar/hooks/instar/claim-intercept-response.js",
131
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
131
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
132
132
  "since": "2025-01-01"
133
133
  },
134
134
  "hook:stop-gate-router": {
@@ -137,7 +137,7 @@
137
137
  "domain": "safety",
138
138
  "sourcePath": "src/core/PostUpdateMigrator.ts",
139
139
  "installedPath": ".instar/hooks/instar/stop-gate-router.js",
140
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
140
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
141
141
  "since": "2025-01-01"
142
142
  },
143
143
  "hook:auto-approve-permissions": {
@@ -146,7 +146,7 @@
146
146
  "domain": "safety",
147
147
  "sourcePath": "src/core/PostUpdateMigrator.ts",
148
148
  "installedPath": ".instar/hooks/instar/auto-approve-permissions.js",
149
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
149
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
150
150
  "since": "2025-01-01"
151
151
  },
152
152
  "job:health-check": {
@@ -1554,7 +1554,7 @@
1554
1554
  "type": "subsystem",
1555
1555
  "domain": "updates",
1556
1556
  "sourcePath": "src/core/PostUpdateMigrator.ts",
1557
- "contentHash": "11c103a616007e84cd2951cef34520af1a6e0107700f20a27cf1765a8f06897e",
1557
+ "contentHash": "f40d034eacb7ff28b6346705cf13e72aefb9033b9ab198fe854f806fae21314e",
1558
1558
  "since": "2025-01-01"
1559
1559
  },
1560
1560
  "subsystem:scheduler": {
@@ -1481,6 +1481,13 @@ instar test-as-self --slack # Slack permission demonstr
1481
1481
  **\`--slack\` — the test-as-self-for-Slack demonstration (credential-free):** extends the throwaway-agent primitive from "is the agent alive?" to "does it enforce the RIGHT decision for each (principal, request) pair?". It runs the deterministic scenario suite through the SAME observer the live Slack adapter calls (resolver → permission gate → decision ledger) and asserts BOTH the verdict AND that the matching audit/ledger entry landed — "verified, not narrated". No Slack tokens, no throwaway deploy. The same suite is reachable over HTTP: \`GET /permissions/scenario-suite\` (logic-only view) and \`POST /permissions/scenario-suite/run\` (audit-asserting). Exit 0 = every row produced its expected decision AND its audit entry.
1482
1482
 
1483
1483
  **Proactive trigger:** when you're about to ship or just shipped a change touching the deploy/lifeline/server-startup path, run this against a throwaway home first — don't guess from logs. When you touch the Slack org permission system (\`src/permissions/\`), run \`instar test-as-self --slack\` (or \`POST /permissions/scenario-suite/run\`) to prove the gate still enforces every (principal, request) row.
1484
+
1485
+ ## Honest progress messaging (silent-freeze watchdog + promise beacon)
1486
+
1487
+ Two background notifiers used to post frequent, falsely-confident noise because they judged "work" by whether the terminal *screen* repainted — a busy long task looks identical to a frozen one. Both are now honest. They are SIGNALS, never gates: they only decide whether to notify you, and every error path fails toward silence.
1488
+ - **Silent-freeze watchdog** (ActiveWorkSilenceSentinel): before claiming a session is stuck, it re-captures the LIVE frame and corroborates — if the frame still shows an active-work indicator (spinner / "esc to interrupt"), a sub-agent is live, or it's a clean idle prompt, it stays SILENT. It speaks only when genuinely wedged, and even then hedges ("…hasn't changed in N min and a nudge didn't wake it — it may be stuck, or on a long task I can't see into. Want me to check?"). Threshold raised 15m→30m; a 90m frozen-indicator backstop still surfaces a real mid-tool hang. Tune/disable: \`monitoring.activeWorkSilenceSentinel.enabled\` (off), \`.silenceThresholdMs\` (default 30m), \`.activeWorkMaxFrozenIndicatorMs\` (default 90m).
1489
+ - **Promise beacon** (the ⏳ heartbeats): the zero-information "still on it, no new output" filler is suppressed by default — it speaks only on genuine new progress, deadline pressure, a sparse once-per-60m liveness line, or a one-shot turn-finished close-out. Base cadence relaxed 10m→20m. Tune/disable: \`promiseBeacon.suppressUnchangedHeartbeats: false\` (restore the legacy every-tick heartbeat — the rollback lever), \`promiseBeacon.beaconLivenessIntervalMs\` (default 60m), \`promiseBeacon.turnFinishedCloseoutChecks\` (default 3).
1490
+ - **Doc correction:** the trio's escalations are NOT gated by \`monitoring.sentinelTelegramEscalation\` (that gate governs a different path); they route through the tone-gated \`/attention\` surface and are controlled by each sentinel's own \`enabled\` flag (both default true). Effectiveness is measurable in \`logs/sentinel-events.jsonl\` and the per-feature LLM-metrics surface (feature keys \`active-work-silence\`, \`promise-beacon\`). Spec: \`docs/specs/HONEST-PROGRESS-MESSAGING-SPEC.md\`.
1484
1491
  `;
1485
1492
 
1486
1493
  if (hasTelegram) {
@@ -0,0 +1,83 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ - **The silent-freeze watchdog now corroborates before it cries wolf.** The
9
+ `ActiveWorkSilenceSentinel` used to escalate ("X went quiet… I tried a nudge…
10
+ want me to dig in?") on nothing more than "the terminal screen stopped
11
+ repainting for 15 min" — which a long build, a running sub-agent, or any long
12
+ tool call looks exactly like. It now re-captures the session's LIVE frame and
13
+ suppresses the alert when the frame still shows an active-work indicator (strict
14
+ "generating now": spinner / "esc to interrupt" / running — never the broad
15
+ scrollback-persistent tool names), a sub-agent is live, or it's a clean idle
16
+ prompt. The whole corroboration path **fails closed** (any capture/check error →
17
+ suppress, never a false "it's stuck"). Threshold raised 15m→30m. A 90-minute
18
+ frozen-byte-identical-frame backstop (A5) still surfaces a genuine mid-tool hang,
19
+ extra-hedged. The escalation wording is now evidence-with-uncertainty ("…hasn't
20
+ changed in N min and a nudge didn't wake it — it may be stuck, or on a long task
21
+ I can't see into. Want me to check?"), never an asserted "it's stuck."
22
+ - **The promise beacon (⏳) goes silent unless there's something true to say.** The
23
+ zero-information "still on it, no new output" heartbeat is suppressed by default
24
+ — it carried no signal (just a tmux hash that didn't change) and kept firing on
25
+ tasks the user had moved on from. The beacon now speaks only on genuine new
26
+ progress (LLM-summarized), deadline pressure (B1a), a sparse once-per-60m
27
+ liveness line so long tasks aren't fully dark (B1b), or a one-shot turn-finished
28
+ close-out (B2: after 3 idle-frame checks, "that work's session has wrapped —
29
+ pick it back up, or close this out?" then auto-pause). Base cadence relaxed
30
+ 10m→20m. `heartbeatCount` now counts only messages actually sent.
31
+ - **Both remain pure SIGNALS** — they decide only whether to notify you, never to
32
+ block or gate an action. Every new check is used to *suppress/hedge* the
33
+ notification (the safe direction), in line with the Signal-vs-Authority standard.
34
+ - **Observability:** a full suppression-vs-fire funnel lands in
35
+ `logs/sentinel-events.jsonl` and `/metrics/features` (`active-work-silence`,
36
+ `promise-beacon`), so the false-positive-rate drop is measurable, not assumed.
37
+ - **Migration parity:** the five operator-tunable / rollback keys ship in
38
+ `ConfigDefaults` (SSOT) and an existence-checked, idempotent, audited
39
+ `PostUpdateMigrator` step (`honest-progress-messaging-defaults`) backfills them
40
+ to deployed agents at the paths the runtime actually reads. CLAUDE.md template +
41
+ content-sniffed `migrateClaudeMd` entry so every agent learns the new behavior
42
+ and how to tune/disable it.
43
+
44
+ ## What to Tell Your User
45
+
46
+ Two kinds of background messages that were noisy and often wrong are now honest.
47
+ The "a session went quiet — want me to dig in?" alert used to fire on any task that
48
+ was simply taking a while (a long build looks identical to a frozen screen); it now
49
+ checks whether the session is genuinely still working before saying anything, and
50
+ when it's truly unsure it says so plainly instead of declaring "it's stuck." The
51
+ recurring ⏳ "still on it, no new output" pings are gone by default — the agent only
52
+ pings you when there's real progress, a deadline is close, or a task has actually
53
+ wrapped up and it wants to close the loop. You'll see far fewer of both, and the ones
54
+ you do see will be true. Everything is tunable (or fully restorable to the old
55
+ behavior) via config; the agent's CLAUDE.md explains the knobs.
56
+
57
+ ## Summary of New Capabilities
58
+
59
+ - `ActiveWorkSilenceSentinel` live-frame corroboration (suppress on active-work
60
+ indicator / live sub-agent / clean idle prompt; fail-closed; 90m frozen-indicator
61
+ backstop). Tunable: `monitoring.activeWorkSilenceSentinel.{silenceThresholdMs,activeWorkMaxFrozenIndicatorMs,enabled}`.
62
+ - `PromiseBeacon` silent-unless-true behavior (suppress unchanged; sparse liveness;
63
+ deadline-pressure line; turn-finished close-out). Tunable: `promiseBeacon.{suppressUnchangedHeartbeats,beaconLivenessIntervalMs,turnFinishedCloseoutChecks}`.
64
+ - Suppression/fire observability funnel via `logs/sentinel-events.jsonl` and
65
+ `/metrics/features` under `active-work-silence` and `promise-beacon`.
66
+
67
+ ## Evidence
68
+
69
+ - `tests/unit/ActiveWorkSilenceSentinel-honest.test.ts` (7) — A1 suppression on a
70
+ live "generating now" frame, A2 sub-agent-live + clean-idle suppression, A5
71
+ frozen-indicator backstop fire, fail-closed on every corroboration error path,
72
+ legacy no-capture back-compat.
73
+ - `tests/unit/PromiseBeacon.test.ts` (5) + `PromiseBeacon-ux-fixes.test.ts` (6) —
74
+ B1 suppress-when-unchanged (default) + the `suppressUnchangedHeartbeats:false`
75
+ legacy-rollback, cadence-anchor advances on suppressed ticks, resume re-arm.
76
+ - `tests/unit/PostUpdateMigrator-honestProgressMessaging.test.ts` (7) — ConfigDefaults
77
+ SSOT presence, fresh backfill at the runtime-read paths, operator-override
78
+ preservation (incl. the rollback flag), run-once idempotency, no-config/corrupt-config
79
+ paths, and the CLAUDE.md awareness append.
80
+ - Build clean; full lint suite green (incl. dev-agent-dark-gate, guard-manifest,
81
+ llm-attribution). Spec converged + approved: `docs/specs/HONEST-PROGRESS-MESSAGING-SPEC.md`.
82
+ - Side-effects review (with independent second-pass concur):
83
+ `upgrades/side-effects/honest-progress-messaging.md`.
@@ -0,0 +1,150 @@
1
+ # Side-Effects Review — Honest progress messaging (silent-freeze watchdog + promise-beacon truthfulness)
2
+
3
+ **Version / slug:** `honest-progress-messaging`
4
+ **Date:** 2026-06-13
5
+ **Author:** echo
6
+ **Second-pass reviewer:** required (touches sentinel/watchdog + outbound-messaging decisions) — see below
7
+
8
+ ## Summary of the change
9
+
10
+ Two background notifiers were posting frequent, falsely-confident noise into whatever Telegram topic the user was in, because both judged "work" by whether the tmux *screen* repainted — a busy long-task session looks byte-identical to a frozen one. This change makes both honest without changing their authority (both remain pure signals — they decide whether to *notify*, never to block or gate).
11
+
12
+ - **ActiveWorkSilenceSentinel** (`src/monitoring/ActiveWorkSilenceSentinel.ts`): before claiming a session is stuck, it now re-captures the *live* frame and corroborates — if the frame still shows an active-work indicator (strict "generating now": spinner / "esc to interrupt" / running), or a sub-agent is live, or it's a clean idle prompt, it suppresses instead of crying wolf. The whole corroboration path **fails closed** (any error → suppress, never a false "it's stuck"). Threshold raised 15m→30m. A 90-minute frozen-byte-identical-frame backstop (A5) keeps a genuine mid-tool hang from being permanently invisible. Wording is now evidence-with-uncertainty ("hasn't changed in N min and a nudge didn't wake it — it may be stuck, or on a long task I can't see into. Want me to check?"), never an asserted "it's stuck."
13
+ - **PromiseBeacon** (`src/monitoring/PromiseBeacon.ts`): the "still on it, no new output" filler is suppressed by default (it carried zero information). The beacon now speaks only on genuine new output (LLM-summarized), deadline pressure (B1a), a sparse once-per-60m liveness line (B1b, so long tasks aren't fully dark), or a one-shot turn-finished close-out (B2/FD-1: after N=3 idle-frame checks, "that work's session has wrapped — pick it back up, or close this out?" then auto-pause). Base cadence relaxed 10m→20m. `heartbeatCount` now counts only messages actually sent.
14
+ - **SubagentTracker** (`src/monitoring/SubagentTracker.ts`): adds an O(1) `hasActiveSubagents(sessionId)` index read so the sentinel's per-tick corroboration stays cheap.
15
+ - **Wiring** (`src/monitoring/sentinelWiring.ts`, `src/commands/server.ts`): new `looksGeneratingNow()` strict detector; SubagentTracker construction moved *before* the silently-stopped trio block so the sentinel can read sub-agent liveness; quoted dynamic text routed through `guardProxyOutput()`/`friendlyName()` sanitization; observability funnel events mapped onto the existing `sentinel-events.jsonl` notifier.
16
+
17
+ This PR ships the full converged scope (A, B, C, D, E):
18
+ - **C (docs alignment):** `generateClaudeMd()` (`src/scaffold/templates.ts`) gains an "Honest progress messaging" subsection; a content-sniffed `migrateClaudeMd` entry appends it to existing agents; `docs/specs/silently-stopped-trio.md` gets a correcting note.
19
+ - **D (config surface + migration parity):** the five operator-tunable / rollback keys are added to `ConfigDefaults.ts` as SSOT (at the paths the runtime actually reads — `monitoring.activeWorkSilenceSentinel.*` and TOP-LEVEL `promiseBeacon.*`, NOT the `monitoring.promiseBeacon.*` the spec prose stated — corrected against the real read site), and a `PostUpdateMigrator` step `honest-progress-messaging-defaults` backfills them existence-checked + idempotent + audited (`migrateHonestProgressMessagingDefaults`). New unit test `tests/unit/PostUpdateMigrator-honestProgressMessaging.test.ts` covers the SSOT presence, fresh backfill, override preservation (incl. the `suppressUnchangedHeartbeats:false` rollback), idempotency, no-config/corrupt-config paths, and the CLAUDE.md append.
20
+
21
+ Spec: `docs/specs/HONEST-PROGRESS-MESSAGING-SPEC.md` (review-convergence 2026-06-13, approved by Justin via topic 25120).
22
+
23
+ ## Decision-point inventory
24
+
25
+ - `ActiveWorkSilenceSentinel.escalate()` — **modify** — was "threshold + failed-nudge → escalate"; now "threshold + failed-nudge + live-frame corroboration → escalate, else suppress." Still a signal (it asks the user a question); no blocking authority added or removed.
26
+ - `ActiveWorkSilenceSentinel` A5 frozen-indicator backstop — **add** — new escalation path bounded by `activeWorkMaxFrozenIndicatorMs` (90m default) so A1 suppression can't hide an infinite hang.
27
+ - `PromiseBeacon.checkOne()` send decision — **modify** — was "send a templated line every tick"; now "send only when there is something true to say." Still a signal; the user-facing surface is a notification, never a gate.
28
+ - `PromiseBeacon` turn-finished close-out (B2) — **add** — one-shot close-out + auto-pause; non-terminal (status stays `pending`, resume re-arms).
29
+ - `SubagentTracker.hasActiveSubagents()` — **add** — pure read, no decision surface of its own; feeds the sentinel.
30
+
31
+ ---
32
+
33
+ ## 1. Over-block
34
+
35
+ **What legitimate inputs does this change reject that it shouldn't?**
36
+
37
+ No block/allow surface — these are notifiers, not gates; "over-block" maps to "wrongly stays silent (false negative)." The deliberate trade is fewer false alarms at the cost of some added latency on a real freeze:
38
+
39
+ - A session that genuinely freezes *mid-tool with the active-work indicator still painted on screen* is suppressed by A1 until the 90-minute A5 backstop fires. This is the accepted, bounded false-negative (convergence finding; tunable via `activeWorkMaxFrozenIndicatorMs`). Before this change it would have surfaced at ~15m; now a genuine hang of this specific shape surfaces at ≤90m, clearly hedged.
40
+ - The promise beacon will stay silent on a long task that produces no new terminal output for up to 60m between sparse-liveness lines. A user who *wanted* a 10-minute "still working" ping no longer gets it (that was the noise they asked to remove; rollback via `suppressUnchangedHeartbeats:false`).
41
+
42
+ ---
43
+
44
+ ## 2. Under-block
45
+
46
+ **What failure modes does this still miss?**
47
+
48
+ Mapped to "still fires when it shouldn't" / "still misses a real wedge":
49
+
50
+ - The "generating now" detector is regex over the live frame. A framework whose spinner/interrupt markers aren't in `getActivitySignal()` would read as "not generating," so a long task on that framework could still draw a (now-hedged, 30m, corroborated-by-absence-of-sub-agent) escalation. The wording is honest about the uncertainty, so this is a softened false positive, not a confident one.
51
+ - A2(b) clean-idle-prompt detection (`isCleanIdlePrompt`) is **not wired** in server.ts — the indeterminate branch instead relies on "no active-work indicator + no live sub-agent." A finished turn sitting at a clean prompt is normally caught earlier by the tracker's `paused` flag; if it isn't, it falls to the honest hedged ask rather than a false "stuck." Acceptable degradation (spec-declared).
52
+ - The frozen-frame hash (FNV-1a) detects byte changes only; a session repainting an identical-looking but byte-different frame (e.g. a moving clock) resets the A5 timer, extending the backstop. Accepted — A5 is a backstop, not the primary path.
53
+
54
+ ---
55
+
56
+ ## 3. Level-of-abstraction fit
57
+
58
+ **Is this at the right layer?**
59
+
60
+ Correct layer. Both components are existing low-level *detectors that surface signals to the user* — they do not gate agent behavior, so the smart-gate-authority pattern doesn't apply (there is no downstream authority to feed; the "consumer" is the human). The change keeps them as detectors and makes the detector honest: it adds *more* corroborating signals (live-frame generating-now, sub-agent liveness, idle-prompt) before the detector speaks, and lowers its confidence in the wording. The strict `looksGeneratingNow()` is correctly separated from the broad `looksActivelyWorking()` (which matches scrollback-persistent tool names) — using the broad one here would re-introduce the false-positive (a frozen pane full of past `Read(`/`Bash(` is not "generating now"). The O(1) `hasActiveSubagents` read is the right primitive to add to SubagentTracker rather than re-deriving liveness in the sentinel.
61
+
62
+ ---
63
+
64
+ ## 4. Signal vs authority compliance
65
+
66
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
67
+
68
+ **Does this change hold blocking authority with brittle logic?**
69
+
70
+ - [x] No — this change has no block/allow surface. Both ActiveWorkSilenceSentinel and PromiseBeacon are signal producers: their output is a user-facing notification (a question / a status line), never a 4xx block, a message filter, or an action gate. The new brittle detectors (`looksGeneratingNow`, frame hashing, `hasActiveSubagents`, idle-prompt) are used *to suppress the signal* (reduce false alarms) and to *hedge the wording* — the strictly safe direction. They never acquire authority to block anything an agent or user does. This is exactly the principle's intended shape: brittle detectors feeding a low-stakes notification decision, with the conservative default being silence.
71
+
72
+ The parent-principle frontmatter on the spec is "Signal vs. Authority" with the note that both systems stay signal-only while the signal itself becomes honest. Confirmed against the code: no new throw/block path; every corroboration error routes to suppression.
73
+
74
+ ---
75
+
76
+ ## 5. Interactions
77
+
78
+ **Does this interact with existing checks, recovery paths, or infrastructure?**
79
+
80
+ - **Shadowing:** The corroboration runs *inside* `escalate()`, after the existing nudge/verify ladder, so it doesn't shadow the auto-recovery path (which still runs first when `autoRecover` is on, in `proceedEscalation`). A `suppressed-active` session is re-evaluated each tick (it is not cleared while still past threshold), so suppression cannot permanently mask the auto-recovery ladder either — A5 eventually routes back through `proceedEscalation`.
81
+ - **Double-fire:** The sentinel's `suppressed-active` state is held in `states` so a suppressed session does not re-`report()` every tick (the `existing` guard). The map is cleared when the session drops below threshold (frame changed) or ends, preventing a leak. PromiseBeacon advances `lastHeartbeatAt` on every check whether or not a message was sent, so a suppressed tick can't tight-loop on a stale cadence anchor.
82
+ - **Races:** SubagentTracker construction order moved earlier in `startServer`; verified no consumer between the old and new construction site references `subagentTracker` (it was previously built *after* the trio block and only used downstream). The `hasActiveSubagents` read is against an in-memory index — no file race.
83
+ - **Feedback loops:** None. The observability `recordEvent` writes to `sentinel-events.jsonl` via the notifier; it does not feed back into the escalation decision. `recordEvent` is best-effort and never throws into the sentinel.
84
+
85
+ ---
86
+
87
+ ## 6. External surfaces
88
+
89
+ **Does this change anything visible outside the immediate code path?**
90
+
91
+ - **Other users (install base):** Yes — this is a fleet change. Every instar agent's two noisiest notifiers go quiet-by-default. This is the intended, operator-approved behavior change. The new strings are user-visible; they were signed off verbatim in topic 25120.
92
+ - **Telegram:** message *volume drops*; message *shape* changes (hedged wording, close-out prompt). No new topic creation — all sends route through the existing per-topic / lifeline paths, so the topic-flood guards are unaffected.
93
+ - **Persistent state:** PromiseBeacon hot-state gains `lastLivenessAt` and `consecutiveTurnFinished` (additive, optional fields — old hot-state files load fine). Commitment `beaconPausedReason: 'turn-finished'` is a new reason string (additive). `sentinel-events.jsonl` gains new funnel detail strings (additive). No migration needed for these; the **config** additions (`suppressUnchangedHeartbeats`, `beaconLivenessIntervalMs`, `turnFinishedCloseoutChecks`, `activeWorkMaxFrozenIndicatorMs`, `silenceThresholdMs` default change) are read with `??` fallbacks so absent config preserves the new defaults — the spec's D-section migration adds them existence-checked so operator overrides survive.
94
+ - **Operator surface (Mobile-Complete Operator Actions):** No new operator-facing action. The only levers are config keys (opt-out / tuning), which the operator already edits via the Files dashboard tab or conversationally. No PIN-gated route added.
95
+ - **Timing/runtime:** The corroboration depends on live tmux capture, which can transiently fail — handled by fail-closed suppression. A5's 90m and B1b's 60m are wall-clock windows; both are operator-tunable.
96
+
97
+ ---
98
+
99
+ ## 7. Multi-machine posture (Cross-Machine Coherence)
100
+
101
+ **Posture: machine-local BY DESIGN.**
102
+
103
+ Both notifiers observe *local* tmux sessions on the machine they run on — a session's liveness, its sub-agents, and its frozen-frame timer are inherently machine-local truths (the session exists on exactly one machine's tmux server). There is nothing to replicate or proxy: machine B has no business judging machine A's session liveness, and the one-awake-machine lease already ensures only the serving machine drives user-facing notifications for a given topic. The corroboration reads (`captureFrame`, `hasActiveSubagents`) are against this machine's session surface and in-memory tracker by construction.
104
+
105
+ - **User-facing notices / one-voice:** Both route through the existing serving-machine notification paths (the lease holder owns the topic's voice), so the existing one-voice gating applies unchanged — this change *reduces* the number of notices, it doesn't add a new emitter that could double-fire across machines.
106
+ - **Durable state on topic transfer:** PromiseBeacon hot-state and commitments already ride the existing commitment/working-set carriers on transfer; the additive fields (`lastLivenessAt`, `consecutiveTurnFinished`) are non-critical and self-heal (worst case: one extra liveness line or close-out check after a move). No new stranding risk.
107
+ - **Generated URLs:** None generated.
108
+
109
+ ---
110
+
111
+ ## 8. Rollback cost
112
+
113
+ **If this turns out wrong in production, what's the back-out?**
114
+
115
+ Pure code change with config-flag rollbacks — cheap and fast:
116
+
117
+ - **Promise beacon:** set `promiseBeacon.suppressUnchangedHeartbeats: false` to restore the legacy every-tick templated heartbeat immediately, no deploy needed (read live at next beacon construction; restart sessions to apply).
118
+ - **Watchdog:** raise `silenceThresholdMs` back to `900000` and/or rely on the legacy no-capture path. If the corroboration itself is suspect, the legacy behavior is reachable by not wiring `captureFrame` — but the cleaner back-out is a code revert.
119
+ - **Full revert:** revert the commit and ship as a patch. No persistent-state migration to unwind (all state additions are additive/optional and ignored by old code). No agent-state repair. No user-visible regression during the rollback window beyond returning to the old (noisier) behavior.
120
+
121
+ ---
122
+
123
+ ## Conclusion
124
+
125
+ The review produced no design changes — the convergence pass (iteration 2, zero material findings) had already closed the substantive gaps this review re-checks: the permanent-blind-spot (A5 backstop), long-task-invisibility (B1a/B1b), sanitization (FD-7), wiring order, fail-closed corroboration (FD-6), and observability. The implementation matches the converged spec: both components stay strictly signal-only, every error path fails toward silence (the safe direction for a notifier), and the only persistent-state changes are additive and backward-compatible. The change is clear to ship pending the required second-pass review below.
126
+
127
+ ---
128
+
129
+ ## Second-pass review (if required)
130
+
131
+ **Reviewer:** independent general-purpose subagent (audited the five diffs against `docs/signal-vs-authority.md` and the framework activity-signal regex defs)
132
+ **Independent read of the artifact: CONCUR**
133
+
134
+ The reviewer independently verified the artifact's core claims against the real source:
135
+
136
+ - **Signal vs authority — pure-signal confirmed.** No new path acquires blocking authority. `escalate()` ends only in `notify()` or suppression — no throw / 4xx / message-drop. PromiseBeacon's `text != null` send-gate only decides notify-vs-silent. All new brittle detectors are used to suppress/hedge (the safe direction).
137
+ - **Fail-closed — confirmed.** Every corroboration error path (capture-throw, empty-frame, `looksActivelyWorking`-throw, `hasActiveSubagents`-throw) routes to `markSuppressedActive(state, undefined)`, which explicitly does NOT arm A5 ("don't arm A5 on bad evidence") — so no error path can escalate on bad evidence. The observability funnel is log-only, never Telegram.
138
+ - **No state leak / no double-fire; A5 not permanently maskable.** A `suppressed-active` session is re-evaluated every tick so A5's 90m backstop can't be hidden by A1; A5 fires once then `escalated` short-circuits re-fire; the cleanup loop clears suppressed states that drop below threshold. A5's primary target (a STATIC `esc to interrupt`/`(running)` indicator) keeps a byte-stable frame so the timer accumulates correctly.
139
+ - **PromiseBeacon cadence + close-out correct.** `lastHeartbeatAt` advances on every check (sent or suppressed) so a suppressed tick cannot tight-loop on a stale anchor; `heartbeatCount` increments only on real sends; `closeOutTurnFinished` auto-pauses without re-arm.
140
+ - **Wiring correct.** Both components are wired to the STRICT `looksGeneratingNow`; the broad scrollback-matching `looksActivelyWorking` is never passed to either — confirmed against the regex defs, so the original false positive is not reintroduced.
141
+
142
+ Two minor non-blocking notes (no action required, recorded as accepted): (1) `isCleanIdlePrompt` is intentionally unwired and degrades safely to the hedged ask (declared in §2); (2) the `resumed` handler resets `consecutiveUnchanged` but not `consecutiveTurnFinished`, so a resume on a still-finished session may emit its close-out on the first post-resume check rather than after N more — harmless (it just re-pauses, no loop). Verdict: clear to ship.
143
+
144
+ ---
145
+
146
+ ## Evidence pointers
147
+
148
+ - Build: `pnpm build` clean in worktree `~/.instar/agents/echo/.worktrees/honest-progress-messaging`.
149
+ - Targeted unit tests (18 passing): `tests/unit/ActiveWorkSilenceSentinel-honest.test.ts` (7), `tests/unit/PromiseBeacon.test.ts` (5, incl. B1 suppress + B1 rollback), `tests/unit/PromiseBeacon-ux-fixes.test.ts` (6).
150
+ - Convergence report: `docs/specs/reports/HONEST-PROGRESS-MESSAGING-SPEC-convergence.md`.