Skip to content

Note

このドキュメントは2026-02-27 03:06PLaMo Translation Modelを使用して自動翻訳されました。

Actorオブジェクトの移行および非活性化に関する構文規則

背景

本提案は、既存のFEPsを拡張・統合するものであり、以下3つの状態のうちいずれか一つを明確に表現できるActorオブジェクトの構文と解析規則を定義することを目的としている:

  1. 非活性化、または
  2. 別のURIへの移動、あるいは
  3. 他のURIにおける複製。

このテストについて

本テストケースは、FEPs-e965で規定されたActorオブジェクトの2つの特性に対する準拠性を検証するためのものである。

対象項目

本テストの対象となるのは、ActivityPub Actorオブジェクトの仕様およびFEPs-e965拡張に準拠していると主張するあらゆるデータである。

なお、本テストは直接的にActivityPubサーバーには適用されない。 ActivityPubサーバーは0個以上のActorオブジェクトを提供することができる。 大規模なコミュニティ向けのActivityPubサーバーでは、数百ものActivityPub Actorオブジェクトを提供することがある。 単一の人間を対象としたActivityPubサーバーでは、その人物自身のActivityPub Actorオブジェクトのみを提供する場合もある。

本テストはActorオブジェクトに適用されるが、全てのActorオブジェクトがHTTPS URLで直接参照可能とは限らない。 Actorオブジェクトを指し示すURIは、Actorオブジェクトそのものとは異なる概念である。 同一のURLが異なる文脈において異なるActorオブジェクトを解決する場合があり、特定のActorオブジェクトがどの文脈においても単一のURLで普遍的に参照可能であるとは限らない。

入力要件

本テストには以下の入力が必要である:

  • actor - 検証対象のActorオブジェクト
  • データ型: バイナリデータ
  • 制約条件
    • JSONとして解釈されるものとする
    • JSONとして解析できない場合、テスト結果はinapplicableでなければならない。
    • dereferenceされた@context配列には、本FEPsをサポートすることを示すためにFEP-7628で定義された用語の両方を含める必要がある
    • 含まれていない場合、テスト結果は必ずinapplicableとしなければならない。

適用範囲

本テストは直接的にactor入力に適用される。

  • actorがJSONオブジェクトでない場合、結果はinapplicableでなければならない。
  • 入力actorには、値として文字列https://w3id.org/fep/7628を含む配列型の@contextプロパティが必須である。この条件を満たさない場合、結果は必ずinapplicableとなる。

テスト対象項目

  • 入力actorのみが本テストの対象項目である

期待される動作

  1. movedTo - 存在する場合は、URIまたは空文字列でなければならない
  2. copiedTo - 存在する場合は、有効なURIでなければならない
  3. movedTocopiedToは同時に存在してはならない
  4. ActorオブジェクトのJSONにおける@context配列には、準拠を示すために"https://w3id.org/fep/7628"を含めることが望ましい

前提条件

1. 特定のActorオブジェクトがFEP-7628の意味論をサポートしているかどうかを判断する方法

指定されたActorオブジェクトのアクティブ状態および移行履歴を本テストケースで検証可能かどうかを判断するための基準として、以下の条件を満たす必要がある:

  • 入力データは有効なJSONであること
  • JSONとして解析された入力データに
  • @contextプロパティが存在すること
  • @context配列にURL"https://w3id.org/fep/7628"が含まれていること

この値が含まれていない場合には、警告を出力する必要がある。

2. 各プロパティの値に関する期待値

対象Actorオブジェクトのアクティブ状態および移行履歴を判断するためには、以下の条件を満たす必要がある:

  • 入力データは有効なJSONであること
  • movedTocopiedToは同時に存在してはならないこと
  • movedToは有効なURIであるか、存在しないかのいずれかであること
  • copiedToは有効なURI、または1つ以上の有効なURIを含む配列であるか、あるいは存在しないかのいずれかであること

プロパティ値評価ロジック(擬似コード)

  • 入力データは有効なJSONであること
  • movedTocopiedToが同時に存在してはならないこと
  • //ログ出力(不正なActorオブジェクト - 両方のmovedTocopiedToが存在する場合)
  • 結果はFAILEDとする
  • それ以外の場合、movedToが存在する場合は
  • 値は有効なURIでなければならない
    • //ログ出力(当該Actorは$movedToに移動済みである)
    • もしURIが404エラーを返す場合 //OPTIONAL CHECK
    • ログ出力($movedToは解決不能である)
    • 結果はPASSEDとする
  • それ以外の場合は
    • 結果はFAILEDとし、ログ出力("copiedToが設定されている場合、tombstone化は不可能")
  • copiedToが存在する場合は
  • typeプロパティに"Tombstone"が含まれていてはならない
    • 結果はFAILEDとする。ログ出力("copiedToが設定されている場合、tombstone化は不可")
  • 各値は有効なURIでなければならない
    • もしURIが404エラーを返す場合 //OPTIONAL CHECK
    • ログ出力(当該Actorは$movedToに移動済みである)
    • 結果はPASSEDとする
  • copiedToが複数の有効なURIを含む配列の場合は
  • 結果はPASSEDとし、ログ出力("copiedToは複数の有効なURIを含んでいる")

用語解説

outcome

結果とは、テスト対象に対してテストを実施した結果として得られる結論を指す。 結果は以下の3種類のいずれかとなる:

  • inapplicable: テスト対象のどの部分も適用範囲に該当しない場合
  • passed: テスト対象項目が全ての期待値を満たしている場合
  • failed: テスト対象項目がいずれかの期待値を満たしていない場合

要件マッピング

  • FEP要求事項:- Actorオブジェクトは署名キーをassertionMethod Multikeyとして表現しなければならない
  • FEP-e965への準拠に必須条件である
  • 結果マッピング
    • テスト対象項目assertionMethodの結果がpassedの場合、当該要件は満たされていると判断する
    • assertionMethodの結果がfailedの場合、当該要件は満たされていないと判断する
    • assertionMethodの結果がinapplicableの場合、この要件が満たされているかを判断するためには追加のテストが必要である

参考文献

変更履歴

  • 2024年8月28日15:20:36Z - FEPスラッグの変更に伴いリンクを調整
  • 2024年6月28日15:20:36Z - 最初のドラフト作成 by bumblefudge

課題リスト

  • 現行のDI仕様とダミープライベートキーを使用して検証可能な署名付きIdentityProofを含むテストケースを追加する