instar 1.3.1661 → 1.3.1663

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 (160) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +195 -30
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/ClaudeKeyHealth.d.ts +21 -0
  5. package/dist/core/ClaudeKeyHealth.d.ts.map +1 -1
  6. package/dist/core/ClaudeKeyHealth.js +81 -5
  7. package/dist/core/ClaudeKeyHealth.js.map +1 -1
  8. package/dist/core/MeshRpc.d.ts +14 -0
  9. package/dist/core/MeshRpc.d.ts.map +1 -1
  10. package/dist/core/MeshRpc.js +1 -0
  11. package/dist/core/MeshRpc.js.map +1 -1
  12. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  13. package/dist/core/PostUpdateMigrator.js +18 -0
  14. package/dist/core/PostUpdateMigrator.js.map +1 -1
  15. package/dist/core/SessionManager.d.ts.map +1 -1
  16. package/dist/core/SessionManager.js +8 -6
  17. package/dist/core/SessionManager.js.map +1 -1
  18. package/dist/core/SlackReplyRelayInstaller.d.ts.map +1 -1
  19. package/dist/core/SlackReplyRelayInstaller.js +2 -0
  20. package/dist/core/SlackReplyRelayInstaller.js.map +1 -1
  21. package/dist/core/StateManager.d.ts +8 -0
  22. package/dist/core/StateManager.d.ts.map +1 -1
  23. package/dist/core/StateManager.js +11 -0
  24. package/dist/core/StateManager.js.map +1 -1
  25. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  26. package/dist/core/WriteDomainRegistry.js +9 -0
  27. package/dist/core/WriteDomainRegistry.js.map +1 -1
  28. package/dist/core/claudeKeyRecovery.d.ts +102 -0
  29. package/dist/core/claudeKeyRecovery.d.ts.map +1 -0
  30. package/dist/core/claudeKeyRecovery.js +178 -0
  31. package/dist/core/claudeKeyRecovery.js.map +1 -0
  32. package/dist/core/memorySessionPolicy.d.ts +12 -0
  33. package/dist/core/memorySessionPolicy.d.ts.map +1 -1
  34. package/dist/core/memorySessionPolicy.js +20 -0
  35. package/dist/core/memorySessionPolicy.js.map +1 -1
  36. package/dist/core/pickSessionByTmux.d.ts +11 -0
  37. package/dist/core/pickSessionByTmux.d.ts.map +1 -0
  38. package/dist/core/pickSessionByTmux.js +11 -0
  39. package/dist/core/pickSessionByTmux.js.map +1 -0
  40. package/dist/core/types.d.ts +14 -0
  41. package/dist/core/types.d.ts.map +1 -1
  42. package/dist/core/types.js.map +1 -1
  43. package/dist/data/standards-guard-index.json +2 -2
  44. package/dist/data/standards-guard-index.meta.json +3 -3
  45. package/dist/data/standards-registry.md +12 -2
  46. package/dist/data/standards-registry.meta.json +3 -3
  47. package/dist/feedback-factory/execute/changeSet.d.ts.map +1 -1
  48. package/dist/feedback-factory/execute/changeSet.js +18 -1
  49. package/dist/feedback-factory/execute/changeSet.js.map +1 -1
  50. package/dist/feedback-factory/execute/executePolicy.d.ts +1 -1
  51. package/dist/feedback-factory/execute/executePolicy.d.ts.map +1 -1
  52. package/dist/feedback-factory/execute/executePolicy.js +2 -2
  53. package/dist/feedback-factory/execute/executePolicy.js.map +1 -1
  54. package/dist/messaging/SpawnRequestManager.d.ts +31 -0
  55. package/dist/messaging/SpawnRequestManager.d.ts.map +1 -1
  56. package/dist/messaging/SpawnRequestManager.js +149 -11
  57. package/dist/messaging/SpawnRequestManager.js.map +1 -1
  58. package/dist/messaging/TelegramAdapter.d.ts +11 -11
  59. package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
  60. package/dist/messaging/TelegramAdapter.js +59 -14
  61. package/dist/messaging/TelegramAdapter.js.map +1 -1
  62. package/dist/messaging/slack/SlackAdapter.d.ts +23 -0
  63. package/dist/messaging/slack/SlackAdapter.d.ts.map +1 -1
  64. package/dist/messaging/slack/SlackAdapter.js +69 -0
  65. package/dist/messaging/slack/SlackAdapter.js.map +1 -1
  66. package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
  67. package/dist/native/instar-desktop-host +0 -0
  68. package/dist/scaffold/templates.d.ts.map +1 -1
  69. package/dist/scaffold/templates.js +9 -0
  70. package/dist/scaffold/templates.js.map +1 -1
  71. package/dist/server/AgentServer.d.ts +1 -0
  72. package/dist/server/AgentServer.d.ts.map +1 -1
  73. package/dist/server/AgentServer.js +1 -0
  74. package/dist/server/AgentServer.js.map +1 -1
  75. package/dist/server/routes.d.ts +4 -0
  76. package/dist/server/routes.d.ts.map +1 -1
  77. package/dist/server/routes.js +99 -4
  78. package/dist/server/routes.js.map +1 -1
  79. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  80. package/dist/testing/selfActionRegistry.js +48 -0
  81. package/dist/testing/selfActionRegistry.js.map +1 -1
  82. package/dist/threadline/A2ADeliveryTracker.d.ts +49 -0
  83. package/dist/threadline/A2ADeliveryTracker.d.ts.map +1 -1
  84. package/dist/threadline/A2ADeliveryTracker.js +81 -2
  85. package/dist/threadline/A2ADeliveryTracker.js.map +1 -1
  86. package/dist/threadline/InboundMessageGate.d.ts.map +1 -1
  87. package/dist/threadline/InboundMessageGate.js +12 -0
  88. package/dist/threadline/InboundMessageGate.js.map +1 -1
  89. package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
  90. package/dist/threadline/ThreadlineBootstrap.js +13 -2
  91. package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
  92. package/dist/threadline/ThreadlineEndpoints.d.ts.map +1 -1
  93. package/dist/threadline/ThreadlineEndpoints.js +9 -0
  94. package/dist/threadline/ThreadlineEndpoints.js.map +1 -1
  95. package/dist/threadline/ThreadlineMCPServer.d.ts +25 -1
  96. package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
  97. package/dist/threadline/ThreadlineMCPServer.js +38 -1
  98. package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
  99. package/dist/threadline/ThreadlineMcpHttpService.d.ts.map +1 -1
  100. package/dist/threadline/ThreadlineMcpHttpService.js +6 -2
  101. package/dist/threadline/ThreadlineMcpHttpService.js.map +1 -1
  102. package/dist/threadline/ThreadlineRouter.d.ts +17 -1
  103. package/dist/threadline/ThreadlineRouter.d.ts.map +1 -1
  104. package/dist/threadline/ThreadlineRouter.js +22 -2
  105. package/dist/threadline/ThreadlineRouter.js.map +1 -1
  106. package/dist/threadline/TopicLinkageHandler.d.ts +9 -0
  107. package/dist/threadline/TopicLinkageHandler.d.ts.map +1 -1
  108. package/dist/threadline/TopicLinkageHandler.js +13 -2
  109. package/dist/threadline/TopicLinkageHandler.js.map +1 -1
  110. package/dist/threadline/autoAck.d.ts +37 -21
  111. package/dist/threadline/autoAck.d.ts.map +1 -1
  112. package/dist/threadline/autoAck.js +34 -19
  113. package/dist/threadline/autoAck.js.map +1 -1
  114. package/dist/threadline/client/MessageEncryptor.d.ts +5 -0
  115. package/dist/threadline/client/MessageEncryptor.d.ts.map +1 -1
  116. package/dist/threadline/client/MessageEncryptor.js.map +1 -1
  117. package/dist/threadline/client/ThreadlineClient.d.ts +26 -0
  118. package/dist/threadline/client/ThreadlineClient.d.ts.map +1 -1
  119. package/dist/threadline/client/ThreadlineClient.js +70 -4
  120. package/dist/threadline/client/ThreadlineClient.js.map +1 -1
  121. package/dist/threadline/inboundIdLedgerWiring.d.ts.map +1 -1
  122. package/dist/threadline/inboundIdLedgerWiring.js +4 -1
  123. package/dist/threadline/inboundIdLedgerWiring.js.map +1 -1
  124. package/dist/threadline/mcp-http-client.d.ts +11 -0
  125. package/dist/threadline/mcp-http-client.d.ts.map +1 -1
  126. package/dist/threadline/mcp-http-client.js +34 -0
  127. package/dist/threadline/mcp-http-client.js.map +1 -1
  128. package/dist/threadline/mcp-stdio-entry.js +4 -1
  129. package/dist/threadline/mcp-stdio-entry.js.map +1 -1
  130. package/dist/threadline/requiredAck.d.ts +64 -0
  131. package/dist/threadline/requiredAck.d.ts.map +1 -0
  132. package/dist/threadline/requiredAck.js +117 -0
  133. package/dist/threadline/requiredAck.js.map +1 -0
  134. package/dist/threadline/requiredAckService.d.ts +223 -0
  135. package/dist/threadline/requiredAckService.d.ts.map +1 -0
  136. package/dist/threadline/requiredAckService.js +565 -0
  137. package/dist/threadline/requiredAckService.js.map +1 -0
  138. package/dist/threadline/requiredAckStore.d.ts +149 -0
  139. package/dist/threadline/requiredAckStore.d.ts.map +1 -0
  140. package/dist/threadline/requiredAckStore.js +283 -0
  141. package/dist/threadline/requiredAckStore.js.map +1 -0
  142. package/package.json +1 -1
  143. package/src/data/builtin-manifest.json +66 -66
  144. package/src/data/feature-ladders.json +3 -1
  145. package/src/data/standards-guard-index.json +2 -2
  146. package/src/data/standards-guard-index.meta.json +3 -3
  147. package/src/data/standards-registry.md +12 -2
  148. package/src/data/standards-registry.meta.json +3 -3
  149. package/src/scaffold/templates.ts +9 -0
  150. package/src/templates/scripts/slack-reply.sh +7 -0
  151. package/upgrades/1.3.1663.md +77 -0
  152. package/upgrades/cloud-key-recovery-reply.eli16.md +19 -0
  153. package/upgrades/side-effects/a2a-required-acknowledgment.md +130 -0
  154. package/upgrades/side-effects/agent-health-quiet-default.md +74 -0
  155. package/upgrades/side-effects/cloud-key-recovery-reply.md +141 -0
  156. package/upgrades/side-effects/feedback-changeset-byte-cap-calibration.md +60 -0
  157. package/upgrades/side-effects/memory-privacy-ladder-off-by-default.md +100 -0
  158. package/upgrades/side-effects/memory-privacy-linux-replies.md +109 -0
  159. package/upgrades/side-effects/person-decides-counterpart.md +62 -0
  160. package/upgrades/side-effects/session-by-tmux.md +48 -0
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-11-05T01:30:24.571Z",
5
- "instarVersion": "1.3.1661",
4
+ "generatedAt": "2026-11-05T03:28:30.720Z",
5
+ "instarVersion": "1.3.1663",
6
6
  "entryCount": 206,
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
14
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
23
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
32
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
41
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
50
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
59
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
68
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
77
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
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": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
86
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
87
87
  "since": "2025-01-01"
