You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2025/03/01 06:14:36 UTC

(causeway) branch main updated: CAUSEWAY-3859: flattens ActionSemanticsFacet

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/main by this push:
     new fe4b8fd8d8f CAUSEWAY-3859: flattens ActionSemanticsFacet
fe4b8fd8d8f is described below

commit fe4b8fd8d8f85313638faf79fefd598c96de42e0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Mar 1 07:14:25 2025 +0100

    CAUSEWAY-3859: flattens ActionSemanticsFacet
---
 .../action/ActionAnnotationFacetFactory.java       |  11 +-
 ...ctionSemanticsFacetFallbackToNonIdempotent.java |  31 -
 .../ActionSemanticsFacetForActionAnnotation.java   |  47 -
 .../actions/semantics/ActionSemanticsFacet.java    |  30 +-
 .../semantics/ActionSemanticsFacetAbstract.java    |  38 -
 .../CollectionAnnotationFacetFactory.java          |   4 +-
 .../CommandPublishingFacetForActionAnnotation.java |   9 +-
 ...ommandPublishingFacetForPropertyAnnotation.java |   3 +-
 ...xecutionPublishingFacetForActionAnnotation.java |   9 +-
 ...cutionPublishingFacetForPropertyAnnotation.java |   3 +-
 .../property/PropertyAnnotationFacetFactory.java   |   4 +-
 .../metamodel/spec/impl/ObjectActionDefault.java   |   7 +-
 .../causeway/core/metamodel/util/Facets.java       |  14 +-
 ...tationFacetFactoryTest_executionPublishing.java |  16 +-
 ...icsFacetFallbackToNonIdempotentFactoryTest.java |   9 +-
 ...hPdfJsViewer_IntegTest.dump_facets.approved.xml |  32 +-
 ..._MixinDomain_IntegTest.dump_facets.approved.xml |  32 +-
 ...hPdfjsViewer_IntegTest.dump_facets.approved.xml |  24 +-
 ...r_PropDomain_IntegTest.dump_facets.approved.xml |  24 +-
 .../MetaModelRegressionTest.verify.approved.xml    | 972 ++++++++++-----------
 20 files changed, 614 insertions(+), 705 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index c005b8d05d3..374365cd910 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -23,6 +23,7 @@
 import jakarta.inject.Inject;
 
 import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.SemanticsOf;
 import org.apache.causeway.applib.mixins.system.HasInteractionId;
 import org.apache.causeway.commons.semantics.CollectionSemantics;
 import org.apache.causeway.core.metamodel.context.MetaModelContext;
@@ -35,9 +36,9 @@
 import org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForAction;
 import org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForMixedInPropertyOrCollection;
 import org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation;
-import org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation;
 import org.apache.causeway.core.metamodel.facets.actions.action.typeof.TypeOfFacetForActionAnnotation;
 import org.apache.causeway.core.metamodel.facets.actions.fileaccept.FileAcceptFacetForActionAnnotation;
+import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetForActionAnnotation;
 import org.apache.causeway.core.metamodel.facets.members.publish.command.CommandPublishingFacetForActionAnnotation;
 import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacetForActionAnnotation;
