Command Export Reference-Data Marker Specification
Purpose
Define the public reference-data marker, its metamodel-backed default command-replay classifier, and the built-in SecMan identities that opt into stable cross-environment classification.
Requirements
Requirement: Public marker declares stable replay reference data
The applib SHALL provide a public, dependency-neutral RefData marker interface for domain types whose bookmarked instances are stable replay reference data. The marker SHALL require no methods. Implementing it SHALL assert that the type's logical type and bookmark identifiers are well-known and expected to exist in every replay environment.
Scenario: Application domain type opts into reference-data classification
- WHEN an application domain type implements
RefData - THEN it declares its bookmarked instances to be stable replay reference data without depending on commandlog
Requirement: Default classifier recognizes marker implementations using the metamodel
The commandlog extension SHALL provide and register a default CommandReplayReferenceDataService implementation for RefData. The classifier SHALL resolve a non-null bookmark through SpecificationLoader, inspect the corresponding class from its ObjectSpecification, and return true when RefData is assignable from that class. It MUST return false for null bookmarks, unknown logical types, absent specifications, or non-marker classes, and MUST NOT load or instantiate the bookmarked object.
Scenario: Bookmark resolves to a marker type
- WHEN a bookmark resolves to an object specification whose corresponding class implements
RefData - THEN the default classifier returns
true
Scenario: Bookmark resolves to a non-marker type
- WHEN a bookmark resolves to an object specification whose corresponding class does not implement
RefData - THEN the default classifier returns
false
Scenario: Bookmark type is unknown
- WHEN a bookmark cannot be resolved to an object specification and corresponding class
- THEN the default classifier returns
false
Scenario: Classification uses type information only
- WHEN the default classifier evaluates a bookmark
- THEN it consults metamodel type information without loading or instantiating the bookmarked object
Scenario: Default and custom classifiers coexist
- WHEN the default marker classifier rejects a bookmark and an application classifier accepts it
- THEN composed reference-data classification returns
true
Requirement: Built-in SecMan identities are declared as reference data
The SecMan applib ApplicationUser, ApplicationRole, ApplicationTenancy, and ApplicationPermission domain abstractions SHALL implement RefData, and the permission-feature reference view-model ApplicationFeatureChoices.AppFeat SHALL also implement RefData. No persistence field or schema change SHALL be required by these marker declarations. A bookmark whose logical type resolves to any of these designated SecMan types SHALL therefore be classified as replay reference data by the default classifier.
Scenario: SecMan domain type is classified by the default service
- WHEN a bookmark resolves to any of the four designated SecMan domain abstractions
- THEN the default classifier identifies it as replay reference data
Scenario: Permission-feature reference view-model is classified as reference data
- WHEN a bookmark resolves to the
ApplicationFeatureChoices.AppFeat permission-feature reference view-model - THEN the default classifier identifies it as replay reference data
- AND no domain object is loaded to make that classification
Scenario: Permission-feature command is a known export participant
- GIVEN a command whose target or reference parameter is an
AppFeat bookmark - WHEN export reachability is evaluated
- THEN the
AppFeat participant is a known export participant with no prior result establishing that bookmark
Scenario: Marker declarations require no schema change
- WHEN the SecMan abstractions and the
AppFeat view-model implement RefData - THEN no persistence field or schema change is required