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
Browse filesBrowse the repository at this point in the historyBrowse files
authored
fix(rest): require the resolved environment to belong to the caller at GET /ui/view/:object/:type (#13625)
* fix(rest): require the resolved environment to belong to the caller at GET /ui/view/:object/:type
Maintainer ruling 2026-08-30 (option C): the seam must resolve identity AND
compare the resolved environment against the one the caller is entitled to, on
both naming channels (X-Environment-Id header and bound hostname), with a
signalled refusal on an envRegistry.resolveById validation failure rather than a
silent fallback to the default environment.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UngCYXF98BVpYA9hfz6NYk
* test(rest): re-anchor the census pins the seam repair moved
- execctx-consumer-census: the UI-view route joins as BARE site 53 behind the
shared anonymous floor (72->73 sites, 89->92 mentions, 52->53 bare); the seam
drops its local .catch so it does not become the only site that is both
locally caught AND behind the floor.
- rest-exec-ctx-principal-kind: __authEnvironmentId named in the golden key set.
- system-context-census: 5 doc anchors re-anchored by the gate's own --fix,
pure line rot (+124 on every one).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UngCYXF98BVpYA9hfz6NYk
* test(qa): re-anchor the authz probe blind-spot enforceAuth control, 61 -> 64
The fourth count anchor this seam repair moves, and the one a package-scoped
run cannot see: packages/qa/dogfood cites other packages' files and is not
reached by `pnpm --filter @objectstack/rest ...` -- only the Dogfood
Regression Gate runs it.
Re-anchored, NOT relaxed: the control proves the census still reads the file
it thinks it does, and a rising enforceAuth is exactly what this card causes.
Measured +3 over the whole file (the derivation counts the bare term, comments
included): one new call site (52 -> 53) plus two prose mentions. The sibling
numbers were re-derived and did not move -- population 80, reachable 19,
registrars 17, mounts 80 -- which is what says this is a guard change and not
a surface change.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UngCYXF98BVpYA9hfz6NYk
---------
Co-authored-by: Claude <steve@objectstack.ai>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
| 50 |`manage_metadata` bypassed on metadata writes | runtime, rest | Get: schema writes without the capability |`domains/meta.ts:471`, `:874`, `rest-server.ts:4284`, `:5647`, `:5895`, `:6258`, `:6451`|
161
+
| 50 |`manage_metadata` bypassed on metadata writes | runtime, rest | Get: schema writes without the capability |`domains/meta.ts:471`, `:874`, `rest-server.ts:4408`, `:5771`, `:6019`, `:6382`, `:6575`|
162
162
| 51 | The shared metadata-write verdict itself returns `allowed`| metadata-core | Get: the one function all of row 50's doors consult answers yes before any capability is examined |`meta-write-capability.ts:134`|
163
163
| 52 | Anonymous-deny seam satisfied on the domain dispatchers and the package/federation routes | runtime, rest | Get: passes with no `userId`|`domains/actions.ts:411`, `domains/ai.ts:60`, `domains/automation.ts:989`, `domains/meta.ts:232`, `domains/security.ts:78`, `domains/packages.ts:246`, `external-datasource-routes.ts:302`, `package-routes.ts:97`|
164
164
| 53 | MCP principal check satisfied | runtime | Get: MCP surface reachable with no user |`domains/mcp.ts:61`|
0 commit comments