コマンド、イベント、および順序付け
15. コマンド、イベント、および同時実行性
Section titled “15. コマンド、イベント、および同時実行性”15.1 コマンド
Section titled “15.1 コマンド”Command は、1 回の構造化状態遷移を要求する署名付きリクエストです。すべての Command エンベロープ MUST は、安定した Action ID、プロトコルバージョン、actor、kind、payload、correlation ID、発行時刻、および署名を含みます。Group スコープの Command MUST は Group ID を含みます。状態を変更する Agent Command MUST は、現在の Session Epoch と Membership Epoch も含みます。既存 Group 内の人間の Command MUST は現在の Membership Epoch を含み、Agent Session Epoch を MUST NOT 含みます。Organization サービスが発行する Command は、Agent Session Epoch または Membership Epoch を MUST NOT 捏造します。
mission.create および mission.create_follow_up は作成対象の Group
ID を含みますが、新しい Group
Membership がまだ存在せず、人間の Command は Agent セッションを使用しないため、Membership
Epoch と Session Epoch を省略します。コントロールプレーンは mission.create
を認証、中継、検証できますが、署名された Command アクターと結果として得られるルート MissionOwner は人間のままです。コントロール プレーンは MissionOwner にはなりません。 Organization が所有する
ext.missionweaveprotocol.registry.agent_card_register および
ext.missionweaveprotocol.identity.session_open
ブートストラップ コマンドは、Group
ID と 3 つのロール/セッション エポックすべてを省略します。
現在の Coordinator リースから権威を得る Agent Command
MUST は、現在の Coordinator Epoch を含みます。これは
mission.renew_coordinator、mission.submit_for_approval、mission.create_child、membership.grant_delegation、work.accept_result、および Agent が発行する
mission.terminate に必要です。サービスが発行する mission.terminate
は Organization ポリシーによって認可され、Coordinator
Epoch を含みません。既存の構造化状態を変更する Command
SHOULD は、期待する集約リビジョンを含みます。1 回限りの cooperation
escalation を使う Command MUST は、cooperationOverrideGrantId も含みます。
同じ (actor ID, Action ID)
に対する正規署名内容がバイト同等である場合、システム MUST は元のレシートを返し、2 回目の状態遷移を MUST
NOT 追加します。同じ Action
ID を異なる正規内容で再利用した場合、ACTION_ID_COLLISION で MUST 失敗します。
Group Authority MUST は actor を認証し、Session Epoch、Membership Epoch、Schema、現在の集約リビジョン、ロール、委任、予算、ポリシー、およびリースを検証したうえで、Command を拒否するか、結果の Event をその Group 内へアトミックに追加します。
コア Command の種類は次のとおりです。
mission.create mission.assign_coordinatormission.renew_coordinator mission.submit_for_approvalmission.approve mission.request_changesmission.cancel mission.terminatemission.create_child mission.create_follow_upmembership.change membership.endmembership.grant_delegationmessage.post message.correctmessage.retract message.redactwork.propose work.authorizework.offer work.accept_offerwork.start work.checkpointwork.block work.unblockwork.submit work.accept_resultwork.fail work.cancelartifact.publish approval.grant_executionpolicy.grant_cooperation_override参照コアはさらに、Agent
Card の登録、セッションのアクティブ化、依存関係の挿入、実行リースの更新、権威あるリソース使用量の記録、および Group アーカイブのための Organization が所有する
ext.missionweaveprotocol.* コマンドを定義します。将来の Extension
Profile では、明示的なオファーの拒否、説明、Mission の一時停止などの便利なコマンドが標準化される可能性がありますが、これらの名前は v0.1 コア移行ではありません。
15.2 イベントと Group の順序
Section titled “15.2 イベントと Group の順序”Event は不変の受理済み事実です。Group Event エンベロープ MUST は、Event
ID、Group ID、厳密に増加する Group
sequence、集約リビジョン、kind、actor、cause、correlation
ID、発生時刻、payload、および Group
Authority の署名を含みます。Organization スコープの
ext.missionweaveprotocol.registry.agent_card_registered および
ext.missionweaveprotocol.identity.session_opened ファクトには、共通の Event
ID、actor、cause、correlation、payload、time、受理した authority、および署名の共通フィールドを含みますが、Group
ID、Group sequence、または Group 集約リビジョンを MUST NOT 含みます。
Group Authority は、永続化する各 Group Event に単調増加する sequence を 1 つ割り当てます。この sequence が、決定的な表示、復旧、および監査の順序を与えます。サービスが表示順序を割り当てても、通常の Message は論理的には並行し得ます。構造化状態の遷移は、Event 順序と集約リビジョンに依存します。
コア Event 種類は、以下を含むコア コマンドに対応する過去形の事実です。
mission.created mission.coordinator.assignedmission.coordinator.renewed mission.submitted_for_approvalmission.approved mission.changes_requestedmission.cancelled mission.terminatedmission.child.created mission.follow_up.createdmembership.changed membership.endedmembership.delegation.grantedmessage.posted message.correctedmessage.retracted message.redactedwork.proposed work.authorizedwork.offer.created work.offer.acceptedwork.contract.revised work.startedwork.progressed work.checkpointedwork.blocked work.unblockedwork.submitted work.result.acceptedwork.failed work.cancelledartifact.published approval.execution.grantedpolicy.cooperation_override.grantedgroup.snapshot.created group.archivedwork.contract.revised および work.progressed
は、参照 Organization が所有する依存関係の挿入および実行リース更新コマンドによって発行されるコア WorkItem ファクトです。 Agent
Card およびセッション アクティベーション ファクトは、ext.missionweaveprotocol.*
Event の種類を保持します。 group.snapshot.created および group.archived
は、署名付きスナップショットとポリシー ログ リンクの検証後に、Organization が所有する
ext.missionweaveprotocol.core.group_archive
Command によってアトミックに発行されるコア アーカイブ ファクトです。
自動イベント MAY は、受け入れられた Command、以前の Event、タイマー、またはポリシーの決定によって発生します。異なるグループのイベントには定義された順序はありません。
15.3 楽観的な同時実行性
Section titled “15.3 楽観的な同時実行性”構造化集計コマンド SHOULD は expectedRevision
を提供します。現在のリビジョンと等しくない場合、Group Authority MUST は
REVISION_CONFLICT を使用して Command を拒否し、MUST
NOT はそれを部分的に適用します。アトミックファーストアクセプト所有権、リース更新、Membership 変更、および Approval では、特権を持つ内部アクターによってワイヤー フィールドが省略された場合でも、常に比較と設定の処理が必要です。
17. WebSocket バインディング
Section titled “17. WebSocket バインディング”17.1 接続
Section titled “17.1 接続”MissionWeaveProtocol 0.1 サーバー MUST は、TLS 1.3
(wss) 経由で WebSocket を提供します。単一の認証された接続は、1 つの Agent で使用されるすべてのグループを多重化します。各 WebSocket メッセージ MUST には、schemas/websocket-frame.schema.json
に準拠する UTF-8
JSON テキスト フレームが 1 つだけ含まれます。バイナリ WebSocket メッセージ MUST
NOT には、v0.1 の MissionWeaveProtocol オブジェクトまたは Artifact コンテンツが含まれます。
コア フレーム タイプは、HELLO、SUBSCRIBE、COMMAND、EVENT、ACK、PING、およびERROR。部分的な Message ストリーミング フレームが定義されていません。
17.2 サブスクリプション
Section titled “17.2 サブスクリプション”認証後、クライアントは Group
ID、Group ごとのリプレイ位置、およびオプションのアテンション フィルターを含む
SUBSCRIBE
を送信します。フィルターは、承認や永続的な履歴ではなく、ライブ配信を変更します。サーバー MUST は、すべての Group および MUST
NOT に対して独立して Membership を適用し、不正な Group が存在するかどうかを明らかにします。
1 つの接続 MAY が複数のグループからのイベントをインターリーブします。順序は各 Group 内でのみ保証されます。受信側 MUST は、シーケンス ロジックを適用する前に Group ID によってルーティングします。
17.3 フロー制御と活性度
Section titled “17.3 フロー制御と活性度”ACK は永続的な進行状況を提供します。 PING
は活性を提供し、MAY はプレゼンス レコードを保持します。ピアは応答 PING
でその nonce をエコーします。サーバー MUST は、制限付きバッファリングと Group ごとのバックプレッシャーを適用します。制限に達すると、無関係なグループを切断するのではなく、SHOULD が Group を一時停止し、再試行ガイダンス付きで
BACKPRESSURE を発行します。
17.4 正規エンコーディング
Section titled “17.4 正規エンコーディング”ワイヤー JSON は正規のメンバー順で到着する必要はありませんが、すべてのハッシュ、コンテンツから導出される識別子、または署名は RFC 8785 JCS バイトを MUST 使用します。重複するオブジェクト メンバー名は、スキーマ検証の前に MUST 拒否されます。数値と文字列は、 セクション 2 の finite-binary64 と I-JSON の規則を MUST 満たします。準拠する実装は、同じ JSON 値から同じ JCS バイトを MUST 生成します。
大規模なコンテンツは Artifact
URI とコンテンツ ハッシュによって参照されます。不明なコア プロパティは v0.1 スキーマによって拒否されます。不明、非クリティカル Extension
Profile データは変更されずに保存および中継されます。不明な重大な拡張機能の原因
UNKNOWN_CRITICAL_EXTENSION.