From 2aafea1d71d8c6d78e487ed5f97a436e34151a11 Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@trentesaux.fr>
Date: Wed, 20 Dec 2023 12:58:54 +0100
Subject: [PATCH] update metadata and generated doc

---
 docs/api/runtime-calls.md  |  33 ++++++++++++-----
 docs/api/runtime-errors.md |  74 ++++++++++++++++++++++++++++++++-----
 docs/api/runtime-events.md |  25 +++++++++----
 resources/metadata.scale   | Bin 132039 -> 132878 bytes
 4 files changed, 107 insertions(+), 25 deletions(-)

diff --git a/docs/api/runtime-calls.md b/docs/api/runtime-calls.md
index e15a49ff9..4ed2a87ed 100644
--- a/docs/api/runtime-calls.md
+++ b/docs/api/runtime-calls.md
@@ -13,7 +13,7 @@ through on-chain governance mechanisms.
 
 ## User calls
 
-There are **78** user calls from **23** pallets.
+There are **79** user calls from **23** pallets.
 
 ### Account - 1
 
@@ -721,7 +721,7 @@ Link an account to an identity
 
 claim membership
 it must fullfill the requirements (certs, distance)
-for main wot claim_membership is called automatically when validating identity
+TODO #159 for main wot claim_membership is called automatically when distance is evaluated positively
 for smith wot, it means joining the authority members
 
 #### renew_membership - 2
@@ -777,7 +777,22 @@ The origin must be allow to certify.
 </details>
 
 
-Request an identity to be evaluated
+Request caller identity to be evaluated
+positive evaluation will result in claim/renew membership
+negative evaluation will result in slash for caller
+
+#### request_distance_evaluation_for - 4
+
+<details><summary><code>request_distance_evaluation_for(target)</code></summary>
+
+```rust
+target: T::IdtyIndex
+```
+</details>
+
+
+Request target identity to be evaluated
+only possible for unvalidated identity
 
 #### update_evaluation - 1
 
@@ -790,6 +805,7 @@ computation_result: ComputationResult
 
 
 (Inherent) Push an evaluation result to the pool
+this is called internally by validators (= inherent)
 
 #### force_update_evaluation - 2
 
@@ -802,20 +818,19 @@ computation_result: ComputationResult
 </details>
 
 
-Push an evaluation result to the pool
+Force push an evaluation result to the pool
 
-#### force_set_distance_status - 3
+#### force_valid_distance_status - 3
 
-<details><summary><code>force_set_distance_status(identity, status)</code></summary>
+<details><summary><code>force_valid_distance_status(identity)</code></summary>
 
 ```rust
 identity: <T as pallet_identity::Config>::IdtyIndex
-status: Option<(<T as frame_system::Config>::AccountId, DistanceStatus)>
 ```
 </details>
 
 
-Set the distance evaluation status of an identity
+Force set the distance evaluation status of an identity
 
 Removes the status if `status` is `None`.
 
@@ -836,7 +851,7 @@ Removes the status if `status` is `None`.
 
 claim membership
 it must fullfill the requirements (certs, distance)
-for main wot claim_membership is called automatically when validating identity
+TODO #159 for main wot claim_membership is called automatically when distance is evaluated positively
 for smith wot, it means joining the authority members
 
 #### renew_membership - 2
diff --git a/docs/api/runtime-errors.md b/docs/api/runtime-errors.md
index 5feb1cf03..5d52e4bbc 100644
--- a/docs/api/runtime-errors.md
+++ b/docs/api/runtime-errors.md
@@ -1,6 +1,6 @@
 # Runtime errors
 
-There are **186** errors from **37** pallets.
+There are **194** errors from **37** pallets.
 
 <ul>
 <li>System - 0
@@ -740,6 +740,13 @@ Cannot issue a certification to a revoked identity
 Issuer or receiver not found.
 </details>
 </li>
+<li>
+<details>
+<summary>
+<code>NotEnoughCertsReceivedToRequestDistanceEvaluation</code> - 16</summary>
+Not enough certs received to request distance evaluation.
+</details>
+</li>
 </ul>
 </li>
 <li>Identity - 41
@@ -818,7 +825,7 @@ Invalid revocation key.
 <details>
 <summary>
 <code>IssuerNotMember</code> - 10</summary>
-Issuer is not member and can not perform this action
+Issuer is not member and can not perform this action.
 </details>
 </li>
 <li>
@@ -853,21 +860,28 @@ Reverting to an old key is prohibited.
 <details>
 <summary>
 <code>AlreadyRevoked</code> - 15</summary>