@@ -155,8 +156,12 @@ void processSemantics(final ProcessMethodContext processMethodContext, final Opt
 
         // check for @Action(semantics=...)
         addFacet(
-                ActionSemanticsFacetForActionAnnotation
-                .create(actionIfAny, facetedMethod));
+            actionIfAny
+                .map(Action::semantics)
+                .filter(semanticsOf -> semanticsOf != SemanticsOf.NOT_SPECIFIED)
+                .map(semanticsOf -> new ActionSemanticsFacet("ActionAnnotation", semanticsOf, facetedMethod))
+                .orElseGet(()->new ActionSemanticsFacet("FallbackToNonIdempotent", SemanticsOf.NON_IDEMPOTENT, facetedMethod))
+        );
     }
 
     void processCommandPublishing(
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFallbackToNonIdempotent.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFallbackToNonIdempotent.java
deleted file mode 100644
index 959ddaa4dde..00000000000
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFallbackToNonIdempotent.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.causeway.core.metamodel.facets.actions.action.semantics;
-
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
-import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
-
-public class ActionSemanticsFacetFallbackToNonIdempotent extends ActionSemanticsFacetAbstract {
-
-    public ActionSemanticsFacetFallbackToNonIdempotent(final FacetHolder holder) {
-        super(SemanticsOf.NON_IDEMPOTENT, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java
deleted file mode 100644
index 28afc1fdfad..00000000000
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.causeway.core.metamodel.facets.actions.action.semantics;
-
-import java.util.Optional;
-
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
-import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
-import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
-
-public class ActionSemanticsFacetForActionAnnotation extends ActionSemanticsFacetAbstract {
-
-    public static ActionSemanticsFacet create(
-            final Optional<Action> actionsIfAny,
-            final FacetHolder holder) {
-
-        return actionsIfAny
-                .map(Action::semantics)
-                .filter(semanticsOf -> semanticsOf != SemanticsOf.NOT_SPECIFIED)
-                .map(semanticsOf ->
-                (ActionSemanticsFacet)new ActionSemanticsFacetForActionAnnotation(semanticsOf, holder))
-                .orElse(new ActionSemanticsFacetFallbackToNonIdempotent(holder));
-    }
-
-    private ActionSemanticsFacetForActionAnnotation(SemanticsOf of, final FacetHolder holder) {
-        super(of, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java
index ed230a54963..46bd0ba400b 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java
@@ -18,15 +18,39 @@
  */
 package org.apache.causeway.core.metamodel.facets.actions.semantics;
 
+import java.util.function.BiConsumer;
+
+import org.jspecify.annotations.NonNull;
+
 import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.core.metamodel.facets.SingleValueFacet;
+import org.apache.causeway.core.metamodel.facetapi.Facet;
+import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
 
 /**
  * Represents the semantics of an action.
- *
  * <p>
  * Specifically, whether it is safe, idempotent or non-idempotent.
  */
-public interface ActionSemanticsFacet extends SingleValueFacet<SemanticsOf> {
+public record ActionSemanticsFacet(
+    @NonNull String origin,
+    @NonNull SemanticsOf value,
+    @NonNull FacetHolder facetHolder,
+    Facet.@NonNull Precedence precedence
+    ) implements Facet {
+
+    @Override public Class<? extends Facet> facetType() { return getClass(); }
+    @Override public Precedence getPrecedence() { return precedence(); }
+    @Override public FacetHolder getFacetHolder() { return facetHolder(); }
+
+    public ActionSemanticsFacet(final String origin, final SemanticsOf of, final FacetHolder holder) {
+        this(origin, of, holder, Precedence.DEFAULT);
+    }
+
+    @Override
+    public void visitAttributes(final BiConsumer<String, Object> visitor) {
+        visitor.accept("origin", origin());
+        visitor.accept("precedence", getPrecedence().name());
+        visitor.accept("value", value);
+    }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/semantics/ActionSemanticsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/semantics/ActionSemanticsFacetAbstract.java
deleted file mode 100644
index dbe662bf896..00000000000
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/semantics/ActionSemanticsFacetAbstract.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.causeway.core.metamodel.facets.actions.semantics;
-
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.core.metamodel.facetapi.Facet;
-import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
-import org.apache.causeway.core.metamodel.facets.SingleValueFacetAbstract;
-
-public abstract class ActionSemanticsFacetAbstract
-extends SingleValueFacetAbstract<SemanticsOf>
-implements ActionSemanticsFacet {
-
-    private static final Class<? extends Facet> type() {
-        return ActionSemanticsFacet.class;
-    }
-
-    public ActionSemanticsFacetAbstract(final SemanticsOf of, final FacetHolder holder) {
-        super(type(), of, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
index b28bc3e95d8..38a4336fae5 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
@@ -31,7 +31,7 @@
 import org.apache.causeway.core.metamodel.facets.FacetedMethod;
 import org.apache.causeway.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacetAbstract;
-import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
+import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.causeway.core.metamodel.facets.collections.collection.modify.CollectionDomainEventFacet;
 import org.apache.causeway.core.metamodel.facets.collections.collection.typeof.TypeOfFacetForCollectionAnnotation;
 import org.apache.causeway.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
@@ -71,7 +71,7 @@ Optional<Collection> collectionIfAny(final ProcessMethodContext processMethodCon
     void inferMixinSort(final Collection collection, final FacetedMethod facetedMethod) {
         /* if @Collection detected on method or type level infer:
          * @Action(semantics=SAFE) */
-        addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
+        addFacet(new ActionSemanticsFacet("InferSafeForMixedInCollection", SemanticsOf.SAFE, facetedMethod));
         addFacet(ContributingFacetAbstract.createAsCollection(facetedMethod));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
index fbbb8c28135..c4ec4abb732 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
@@ -27,7 +27,7 @@
 import org.apache.causeway.core.config.CausewayConfiguration;
 import org.apache.causeway.core.config.metamodel.facets.ActionConfigOptions;
 import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
-import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
+import org.apache.causeway.core.metamodel.util.Facets;
 
 public abstract class CommandPublishingFacetForActionAnnotation extends CommandPublishingFacetAbstract {
 
@@ -80,7 +80,7 @@ public static Optional<CommandPublishingFacet> create(
                                     return new CommandPublishingFacetForActionAnnotationAsConfigured.None(holder, servicesInjector);
                                 case IGNORE_QUERY_ONLY:
                                 case IGNORE_SAFE:
-                                    return hasSafeSemantics(holder)
+                                    return Facets.hasSafeSemantics(holder)
                                             ? new CommandPublishingFacetForActionAnnotationAsConfigured.IgnoreSafe(holder, servicesInjector)
                                             : new CommandPublishingFacetForActionAnnotationAsConfigured.IgnoreSafeYetNot(holder, servicesInjector);
                                 case ALL:
@@ -98,11 +98,6 @@ public static Optional<CommandPublishingFacet> create(
                 });
     }
 
-    static boolean hasSafeSemantics(final FacetHolder holder) {
-        var actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class);
-        return actionSemanticsFacet != null && actionSemanticsFacet.value().isSafeInNature();
-    }
-
     CommandPublishingFacetForActionAnnotation(
             final CommandDtoProcessor processor,
             final FacetHolder holder,
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
index 622de800147..873470d9746 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
@@ -32,6 +32,7 @@
 import org.apache.causeway.core.metamodel.facets.TypedFacetHolder;
 import org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet;
 import org.apache.causeway.core.metamodel.facets.object.mixin.MixinFacet;
+import org.apache.causeway.core.metamodel.util.Facets;
 
 public abstract class CommandPublishingFacetForPropertyAnnotation extends CommandPublishingFacetAbstract {
 
@@ -115,7 +116,7 @@ public static CommandPublishingFacet create(
                             return new CommandPublishingFacetForActionFromConfiguration.None(holder, servicesInjector);
                         case IGNORE_QUERY_ONLY:
                         case IGNORE_SAFE:
-                            return CommandPublishingFacetForActionAnnotation.hasSafeSemantics(holder)
+                            return Facets.hasSafeSemantics(holder)
                                     ? new CommandPublishingFacetForActionFromConfiguration.IgnoreSafe(holder, servicesInjector)
                                     : new CommandPublishingFacetForActionFromConfiguration.IgnoreSafeYetNot(holder, servicesInjector);
                         case ALL:
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java
index 98434c0b462..14b780a8d5f 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java
@@ -25,7 +25,7 @@
 import org.apache.causeway.core.config.CausewayConfiguration;
 import org.apache.causeway.core.config.metamodel.facets.ActionConfigOptions;
 import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
-import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
+import org.apache.causeway.core.metamodel.util.Facets;
 
 public abstract class ExecutionPublishingFacetForActionAnnotation extends ExecutionPublishingFacetAbstract {
 
@@ -70,7 +70,7 @@ public static Optional<ExecutionPublishingFacet> create(
                                     return new ExecutionPublishingFacetForActionAnnotationAsConfigured.None(holder);
                                 case IGNORE_QUERY_ONLY:
                                 case IGNORE_SAFE:
-                                    return hasSafeSemantics(holder)
+                                    return Facets.hasSafeSemantics(holder)
                                             ? new ExecutionPublishingFacetForActionAnnotationAsConfigured.IgnoreSafe(holder)
                                             : new ExecutionPublishingFacetForActionAnnotationAsConfigured.IgnoreSafeYetNot(holder);
                                 case ALL:
@@ -88,11 +88,6 @@ public static Optional<ExecutionPublishingFacet> create(
                 });
     }
 
-    static boolean hasSafeSemantics(final FacetHolder holder) {
-        var actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class);
-        return actionSemanticsFacet != null && actionSemanticsFacet.value().isSafeInNature();
-    }
-
     ExecutionPublishingFacetForActionAnnotation(final FacetHolder holder) {
         super(holder);
     }
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java
index 4150307bb4b..ec9fcc705df 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java
@@ -30,6 +30,7 @@
 import org.apache.causeway.core.metamodel.facets.TypedFacetHolder;
 import org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet;
 import org.apache.causeway.core.metamodel.facets.object.mixin.MixinFacet;
+import org.apache.causeway.core.metamodel.util.Facets;
 
 public abstract class ExecutionPublishingFacetForPropertyAnnotation
 extends ExecutionPublishingFacetAbstract {
@@ -106,7 +107,7 @@ public static ExecutionPublishingFacet create(
                             return new ExecutionPublishingFacetForActionFromConfiguration.None(holder);
                         case IGNORE_QUERY_ONLY:
                         case IGNORE_SAFE:
-                            return ExecutionPublishingFacetForActionAnnotation.hasSafeSemantics(holder)
+                            return Facets.hasSafeSemantics(holder)
                                     ? new ExecutionPublishingFacetForActionFromConfiguration.IgnoreSafe(holder)
                                     : new ExecutionPublishingFacetForActionFromConfiguration.IgnoreSafeYetNot(holder);
                         case ALL:
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index a7750474089..8a6cf0e8e32 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -31,7 +31,7 @@
 import org.apache.causeway.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.causeway.core.metamodel.facets.FacetedMethod;
 import org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacetAbstract;
-import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
+import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.causeway.core.metamodel.facets.members.publish.command.CommandPublishingFacet;
 import org.apache.causeway.core.metamodel.facets.members.publish.command.CommandPublishingFacetForPropertyAnnotation;
 import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacet;
@@ -99,7 +99,7 @@ Optional<Property> propertyIfAny(final ProcessMethodContext processMethodContext
     void inferMixinSort(final Property property, final FacetedMethod facetedMethod) {
         /* if @Property detected on method or type level infer:
          * @Action(semantics=SAFE) */
-        addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
+        addFacet(new ActionSemanticsFacet("InferSafeForMixedInProperty", SemanticsOf.SAFE, facetedMethod));
         addFacet(ContributingFacetAbstract.createAsProperty(facetedMethod));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/impl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/impl/ObjectActionDefault.java
index 02f7681c796..5b29185cb01 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/impl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/impl/ObjectActionDefault.java
@@ -24,6 +24,8 @@
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
+import org.jspecify.annotations.NonNull;
+
 import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.Action;
 import org.apache.causeway.applib.annotation.ActionLayout;
@@ -66,7 +68,6 @@
 import org.apache.causeway.schema.cmd.v2.CommandDto;
 
 import lombok.Getter;
-import org.jspecify.annotations.NonNull;
 import lombok.extern.log4j.Log4j2;
 
 @Log4j2
@@ -144,8 +145,8 @@ private ObjectSpecification loadDeclaringType() {
     @Override
     public SemanticsOf getSemantics() {
         return lookupFacet(ActionSemanticsFacet.class)
-        .map(ActionSemanticsFacet::value)
-        .orElse(SemanticsOf.NON_IDEMPOTENT);
+            .map(ActionSemanticsFacet::value)
+            .orElse(SemanticsOf.NON_IDEMPOTENT);
     }
 
     // -- ELEMENT TYPE
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
index a03ee86cb56..b2b9d9dcd2e 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
@@ -30,6 +30,7 @@
 import org.apache.causeway.applib.annotation.DomainServiceLayout.MenuBar;
 import org.apache.causeway.applib.annotation.LabelPosition;
 import org.apache.causeway.applib.annotation.PromptStyle;
+import org.apache.causeway.applib.annotation.SemanticsOf;
 import org.apache.causeway.applib.annotation.TableDecorator;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.applib.id.LogicalType;
@@ -47,6 +48,7 @@
 import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
 import org.apache.causeway.core.metamodel.facetapi.FacetUtil;
 import org.apache.causeway.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.causeway.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.causeway.core.metamodel.facets.collections.CollectionFacet;
 import org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet;
@@ -200,6 +202,13 @@ public void gridPreload(
                 gridFacet.getGrid(objectAdapter));
     }
 
+    public boolean hasSafeSemantics(final FacetHolder holder) {
+        return holder.lookupFacet(ActionSemanticsFacet.class)
+            .map(ActionSemanticsFacet::value)
+            .map(SemanticsOf::isSafeInNature)
+            .orElse(false);
+    }
+
     public Optional<Where> hiddenWhere(final ObjectFeature feature) {
         return feature.lookupFacet(HiddenFacet.class)
             .map(HiddenFacet::where);
@@ -375,7 +384,6 @@ public static Predicate<ObjectSpecification> valueTypeMatches(final Predicate<Cl
             .orElse(false);
     }
 
-    @SuppressWarnings("unchecked")
     public Optional<ObjectAction> valueCompositeMixinForParameter(
             final ObjectFeature param,
             final ParameterNegotiationModel parameterNegotiationModel,
@@ -387,7 +395,6 @@ public Optional<ObjectAction> valueCompositeMixinForParameter(
                         parameterNegotiationModel,paramIndex));
     }
 
-    @SuppressWarnings("unchecked")
     public Optional<ObjectAction> valueCompositeMixinForProperty(
             final ObjectFeature prop,
             final ManagedProperty managedProperty) {
@@ -397,7 +404,6 @@ public Optional<ObjectAction> valueCompositeMixinForProperty(
                 valueFacet.selectCompositeValueMixinForProperty(managedProperty));
     }
 
-    @SuppressWarnings("unchecked")
     public <X> Stream<X> valueStreamSemantics(
             final ObjectSpecification objectSpec, final Class<X> requiredType) {
         return objectSpec.valueFacet()
@@ -405,7 +411,6 @@ public <X> Stream<X> valueStreamSemantics(
             .orElseGet(Stream::empty);
     }
 
-    @SuppressWarnings("unchecked")
     public <X> boolean valueHasSemantics(
             final ObjectSpecification objectSpec, final Class<X> requiredType) {
         return objectSpec.valueFacet()
@@ -415,7 +420,6 @@ public <X> boolean valueHasSemantics(
             .orElse(false);
     }
 
-    @SuppressWarnings("unchecked")
     public <X> Optional<ValueSemanticsProvider<X>> valueDefaultSemantics(
             final ObjectSpecification objectSpec,
             final Class<X> requiredType) {
diff --git a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java
index ad99b74625d..6f4b265271c 100644
--- a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java
+++ b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java
@@ -31,7 +31,7 @@
 import org.apache.causeway.core.config.metamodel.facets.ActionConfigOptions;
 import org.apache.causeway.core.metamodel.facetapi.Facet;
 import org.apache.causeway.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
+import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacet;
 import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacetForActionAnnotation;
 
@@ -59,7 +59,7 @@ void given_noAnnotation_and_configurationSetToIgnoreQueryOnly_andSafeSemantics_t
         // given
         allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
         actionScenario(ActionAnnotationFacetFactoryTest.Customer.class, "someAction", (processMethodContext, facetHolder, facetedMethod)->{
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacet("Test", SemanticsOf.SAFE, facetedMethod));
             // when
             processExecutionPublishing(facetFactory, processMethodContext);
             // then
@@ -73,7 +73,7 @@ void given_noAnnotation_and_configurationSetToIgnoreQueryOnly_andNonSafeSemantic
         // given
         allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
         actionScenario(ActionAnnotationFacetFactoryTest.Customer.class, "someAction", (processMethodContext, facetHolder, facetedMethod)->{
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacet("Test", SemanticsOf.IDEMPOTENT, facetedMethod));
             // when
             processExecutionPublishing(facetFactory, processMethodContext);
             // then
@@ -136,7 +136,7 @@ public void someAction() {}
 
         allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
         actionScenario(Customer.class, "someAction", (processMethodContext, facetHolder, facetedMethod)->{
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacet("Test", SemanticsOf.SAFE, facetedMethod));
             // when
             processExecutionPublishing(facetFactory, processMethodContext);
             // then
@@ -156,7 +156,7 @@ public void someAction() {}
 
         allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
         actionScenario(Customer.class, "someAction", (processMethodContext, facetHolder, facetedMethod)->{
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacet("Test", SemanticsOf.IDEMPOTENT, facetedMethod));
             // when
             processExecutionPublishing(facetFactory, processMethodContext);
             // then
@@ -201,7 +201,7 @@ public void someAction() { }
         actionScenario(Customer.class, "someAction", (processMethodContext, facetHolder, facetedMethod)->{
 
             // given
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacet("Test", SemanticsOf.SAFE, facetedMethod));
 
             // when
             processExecutionPublishing(facetFactory, processMethodContext);
@@ -226,7 +226,7 @@ public void someAction() { }
         actionScenario(Customer.class, "someAction", (processMethodContext, facetHolder, facetedMethod)->{
 
             // given
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacet("Test", SemanticsOf.IDEMPOTENT, facetedMethod));
 
             // when
             processExecutionPublishing(facetFactory, processMethodContext);
@@ -251,7 +251,7 @@ public void someAction() { }
         actionScenario(Customer.class, "someAction", (processMethodContext, facetHolder, facetedMethod)->{
 
             // given
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacet("Test", SemanticsOf.IDEMPOTENT, facetedMethod));
 
             // when
             processExecutionPublishing(facetFactory, processMethodContext);
diff --git a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionSemanticsFacetFallbackToNonIdempotentFactoryTest.java b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionSemanticsFacetFallbackToNonIdempotentFactoryTest.java
index a5373f55f1c..8535d59fc0d 100644
--- a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionSemanticsFacetFallbackToNonIdempotentFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionSemanticsFacetFallbackToNonIdempotentFactoryTest.java
@@ -22,14 +22,13 @@
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.core.metamodel.facetapi.Facet;
+import org.apache.causeway.applib.annotation.SemanticsOf;
 import org.apache.causeway.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.causeway.core.metamodel.facets.FacetFactoryTestAbstract;
-import org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent;
 import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 
 class ActionSemanticsFacetFallbackToNonIdempotentFactoryTest
@@ -63,9 +62,9 @@ public void someAction() {}
             //when
             processSemantics(facetFactory, processMethodContext);
             //then
-            final Facet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
+            var facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             assertNotNull(facet);
-            assertTrue(facet instanceof ActionSemanticsFacetFallbackToNonIdempotent);
+            assertEquals(SemanticsOf.NON_IDEMPOTENT, facet.value());
 
             assertNoMethodsRemoved();
         });
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml
index 01f68f1527d..8e8a25135ed 100644
--- a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml
@@ -141,8 +141,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -272,8 +272,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="IDEMPOTENT"/>
           </mml:facet>
@@ -432,8 +432,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -696,8 +696,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -863,8 +863,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -977,8 +977,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -1091,8 +1091,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="IDEMPOTENT"/>
           </mml:facet>
@@ -1301,8 +1301,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml
index e91eba30185..90ca7a66cb6 100644
--- a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml
@@ -141,8 +141,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -265,8 +265,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="IDEMPOTENT"/>
           </mml:facet>
@@ -425,8 +425,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -689,8 +689,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -856,8 +856,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -970,8 +970,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -1084,8 +1084,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="IDEMPOTENT"/>
           </mml:facet>
@@ -1294,8 +1294,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml
index 140629aea6a..077088c8a53 100644
--- a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml
@@ -257,8 +257,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="IDEMPOTENT"/>
           </mml:facet>
@@ -417,8 +417,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -681,8 +681,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -848,8 +848,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -962,8 +962,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -1076,8 +1076,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="IDEMPOTENT"/>
           </mml:facet>
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml
index 525af6ecd66..3b6ba9d04be 100644
--- a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml
@@ -250,8 +250,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="IDEMPOTENT"/>
           </mml:facet>
@@ -410,8 +410,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -674,8 +674,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -841,8 +841,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -955,8 +955,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="SAFE"/>
           </mml:facet>
@@ -1069,8 +1069,8 @@
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="redirect" value="AS_CONFIGURED"/>
           </mml:facet>
-          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="origin" value="ActionAnnotation"/>
             <mml:attr name="precedence" value="DEFAULT"/>
             <mml:attr name="value" value="IDEMPOTENT"/>
           </mml:facet>
diff --git a/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml b/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
index 8effdd8a681..a3e208893f5 100644
--- a/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
+++ b/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
@@ -129,8 +129,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -243,8 +243,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -381,8 +381,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -589,8 +589,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -734,8 +734,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -843,8 +843,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -952,8 +952,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -1161,8 +1161,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -1299,8 +1299,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -1507,8 +1507,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -1652,8 +1652,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -1761,8 +1761,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -1870,8 +1870,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -1963,8 +1963,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -2204,8 +2204,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -2342,8 +2342,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -2550,8 +2550,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -2679,8 +2679,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -2821,8 +2821,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -2930,8 +2930,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -3039,8 +3039,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -3132,8 +3132,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -3327,8 +3327,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -3465,8 +3465,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -3673,8 +3673,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -3818,8 +3818,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -3927,8 +3927,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -4036,8 +4036,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -4305,8 +4305,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -4443,8 +4443,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -4651,8 +4651,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -4796,8 +4796,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -4905,8 +4905,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -5014,8 +5014,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -5112,8 +5112,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -5328,8 +5328,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -5612,8 +5612,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -5750,8 +5750,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -5958,8 +5958,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -6103,8 +6103,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -6212,8 +6212,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -6321,8 +6321,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -6419,8 +6419,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -6641,8 +6641,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -6927,8 +6927,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -7060,8 +7060,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -7198,8 +7198,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -7406,8 +7406,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -7551,8 +7551,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -7660,8 +7660,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -7769,8 +7769,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -8553,8 +8553,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -8684,8 +8684,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -8822,8 +8822,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -9030,8 +9030,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -9175,8 +9175,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -9284,8 +9284,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -9393,8 +9393,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -9795,8 +9795,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -9933,8 +9933,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -10141,8 +10141,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -10286,8 +10286,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -10395,8 +10395,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -10504,8 +10504,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -10597,8 +10597,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -10894,8 +10894,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -11032,8 +11032,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -11240,8 +11240,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -11385,8 +11385,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -11494,8 +11494,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -11603,8 +11603,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -11696,8 +11696,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -12015,8 +12015,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -12153,8 +12153,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -12361,8 +12361,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -12506,8 +12506,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -12615,8 +12615,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -12724,8 +12724,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -12817,8 +12817,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -13161,8 +13161,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -13299,8 +13299,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -13507,8 +13507,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -13652,8 +13652,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -13761,8 +13761,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -13870,8 +13870,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -14374,8 +14374,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -14512,8 +14512,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -14720,8 +14720,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -14865,8 +14865,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -14974,8 +14974,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -15083,8 +15083,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -15176,8 +15176,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -15267,8 +15267,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -15745,8 +15745,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -15883,8 +15883,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -16091,8 +16091,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -16236,8 +16236,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -16345,8 +16345,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -16454,8 +16454,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -16547,8 +16547,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -16638,8 +16638,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -16729,8 +16729,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -16950,8 +16950,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -17044,8 +17044,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -17182,8 +17182,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -17390,8 +17390,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -17535,8 +17535,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -17644,8 +17644,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -17753,8 +17753,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -17951,8 +17951,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -18045,8 +18045,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -18183,8 +18183,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -18391,8 +18391,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -18536,8 +18536,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -18645,8 +18645,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -18754,8 +18754,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -18952,8 +18952,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -19046,8 +19046,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -19184,8 +19184,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -19392,8 +19392,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -19537,8 +19537,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -19646,8 +19646,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -19755,8 +19755,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -20193,8 +20193,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -20340,8 +20340,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -20487,8 +20487,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -20608,8 +20608,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="CollectionAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInCollection"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -20746,8 +20746,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="CollectionAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInCollection"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -20884,8 +20884,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="CollectionAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInCollection"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -21079,8 +21079,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -21316,8 +21316,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -21547,8 +21547,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -21792,8 +21792,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -22037,8 +22037,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -22146,8 +22146,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -22389,8 +22389,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -22527,8 +22527,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -22735,8 +22735,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -22864,8 +22864,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -22958,8 +22958,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -23056,8 +23056,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -23154,8 +23154,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -23394,8 +23394,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -23529,8 +23529,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -23638,8 +23638,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -24066,8 +24066,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -24204,8 +24204,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -24412,8 +24412,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -24557,8 +24557,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -24666,8 +24666,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -24755,8 +24755,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -25010,8 +25010,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -25438,8 +25438,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -25576,8 +25576,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -25784,8 +25784,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -25929,8 +25929,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -26038,8 +26038,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -26131,8 +26131,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -26386,8 +26386,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -26814,8 +26814,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -26952,8 +26952,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -27160,8 +27160,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -27305,8 +27305,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -27414,8 +27414,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -27507,8 +27507,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -27762,8 +27762,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -27956,8 +27956,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -28289,8 +28289,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -28616,8 +28616,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -28957,8 +28957,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -29298,8 +29298,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -29503,8 +29503,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -29834,8 +29834,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="CollectionAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInCollection"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -30064,8 +30064,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="CollectionAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInCollection"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -30294,8 +30294,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="CollectionAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInCollection"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -30496,8 +30496,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -30735,8 +30735,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -30974,8 +30974,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
-                        <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="InferSafeForMixedInProperty"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31186,8 +31186,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31276,8 +31276,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31366,8 +31366,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31456,8 +31456,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31546,8 +31546,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31636,8 +31636,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31726,8 +31726,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31816,8 +31816,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -31917,8 +31917,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -32055,8 +32055,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -32263,8 +32263,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -32408,8 +32408,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -32501,8 +32501,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -32652,8 +32652,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -32761,8 +32761,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -32960,8 +32960,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -33151,8 +33151,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -33342,8 +33342,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -33533,8 +33533,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -33724,8 +33724,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -33915,8 +33915,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -34106,8 +34106,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -34297,8 +34297,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -34482,8 +34482,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -34778,8 +34778,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -34916,8 +34916,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -35124,8 +35124,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -35269,8 +35269,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -35378,8 +35378,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -35487,8 +35487,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -35696,8 +35696,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -35834,8 +35834,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -36042,8 +36042,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -36171,8 +36171,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -36265,8 +36265,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -36374,8 +36374,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -36483,8 +36483,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -36766,8 +36766,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -36867,8 +36867,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -37005,8 +37005,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -37213,8 +37213,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -37358,8 +37358,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -37467,8 +37467,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -37576,8 +37576,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -38122,8 +38122,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -38260,8 +38260,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -38468,8 +38468,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -38613,8 +38613,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -38722,8 +38722,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -38831,8 +38831,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -39025,8 +39025,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -39435,8 +39435,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -39573,8 +39573,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -39781,8 +39781,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -39926,8 +39926,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -40019,8 +40019,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -40134,8 +40134,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -40243,8 +40243,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -40614,8 +40614,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>
@@ -40752,8 +40752,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -40960,8 +40960,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -41105,8 +41105,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -41198,8 +41198,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
-                        <mml:attr name="facet" value="ActionSemanticsFacetFallbackToNonIdempotent"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="FallbackToNonIdempotent"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="NON_IDEMPOTENT"/>
                     </mml:facet>
@@ -41299,8 +41299,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="SAFE"/>
                     </mml:facet>
@@ -41408,8 +41408,8 @@
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="redirect" value="AS_CONFIGURED"/>
                     </mml:facet>
-                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
-                        <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+                    <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                        <mml:attr name="origin" value="ActionAnnotation"/>
                         <mml:attr name="precedence" value="DEFAULT"/>
                         <mml:attr name="value" value="IDEMPOTENT"/>
                     </mml:facet>