Skip to main content

ADR-0035: Resource names are scoped by explicit namespaces

Status: Partially superseded by ADR-0079 — 2026-09-07

Context​

A workspace can host independent sets of Agents, Flows, Entries, model resources, and runtime references that legitimately reuse the same short name. Encoding ownership into the name would make references brittle and recreate hierarchical identifiers inside strings.

Decision​

Resource identity is (scope, namespace, kind, name). default is the implicit namespace for existing resources, routes, and serialized references. ADR-0079 defines the scope hierarchy and exact-versus-visible lookup semantics.

Agentstration.Resources owns the provider-neutral ResourceNamespace and ResourceAddress value types. Management metadata, Flow and Workplace identifiers, and Runtime agent references carry this value without creating dependencies between their bounded contexts.

A reference may omit its namespace. An omitted namespace resolves relative to the namespace of the resource containing the reference. An explicitly supplied namespace is preserved. Public namespace-specific routes use /api/namespaces/{namespace}/...; existing routes remain compatibility aliases for default.

SQLite logical keys and unique indexes include the scope and namespace. The pre-release scope change uses a full reseed as defined by ADR-0079.

Consequences​

  • Homonymous resources can coexist in one workspace without ambiguity.
  • Relative references remain portable when a complete resource set is moved between namespaces.
  • Cross-namespace references are visible and intentional in serialized definitions.
  • Callers that omit a namespace retain the pre-ADR behavior.
  • Namespace isolation is logical isolation inside a workspace; it does not replace tenant, workspace, or authorization checks.