88
88
  },
89
89
  "hook:telegram-origin-guard": {
@@ -101,7 +101,7 @@
101
101
  "domain": "coherence",
102
102
  "sourcePath": "src/core/PostUpdateMigrator.ts",
103
103
  "installedPath": ".instar/hooks/instar/scope-coherence-collector.js",
104
- "contentHash": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
104
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
105
105
  "since": "2025-01-01"
106
106
  },
107
107
  "hook:scope-coherence-checkpoint": {
@@ -110,7 +110,7 @@
110
110
  "domain": "coherence",
111
111
  "sourcePath": "src/core/PostUpdateMigrator.ts",
112
112
  "installedPath": ".instar/hooks/instar/scope-coherence-checkpoint.js",
113
- "contentHash": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
113
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
114
114
  "since": "2025-01-01"
115
115
  },
116
116
  "hook:free-text-guard": {
@@ -119,7 +119,7 @@
119
119
  "domain": "safety",
120
120
  "sourcePath": "src/core/PostUpdateMigrator.ts",
121
121
  "installedPath": ".instar/hooks/instar/free-text-guard.sh",
122
- "contentHash": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
122
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
123
123
  "since": "2025-01-01"
124
124
  },
125
125
  "hook:claim-intercept": {
@@ -128,7 +128,7 @@
128
128
  "domain": "coherence",
129
129
  "sourcePath": "src/core/PostUpdateMigrator.ts",
130
130
  "installedPath": ".instar/hooks/instar/claim-intercept.js",
131
- "contentHash": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
131
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
132
132
  "since": "2025-01-01"
133
133
  },
134
134
  "hook:claim-intercept-response": {
@@ -137,7 +137,7 @@
137
137
  "domain": "coherence",
138
138
  "sourcePath": "src/core/PostUpdateMigrator.ts",
139
139
  "installedPath": ".instar/hooks/instar/claim-intercept-response.js",
140
- "contentHash": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
140
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
141
141
  "since": "2025-01-01"
142
142
  },
143
143
  "hook:stop-gate-router": {
@@ -146,7 +146,7 @@
146
146
  "domain": "safety",
147
147
  "sourcePath": "src/core/PostUpdateMigrator.ts",
148
148
  "installedPath": ".instar/hooks/instar/stop-gate-router.js",
149
- "contentHash": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
149
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
150
150
  "since": "2025-01-01"
151
151
  },
152
152
  "hook:auto-approve-permissions": {
@@ -155,7 +155,7 @@
155
155
  "domain": "safety",
156
156
  "sourcePath": "src/core/PostUpdateMigrator.ts",
157
157
  "installedPath": ".instar/hooks/instar/auto-approve-permissions.js",
158
- "contentHash": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
158
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
159
159
  "since": "2025-01-01"
160
160
  },
161
161
  "job:health-check": {
@@ -435,7 +435,7 @@
435
435
  "type": "route-group",
436
436
  "domain": "monitoring",
437
437
  "sourcePath": "src/server/routes.ts",
438
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
438
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
439
439
  "since": "2025-01-01"
440
440
  },
441
441
  "route-group:agents": {
@@ -443,7 +443,7 @@
443
443
  "type": "route-group",
444
444
  "domain": "sessions",
445
445
  "sourcePath": "src/server/routes.ts",
446
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
446
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
447
447
  "since": "2025-01-01"
448
448
  },
449
449
  "route-group:backups": {
@@ -451,7 +451,7 @@
451
451
  "type": "route-group",
452
452
  "domain": "operations",
453
453
  "sourcePath": "src/server/routes.ts",
454
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
454
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
455
455
  "since": "2025-01-01"
456
456
  },
457
457
  "route-group:git": {
@@ -459,7 +459,7 @@
459
459
  "type": "route-group",
460
460
  "domain": "coordination",
461
461
  "sourcePath": "src/server/routes.ts",
462
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
462
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
463
463
  "since": "2025-01-01"
464
464
  },
465
465
  "route-group:memory": {
@@ -467,7 +467,7 @@
467
467
  "type": "route-group",
468
468
  "domain": "memory",
469
469
  "sourcePath": "src/server/routes.ts",
470
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
470
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
471
471
  "since": "2025-01-01"
472
472
  },
473
473
  "route-group:semantic": {
@@ -475,7 +475,7 @@
475
475
  "type": "route-group",
476
476
  "domain": "memory",
477
477
  "sourcePath": "src/server/routes.ts",
478
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
478
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
479
479
  "since": "2025-01-01"
480
480
  },
481
481
  "route-group:status": {
@@ -483,7 +483,7 @@
483
483
  "type": "route-group",
484
484
  "domain": "monitoring",
485
485
  "sourcePath": "src/server/routes.ts",
486
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
486
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
487
487
  "since": "2025-01-01"
488
488
  },
489
489
  "route-group:capabilities": {
@@ -491,7 +491,7 @@
491
491
  "type": "route-group",
492
492
  "domain": "mapping",
493
493
  "sourcePath": "src/server/routes.ts",
494
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
494
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
495
495
  "since": "2025-01-01"
496
496
  },
