Skip to content

Partition-owning types declared in mesh content: nested instances, bulk-create compensation, one resolution per create, i18n mirror sync #4449

Description

@rbuergi

Follow-up to #4447 (every partition-owning NodeType can be created at the top level, not only Space). Review findings deliberately left out of that PR because none of them is made worse by it — each is pre-existing:

  1. Nested instances of an in-mesh owning type are not refused. OwnsPartitionProvisioningValidator refuses a nested instance only for types registered in src/; for a type declared in mesh content (Crm/Client) a nested create was never refused and still is not. Closing it adds a definition read to every nested create of every in-mesh type, which is why it was not folded into a fix for the top-level path. Decide: read per create (non-System only), or record OwnsPartition where the create path already has the type.
  2. Bulk create does not compensate a failed critical post-creation handler. CreateNodesRequest.BulkRefusal permits top-level owning roots; the bulk runner invokes FailsCreateOnError handlers but does not run CompensateFailedCreate when Handle faults, so a failed owner grant leaves the root behind. Same gap exists for Space.
  3. The ownership declaration is resolved once per check (RLS, write guard, provisioning, post-creation) for a top-level in-mesh create. Every disagreement fails closed after fix: every partition-owning NodeType can be created at the top level, not only Space #4447, but one resolution per create operation would be cheaper and consistent.
  4. i18n mirror sync: fix: every partition-owning NodeType can be created at the top level, not only Space #4447 adds access.partitionCreate.* keys to strings.{en,de}.json; run npm run sync:i18n -- --ref <merged core sha> in MeshWeaver.Plugins (clients/react/src/i18n/) after it merges.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions