You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/docs/deployment/environment-variables.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -257,7 +257,7 @@ OS_MCP_STDIO_ENABLED=true OS_MCP_STDIO_API_KEY=osk_... os start # start the lo
257
257
|:---|:---|:---|:---|
258
258
|`OS_MCP_SERVER_ENABLED`| boolean |`true`| The MCP **HTTP** surface (`/api/v1/mcp`) is a core capability and defaults **on**. Set `false` to disable it (endpoint 404s, the Connect-an-Agent page disappears). |
259
259
|`OS_MCP_STDIO_ENABLED`| boolean |`false`| Auto-start the long-lived **stdio** transport at boot. Opt-in and **stricter** than the HTTP surface. **Requires `OS_MCP_STDIO_API_KEY`** — stdio runs as that key's identity with RLS/FLS/tenant applied; if the key is missing or invalid, boot **fails closed** (stdio refuses to start). See ADR-0101. |
260
-
|`OS_MCP_STDIO_API_KEY`| string | — | The `osk_...` API key the **stdio** transport runs as. Resolved through the same verify chain as the HTTP/REST surfaces, so reads are scoped to that identity's permissions. Mint one from **Setup → Connect an Agent**(or `POST /api/v1/keys`). For full authority, mint a key on a platform-admin or dedicated **service** identity — there is deliberately no `system`/unscoped bypass. |
260
+
|`OS_MCP_STDIO_API_KEY`| string | — | The `osk_...` API key the **stdio** transport runs as. Resolved through the same verify chain as the HTTP/REST surfaces, so reads are scoped to that identity's permissions. Mint one from the **Connect an Agent** page — **Account → Developer** for any signed-in user, **Setup → Connect an Agent**for platform admins — or `POST /api/v1/keys`. For full authority, mint a key on a platform-admin or dedicated **service** identity — there is deliberately no `system`/unscoped bypass. |
261
261
|`OS_MCP_SERVER_NAME`| string |`objectstack`| Server name advertised to MCP clients. |
262
262
|`OS_MCP_SERVER_TRANSPORT`| enum |`stdio`|`stdio`\|`http`. Use `http` (Streamable HTTP) for a remote client; `stdio` for a local one. |
Copy file name to clipboardExpand all lines: content/docs/permissions/tenant-audit-census.mdx
+23-2Lines changed: 23 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -217,6 +217,27 @@ cannot read, and they are neither in nor out.
217
217
| object name is an `object: string` parameter | 19 |
218
218
| object name is some other run-time expression | 57 |
219
219
220
+
### Subtractions the census could NOT defend — enforced
221
+
222
+
A same-named call on something that is not a data engine is subtracted, and the
223
+
subtraction is DEFENSIBLE when this census can name why: the receiver is a `node:`
224
+
builtin, a value it watched being constructed, a language global, a type THIS
225
+
corpus declares and the door rule rejected, or an `UNTYPED_RECEIVERS` row.
226
+
227
+
⚠️ Counted below are the subtractions it can name no such fact for — the
228
+
receiver carries a declared type the engine type index does not hold, and that
229
+
index is built from TRACKED sources only, deliberately. An untracked, generated
230
+
or dependency-owned declaration is one this census never saw, and «never saw it»
231
+
must not be spelled the same way as «read it, not an engine».
232
+
233
+
| what | count |
234
+
| :--- | ---: |
235
+
| write calls subtracted with no defensible reason |**3**|
236
+
| …whose declared type text states an engine door anyway |**2**|
237
+
238
+
Every one of them is listed, by receiver and by the type text that could not be
239
+
placed, in [`docs/audits/2026-08-tenant-audit-write-call-sites.counts.md`](https://github.com/objectstack-ai/objectstack/blob/main/docs/audits/2026-08-tenant-audit-write-call-sites.counts.md).
240
+
220
241
The corpus walked is every tracked non-test source under `packages/services/`
221
242
and `packages/plugins/`; calls to a same-named method on something that is not
222
243
a data engine were subtracted. Every site is listed in
@@ -232,11 +253,11 @@ holds still. They are required to be HERE and to say WHEN they were true;
232
253
their values are not compared. The reasoning, and the measurement behind it,
233
254
are in `scripts/check-tenant-audit-census.mjs`.
234
255
235
-
Measured on 2026-09-16 at `11daf7f69`.
256
+
Measured on 2026-09-18 at `02bdeaaf2`.
236
257
237
258
| corpus scale (not enforced) | count |
238
259
| :--- | ---: |
239
-
| tracked non-test sources scanned |570|
260
+
| tracked non-test sources scanned |573|
240
261
| engine-shaped types recognised | 63 |
241
262
| declared objects in the registry | 117 |
242
263
| same-named calls subtracted as non-engine | 146 |
0 commit comments