497
497
  "route-group:project-map": {
@@ -499,7 +499,7 @@
499
499
  "type": "route-group",
500
500
  "domain": "mapping",
501
501
  "sourcePath": "src/server/routes.ts",
502
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
502
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
503
503
  "since": "2025-01-01"
504
504
  },
505
505
  "route-group:coherence": {
@@ -507,7 +507,7 @@
507
507
  "type": "route-group",
508
508
  "domain": "coherence",
509
509
  "sourcePath": "src/server/routes.ts",
510
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
510
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
511
511
  "since": "2025-01-01"
512
512
  },
513
513
  "route-group:topic-bindings": {
@@ -515,7 +515,7 @@
515
515
  "type": "route-group",
516
516
  "domain": "sessions",
517
517
  "sourcePath": "src/server/routes.ts",
518
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
518
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
519
519
  "since": "2025-01-01"
520
520
  },
521
521
  "route-group:context": {
@@ -523,7 +523,7 @@
523
523
  "type": "route-group",
524
524
  "domain": "context",
525
525
  "sourcePath": "src/server/routes.ts",
526
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
526
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
527
527
  "since": "2025-01-01"
528
528
  },
529
529
  "route-group:scope-coherence": {
@@ -531,7 +531,7 @@
531
531
  "type": "route-group",
532
532
  "domain": "coherence",
533
533
  "sourcePath": "src/server/routes.ts",
534
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
534
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
535
535
  "since": "2025-01-01"
536
536
  },
537
537
  "route-group:canonical-state": {
@@ -539,7 +539,7 @@
539
539
  "type": "route-group",
540
540
  "domain": "state",
541
541
  "sourcePath": "src/server/routes.ts",
542
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
542
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
543
543
  "since": "2025-01-01"
544
544
  },
545
545
  "route-group:ci": {
@@ -547,7 +547,7 @@
547
547
  "type": "route-group",
548
548
  "domain": "monitoring",
549
549
  "sourcePath": "src/server/routes.ts",
550
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
550
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
551
551
  "since": "2025-01-01"
552
552
  },
553
553
  "route-group:sessions": {
@@ -555,7 +555,7 @@
555
555
  "type": "route-group",
556
556
  "domain": "sessions",
557
557
  "sourcePath": "src/server/routes.ts",
558
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
558
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
559
559
  "since": "2025-01-01"
560
560
  },
561
561
  "route-group:jobs": {
@@ -563,7 +563,7 @@
563
563
  "type": "route-group",
564
564
  "domain": "scheduling",
565
565
  "sourcePath": "src/server/routes.ts",
566
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
566
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
567
567
  "since": "2025-01-01"
568
568
  },
569
569
  "route-group:skip-ledger": {
@@ -571,7 +571,7 @@
571
571
  "type": "route-group",
572
572
  "domain": "scheduling",
573
573
  "sourcePath": "src/server/routes.ts",
574
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
574
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
575
575
  "since": "2025-01-01"
576
576
  },
577
577
  "route-group:telegram": {
@@ -579,7 +579,7 @@
579
579
  "type": "route-group",
580
580
  "domain": "communication",
581
581
  "sourcePath": "src/server/routes.ts",
582
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
582
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
583
583
  "since": "2025-01-01"
584
584
  },
585
585
  "route-group:attention": {
@@ -587,7 +587,7 @@
587
587
  "type": "route-group",
588
588
  "domain": "communication",
589
589
  "sourcePath": "src/server/routes.ts",
590
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
590
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
591
591
  "since": "2025-01-01"
592
592
  },
593
593
  "route-group:relationships": {
@@ -595,7 +595,7 @@
595
595
  "type": "route-group",
596
596
  "domain": "relationships",
597
597
  "sourcePath": "src/server/routes.ts",
598
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
598
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
599
599
  "since": "2025-01-01"
600
600
  },
601
601
  "route-group:feedback": {
@@ -603,7 +603,7 @@
603
603
  "type": "route-group",
604
604
  "domain": "feedback",
605
605
  "sourcePath": "src/server/routes.ts",
606
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
606
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
607
607
  "since": "2025-01-01"
608
608
  },
609
609
  "route-group:updates": {
@@ -611,7 +611,7 @@
611
611
  "type": "route-group",
612
612
  "domain": "updates",
613
613
  "sourcePath": "src/server/routes.ts",
614
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
614
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
615
615
  "since": "2025-01-01"
616
616
  },
617
617
  "route-group:dispatches": {
@@ -619,7 +619,7 @@
619
619
  "type": "route-group",
620
620
  "domain": "dispatches",
621
621
  "sourcePath": "src/server/routes.ts",
622
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
622
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
623
623
  "since": "2025-01-01"
624
624
  },
625
625
  "route-group:quota": {
@@ -627,7 +627,7 @@
627
627
  "type": "route-group",
628
628
  "domain": "monitoring",
629
629
  "sourcePath": "src/server/routes.ts",
630
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
630
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
631
631
  "since": "2025-01-01"
632
632
  },
633
633
  "route-group:publishing": {
@@ -635,7 +635,7 @@
635
635
  "type": "route-group",
636
636
  "domain": "publishing",
637
637
  "sourcePath": "src/server/routes.ts",
638
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
638
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
639
639
  "since": "2025-01-01"
640
640
  },