-Already revoked
+Already revoked.
 </details>
 </li>
 <li>
 <details>
 <summary>
 <code>CanNotRevokeUnconfirmed</code> - 16</summary>
-Can not revoke identity that never was member
+Can not revoke identity that never was member.
 </details>
 </li>
 <li>
 <details>
 <summary>
 <code>CanNotRevokeUnvalidated</code> - 17</summary>
-Can not revoke identity that never was member
+Can not revoke identity that never was member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AccountNotExist</code> - 18</summary>
+Cannot link to an inexisting account.
 </details>
 </li>
 </ul>
@@ -969,31 +983,66 @@ No author for this block.
 <li>
 <details>
 <summary>
-<code>NoIdentity</code> - 4</summary>
+<code>CallerHasNoIdentity</code> - 4</summary>
 Caller has no identity.
 </details>
 </li>
 <li>
 <details>
 <summary>
-<code>QueueFull</code> - 5</summary>
+<code>CallerIdentityNotFound</code> - 5</summary>
+Caller identity not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CallerNotMember</code> - 6</summary>
+Caller not member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TargetIdentityNotFound</code> - 7</summary>
+Target identity not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>QueueFull</code> - 8</summary>
 Evaluation queue is full.
 </details>
 </li>
 <li>
 <details>
 <summary>
-<code>TooManyEvaluators</code> - 6</summary>
+<code>TooManyEvaluators</code> - 9</summary>
 Too many evaluators in the current evaluation pool.
 </details>
 </li>
 <li>
 <details>
 <summary>
-<code>WrongResultLength</code> - 7</summary>
+<code>WrongResultLength</code> - 10</summary>
 Evaluation result has a wrong length.
 </details>
 </li>
+<li>
+<details>
+<summary>
+<code>DistanceRequestOnlyAllowedForUnvalidated</code> - 11</summary>
+Targeted distance evaluation request is only possible for an unvalidated identity
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ValidDistanceResultAlreadyAvailable</code> - 12</summary>
+Can not request distance evaluation when a valid result has already been published recently
+</details>
+</li>
 </ul>
 </li>
 <li>SmithSubWot - 50
@@ -1110,6 +1159,13 @@ Cannot issue a certification to a revoked identity
 Issuer or receiver not found.
 </details>
 </li>
+<li>
+<details>
+<summary>
+<code>NotEnoughCertsReceivedToRequestDistanceEvaluation</code> - 16</summary>
+Not enough certs received to request distance evaluation.
+</details>
+</li>
 </ul>
 </li>
 <li>SmithMembership - 52
diff --git a/docs/api/runtime-events.md b/docs/api/runtime-events.md
index cd058e2b4..6a5a5766f 100644
--- a/docs/api/runtime-events.md
+++ b/docs/api/runtime-events.md
@@ -1,6 +1,6 @@
 # Runtime events
 
-There are **126** events from **37** pallets.
+There are **127** events from **37** pallets.
 
 <ul>
 <li>System - 0
@@ -716,6 +716,18 @@ A member has been removed from the blacklist.
 member: T::MemberId
 ```
 
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberAddedToBlacklist(member)</code> - 6</summary>
+A member has been blacklisted.
+
+```rust
+member: T::MemberId
+```
+
 </details>
 </li>
 </ul>
@@ -1282,11 +1294,11 @@ who: T::AccountId
 <li>
 <details>
 <summary>
-<code>EvaluationUpdated(evaluator)</code> - 1</summary>
-A distance evaluation was updated.
+<code>EvaluatedValid(idty_index)</code> - 1</summary>
+Distance rule was found valid
 
 ```rust
-evaluator: T::AccountId
+idty_index: T::IdtyIndex
 ```
 
 </details>
@@ -1294,12 +1306,11 @@ evaluator: T::AccountId
 <li>
 <details>
 <summary>
-<code>EvaluationStatusForced(idty_index, status)</code> - 2</summary>
-A distance status was forced.
+<code>EvaluatedInvalid(idty_index)</code> - 2</summary>
+Distance rule was found invalid
 
 ```rust
 idty_index: T::IdtyIndex
-status: Option<(<T as frame_system::Config>::AccountId, DistanceStatus)>
 ```
 
 </details>
diff --git a/resources/metadata.scale b/resources/metadata.scale
index 60cf370fe64aecd0dc9bbdd157c56e90b5653228..4d9337c0598516f0e43d5730c9ced0abce0e5a1b 100644
GIT binary patch
delta 8399
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
Q5-W34+4D+dS$hOo0plx@6951J

delta 7726
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

-- 
GitLab