@neuroverseos/governance 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +280 -405
- package/dist/adapters/autoresearch.cjs +63 -9
- package/dist/adapters/autoresearch.d.cts +1 -1
- package/dist/adapters/autoresearch.d.ts +1 -1
- package/dist/adapters/autoresearch.js +3 -3
- package/dist/adapters/deep-agents.cjs +63 -9
- package/dist/adapters/deep-agents.d.cts +2 -2
- package/dist/adapters/deep-agents.d.ts +2 -2
- package/dist/adapters/deep-agents.js +3 -3
- package/dist/adapters/express.cjs +63 -9
- package/dist/adapters/express.d.cts +1 -1
- package/dist/adapters/express.d.ts +1 -1
- package/dist/adapters/express.js +3 -3
- package/dist/adapters/index.cjs +896 -9
- package/dist/adapters/index.d.cts +278 -2
- package/dist/adapters/index.d.ts +278 -2
- package/dist/adapters/index.js +45 -8
- package/dist/adapters/langchain.cjs +63 -9
- package/dist/adapters/langchain.d.cts +2 -2
- package/dist/adapters/langchain.d.ts +2 -2
- package/dist/adapters/langchain.js +3 -3
- package/dist/adapters/openai.cjs +63 -9
- package/dist/adapters/openai.d.cts +2 -2
- package/dist/adapters/openai.d.ts +2 -2
- package/dist/adapters/openai.js +3 -3
- package/dist/adapters/openclaw.cjs +63 -9
- package/dist/adapters/openclaw.d.cts +2 -2
- package/dist/adapters/openclaw.d.ts +2 -2
- package/dist/adapters/openclaw.js +3 -3
- package/dist/{add-ROOZLU62.js → add-LYHDZ5RL.js} +1 -1
- package/dist/{behavioral-MJO34S6Q.js → behavioral-SPWPGYXL.js} +2 -2
- package/dist/{bootstrap-CQRZVOXK.js → bootstrap-IP5QMC3Q.js} +2 -2
- package/dist/{bootstrap-emitter-Q7UIJZ2O.js → bootstrap-emitter-GIMOJFOC.js} +1 -1
- package/dist/{bootstrap-parser-EEF36XDU.js → bootstrap-parser-LBLGVEMU.js} +1 -1
- package/dist/browser.global.js +149 -5
- package/dist/{build-QKOBBC23.js → build-THUEYMVT.js} +5 -4
- package/dist/{chunk-G7DJ6VOD.js → chunk-25XHSTPT.js} +2 -2
- package/dist/{chunk-A7GKPPU7.js → chunk-2VAWP6FI.js} +1 -1
- package/dist/{chunk-EMQDLDAF.js → chunk-3NZMMSOW.js} +80 -2
- package/dist/{chunk-B6OXJLJ5.js → chunk-5JUZ4HL7.js} +2 -2
- package/dist/chunk-6CV4XG3J.js +166 -0
- package/dist/{chunk-5TPFNWRU.js → chunk-7D7PZLB7.js} +3 -3
- package/dist/{chunk-ZWI3NIXK.js → chunk-7QIAF377.js} +54 -3
- package/dist/chunk-APU4OZIP.js +828 -0
- package/dist/{chunk-CTZHONLA.js → chunk-BXLTEUS4.js} +2 -2
- package/dist/{chunk-O5ABKEA7.js → chunk-DWHUZUEY.js} +2 -2
- package/dist/chunk-FMSTRBBS.js +17 -0
- package/dist/{chunk-Q6O7ZLO2.js → chunk-INWQHLPS.js} +1 -16
- package/dist/{chunk-U6U7EJZL.js → chunk-JKGPSFGH.js} +2 -2
- package/dist/{chunk-3WQLXYTP.js → chunk-MFKHTE5R.js} +2 -2
- package/dist/{chunk-TG6SEF24.js → chunk-OQU65525.js} +1 -1
- package/dist/{chunk-6S5CFQXY.js → chunk-QZ666FCV.js} +5 -5
- package/dist/{chunk-4FLICVVA.js → chunk-TD5GKIHP.js} +2 -2
- package/dist/{chunk-IS4WUH6Y.js → chunk-UTH7OXTM.js} +2 -2
- package/dist/{chunk-BNKJPUPQ.js → chunk-V4FZHJQX.js} +2 -2
- package/dist/{chunk-F66BVUYB.js → chunk-Y6WXAPKY.js} +3 -3
- package/dist/{chunk-QXBFT7NI.js → chunk-YNYCQECH.js} +2 -2
- package/dist/{chunk-PVTQQS3Y.js → chunk-YPCVY4GS.js} +31 -0
- package/dist/{chunk-W7LLXRGY.js → chunk-ZAF6JH23.js} +65 -10
- package/dist/cli/neuroverse.cjs +3176 -139
- package/dist/cli/neuroverse.js +40 -24
- package/dist/cli/plan.cjs +176 -12
- package/dist/cli/plan.js +2 -2
- package/dist/cli/run.cjs +63 -9
- package/dist/cli/run.js +2 -2
- package/dist/{configure-ai-6TZ3MCSI.js → configure-ai-5MP5DWTT.js} +5 -3
- package/dist/configure-world-XU2COHOZ.js +705 -0
- package/dist/{decision-flow-M63D47LO.js → decision-flow-3K4D72G4.js} +2 -2
- package/dist/{demo-G43RLCPK.js → demo-66MMJTEH.js} +3 -3
- package/dist/{derive-FJZVIPUZ.js → derive-5LOMN7GO.js} +6 -5
- package/dist/{doctor-6BC6X2VO.js → doctor-WIO4FLA3.js} +2 -1
- package/dist/{equity-penalties-SG5IZQ7I.js → equity-penalties-WWC7UDQD.js} +3 -3
- package/dist/{explain-RHBU2GBR.js → explain-MUSGDT67.js} +1 -1
- package/dist/{guard-AJCCGZMF.js → guard-W3BMQPBJ.js} +41 -7
- package/dist/{guard-contract-DqFcTScd.d.cts → guard-contract-CLBbTGK_.d.cts} +107 -1
- package/dist/{guard-contract-DqFcTScd.d.ts → guard-contract-CLBbTGK_.d.ts} +107 -1
- package/dist/{guard-engine-PNR6MHCM.js → guard-engine-N7TUIUU7.js} +5 -3
- package/dist/{impact-3XVDSCBU.js → impact-WIAM66IH.js} +3 -3
- package/dist/{improve-TQP4ECSY.js → improve-PJDAWW4Q.js} +3 -3
- package/dist/index.cjs +425 -62
- package/dist/index.d.cts +290 -66
- package/dist/index.d.ts +290 -66
- package/dist/index.js +33 -24
- package/dist/{init-FYPV4SST.js → init-TKIJDR7I.js} +5 -1
- package/dist/lens-IP6GIZ2Q.js +1017 -0
- package/dist/{mcp-server-5Y3ZM7TV.js → mcp-server-OG3PPVD2.js} +3 -3
- package/dist/mentraos-YFS7FMJH.js +48 -0
- package/dist/{playground-VZBNPPBO.js → playground-4BK2XQ47.js} +2 -2
- package/dist/{redteam-MZPZD3EF.js → redteam-BRZALBPP.js} +2 -2
- package/dist/{session-JYOARW54.js → session-SGRUT2UH.js} +3 -3
- package/dist/{shared-B8dvUUD8.d.cts → shared-BGzmYP5g.d.cts} +1 -1
- package/dist/{shared-Dr5Wiay8.d.ts → shared-CwGpPheR.d.ts} +1 -1
- package/dist/{simulate-LJXYBC6M.js → simulate-FGXKIH7V.js} +17 -4
- package/dist/{test-BOOR4A5F.js → test-PT44BSYG.js} +2 -2
- package/dist/{trace-PKV4KX56.js → trace-2YDNAXMK.js} +2 -2
- package/dist/{validate-RALX7CZS.js → validate-Q5O5TGLT.js} +1 -1
- package/dist/{world-BIP4GZBZ.js → world-V52ZMH26.js} +1 -1
- package/dist/{world-loader-Y6HMQH2D.js → world-loader-C4D3VPP3.js} +1 -1
- package/dist/worlds/mentraos-smartglasses.nv-world.md +423 -0
- package/dist/worlds/user-rules.nv-world.md +328 -0
- package/package.json +1 -1
- package/dist/chunk-MH7BT4VH.js +0 -15
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
---
|
|
2
|
+
world_id: mentraos-user-rules
|
|
3
|
+
name: MentraOS User Rules — Personal AI Governance
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
runtime_mode: COMPLIANCE
|
|
6
|
+
default_profile: standard
|
|
7
|
+
alternative_profile: strict
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Thesis
|
|
11
|
+
|
|
12
|
+
Every app on MentraOS runs its own AI. A nutrition app sends camera images to GPT-4 for food recognition. A meeting assistant pipes transcriptions to Claude for summarization. A navigation app feeds location data to an AI for route suggestions. The user has no unified control over what these AIs do with their data, what actions they take on the user's behalf, or what they retain after the session ends.
|
|
13
|
+
|
|
14
|
+
This world is the user's personal governance layer. It sits above every app on MentraOS. It does not care which app is running, which AI provider the app uses, or what the app's own policies say. These are the user's rules, and they override everything.
|
|
15
|
+
|
|
16
|
+
The principle: the user is king. Apps serve the user. AI serves the user. When there is a conflict between what an app wants to do and what the user has decided, the user wins. Always.
|
|
17
|
+
|
|
18
|
+
This world governs three things: (1) what data AI can access and where it can send that data, (2) what actions AI can take on the user's behalf, and (3) what happens to user data after the AI is done with it. Everything else — hardware permissions, session isolation, platform constraints — is handled by the platform world. This world only governs the AI interaction layer.
|
|
19
|
+
|
|
20
|
+
# Invariants
|
|
21
|
+
|
|
22
|
+
- `user_rules_override_all` — User rules take precedence over every app's configured behavior. No app can relax a user rule. An app can be more restrictive than the user's rules, never less. (structural, immutable)
|
|
23
|
+
- `no_ai_action_without_display` — AI must never take an action on the user's behalf without first showing the user what it intends to do on the glasses display. The user must see it before it happens. (structural, immutable)
|
|
24
|
+
- `no_silent_data_exfiltration` — User data (transcription, images, location, calendar, contacts) must never be sent to an external AI API without the user being aware that it is happening. Awareness means the app declared this data flow at install time and the user approved it. (structural, immutable)
|
|
25
|
+
- `no_ai_financial_transactions` — AI must never initiate, authorize, or complete a financial transaction (purchase, transfer, subscription, tip) without explicit per-transaction user confirmation. Blanket pre-authorization is not valid consent. (structural, immutable)
|
|
26
|
+
- `no_ai_impersonation` — AI must never send messages, emails, social media posts, or any communication that appears to come from the user without explicit per-message user confirmation. (structural, immutable)
|
|
27
|
+
- `session_data_default_ephemeral` — By default, all user data processed during a session (transcriptions, images, AI conversation history) is ephemeral and must not be retained by the app or AI provider after the session ends. Apps that need retention must declare it and the user must opt in. (structural, immutable)
|
|
28
|
+
- `ai_transparency_required` — The user must be able to see, at any time, what data an app's AI currently has access to and what it has sent externally during the current session. No black-box AI processing. (structural, immutable)
|
|
29
|
+
|
|
30
|
+
# State
|
|
31
|
+
|
|
32
|
+
## ai_data_sends
|
|
33
|
+
- type: number
|
|
34
|
+
- min: 0
|
|
35
|
+
- max: 100000
|
|
36
|
+
- step: 1
|
|
37
|
+
- default: 0
|
|
38
|
+
- label: AI Data Sends
|
|
39
|
+
- description: Number of times any app sent user data (transcription, image, location) to an external AI API during this session
|
|
40
|
+
|
|
41
|
+
## ai_data_sends_undeclared
|
|
42
|
+
- type: number
|
|
43
|
+
- min: 0
|
|
44
|
+
- max: 1000
|
|
45
|
+
- step: 1
|
|
46
|
+
- default: 0
|
|
47
|
+
- label: Undeclared AI Data Sends
|
|
48
|
+
- description: Number of times an app sent user data to an AI API without having declared that data flow at install time
|
|
49
|
+
|
|
50
|
+
## ai_auto_actions
|
|
51
|
+
- type: number
|
|
52
|
+
- min: 0
|
|
53
|
+
- max: 10000
|
|
54
|
+
- step: 1
|
|
55
|
+
- default: 0
|
|
56
|
+
- label: AI Auto-Actions
|
|
57
|
+
- description: Number of actions AI took on the user's behalf (messages sent, purchases made, settings changed)
|
|
58
|
+
|
|
59
|
+
## ai_auto_actions_unconfirmed
|
|
60
|
+
- type: number
|
|
61
|
+
- min: 0
|
|
62
|
+
- max: 1000
|
|
63
|
+
- step: 1
|
|
64
|
+
- default: 0
|
|
65
|
+
- label: Unconfirmed AI Auto-Actions
|
|
66
|
+
- description: Number of AI actions taken without showing the user first and getting confirmation
|
|
67
|
+
|
|
68
|
+
## ai_purchase_attempts
|
|
69
|
+
- type: number
|
|
70
|
+
- min: 0
|
|
71
|
+
- max: 100
|
|
72
|
+
- step: 1
|
|
73
|
+
- default: 0
|
|
74
|
+
- label: AI Purchase Attempts
|
|
75
|
+
- description: Number of times AI attempted to initiate a financial transaction
|
|
76
|
+
|
|
77
|
+
## ai_message_sends
|
|
78
|
+
- type: number
|
|
79
|
+
- min: 0
|
|
80
|
+
- max: 1000
|
|
81
|
+
- step: 1
|
|
82
|
+
- default: 0
|
|
83
|
+
- label: AI Message Sends
|
|
84
|
+
- description: Number of messages AI sent on the user's behalf (email, SMS, social media, chat)
|
|
85
|
+
|
|
86
|
+
## ai_message_sends_unconfirmed
|
|
87
|
+
- type: number
|
|
88
|
+
- min: 0
|
|
89
|
+
- max: 100
|
|
90
|
+
- step: 1
|
|
91
|
+
- default: 0
|
|
92
|
+
- label: Unconfirmed AI Message Sends
|
|
93
|
+
- description: Messages AI sent on user's behalf without per-message confirmation
|
|
94
|
+
|
|
95
|
+
## data_retention_violations
|
|
96
|
+
- type: number
|
|
97
|
+
- min: 0
|
|
98
|
+
- max: 100
|
|
99
|
+
- step: 1
|
|
100
|
+
- default: 0
|
|
101
|
+
- label: Data Retention Violations
|
|
102
|
+
- description: Number of times an app retained session data beyond session end without user opt-in
|
|
103
|
+
|
|
104
|
+
## ai_transparency_requests
|
|
105
|
+
- type: number
|
|
106
|
+
- min: 0
|
|
107
|
+
- max: 10000
|
|
108
|
+
- step: 1
|
|
109
|
+
- default: 0
|
|
110
|
+
- label: AI Transparency Requests
|
|
111
|
+
- description: Number of times user requested to see what data AI has access to
|
|
112
|
+
|
|
113
|
+
## ai_transparency_fulfilled
|
|
114
|
+
- type: number
|
|
115
|
+
- min: 0
|
|
116
|
+
- max: 10000
|
|
117
|
+
- step: 1
|
|
118
|
+
- default: 0
|
|
119
|
+
- label: AI Transparency Fulfilled
|
|
120
|
+
- description: Number of transparency requests that were successfully fulfilled by the app
|
|
121
|
+
|
|
122
|
+
## active_ai_providers
|
|
123
|
+
- type: number
|
|
124
|
+
- min: 0
|
|
125
|
+
- max: 20
|
|
126
|
+
- step: 1
|
|
127
|
+
- default: 0
|
|
128
|
+
- label: Active AI Providers
|
|
129
|
+
- description: Number of distinct AI API providers currently receiving user data across all running apps
|
|
130
|
+
|
|
131
|
+
## session_duration_minutes
|
|
132
|
+
- type: number
|
|
133
|
+
- min: 0
|
|
134
|
+
- max: 1440
|
|
135
|
+
- step: 1
|
|
136
|
+
- default: 0
|
|
137
|
+
- label: Session Duration
|
|
138
|
+
- description: How long the current session has been active in minutes
|
|
139
|
+
|
|
140
|
+
# Assumptions
|
|
141
|
+
|
|
142
|
+
## standard
|
|
143
|
+
- name: Standard User Rules
|
|
144
|
+
- description: Default user governance. AI can process user data through declared APIs. AI can suggest actions but must show them on display before executing. All auto-actions require confirmation. Data is ephemeral by default. Financial transactions always require per-transaction confirmation. Messages always require per-message confirmation.
|
|
145
|
+
- ai_data_policy: declared_apis_only
|
|
146
|
+
- ai_action_policy: suggest_and_confirm
|
|
147
|
+
- ai_purchase_policy: per_transaction_confirmation
|
|
148
|
+
- ai_messaging_policy: per_message_confirmation
|
|
149
|
+
- data_retention_policy: ephemeral_unless_opted_in
|
|
150
|
+
- transparency_policy: on_request
|
|
151
|
+
|
|
152
|
+
## strict
|
|
153
|
+
- name: Strict User Rules
|
|
154
|
+
- description: Maximum user control. AI can only process data locally or through a single user-designated AI provider. Every AI data send requires real-time confirmation. No auto-actions of any kind. No data retention. Transparency dashboard always visible.
|
|
155
|
+
- ai_data_policy: single_provider_confirmed
|
|
156
|
+
- ai_action_policy: no_auto_actions
|
|
157
|
+
- ai_purchase_policy: blocked
|
|
158
|
+
- ai_messaging_policy: blocked
|
|
159
|
+
- data_retention_policy: never_retain
|
|
160
|
+
- transparency_policy: always_visible
|
|
161
|
+
|
|
162
|
+
## permissive
|
|
163
|
+
- name: Permissive User Rules
|
|
164
|
+
- description: Minimal friction. AI can use declared APIs freely. AI can auto-execute low-risk actions (display content, read data) without confirmation. Medium-risk actions (send messages, change settings) require confirmation. High-risk actions (purchases, account changes) always require confirmation. Data retention allowed for opted-in apps.
|
|
165
|
+
- ai_data_policy: declared_apis_freely
|
|
166
|
+
- ai_action_policy: auto_low_risk_confirm_high_risk
|
|
167
|
+
- ai_purchase_policy: per_transaction_confirmation
|
|
168
|
+
- ai_messaging_policy: per_message_confirmation
|
|
169
|
+
- data_retention_policy: app_declared_allowed
|
|
170
|
+
- transparency_policy: on_request
|
|
171
|
+
|
|
172
|
+
# Rules
|
|
173
|
+
|
|
174
|
+
## rule-001: Undeclared AI Data Exfiltration (structural)
|
|
175
|
+
An app sent user data to an AI API it did not declare at install time. The user never agreed to this data flow.
|
|
176
|
+
|
|
177
|
+
When ai_data_sends_undeclared > 0 [state]
|
|
178
|
+
Then user_trust *= 0.15
|
|
179
|
+
Collapse: user_trust < 0.10
|
|
180
|
+
|
|
181
|
+
> trigger: App transmitted user data (transcription, camera image, location, calendar) to an AI API endpoint not listed in the app's declared data flows at registration.
|
|
182
|
+
> rule: Apps must declare every external AI API they send user data to. This declaration happens at app registration on console.mentra.glass. Undeclared data flows mean the user was never informed and never consented. This is the most severe violation — it breaks the fundamental trust contract.
|
|
183
|
+
> shift: User trust collapses. App is suspended immediately.
|
|
184
|
+
> effect: User trust reduced to 15%. Collapse imminent.
|
|
185
|
+
|
|
186
|
+
## rule-002: AI Action Without Display (structural)
|
|
187
|
+
AI took an action on the user's behalf without first showing it on the glasses display.
|
|
188
|
+
|
|
189
|
+
When ai_auto_actions_unconfirmed > 0 [state]
|
|
190
|
+
Then user_trust *= 0.25
|
|
191
|
+
Collapse: user_trust < 0.10
|
|
192
|
+
|
|
193
|
+
> trigger: AI executed an action (sent a message, changed a setting, made a request) without first rendering the intended action on the glasses display for user review.
|
|
194
|
+
> rule: The user must see what AI intends to do before it does it. This is not about blocking AI actions — it is about ensuring the user is never surprised. Show it on the display. Wait for confirmation. Then act. Skipping the display step means the AI acted in the dark.
|
|
195
|
+
> shift: User trust drops severely. All AI auto-actions suspended for this app.
|
|
196
|
+
> effect: User trust reduced to 25%.
|
|
197
|
+
|
|
198
|
+
## rule-003: AI Financial Transaction (structural)
|
|
199
|
+
AI attempted to initiate a financial transaction. These always require explicit per-transaction confirmation.
|
|
200
|
+
|
|
201
|
+
When ai_purchase_attempts > 0 [state] AND ai_auto_actions_unconfirmed > 0 [state]
|
|
202
|
+
Then user_trust *= 0.10
|
|
203
|
+
Collapse: user_trust < 0.10
|
|
204
|
+
|
|
205
|
+
> trigger: AI attempted to make a purchase, transfer money, subscribe to a service, or complete any financial transaction without per-transaction user confirmation.
|
|
206
|
+
> rule: Financial transactions are irreversible and consequential. No amount of convenience justifies letting AI spend the user's money without explicit confirmation for each transaction. Pre-authorization ("buy anything under $10") is not valid consent. Each transaction is confirmed individually.
|
|
207
|
+
> shift: User trust collapses. App's financial capabilities permanently revoked.
|
|
208
|
+
> effect: User trust reduced to 10%. Immediate collapse.
|
|
209
|
+
|
|
210
|
+
## rule-004: AI Impersonation (structural)
|
|
211
|
+
AI sent a message that appears to come from the user without per-message confirmation.
|
|
212
|
+
|
|
213
|
+
When ai_message_sends_unconfirmed > 0 [state]
|
|
214
|
+
Then user_trust *= 0.20
|
|
215
|
+
Collapse: user_trust < 0.10
|
|
216
|
+
|
|
217
|
+
> trigger: AI composed and sent an email, text message, social media post, or chat message in the user's name without the user reviewing and confirming that specific message.
|
|
218
|
+
> rule: Messages sent in the user's name are the user's reputation. A poorly worded AI-generated email sent without review can damage relationships, careers, or legal standing. Every message must be shown on the display and confirmed before sending. "Auto-reply" features must still show each reply.
|
|
219
|
+
> shift: User trust drops severely. App's messaging capabilities suspended.
|
|
220
|
+
> effect: User trust reduced to 20%.
|
|
221
|
+
|
|
222
|
+
## rule-005: Data Retention Violation (structural)
|
|
223
|
+
App retained user data after the session ended without the user having opted in to retention.
|
|
224
|
+
|
|
225
|
+
When data_retention_violations > 0 [state]
|
|
226
|
+
Then user_trust *= 0.30
|
|
227
|
+
Collapse: user_trust < 0.10
|
|
228
|
+
|
|
229
|
+
> trigger: Session ended and the app or its AI provider retained user data (transcriptions, images, conversation history, location logs) without the user having explicitly opted in to data retention for this app.
|
|
230
|
+
> rule: Session data is ephemeral by default. When the session ends, the data goes away. Apps that need to retain data (e.g., a note-taking app that saves summaries) must declare retention at install time and the user must opt in. Retaining without opt-in is a privacy violation.
|
|
231
|
+
> shift: User trust drops. App flagged for data handling review.
|
|
232
|
+
> effect: User trust reduced to 30%.
|
|
233
|
+
|
|
234
|
+
## rule-006: Transparency Failure (degradation)
|
|
235
|
+
User asked to see what data AI has access to, and the app failed to provide it.
|
|
236
|
+
|
|
237
|
+
When ai_transparency_requests > 0 [state] AND ai_transparency_fulfilled == 0 [state]
|
|
238
|
+
Then user_trust *= 0.50
|
|
239
|
+
|
|
240
|
+
> trigger: User invoked the transparency feature (asking "what data does this app have?") and the app did not provide a clear answer within a reasonable time.
|
|
241
|
+
> rule: Transparency is a user right, not a feature. When the user asks what data AI has, the app must answer. This means the app must track what it has sent to its AI provider and be able to report it. Apps that cannot answer transparency requests are black boxes.
|
|
242
|
+
> shift: User trust degrades. App marked as non-transparent.
|
|
243
|
+
> effect: User trust reduced to 50%.
|
|
244
|
+
|
|
245
|
+
## rule-007: Excessive AI Providers (degradation)
|
|
246
|
+
Too many distinct AI providers are receiving user data simultaneously across running apps.
|
|
247
|
+
|
|
248
|
+
When active_ai_providers > 5 [state]
|
|
249
|
+
Then user_trust *= 0.70
|
|
250
|
+
|
|
251
|
+
> trigger: More than 5 distinct AI API providers are currently receiving user data across all running apps (e.g., OpenAI for one app, Claude for another, Gemini for a third, plus two more).
|
|
252
|
+
> rule: Every AI provider that receives user data is an additional attack surface and privacy risk. The user's transcription going to 6 different AI companies simultaneously means 6 different privacy policies, 6 different data retention practices, and 6 different potential breach vectors. This is a warning, not a block.
|
|
253
|
+
> shift: User trust degrades mildly. User notified of provider count.
|
|
254
|
+
> effect: User trust reduced to 70%.
|
|
255
|
+
|
|
256
|
+
## rule-008: Clean AI Session (advantage)
|
|
257
|
+
All AI interactions followed user rules — data flows declared, actions confirmed, no retention violations.
|
|
258
|
+
|
|
259
|
+
When ai_data_sends > 0 [state] AND ai_data_sends_undeclared == 0 [state] AND ai_auto_actions_unconfirmed == 0 [state] AND data_retention_violations == 0 [state]
|
|
260
|
+
Then user_trust *= 1.10
|
|
261
|
+
|
|
262
|
+
> trigger: The session has active AI usage (data has been sent, actions have been taken) and zero violations of user rules have occurred.
|
|
263
|
+
> rule: When AI works within the user's rules, trust grows. Apps that respect declared data flows, show actions before executing, and handle data ephemerally earn the user's confidence. This is how the ecosystem should work.
|
|
264
|
+
> shift: User trust improves. App earns reliability reputation.
|
|
265
|
+
> effect: User trust boosted by 10%.
|
|
266
|
+
|
|
267
|
+
## rule-009: Full Transparency Compliance (advantage)
|
|
268
|
+
Every transparency request was fulfilled. The app is not a black box.
|
|
269
|
+
|
|
270
|
+
When ai_transparency_requests > 0 [state] AND ai_transparency_fulfilled == ai_transparency_requests [state]
|
|
271
|
+
Then user_trust *= 1.12
|
|
272
|
+
|
|
273
|
+
> trigger: User has made transparency requests and every single one was fulfilled by the app.
|
|
274
|
+
> rule: An app that answers every transparency question earns deep trust. The user knows exactly what's happening with their data at all times. This is the gold standard for AI governance on wearables.
|
|
275
|
+
> shift: User trust improves significantly. App earns transparency badge.
|
|
276
|
+
> effect: User trust boosted by 12%.
|
|
277
|
+
|
|
278
|
+
## rule-010: Confirmed AI Actions (advantage)
|
|
279
|
+
AI actions were taken with proper confirmation flow — shown on display, user approved, then executed.
|
|
280
|
+
|
|
281
|
+
When ai_auto_actions > 0 [state] AND ai_auto_actions_unconfirmed == 0 [state] AND ai_message_sends_unconfirmed == 0 [state]
|
|
282
|
+
Then user_trust *= 1.08
|
|
283
|
+
|
|
284
|
+
> trigger: AI has taken actions on the user's behalf and every single one was properly confirmed through the display-then-confirm flow.
|
|
285
|
+
> rule: AI that asks before acting earns trust. The slight friction of confirmation is the price of user sovereignty. Apps that pay this price reliably build a track record of respectful AI interaction.
|
|
286
|
+
> shift: User trust improves. App's AI interaction pattern validated.
|
|
287
|
+
> effect: User trust boosted by 8%.
|
|
288
|
+
|
|
289
|
+
# Gates
|
|
290
|
+
|
|
291
|
+
- SOVEREIGN: user_trust >= 90
|
|
292
|
+
- COMFORTABLE: user_trust >= 65
|
|
293
|
+
- CAUTIOUS: user_trust >= 40
|
|
294
|
+
- RESTRICTED: user_trust > 10
|
|
295
|
+
- REVOKED: user_trust <= 10
|
|
296
|
+
|
|
297
|
+
# Outcomes
|
|
298
|
+
|
|
299
|
+
## user_trust
|
|
300
|
+
- type: number
|
|
301
|
+
- range: 0-100
|
|
302
|
+
- display: percentage
|
|
303
|
+
- label: User Trust Score
|
|
304
|
+
- primary: true
|
|
305
|
+
|
|
306
|
+
## ai_data_sends
|
|
307
|
+
- type: number
|
|
308
|
+
- range: 0-100000
|
|
309
|
+
- display: integer
|
|
310
|
+
- label: AI Data Sends
|
|
311
|
+
|
|
312
|
+
## ai_auto_actions_unconfirmed
|
|
313
|
+
- type: number
|
|
314
|
+
- range: 0-1000
|
|
315
|
+
- display: integer
|
|
316
|
+
- label: Unconfirmed AI Actions
|
|
317
|
+
|
|
318
|
+
## data_retention_violations
|
|
319
|
+
- type: number
|
|
320
|
+
- range: 0-100
|
|
321
|
+
- display: integer
|
|
322
|
+
- label: Data Retention Violations
|
|
323
|
+
|
|
324
|
+
## active_ai_providers
|
|
325
|
+
- type: number
|
|
326
|
+
- range: 0-20
|
|
327
|
+
- display: integer
|
|
328
|
+
- label: Active AI Providers
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neuroverseos/governance",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Deterministic governance engine for AI agents — enforce worlds (permanent rules) and plans (mission constraints) with full audit trace",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|