641
641
  "route-group:private-views": {
@@ -643,7 +643,7 @@
643
643
  "type": "route-group",
644
644
  "domain": "publishing",
645
645
  "sourcePath": "src/server/routes.ts",
646
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
646
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
647
647
  "since": "2025-01-01"
648
648
  },
649
649
  "route-group:tunnel": {
@@ -651,7 +651,7 @@
651
651
  "type": "route-group",
652
652
  "domain": "networking",
653
653
  "sourcePath": "src/server/routes.ts",
654
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
654
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
655
655
  "since": "2025-01-01"
656
656
  },
657
657
  "route-group:events": {
@@ -659,7 +659,7 @@
659
659
  "type": "route-group",
660
660
  "domain": "networking",
661
661
  "sourcePath": "src/server/routes.ts",
662
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
662
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
663
663
  "since": "2025-01-01"
664
664
  },
665
665
  "route-group:evolution": {
@@ -667,7 +667,7 @@
667
667
  "type": "route-group",
668
668
  "domain": "evolution",
669
669
  "sourcePath": "src/server/routes.ts",
670
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
670
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
671
671
  "since": "2025-01-01"
672
672
  },
673
673
  "route-group:watchdog": {
@@ -675,7 +675,7 @@
675
675
  "type": "route-group",
676
676
  "domain": "monitoring",
677
677
  "sourcePath": "src/server/routes.ts",
678
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
678
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
679
679
  "since": "2025-01-01"
680
680
  },
681
681
  "route-group:topic-memory": {
@@ -683,7 +683,7 @@
683
683
  "type": "route-group",
684
684
  "domain": "memory",
685
685
  "sourcePath": "src/server/routes.ts",
686
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
686
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
687
687
  "since": "2025-01-01"
688
688
  },
689
689
  "route-group:state-sync": {
@@ -691,7 +691,7 @@
691
691
  "type": "route-group",
692
692
  "domain": "coordination",
693
693
  "sourcePath": "src/server/routes.ts",
694
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
694
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
695
695
  "since": "2025-01-01"
696
696
  },
697
697
  "route-group:intent": {
@@ -699,7 +699,7 @@
699
699
  "type": "route-group",
700
700
  "domain": "intent",
701
701
  "sourcePath": "src/server/routes.ts",
702
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
702
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
703
703
  "since": "2025-01-01"
704
704
  },
705
705
  "route-group:triage": {
@@ -707,7 +707,7 @@
707
707
  "type": "route-group",
708
708
  "domain": "safety",
709
709
  "sourcePath": "src/server/routes.ts",
710
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
710
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
711
711
  "since": "2025-01-01"
712
712
  },
713
713
  "route-group:operations": {
@@ -715,7 +715,7 @@
715
715
  "type": "route-group",
716
716
  "domain": "safety",
717
717
  "sourcePath": "src/server/routes.ts",
718
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
718
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
719
719
  "since": "2025-01-01"
720
720
  },
721
721
  "route-group:sentinel": {
@@ -723,7 +723,7 @@
723
723
  "type": "route-group",
724
724
  "domain": "safety",
725
725
  "sourcePath": "src/server/routes.ts",
726
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
726
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
727
727
  "since": "2025-01-01"
728
728
  },
729
729
  "route-group:trust": {
@@ -731,7 +731,7 @@
731
731
  "type": "route-group",
732
732
  "domain": "safety",
733
733
  "sourcePath": "src/server/routes.ts",
734
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
734
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
735
735
  "since": "2025-01-01"
736
736
  },
737
737
  "route-group:monitoring": {
@@ -739,7 +739,7 @@
739
739
  "type": "route-group",
740
740
  "domain": "monitoring",
741
741
  "sourcePath": "src/server/routes.ts",
742
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
742
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
743
743
  "since": "2025-01-01"
744
744
  },
745
745
  "route-group:commitments": {
@@ -747,7 +747,7 @@
747
747
  "type": "route-group",
748
748
  "domain": "commitments",
749
749
  "sourcePath": "src/server/routes.ts",
750
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
750
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
751
751
  "since": "2025-01-01"
752
752
  },
753
753
  "route-group:episodes": {
@@ -755,7 +755,7 @@
755
755
  "type": "route-group",
756
756
  "domain": "memory",
757
757
  "sourcePath": "src/server/routes.ts",
758
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
758
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
759
759
  "since": "2025-01-01"
760
760
  },
761
761
  "route-group:messages": {
@@ -763,7 +763,7 @@
763
763
  "type": "route-group",
764
764
  "domain": "coordination",
765
765
  "sourcePath": "src/server/routes.ts",
766
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
766
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
767
767
  "since": "2025-01-01"
768
768
  },
769
769
  "route-group:system-reviews": {
@@ -771,7 +771,7 @@
771
771
  "type": "route-group",
772
772
  "domain": "monitoring",
773
773
  "sourcePath": "src/server/routes.ts",
774
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
774
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
775
775
  "since": "2025-01-01"
776
776
  },
777
777
  "route-group:machine-mesh": {
@@ -787,7 +787,7 @@
787
787
  "type": "route-group",
788
788
  "domain": "security",
789
789
  "sourcePath": "src/server/routes.ts",
790
- "contentHash": "920105f31d4788f353f1437dfb809aa980467345a789ab299e1bcff837ce590a",
790
+ "contentHash": "c8761330d98cea3388b34fe35d0e72154e8ffd276e9a8a6b831098df91cb9fa1",
791
791
  "since": "2025-01-01"
792
792
  },
