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/08/26 19:48:39 UTC

(causeway) 06/06: archives deferred action prompt validation

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

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

commit 9521e074af6104d1df193f4c2a764a51c2110de9
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Aug 26 20:39:39 2026 +0100

    archives deferred action prompt validation
---
 .../.openspec.yaml                                 |  0
 .../design.md                                      |  0
 .../evidence/baseline-and-boundaries.md            |  0
 .../evidence/implementation-and-qualification.md   |  0
 .../proposal.md                                    |  0
 .../specs/domain-web-components/spec.md            |  0
 .../tasks.md                                       |  0
 openspec/specs/domain-web-components/spec.md       | 24 ++++++++++++++++++++--
 8 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/openspec/changes/defer-action-prompt-validation-until-focus-leave/.openspec.yaml b/openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/.openspec.yaml
similarity index 100%
rename from openspec/changes/defer-action-prompt-validation-until-focus-leave/.openspec.yaml
rename to openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/.openspec.yaml
diff --git a/openspec/changes/defer-action-prompt-validation-until-focus-leave/design.md b/openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/design.md
similarity index 100%
rename from openspec/changes/defer-action-prompt-validation-until-focus-leave/design.md
rename to openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/design.md
diff --git a/openspec/changes/defer-action-prompt-validation-until-focus-leave/evidence/baseline-and-boundaries.md b/openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/evidence/baseline-and-boundaries.md
similarity index 100%
rename from openspec/changes/defer-action-prompt-validation-until-focus-leave/evidence/baseline-and-boundaries.md
rename to openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/evidence/baseline-and-boundaries.md
diff --git a/openspec/changes/defer-action-prompt-validation-until-focus-leave/evidence/implementation-and-qualification.md b/openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/evidence/implementation-and-qualification.md
similarity index 100%
rename from openspec/changes/defer-action-prompt-validation-until-focus-leave/evidence/implementation-and-qualification.md
rename to openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/evidence/implementation-and-qualification.md
diff --git a/openspec/changes/defer-action-prompt-validation-until-focus-leave/proposal.md b/openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/proposal.md
similarity index 100%
rename from openspec/changes/defer-action-prompt-validation-until-focus-leave/proposal.md
rename to openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/proposal.md
diff --git a/openspec/changes/defer-action-prompt-validation-until-focus-leave/specs/domain-web-components/spec.md b/openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/specs/domain-web-components/spec.md
similarity index 100%
rename from openspec/changes/defer-action-prompt-validation-until-focus-leave/specs/domain-web-components/spec.md
rename to openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/specs/domain-web-components/spec.md
diff --git a/openspec/changes/defer-action-prompt-validation-until-focus-leave/tasks.md b/openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/tasks.md
similarity index 100%
rename from openspec/changes/defer-action-prompt-validation-until-focus-leave/tasks.md
rename to openspec/changes/archive/2026-08-26-defer-action-prompt-validation-until-focus-leave/tasks.md
diff --git a/openspec/specs/domain-web-components/spec.md b/openspec/specs/domain-web-components/spec.md
index 1dfa3fc05aa..bf65203bf77 100644
--- a/openspec/specs/domain-web-components/spec.md
+++ b/openspec/specs/domain-web-components/spec.md
@@ -323,18 +323,38 @@ The library SHALL provide a standard controller that handles unclaimed semantic
 - **THEN** the standard controller opens an accessible prompt built from the introspected action parameter wrappers
 
 ### Requirement: Rich action parameter negotiation
-The standard action prompt SHALL support parameter hidden state, disabled state, defaults, choices, autocomplete, and validation when those capabilities are present in the rich schema.
+The standard action prompt SHALL support parameter hidden state, disabled state, defaults, choices, autocomplete, validation, and focus-completion timing when those capabilities are present in the rich schema.
+Initial structural preparation SHALL remain GraphQL-authoritative, while parameter validity presentation and dependent-value recomputation SHALL be deferred until focus leaves the actively edited field or the user invokes the action.
 
 #### Scenario: Prompt initializes
 - **WHEN** a parameterized action prompt opens
 - **THEN** parameters are presented in schema order
 - **AND** advertised hidden, disabled, default, and choice semantics are resolved using the current pending preceding arguments
+- **AND** untouched parameter validity reasons are not presented as errors
+
+#### Scenario: User edits the focused parameter
+- **WHEN** input or change events update the parameter that still owns focus
+- **THEN** the controller retains the latest codec-produced pending value
+- **AND** does not request parameter-state recomputation or present that parameter's validity reason while editing continues
+- **AND** autocomplete search may continue through its independently advertised capability
+
+#### Scenario: Edited parameter loses focus
+- **WHEN** focus leaves an edited action parameter for another prompt control
+- **THEN** the controller recomputes authoritative parameter state using the current pending argument set
+- **AND** presents any mapped validity reason for that completed parameter
+- **AND** retains focus on the newly selected control
 
 #### Scenario: Earlier parameter changes
-- **WHEN** an earlier parameter value changes
+- **WHEN** an earlier parameter value is completed by focus departure
 - **THEN** later parameter semantics whose GraphQL fields accept preceding arguments are invalidated
 - **AND** recomputed using the current pending argument set
 
+#### Scenario: Invoke occurs before focus departure
+- **WHEN** the user invokes an action while the current parameter has not otherwise lost focus
+- **THEN** the controller validates the complete latest pending argument set
+- **AND** reveals applicable mapped parameter reasons before blocking invalid invocation
+- **AND** invokes only when authoritative whole-action validation succeeds
+
 #### Scenario: Parameter autocomplete becomes obsolete
 - **WHEN** an autocomplete response belongs to an older search or pending-argument generation
 - **THEN** the prompt discards that response without replacing newer suggestions