AlphOne 0.12.0
Every caller stands in a tenant.
Added
core.tenantsandcore.tenant_members, with one tenant named Default seeded by the migration. Every user belongs to it and the graph answers each caller its own tenant.Query.tenant, answering the caller's own tenant with no argument, derived from the authenticated identity.
Notes and fixes
- Nothing is enrolled anywhere. A user with no membership row is answered the default, so there is no backfill, nothing to run at the call sites, and no path that can forget a user. Rows exist only for users deliberately placed elsewhere.
- The fallback lives in the SQL. One left join ordered by membership presence returns either the placed tenant or the default in a single round trip.
- Resolution happens in the resolver rather than in middleware, so the session, the API token and the in process MCP paths all reach it.
- An upgraded install needs no action. The migration adds the tables and the default tenant, reads nothing across schemas, and every existing user is answered the default from the first request.
- Tenant management is not in this release. Creating, renaming and moving members lives outside core.
- The build moves to Go 1.26.6, clearing seven standard library advisories reported against 1.26.5.