793
793
  "cli:init": {
@@ -1259,7 +1259,7 @@
1259
1259
  "type": "template",
1260
1260
  "domain": "operations",
1261
1261
  "sourcePath": "src/templates/scripts/slack-reply.sh",
1262
- "contentHash": "e9489783f4a85e6c0d38a2e46b4b1a2fd5d898c259484a01e6e02e326bc634c3",
1262
+ "contentHash": "4b3d610d88e7566dd6390721f97c697dcc533bf9e9b6d3731750d225f8c2986f",
1263
1263
  "since": "2025-01-01"
1264
1264
  },
1265
1265
  "template:smart-fetch.py": {
@@ -1563,7 +1563,7 @@
1563
1563
  "type": "subsystem",
1564
1564
  "domain": "server",
1565
1565
  "sourcePath": "src/server/AgentServer.ts",
1566
- "contentHash": "750d9c8041b4f6d569e46b0da568ea79400425199ef20fc807efe1a98434b06d",
1566
+ "contentHash": "74b9734c2e95f5b29f576967cc9ceeea1c6a1845803b4b5bf83967f726e48f62",
1567
1567
  "since": "2025-01-01"
1568
1568
  },
1569
1569
  "subsystem:session-manager": {
@@ -1571,7 +1571,7 @@
1571
1571
  "type": "subsystem",
1572
1572
  "domain": "sessions",
1573
1573
  "sourcePath": "src/core/SessionManager.ts",
1574
- "contentHash": "1893733f6942327e0588372c95c4563c614cebdc7c9cc74c7dc5e78e11cfb803",
1574
+ "contentHash": "f599e0200491b524b88522d2b1a23b7fb7ec9970f768b657120e0c047e6940fd",
1575
1575
  "since": "2025-01-01"
1576
1576
  },
1577
1577
  "subsystem:auto-updater": {
@@ -1595,7 +1595,7 @@
1595
1595
  "type": "subsystem",
1596
1596
  "domain": "updates",
1597
1597
  "sourcePath": "src/core/PostUpdateMigrator.ts",
1598
- "contentHash": "eaedbf5d880d461f2344e1d59bab82bc6ee08fb848c0ed3857e88601fe61dd4a",
1598
+ "contentHash": "07ebf9a04bf75b5dd67a9d50a644a94f4ef28b6c021317f47b03d72d33f0bd4f",
1599
1599
  "since": "2025-01-01"
1600
1600
  },
1601
1601
  "subsystem:scheduler": {
@@ -182,11 +182,13 @@
182
182
  {"id": "threadline.peerDarkNotice", "title": "Peer dark notice", "flag": {"path": "threadline.peerDarkNotice"}, "disposition": "ladder", "final": "default-on", "risk": "standard", "rare": true, "tracking": {"state": "measured", "plan": "Reads its own dark-pass rows, which come only when a peer goes dark; would-raise on a peer the presence map shows connected is a false alarm (21 of 30, none since 10-25), so it holds until those age out; live rows are raised, not would-raise."}, "rungs": {"dev-agent-live": {"soakDays": 3, "advance": {"kind": "config", "set": {"threadline.peerDarkNotice.dryRun": false}}, "metrics": [{"id": "would-raises", "role": "ran", "source": "jsonl-log", "ref": {"file": ".instar/logs/a2a-peer-dark.jsonl", "where": {"kind": "would-raise"}, "of": {"kind": "would-raise"}, "value": "count"}, "direction": "at-least", "threshold": 3, "minSamples": 3, "windowDays": 14}, {"id": "false-alarm-rate", "role": "quality", "source": "jsonl-log", "ref": {"file": ".instar/logs/a2a-peer-dark.jsonl", "where": {"kind": "would-raise", "connectedNow": true}, "of": {"kind": "would-raise"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.1, "minSamples": 3, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": ".instar/logs/a2a-peer-dark.jsonl", "where": {"dryRun": true, "kind": "error"}, "of": {"dryRun": true}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 20, "windowDays": 14}]}, "fleet": {"soakDays": 7, "advance": {"kind": "code"}, "metrics": [{"id": "raises", "role": "ran", "source": "jsonl-log", "ref": {"file": ".instar/logs/a2a-peer-dark.jsonl", "where": {"kind": "raised"}, "of": {"kind": "raised"}, "value": "count"}, "direction": "at-least", "threshold": 3, "minSamples": 3, "windowDays": 14}, {"id": "false-alarm-rate", "role": "quality", "source": "jsonl-log", "ref": {"file": ".instar/logs/a2a-peer-dark.jsonl", "where": {"kind": "raised", "connectedNow": true}, "of": {"kind": "raised"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.1, "minSamples": 3, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": ".instar/logs/a2a-peer-dark.jsonl", "where": {"dryRun": false, "kind": "error"}, "of": {"dryRun": false}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 20, "windowDays": 14}]}}, "aliases": []},
183
183
  {"id": "threadline.relayForward", "title": "A2A relay forward", "flag": {"path": "threadline.relayForward"}, "disposition": "ladder", "final": "default-on", "risk": "standard", "tracking": {"state": "measured", "plan": "Records its decisions to the shared evidence log from src/threadline/relayForward.ts."}, "rungs": {"fleet": {"soakDays": 7, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.relayForward", "kind": "fired"}, "of": {"featureId": "threadline.relayForward"}, "value": "count"}, "direction": "at-least", "threshold": 3, "minSamples": 3, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.relayForward", "kind": "error"}, "of": {"featureId": "threadline.relayForward"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 3, "windowDays": 14}]}}, "aliases": []},
184
184
  {"id": "threadline.relayUnknownSenderTrust", "title": "Unknown agent trust", "flag": {"path": "threadline.relayUnknownSenderTrust", "dryRunDefault": true}, "disposition": "ladder", "final": "default-on", "risk": "standard", "tracking": {"state": "measured", "plan": "Records its decisions to the shared evidence log from src/threadline/relayUnknownSenderTrust.ts."}, "rungs": {"dev-agent-live": {"soakDays": 3, "advance": {"kind": "config", "set": {"threadline.relayUnknownSenderTrust.dryRun": false}}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.relayUnknownSenderTrust", "kind": "fired"}, "of": {"featureId": "threadline.relayUnknownSenderTrust"}, "value": "count"}, "direction": "at-least", "threshold": 3, "minSamples": 3, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.relayUnknownSenderTrust", "kind": "error"}, "of": {"featureId": "threadline.relayUnknownSenderTrust"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 3, "windowDays": 14}]}, "fleet": {"soakDays": 7, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.relayUnknownSenderTrust", "kind": "fired"}, "of": {"featureId": "threadline.relayUnknownSenderTrust"}, "value": "count"}, "direction": "at-least", "threshold": 3, "minSamples": 3, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.relayUnknownSenderTrust", "kind": "error"}, "of": {"featureId": "threadline.relayUnknownSenderTrust"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 3, "windowDays": 14}]}}, "aliases": []},
