You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2026/06/07 14:49:33 UTC
(causeway) 42/50: CAUSEWAY-4014: proposes removing replayable command open actions
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4014
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit a1be12724300a98ebdc3559c8b7cc3f20886f265
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 7 13:43:36 2026 +0100
CAUSEWAY-4014: proposes removing replayable command open actions
---
.../.openspec.yaml | 2 ++
.../design.md | 32 ++++++++++++++++++++++
.../proposal.md | 29 ++++++++++++++++++++
.../specs/replayable-command-remappings/spec.md | 31 +++++++++++++++++++++
.../tasks.md | 16 +++++++++++
5 files changed, 110 insertions(+)
diff --git a/openspec/changes/remove-replayable-command-open-participant-actions/.openspec.yaml b/openspec/changes/remove-replayable-command-open-participant-actions/.openspec.yaml
new file mode 100644
index 00000000000..11967fcb6a7
--- /dev/null
+++ b/openspec/changes/remove-replayable-command-open-participant-actions/.openspec.yaml
@@ -0,0 +1,2 @@
+schema: spec-driven
+created: 2026-06-07
diff --git a/openspec/changes/remove-replayable-command-open-participant-actions/design.md b/openspec/changes/remove-replayable-command-open-participant-actions/design.md
new file mode 100644
index 00000000000..f14d15d906b
--- /dev/null
+++ b/openspec/changes/remove-replayable-command-open-participant-actions/design.md
@@ -0,0 +1,32 @@
+## Context
+
+`ReplayableCommand` currently exposes the participants collection and command-level `openTarget`, `openArgument`, and `openResult` actions associated with that collection.
+Each participant row already exposes object-valued target, argument, and result properties.
+In the UI, those object-valued properties can be followed directly from the participant row, making the command-level open actions redundant.
+
+## Goals / Non-Goals
+
+**Goals:**
+
+- Remove `ReplayableCommand_openTarget`, `ReplayableCommand_openArgument`, and `ReplayableCommand_openResult`.
+- Remove the corresponding module imports and registrations.
+- Remove tests that verify the redundant open actions.
+- Update the participant UI spec to rely on participant row links for navigation.
+
+**Non-Goals:**
+
+- Do not remove the participants collection.
+- Do not remove target, argument, result, recorded bookmark, actual bookmark, or parameter name participant properties.
+- Do not change participant derivation, object lookup, replay mapping semantics, or replay state behaviour.
+- Do not change persistence schema or replay mapping SPI signatures.
+
+## Decisions
+
+- Delete the mixin classes rather than hiding or deprecating them because the actions were introduced only as recent refinements and are now intentionally superseded by direct participant-row navigation.
+- Keep object-valued participant properties unchanged so end-users can still open linked target, argument, and result objects from the table.
+- Update tests by removing action-specific cases while preserving participant resolution tests that prove the linked objects remain available.
+
+## Risks / Trade-offs
+
+- Consumers that automated calls to the action mixins will need to navigate through participant object links instead → Mark the removal as breaking in the proposal.
+- Removing action tests could reduce coverage of object lookup → Keep and rely on participant object resolution tests for target, argument, and result properties.
diff --git a/openspec/changes/remove-replayable-command-open-participant-actions/proposal.md b/openspec/changes/remove-replayable-command-open-participant-actions/proposal.md
new file mode 100644
index 00000000000..3dc9df738d1
--- /dev/null
+++ b/openspec/changes/remove-replayable-command-open-participant-actions/proposal.md
@@ -0,0 +1,29 @@
+## Why
+
+The participants table already exposes target, argument, and result participant objects as navigable links.
+The separate `openTarget`, `openArgument`, and `openResult` command actions duplicate that built-in navigation and add unnecessary UI complexity.
+
+## What Changes
+
+- Remove the `ReplayableCommand_openTarget` mixin.
+- Remove the `ReplayableCommand_openArgument` mixin.
+- Remove the `ReplayableCommand_openResult` mixin.
+- Remove module registrations and tests for those mixins.
+- Keep the participants collection and participant row properties unchanged.
+- **BREAKING**: Consumers invoking the command-level `openTarget`, `openArgument`, or `openResult` actions must navigate through the participant row links instead.
+
+## Capabilities
+
+### New Capabilities
+
+- None.
+
+### Modified Capabilities
+
+- `replayable-command-remappings`: Remove the participants-associated open actions and rely on participant row links for target, argument, and result navigation.
+
+## Impact
+
+- Affects the command log applib replay UI mixin set and module registration.
+- Affects focused replayable command participant navigation tests.
+- Does not affect participant derivation, bookmark mapping, replay mapping SPI signatures, or persistence schema.
diff --git a/openspec/changes/remove-replayable-command-open-participant-actions/specs/replayable-command-remappings/spec.md b/openspec/changes/remove-replayable-command-open-participant-actions/specs/replayable-command-remappings/spec.md
new file mode 100644
index 00000000000..c8507d1fd2f
--- /dev/null
+++ b/openspec/changes/remove-replayable-command-open-participant-actions/specs/replayable-command-remappings/spec.md
@@ -0,0 +1,31 @@
+## MODIFIED Requirements
+
+### Requirement: Replayable participant layouts expose participant data
+The system SHALL provide fallback layout metadata for `ReplayableCommandParticipant`.
+The participant layout SHALL expose role, parameter name, recorded bookmark, target, argument, result, and actual bookmark in that order.
+The `ReplayableCommand` fallback layout SHALL include the participants collection as a table named `Participants` before the control field set.
+The `ReplayableCommand` object view MUST NOT expose separate target summary properties for target type or target identifier.
+The `ReplayableCommand` object view MUST NOT expose command-level `openTarget`, `openArgument`, or `openResult` actions associated with the participants collection.
+Target, argument, and result inspection and navigation SHALL be available through object-valued links in the participants collection rows.
+
+#### Scenario: User views participants table on a replayable command
+- **WHEN** a user views a replayable command using fallback layout metadata
+- **THEN** the layout includes the participants collection as a table named `Participants`
+- **AND** the participants table appears before the control field set
+
+#### Scenario: User views participant fields
+- **WHEN** a user views a replayable command participant using fallback layout metadata
+- **THEN** the layout displays the participant role, parameter name, recorded bookmark, target, argument, result, and actual bookmark in order
+
+#### Scenario: User inspects target through participants
+- **WHEN** a user views a replayable command using fallback layout metadata
+- **THEN** the layout does not display separate `targetType` or `targetId` properties
+- **AND** target information is available through the participants table
+
+#### Scenario: User navigates using participant object links
+- **WHEN** a user views a replayable command participant with an available target, argument, or result object
+- **THEN** the user can navigate to that object through the corresponding object-valued participant row link
+
+#### Scenario: User does not see redundant open actions
+- **WHEN** a user views a replayable command using fallback layout metadata
+- **THEN** the replayable command does not expose command-level `openTarget`, `openArgument`, or `openResult` actions associated with the participants collection
diff --git a/openspec/changes/remove-replayable-command-open-participant-actions/tasks.md b/openspec/changes/remove-replayable-command-open-participant-actions/tasks.md
new file mode 100644
index 00000000000..8b2e5114494
--- /dev/null
+++ b/openspec/changes/remove-replayable-command-open-participant-actions/tasks.md
@@ -0,0 +1,16 @@
+## 1. Remove Open Action Mixins
+
+- [ ] 1.1 Delete the `ReplayableCommand_openTarget` mixin class.
+- [ ] 1.2 Delete the `ReplayableCommand_openArgument` mixin class.
+- [ ] 1.3 Delete the `ReplayableCommand_openResult` mixin class.
+- [ ] 1.4 Remove the deleted mixins from command log applib module imports and registrations.
+
+## 2. Tests
+
+- [ ] 2.1 Remove focused tests for `openTarget`, `openArgument`, and `openResult` action metadata and behaviour.
+- [ ] 2.2 Ensure participant object resolution tests still cover target, argument, and result object availability through participant rows.
+
+## 3. Validation
+
+- [ ] 3.1 Run the command log applib focused test suite for replayable command mapping.
+- [ ] 3.2 Run OpenSpec validation for the change.