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