185
+ {"id": "threadline.requiredAck", "title": "Required acknowledgment", "flag": {"path": "threadline.requiredAck"}, "disposition": "ladder", "final": "default-on", "risk": "standard", "tracking": {"state": "measured", "plan": "Records receipts, acknowledgments and unacknowledged watches to the shared evidence log from src/threadline/requiredAckService.ts; an error is a must-hear receipt that expired unsent."}, "rungs": {"fleet": {"soakDays": 7, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.requiredAck", "kind": "fired"}, "of": {"featureId": "threadline.requiredAck"}, "value": "count"}, "direction": "at-least", "threshold": 3, "minSamples": 3, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.requiredAck", "kind": "error"}, "of": {"featureId": "threadline.requiredAck"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 3, "windowDays": 14}]}}, "aliases": []},
185
186
  {"id": "threadline.singleNegotiator", "title": "Single negotiator lease", "flag": {"path": "threadline.singleNegotiator"}, "disposition": "ladder", "final": "default-on", "risk": "standard", "restartNeeded": true, "tracking": {"state": "measured", "plan": "Records its decisions to the shared evidence log from src/threadline/NegotiatorGate.ts."}, "rungs": {"dev-agent-live": {"soakDays": 3, "advance": {"kind": "config", "set": {"threadline.singleNegotiator.dryRun": false}}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.singleNegotiator", "kind": "fired"}, "of": {"featureId": "threadline.singleNegotiator"}, "value": "count"}, "direction": "at-least", "threshold": 20, "minSamples": 20, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.singleNegotiator", "kind": "error"}, "of": {"featureId": "threadline.singleNegotiator"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 20, "windowDays": 14}]}, "fleet": {"soakDays": 7, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.singleNegotiator", "kind": "fired"}, "of": {"featureId": "threadline.singleNegotiator"}, "value": "count"}, "direction": "at-least", "threshold": 20, "minSamples": 20, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.singleNegotiator", "kind": "error"}, "of": {"featureId": "threadline.singleNegotiator"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 20, "windowDays": 14}]}}, "aliases": []},
186
187
  {"id": "threadline.verifiedPairing", "title": "Verified agent pairing", "flag": {"path": "threadline.verifiedPairing"}, "disposition": "ladder", "final": "default-on", "risk": "sensitive", "rare": true, "restartNeeded": true, "tracking": {"state": "measured", "plan": "Records its decisions to the shared evidence log from src/threadline/AgentTrustManager.ts."}, "rungs": {"dev-agent-live": {"soakDays": 14, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.verifiedPairing", "kind": "fired"}, "of": {"featureId": "threadline.verifiedPairing"}, "value": "count"}, "direction": "at-least", "threshold": 1, "minSamples": 1, "windowDays": 30}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.verifiedPairing", "kind": "error"}, "of": {"featureId": "threadline.verifiedPairing"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 1, "windowDays": 30}]}, "fleet": {"soakDays": 14, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.verifiedPairing", "kind": "fired"}, "of": {"featureId": "threadline.verifiedPairing"}, "value": "count"}, "direction": "at-least", "threshold": 1, "minSamples": 1, "windowDays": 30}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.verifiedPairing", "kind": "error"}, "of": {"featureId": "threadline.verifiedPairing"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 1, "windowDays": 30}]}}, "aliases": []},
