From 14abdec31a81e82a8c565ee2c00a151f90ad702f Mon Sep 17 00:00:00 2001 From: Hare Date: Wed, 30 Sep 2026 13:38:54 +0900 Subject: [PATCH] docs: leave object refetch timing to clients --- 2-core-model.md | 2 +- 3-protocol.md | 7 +++++-- 4-client.md | 9 +++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/2-core-model.md b/2-core-model.md index 9ef5763..4d43271 100644 --- a/2-core-model.md +++ b/2-core-model.md @@ -108,7 +108,7 @@ Objectは、同じ主体に公開された一つのWorldspace内でObjectの同 ValidatorはClientとHostの間で扱い、AIやユーザーに直接管理させない。Transport Bindingはvalidatorを対応するProtocol fieldとして保持し、HTTP ETag等のrepresentation metadataで置き換えない。 -Validatorが一致しない場合、Clientは現在のObjectに対してOperationを自動的に再試行してはならない。Hostは`validator_mismatch`を返し、Clientは再観測を要求する。 +Validatorが一致しない場合、Hostは`validator_mismatch`を返してOperationを実行しない。同じOperationを再試行するなら、先に新しい観測を取得しなければならない。 ## 同一性と観測整合性の分離 diff --git a/3-protocol.md b/3-protocol.md index e2d0d14..92ec37d 100644 --- a/3-protocol.md +++ b/3-protocol.md @@ -618,9 +618,12 @@ Validatorおよび観測関連errorの回復対象は次のとおりである。 - `NotFound`では、Clientは対象Entryをstaleとして扱い、必要に応じて親Treeを再観測する。 - `InterfaceNotFound`では、ClientはそのInterface observationを使用せず、参照元Objectを再観測できる。 -- `ValidatorRequired`または`ValidatorMismatch`では、Clientは対象Objectを再観測してから、ユーザーまたはApplicationの判断なしにOperationを自動再実行してはならない。 +- `ValidatorRequired`または`ValidatorMismatch`では、Clientは対象Objectを再観測する。 - `InterfaceMismatch`では、Clientは対象Objectを再観測し、現在公開されているInterface参照の集合を取得する。 -- `InterfaceValidatorRequired`または`InterfaceValidatorMismatch`では、Clientは同じInterface参照を`fetch_interface`で再観測してから、現在のDescriptorに基づいてOperationを再構築する。ユーザーまたはApplicationの判断なしにOperationを自動再実行してはならない。 +- `InterfaceValidatorRequired`または`InterfaceValidatorMismatch`では、Clientは同じInterface参照を`fetch_interface`で再観測し、現在のDescriptorに基づいてOperationを再構築する。 + +同じOperationを再試行するなら、先に新しい観測を取得しなければならない。 + - `InvalidRequest`または`InvalidArguments`では、Clientは同じrequestを変更せずに再送しない。 - `ResourceLimitExceeded`では、Clientはrequest size、depth、limit等を削減できるが、`call_operation`を自動再実行しない。 diff --git a/4-client.md b/4-client.md index e180c69..233d637 100644 --- a/4-client.md +++ b/4-client.md @@ -124,11 +124,9 @@ Clientは、エントリを観測した後にOperationを実行するまでの Objectが`validator`を持つ場合、Clientは観測したpathとvalidatorを対応付ける。条件付きOperationでは両者をtargetとしてHostへ渡し、validatorの比較と実行をHost上でatomicに行わせる。ValidatorはAIやユーザーに直接管理させず、Transport BindingでもProtocol struct上のfieldとして保持する。HTTP ETag等のrepresentation metadataをWIP validatorの代用として解釈しない。 -ClientはOperationに選択したInterface参照と、`fetch_interface`で観測したoptionalなInterface validatorもrequestへ含める。MutableなInterfaceがvalidatorを返す場合は必須preconditionとして使用し、`InterfaceValidatorMismatch`ではInterfaceだけを再観測する。`InterfaceMismatch`ではObjectを再観測し、現在のInterface集合を取得する。いずれの場合もOperationを自動再試行しない。 +ClientはOperationに選択したInterface参照と、`fetch_interface`で観測したoptionalなInterface validatorもrequestへ含める。MutableなInterfaceがvalidatorを返す場合は必須preconditionとして使用し、`InterfaceValidatorMismatch`ではInterfaceだけを再観測する。`InterfaceMismatch`ではObjectを再観測し、現在のInterface集合を取得する。 -Operation responseが新しいObject validatorを返した場合、Clientは対象のCachedObjectへ反映する。Operationによって`name`、`description`、Interface集合等の公開情報が変化し得る場合、ClientはCachedObjectのmetadataをstaleとして扱い、利用前に`fetch`で再観測する。 - -対象が変化していた場合、Clientは新しいObjectに対してOperationを自動再試行せず、対象が変化したことを上位インターフェースへ通知して再観測を要求する。 +Operation responseが新しいObject validatorを返した場合、Clientは対象のCachedObjectへ反映する。 ## Failure handling @@ -139,6 +137,9 @@ ClientはHostが返すProtocol errorの`code`で回復actionを決定し、人 - `InterfaceMismatch`では対象Objectを再観測する。 - `InterfaceValidatorRequired`または`InterfaceValidatorMismatch`では対象Interfaceを再観測する。 - `ValidatorRequired`または`ValidatorMismatch`では対象Objectを再観測する。 + +同じOperationを再試行するなら、先に新しい観測を取得しなければならない。 + - `InvalidRequest`または`InvalidArguments`では同じrequestを変更せずに再送しない。 - `ResourceLimitExceeded`ではrequest size、depth、limit等を削減できるが、Operationを自動再実行しない。 - `PermissionDenied`では公開済みOperationが実行拒否されたことを示し、Object自体が閲覧禁止で存在するとは推測しない。