187
188
  {"id": "threadline.warmSessionA2A", "title": "Warm A2A sessions", "flag": {"path": "threadline.warmSessionA2A"}, "disposition": "ladder", "final": "default-on", "risk": "standard", "restartNeeded": true, "tracking": {"state": "measured", "plan": "Records its decisions to the shared evidence log from src/threadline/ThreadlineRouter.ts."}, "rungs": {"fleet": {"soakDays": 7, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.warmSessionA2A", "kind": "fired"}, "of": {"featureId": "threadline.warmSessionA2A"}, "value": "count"}, "direction": "at-least", "threshold": 20, "minSamples": 20, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "threadline.warmSessionA2A", "kind": "error"}, "of": {"featureId": "threadline.warmSessionA2A"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 20, "windowDays": 14}]}}, "aliases": []},
188
189
  {"id": "toneGate.advisoryMigration", "title": "Tone gate advisory", "flag": {"path": "toneGate.advisoryMigration"}, "disposition": "ladder", "final": "default-on", "risk": "standard", "tracking": {"state": "measured", "plan": "Records its decisions to the shared evidence log from src/server/routes.ts."}, "rungs": {"fleet": {"soakDays": 14, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "toneGate.advisoryMigration", "kind": "fired"}, "of": {"featureId": "toneGate.advisoryMigration"}, "value": "count"}, "direction": "at-least", "threshold": 50, "minSamples": 50, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "toneGate.advisoryMigration", "kind": "error"}, "of": {"featureId": "toneGate.advisoryMigration"}, "value": "ratio"}, "direction": "at-most", "threshold": 0, "minSamples": 50, "windowDays": 14}]}}, "aliases": []},
189
190
  {"id": "topicProfiles", "title": "Topic profiles", "flag": {"path": "topicProfiles"}, "disposition": "ladder", "final": "default-on", "risk": "sensitive", "restartNeeded": true, "tracking": {"state": "measured", "plan": "Reads its own change log: applied respawns show the write path ran (27 in 14 days, none reverted), and a breaker revert means a pin broke a session; deferred-busy rows are ignored as noise."}, "rungs": {"fleet": {"soakDays": 14, "advance": {"kind": "code"}, "metrics": [{"id": "respawns-applied", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/topic-profile-changes.jsonl", "where": {"type": "respawn-applied"}, "of": {"type": "respawn-applied"}, "value": "count"}, "direction": "at-least", "threshold": 20, "minSamples": 20, "windowDays": 14}, {"id": "breaker-revert-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/topic-profile-changes.jsonl", "where": {"type": "respawn-applied", "breakerRevert": true}, "of": {"type": "respawn-applied"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 20, "windowDays": 14}]}}, "aliases": []},
190
- {"id": "mobilePairing.permissionActions", "title": "Approve permission slips and flip feature switches from the phone", "flag": {"path": "mobilePairing.permissionActions"}, "disposition": "ladder", "final": "default-on", "risk": "sensitive", "rare": true, "tracking": {"state": "needed", "plan": "Each phone approve, decline and switch writes an audit row (src/server/mobilePermissionsRoutes.ts); recording a feature-evidence fired row per action and an error row per failed write is the step before the fleet rung."}, "rungs": {"fleet": {"soakDays": 14, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "mobilePairing.permissionActions", "kind": "fired"}, "of": {"featureId": "mobilePairing.permissionActions"}, "value": "count"}, "direction": "at-least", "threshold": 3, "minSamples": 3, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "mobilePairing.permissionActions", "kind": "error"}, "of": {"featureId": "mobilePairing.permissionActions"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 3, "windowDays": 14}]}}, "aliases": []}
191
+ {"id": "mobilePairing.permissionActions", "title": "Approve permission slips and flip feature switches from the phone", "flag": {"path": "mobilePairing.permissionActions"}, "disposition": "ladder", "final": "default-on", "risk": "sensitive", "rare": true, "tracking": {"state": "needed", "plan": "Each phone approve, decline and switch writes an audit row (src/server/mobilePermissionsRoutes.ts); recording a feature-evidence fired row per action and an error row per failed write is the step before the fleet rung."}, "rungs": {"fleet": {"soakDays": 14, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "mobilePairing.permissionActions", "kind": "fired"}, "of": {"featureId": "mobilePairing.permissionActions"}, "value": "count"}, "direction": "at-least", "threshold": 3, "minSamples": 3, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "mobilePairing.permissionActions", "kind": "error"}, "of": {"featureId": "mobilePairing.permissionActions"}, "value": "ratio"}, "direction": "at-most", "threshold": 0.05, "minSamples": 3, "windowDays": 14}]}}, "aliases": []},
192
+ {"id": "memoryPrivacy", "title": "Memory privacy (each person's facts kept private)", "flag": {"path": "memoryPrivacy"}, "disposition": "ladder", "final": "default-off-by-preference", "preference": {"decidedBy": "Justin (operator)", "reason": "Opt-in cost: it walls off working access, and 1.3.1652 restricted a live agent. Restricting features are the owner's choice, never an update's.", "decidedAt": "2026-11-04", "ref": "topic 137333, 2026-11-04; docs/specs/memory-privacy.md section 4 'No agent is restricted by an update'"}, "risk": "sensitive", "restartNeeded": true, "tracking": {"state": "needed", "plan": "Nothing logged yet. SessionManager scoped spawn should log fired per reply delivered, error per session ending with no reply or an owner refused. Until then read the nimbus Slack proof. Advance is code: only an owner turns it on."}, "rungs": {"dev-agent-live": {"soakDays": 14, "advance": {"kind": "code"}, "metrics": [{"id": "fired", "role": "ran", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "memoryPrivacy", "kind": "fired"}, "of": {"featureId": "memoryPrivacy"}, "value": "count"}, "direction": "at-least", "threshold": 10, "minSamples": 10, "windowDays": 14}, {"id": "error-rate", "role": "harm", "source": "jsonl-log", "ref": {"file": "logs/feature-evidence.jsonl", "where": {"featureId": "memoryPrivacy", "kind": "error"}, "of": {"featureId": "memoryPrivacy"}, "value": "ratio"}, "direction": "at-most", "threshold": 0, "minSamples": 10, "windowDays": 14}]}}, "aliases": []}
191
193
  ]
192
194
  }