use std::collections::{BTreeMap, BTreeSet};
use std::path::Path;
use trust_tasks_rs::DeclaredErrorCode;
use trust_tasks_rs::schema_index::error_codes_for;
use super::conformance::resolved_uris;
struct Witness {
declared: DeclaredErrorCode,
via: &'static str,
via_value: &'static str,
file: &'static str,
test_fn: &'static str,
}
macro_rules! witness {
($declared:expr, $via:path, $file:literal, $test_fn:literal) => {
Witness {
declared: $declared,
via: {
let s = stringify!($via);
match s.rfind("::") {
Some(i) => s.split_at(i + 2).1,
None => s,
}
},
via_value: $via,
file: $file,
test_fn: $test_fn,
}
};
}
fn witnesses() -> Vec<Witness> {
use trust_tasks_rs::specs::vtc as s;
use vta_sdk::protocols::join_requests as jr;
use vta_sdk::protocols::vetting as vet;
#[allow(unused_mut)]
let mut table = vec![
witness!(
s::members::update::v0_1::error_codes::CONSENT_GRANT_FORBIDDEN,
crate::routes::members::update::UPDATE_ERR_CONSENT_GRANT_FORBIDDEN,
"members_crud.rs",
"the_update_task_refuses_to_grant_registry_consent"
),
witness!(
s::join_requests::submit::v0_3::error_codes::CHALLENGE_NOT_ISSUED,
jr::JOIN_REQUEST_SUBMIT_ERR_CHALLENGE_NOT_ISSUED,
"hidden_vetting_tasks.rs",
"a_refused_challenge_says_which_way"
),
witness!(
s::join_requests::submit::v0_3::error_codes::CHALLENGE_ALREADY_USED,
jr::JOIN_REQUEST_SUBMIT_ERR_CHALLENGE_ALREADY_USED,
"hidden_vetting_tasks.rs",
"a_refused_challenge_says_which_way"
),
witness!(
s::join_requests::submit::v0_3::error_codes::CHALLENGE_EXPIRED,
jr::JOIN_REQUEST_SUBMIT_ERR_CHALLENGE_EXPIRED,
"hidden_vetting_tasks.rs",
"a_refused_challenge_says_which_way"
),
witness!(
s::join_requests::submit::v0_3::error_codes::CHALLENGE_MISMATCH,
jr::JOIN_REQUEST_SUBMIT_ERR_CHALLENGE_MISMATCH,
"hidden_vetting_tasks.rs",
"a_refused_challenge_says_which_way"
),
witness!(
s::join_requests::supplement::v0_1::error_codes::CHALLENGE_NOT_ISSUED,
jr::JOIN_REQUEST_SUPPLEMENT_ERR_CHALLENGE_NOT_ISSUED,
"hidden_vetting_tasks.rs",
"a_refused_supplement_challenge_says_which_way"
),
witness!(
s::join_requests::supplement::v0_1::error_codes::CHALLENGE_ALREADY_USED,
jr::JOIN_REQUEST_SUPPLEMENT_ERR_CHALLENGE_ALREADY_USED,
"hidden_vetting_tasks.rs",
"a_refused_supplement_challenge_says_which_way"
),
witness!(
s::join_requests::supplement::v0_1::error_codes::CHALLENGE_EXPIRED,
jr::JOIN_REQUEST_SUPPLEMENT_ERR_CHALLENGE_EXPIRED,
"hidden_vetting_tasks.rs",
"a_refused_supplement_challenge_says_which_way"
),
witness!(
s::join_requests::supplement::v0_1::error_codes::CHALLENGE_MISMATCH,
jr::JOIN_REQUEST_SUPPLEMENT_ERR_CHALLENGE_MISMATCH,
"hidden_vetting_tasks.rs",
"a_refused_supplement_challenge_says_which_way"
),
witness!(
s::rooms::community::create::v0_1::error_codes::VISIBILITY_NOT_PERMITTED,
crate::rooms::community::codes::CREATE_VISIBILITY_NOT_PERMITTED,
"community_rooms.rs",
"vtc_rooms_community_create_refuses_with_its_declared_codes"
),
witness!(
s::rooms::community::create::v0_1::error_codes::UNKNOWN_STORAGE_CONFIG,
crate::rooms::community::codes::CREATE_UNKNOWN_STORAGE_CONFIG,
"community_rooms.rs",
"vtc_rooms_community_create_refuses_with_its_declared_codes"
),
witness!(
s::rooms::community::create::v0_1::error_codes::NO_KEY_HOLDER,
crate::rooms::community::codes::CREATE_NO_KEY_HOLDER,
"community_rooms.rs",
"vtc_rooms_community_create_refuses_with_its_declared_codes"
),
witness!(
s::rooms::community::create::v0_1::error_codes::KEY_HOLDER_UNAVAILABLE,
crate::rooms::community::codes::CREATE_KEY_HOLDER_UNAVAILABLE,
"community_rooms.rs",
"vtc_rooms_community_create_refuses_with_its_declared_codes"
),
witness!(
s::rooms::community::create::v0_1::error_codes::KEY_HOLDER_REFUSED,
crate::rooms::community::codes::CREATE_KEY_HOLDER_REFUSED,
"community_rooms.rs",
"vtc_rooms_community_create_refuses_with_its_declared_codes"
),
witness!(
s::rooms::community::get::v0_1::error_codes::NOT_FOUND,
crate::rooms::community::codes::GET_NOT_FOUND,
"community_rooms.rs",
"vtc_rooms_community_reads_answer_not_found"
),
witness!(
s::rooms::community::update::v0_1::error_codes::NOT_FOUND,
crate::rooms::community::codes::UPDATE_NOT_FOUND,
"community_rooms.rs",
"vtc_rooms_community_update_answers_not_found_for_a_room_it_only_hosts"
),
witness!(
s::rooms::community::members::list::v0_1::error_codes::NOT_FOUND,
crate::rooms::community::codes::MEMBERS_LIST_NOT_FOUND,
"community_rooms.rs",
"vtc_rooms_community_reads_answer_not_found"
),
witness!(
s::rooms::community::members::add::v0_1::error_codes::NOT_FOUND,
crate::rooms::community::codes::ADD_NOT_FOUND,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::community::members::add::v0_1::error_codes::NOT_A_MEMBER,
crate::rooms::community::codes::ADD_NOT_A_MEMBER,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::community::members::add::v0_1::error_codes::ALREADY_MEMBER,
crate::rooms::community::codes::ADD_ALREADY_MEMBER,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::community::members::add::v0_1::error_codes::KEY_HOLDER_UNAVAILABLE,
crate::rooms::community::codes::ADD_KEY_HOLDER_UNAVAILABLE,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::community::members::add::v0_1::error_codes::KEY_HOLDER_REFUSED,
crate::rooms::community::codes::ADD_KEY_HOLDER_REFUSED,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::community::members::remove::v0_1::error_codes::NOT_FOUND,
crate::rooms::community::codes::REMOVE_NOT_FOUND,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::community::members::remove::v0_1::error_codes::NOT_IN_ROOM,
crate::rooms::community::codes::REMOVE_NOT_IN_ROOM,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::community::members::remove::v0_1::error_codes::KEY_HOLDER_UNAVAILABLE,
crate::rooms::community::codes::REMOVE_KEY_HOLDER_UNAVAILABLE,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::community::members::remove::v0_1::error_codes::KEY_HOLDER_REFUSED,
crate::rooms::community::codes::REMOVE_KEY_HOLDER_REFUSED,
"community_rooms.rs",
"vtc_rooms_community_members_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::list::v0_1::error_codes::NOT_A_MEMBER,
crate::rooms::community::codes::OFFERS_LIST_NOT_A_MEMBER,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::memberships::list::v0_1::error_codes::NOT_A_MEMBER,
crate::rooms::community::codes::MEMBERSHIPS_LIST_NOT_A_MEMBER,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::NOT_FOUND,
crate::rooms::community::codes::ACCEPT_NOT_FOUND,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::NOT_A_MEMBER,
crate::rooms::community::codes::ACCEPT_NOT_A_MEMBER,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::OFFER_EXPIRED,
crate::rooms::community::codes::ACCEPT_OFFER_EXPIRED,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::KEY_PACKAGE_REQUIRED,
crate::rooms::community::codes::ACCEPT_KEY_PACKAGE_REQUIRED,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::KEY_PACKAGE_NOT_EXPECTED,
crate::rooms::community::codes::ACCEPT_KEY_PACKAGE_NOT_EXPECTED,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::KEY_PACKAGE_INVALID,
crate::rooms::community::codes::ACCEPT_KEY_PACKAGE_INVALID,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::ALREADY_ACCEPTED,
crate::rooms::community::codes::ACCEPT_ALREADY_ACCEPTED,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::ADMISSION_PENDING,
crate::rooms::community::codes::ACCEPT_ADMISSION_PENDING,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::offers::accept::v0_1::error_codes::KEY_HOLDER_REFUSED,
crate::rooms::community::codes::ACCEPT_KEY_HOLDER_REFUSED,
"community_rooms.rs",
"vtc_rooms_offers_refuse_with_their_declared_codes"
),
witness!(
s::rooms::get::v0_1::error_codes::NOT_FOUND,
crate::rooms::storage_configs::codes::ROOM_GET_NOT_FOUND,
"room_usage_reports.rs",
"vtc_rooms_get_answers_not_found"
),
witness!(
s::rooms::usage::v0_1::error_codes::INVALID_RANGE,
crate::rooms::storage_configs::codes::USAGE_INVALID_RANGE,
"room_usage_reports.rs",
"vtc_rooms_usage_refuses_with_its_declared_codes"
),
witness!(
s::rooms::usage::v0_1::error_codes::MEMBER_USAGE_UNAVAILABLE,
crate::rooms::storage_configs::codes::USAGE_MEMBER_USAGE_UNAVAILABLE,
"room_usage_reports.rs",
"vtc_rooms_usage_refuses_with_its_declared_codes"
),
witness!(
s::rooms::usage::v0_1::error_codes::INVALID_CURSOR,
crate::rooms::storage_configs::codes::USAGE_INVALID_CURSOR,
"room_usage_reports.rs",
"vtc_rooms_usage_refuses_with_its_declared_codes"
),
witness!(
s::rooms::limits::set::v0_1::error_codes::NOT_FOUND,
crate::rooms::storage_configs::codes::LIMITS_NOT_FOUND,
"room_usage_reports.rs",
"vtc_rooms_limits_set_refuses_with_its_declared_codes"
),
witness!(
s::rooms::limits::set::v0_1::error_codes::ABOVE_CEILING,
crate::rooms::storage_configs::codes::LIMITS_ABOVE_CEILING,
"room_usage_reports.rs",
"vtc_rooms_limits_set_refuses_with_its_declared_codes"
),
witness!(
s::rooms::limits::set::v0_1::error_codes::MEMBER_LIMITS_UNAVAILABLE,
crate::rooms::storage_configs::codes::LIMITS_MEMBER_LIMITS_UNAVAILABLE,
"room_usage_reports.rs",
"vtc_rooms_limits_set_refuses_with_its_declared_codes"
),
witness!(
s::rooms::limits::set::v0_1::error_codes::INVALID_COMBINATION,
crate::rooms::storage_configs::codes::LIMITS_INVALID_COMBINATION,
"room_usage_reports.rs",
"vtc_rooms_limits_set_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::list::v0_1::error_codes::INVALID_CURSOR,
crate::rooms::storage_configs::codes::LIST_INVALID_CURSOR,
"room_storage_configs.rs",
"vtc_storage_configs_list_refuses_a_foreign_cursor"
),
witness!(
s::storage::configs::get::v0_1::error_codes::NOT_FOUND,
crate::rooms::storage_configs::codes::GET_NOT_FOUND,
"room_storage_configs.rs",
"vtc_storage_configs_get_answers_not_found"
),
witness!(
s::storage::configs::create::v0_1::error_codes::EXISTS,
crate::rooms::storage_configs::codes::CREATE_EXISTS,
"room_storage_configs.rs",
"vtc_storage_configs_create_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::create::v0_1::error_codes::INVALID_SETTINGS,
crate::rooms::storage_configs::codes::CREATE_INVALID_SETTINGS,
"room_storage_configs.rs",
"vtc_storage_configs_create_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::create::v0_1::error_codes::AUTH_NOT_ALLOWED,
crate::rooms::storage_configs::codes::CREATE_AUTH_NOT_ALLOWED,
"room_storage_configs.rs",
"vtc_storage_configs_create_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::update::v0_1::error_codes::NOT_FOUND,
crate::rooms::storage_configs::codes::UPDATE_NOT_FOUND,
"room_storage_configs.rs",
"vtc_storage_configs_update_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::update::v0_1::error_codes::KIND_IMMUTABLE,
crate::rooms::storage_configs::codes::UPDATE_KIND_IMMUTABLE,
"room_storage_configs.rs",
"vtc_storage_configs_update_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::update::v0_1::error_codes::LOCATION_IMMUTABLE,
crate::rooms::storage_configs::codes::UPDATE_LOCATION_IMMUTABLE,
"room_storage_configs.rs",
"vtc_storage_configs_update_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::update::v0_1::error_codes::INVALID_SETTINGS,
crate::rooms::storage_configs::codes::UPDATE_INVALID_SETTINGS,
"room_storage_configs.rs",
"vtc_storage_configs_update_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::update::v0_1::error_codes::AUTH_NOT_ALLOWED,
crate::rooms::storage_configs::codes::UPDATE_AUTH_NOT_ALLOWED,
"room_storage_configs.rs",
"vtc_storage_configs_update_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::update::v0_1::error_codes::NOT_ACTIVE,
crate::rooms::storage_configs::codes::UPDATE_NOT_ACTIVE,
"room_storage_configs.rs",
"vtc_storage_configs_update_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::retire::v0_1::error_codes::NOT_FOUND,
crate::rooms::storage_configs::codes::RETIRE_NOT_FOUND,
"room_storage_configs.rs",
"vtc_storage_configs_retire_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::retire::v0_1::error_codes::ROOMS_ASSIGNED,
crate::rooms::storage_configs::codes::RETIRE_ROOMS_ASSIGNED,
"room_storage_configs.rs",
"vtc_storage_configs_retire_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::retire::v0_1::error_codes::IS_DEFAULT,
crate::rooms::storage_configs::codes::RETIRE_IS_DEFAULT,
"room_storage_configs.rs",
"vtc_storage_configs_retire_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::probe::v0_1::error_codes::NOT_FOUND,
crate::rooms::storage_configs::codes::PROBE_NOT_FOUND,
"room_storage_configs.rs",
"vtc_storage_configs_probe_answers_not_found"
),
witness!(
s::rooms::storage::assign::v0_1::error_codes::ROOM_NOT_FOUND,
crate::rooms::storage_configs::codes::ASSIGN_ROOM_NOT_FOUND,
"room_storage_configs.rs",
"vtc_rooms_storage_assign_refuses_with_its_declared_codes"
),
witness!(
s::rooms::storage::assign::v0_1::error_codes::CONFIG_NOT_FOUND,
crate::rooms::storage_configs::codes::ASSIGN_CONFIG_NOT_FOUND,
"room_storage_configs.rs",
"vtc_rooms_storage_assign_refuses_with_its_declared_codes"
),
witness!(
s::rooms::storage::assign::v0_1::error_codes::CONFIG_NOT_ACTIVE,
crate::rooms::storage_configs::codes::ASSIGN_CONFIG_NOT_ACTIVE,
"room_storage_configs.rs",
"vtc_rooms_storage_assign_refuses_with_its_declared_codes"
),
witness!(
s::storage::configs::create::v0_1::error_codes::UNKNOWN_ACCOUNT,
crate::rooms::storage_configs::codes::CREATE_UNKNOWN_ACCOUNT,
"room_storage_configs.rs",
"vtc_storage_configs_create_refuses_an_account_the_vta_does_not_know"
),
witness!(
s::storage::configs::update::v0_1::error_codes::UNKNOWN_ACCOUNT,
crate::rooms::storage_configs::codes::UPDATE_UNKNOWN_ACCOUNT,
"room_storage_configs.rs",
"vtc_storage_configs_update_refuses_an_account_the_vta_does_not_know"
),
witness!(
s::storage::configs::probe::v0_1::error_codes::CREDENTIAL_REQUIRED,
crate::rooms::storage_configs::codes::PROBE_CREDENTIAL_REQUIRED,
"room_storage_configs.rs",
"vtc_storage_configs_probe_refuses_a_config_without_a_usable_credential"
),
witness!(
s::rooms::storage::assign::v0_1::error_codes::CREDENTIAL_REQUIRED,
crate::rooms::storage_configs::codes::ASSIGN_CREDENTIAL_REQUIRED,
"room_storage_configs.rs",
"vtc_rooms_storage_assign_refuses_a_config_without_a_usable_credential"
),
witness!(
s::join_requests::wallet_session::start::v0_1::error_codes::CRITERION_NOT_FOUND,
jr::WALLET_SESSION_START_ERR_CRITERION_NOT_FOUND,
"wallet_session.rs",
"the_start_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::wallet_session::start::v0_1::error_codes::NO_WALLET_PRESENTATION,
jr::WALLET_SESSION_START_ERR_NO_WALLET_PRESENTATION,
"wallet_session.rs",
"the_start_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::wallet_session::start::v0_1::error_codes::VERIFIER_NOT_CONFIGURED,
jr::WALLET_SESSION_START_ERR_VERIFIER_NOT_CONFIGURED,
"wallet_session.rs",
"the_start_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::wallet_session::start::v0_1::error_codes::REQUEST_NOT_FOUND,
jr::WALLET_SESSION_START_ERR_REQUEST_NOT_FOUND,
"wallet_session.rs",
"the_start_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::wallet_session::start::v0_1::error_codes::REQUEST_CLOSED,
jr::WALLET_SESSION_START_ERR_REQUEST_CLOSED,
"wallet_session.rs",
"the_start_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::wallet_session::start::v0_1::error_codes::TOO_MANY_SESSIONS,
jr::WALLET_SESSION_START_ERR_TOO_MANY_SESSIONS,
"wallet_session.rs",
"the_start_task_bounds_an_applicants_open_sessions"
),
witness!(
s::join_requests::wallet_session::status::v0_1::error_codes::NOT_FOUND,
jr::WALLET_SESSION_STATUS_ERR_NOT_FOUND,
"wallet_session.rs",
"a_wallet_presentation_becomes_evidence_the_applicant_can_read"
),
witness!(
s::join_requests::withdraw::v0_1::error_codes::NOT_FOUND,
jr::JOIN_REQUEST_WITHDRAW_ERR_NOT_FOUND,
"join_requests.rs",
"the_withdraw_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::withdraw::v0_1::error_codes::ALREADY_DECIDED,
jr::JOIN_REQUEST_WITHDRAW_ERR_ALREADY_DECIDED,
"join_requests.rs",
"the_withdraw_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::supplement::v0_1::error_codes::NOT_FOUND,
jr::JOIN_REQUEST_SUPPLEMENT_ERR_NOT_FOUND,
"join_requests.rs",
"the_supplement_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::supplement::v0_1::error_codes::NOT_AWAITING_EVIDENCE,
jr::JOIN_REQUEST_SUPPLEMENT_ERR_NOT_AWAITING_EVIDENCE,
"join_requests.rs",
"the_supplement_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::supplement::v0_1::error_codes::ALREADY_DECIDED,
jr::JOIN_REQUEST_SUPPLEMENT_ERR_ALREADY_DECIDED,
"join_requests.rs",
"the_supplement_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::submit::v0_3::error_codes::ATTRIBUTES_MISSING,
jr::JOIN_REQUEST_SUBMIT_ERR_ATTRIBUTES_MISSING,
"join_requests.rs",
"requested_attributes_are_published_enforced_and_kept_with_the_request"
),
witness!(
s::join_requests::submit::v0_3::error_codes::ATTRIBUTES_UNREQUESTED,
jr::JOIN_REQUEST_SUBMIT_ERR_ATTRIBUTES_UNREQUESTED,
"join_requests.rs",
"requested_attributes_are_published_enforced_and_kept_with_the_request"
),
witness!(
s::vetting::vetters::profile::v0_1::error_codes::NOT_ELIGIBLE,
vet::VETTING_VETTER_PROFILE_ERR_NOT_ELIGIBLE,
"join_requests.rs",
"only_a_member_holding_a_live_grant_may_publish_a_profile"
),
witness!(
s::vetting::vetters::resend::v0_1::error_codes::NOT_GRANTED,
vet::VETTING_VETTER_RESEND_ERR_NOT_GRANTED,
"join_requests.rs",
"a_vetter_asks_for_the_grant_credential_again"
),
witness!(
s::invitations::deliver::v0_1::error_codes::NOT_FOUND,
crate::routes::invitations::INVITATION_DELIVER_ERR_NOT_FOUND,
"invitations.rs",
"deliver_refuses_what_it_cannot_deliver"
),
witness!(
s::invitations::deliver::v0_1::error_codes::REVOKED,
crate::routes::invitations::INVITATION_DELIVER_ERR_REVOKED,
"invitations.rs",
"deliver_refuses_what_it_cannot_deliver"
),
witness!(
s::invitations::deliver::v0_1::error_codes::NO_ROUTE,
crate::routes::invitations::INVITATION_DELIVER_ERR_NO_ROUTE,
"invitations.rs",
"deliver_refuses_what_it_cannot_deliver"
),
witness!(
s::invitations::issue::v0_1::error_codes::UNKNOWN_ROLE,
crate::routes::invitations::INVITATION_ISSUE_ERR_UNKNOWN_ROLE,
"invitations.rs",
"invite_refuses_a_role_the_community_does_not_define"
),
witness!(
s::invitations::revoke::v0_1::error_codes::NOT_FOUND,
crate::routes::invitations::INVITATION_REVOKE_ERR_NOT_FOUND,
"invitations.rs",
"revoke_unknown_invitation_is_404"
),
witness!(
s::members::credentials::v0_1::error_codes::NOT_FOUND,
crate::routes::members::credentials::MEMBER_CREDENTIALS_ERR_NOT_FOUND,
"members_crud.rs",
"member_credentials_for_an_unknown_member_is_the_declared_not_found"
),
witness!(
s::join_requests::decide::v0_1::error_codes::NOT_FOUND,
crate::routes::join_requests::decide::DECIDE_ERR_NOT_FOUND,
"join_requests.rs",
"the_decide_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::decide::v0_1::error_codes::NOT_PENDING,
crate::routes::join_requests::decide::DECIDE_ERR_NOT_PENDING,
"join_requests.rs",
"the_decide_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::join_requests::show::v0_1::error_codes::NOT_FOUND,
crate::routes::join_requests::read::SHOW_ERR_NOT_FOUND,
"join_requests.rs",
"show_for_an_unknown_request_is_the_declared_not_found"
),
witness!(
s::join_requests::status::v0_1::error_codes::NOT_FOUND,
crate::routes::join_requests::status::STATUS_ERR_NOT_FOUND,
"join_requests.rs",
"status_is_not_found_alike_for_an_unknown_and_a_foreign_request"
),
witness!(
s::join_requests::submit::v0_3::error_codes::PRESENTATION_INVALID,
super::SUBMIT_ERR_PRESENTATION_INVALID,
"join_requests.rs",
"a_submitted_presentation_held_by_someone_else_is_presentation_invalid"
),
witness!(
s::join_requests::submit::v0_3::error_codes::NOT_ACCEPTING,
jr::JOIN_REQUEST_SUBMIT_ERR_NOT_ACCEPTING,
"join_requests.rs",
"a_community_with_no_criteria_is_not_accepting"
),
witness!(
s::join_requests::submit::v0_3::error_codes::CRITERION_UNKNOWN,
jr::JOIN_REQUEST_SUBMIT_ERR_CRITERION_UNKNOWN,
"join_requests.rs",
"a_submission_naming_an_unpublished_criterion_is_criterion_unknown"
),
witness!(
s::members::self_remove::v0_1::error_codes::NOT_MEMBER,
crate::ceremony::orchestrate::SELF_REMOVE_ERR_NOT_MEMBER,
"join_requests.rs",
"self_remove_by_a_non_member_is_the_declared_not_member"
),
witness!(
s::members::vmc::v0_1::error_codes::SUBJECT_MISMATCH,
crate::members::inbound_vmc::VMC_ERR_SUBJECT_MISMATCH,
"join_requests.rs",
"the_vmc_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::vmc::v0_1::error_codes::NOT_A_MEMBER,
crate::members::inbound_vmc::VMC_ERR_NOT_A_MEMBER,
"join_requests.rs",
"the_vmc_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::vmc::v0_1::error_codes::INVALID_CREDENTIAL,
crate::members::inbound_vmc::VMC_ERR_INVALID_CREDENTIAL,
"join_requests.rs",
"the_vmc_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::vmc::v0_1::error_codes::REQUEST_NOT_FOUND,
crate::members::inbound_vmc::VMC_ERR_REQUEST_NOT_FOUND,
"join_requests.rs",
"the_vmc_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::vmc::v0_1::error_codes::REQUEST_NOT_APPROVED,
crate::members::inbound_vmc::VMC_ERR_REQUEST_NOT_APPROVED,
"join_requests.rs",
"the_vmc_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::vmc::v0_1::error_codes::REQUEST_APPLICANT_MISMATCH,
crate::members::inbound_vmc::VMC_ERR_REQUEST_APPLICANT_MISMATCH,
"join_requests.rs",
"the_vmc_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::vetting::vetters::grant::v0_1::error_codes::NOT_MEMBER,
crate::vetting::vetters::GRANT_ERR_NOT_MEMBER,
"join_requests.rs",
"granting_a_non_member_is_the_declared_not_member"
),
witness!(
s::vetting::revoke_statement::v0_1::error_codes::NOT_MEMBER,
crate::vetting::revocation::REVOKE_STATEMENT_ERR_NOT_MEMBER,
"join_requests.rs",
"withdrawing_a_statement_as_a_non_member_is_the_declared_not_member"
),
witness!(
s::members::show::v0_1::error_codes::NOT_FOUND,
crate::routes::members::read::SHOW_ERR_NOT_FOUND,
"members_crud.rs",
"show_member_returns_404_for_unknown_did"
),
witness!(
s::members::update::v0_1::error_codes::NOT_FOUND,
crate::routes::members::update::UPDATE_ERR_NOT_FOUND,
"members_crud.rs",
"patch_member_404_for_unknown_did"
),
witness!(
s::members::admin_remove::v0_1::error_codes::NOT_FOUND,
crate::ceremony::orchestrate::ADMIN_REMOVE_ERR_NOT_FOUND,
"members_crud.rs",
"removing_a_did_with_no_rows_at_all_is_still_not_found"
),
witness!(
s::members::purge::v0_1::error_codes::NOT_FOUND,
crate::ceremony::orchestrate::PURGE_ERR_NOT_FOUND,
"members_crud.rs",
"the_purge_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::purge::v0_1::error_codes::LAST_ADMINISTRATOR,
crate::ceremony::orchestrate::PURGE_ERR_LAST_ADMINISTRATOR,
"members_crud.rs",
"the_purge_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::solicit_vmc::v0_1::error_codes::NOT_FOUND,
crate::routes::members::request_vmc::SOLICIT_VMC_ERR_NOT_FOUND,
"members_crud.rs",
"soliciting_a_vmc_from_a_non_member_is_the_declared_not_found"
),
witness!(
s::members::renew::v0_1::error_codes::NOT_MEMBER,
crate::routes::members::renew::RENEW_ERR_NOT_MEMBER,
"renewal.rs",
"renew_by_a_caller_who_is_not_a_member_is_the_declared_not_member"
),
witness!(
s::members::rotate_challenge::v0_1::error_codes::NOT_MEMBER,
crate::routes::members::rotate::ROTATE_CHALLENGE_ERR_NOT_MEMBER,
"rotation.rs",
"a_rotation_challenge_for_a_non_member_is_the_declared_not_member"
),
witness!(
s::members::rotate::v0_1::error_codes::ROTATION_EXPIRED,
crate::routes::members::rotate::ROTATE_ERR_ROTATION_EXPIRED,
"rotation.rs",
"the_rotate_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::rotate::v0_1::error_codes::SIGNATURE_INVALID,
crate::routes::members::rotate::ROTATE_ERR_SIGNATURE_INVALID,
"rotation.rs",
"the_rotate_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::personhood::challenge::v0_1::error_codes::NOT_FOUND,
crate::routes::members::personhood::CHALLENGE_ERR_NOT_FOUND,
"personhood.rs",
"personhood_challenge_and_revoke_for_a_non_member_are_the_declared_not_found"
),
witness!(
s::members::personhood::revoke::v0_1::error_codes::NOT_FOUND,
crate::routes::members::personhood::REVOKE_ERR_NOT_FOUND,
"personhood.rs",
"personhood_challenge_and_revoke_for_a_non_member_are_the_declared_not_found"
),
witness!(
s::members::personhood::assert::v0_1::error_codes::NOT_FOUND,
crate::routes::members::personhood::ASSERT_ERR_NOT_FOUND,
"personhood.rs",
"the_personhood_assert_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::personhood::assert::v0_1::error_codes::CHALLENGE_EXPIRED,
crate::routes::members::personhood::ASSERT_ERR_CHALLENGE_EXPIRED,
"personhood.rs",
"the_personhood_assert_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::members::personhood::assert::v0_1::error_codes::PRESENTATION_INVALID,
crate::routes::members::personhood::ASSERT_ERR_PRESENTATION_INVALID,
"personhood.rs",
"the_personhood_assert_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::relationships::list::v0_2::error_codes::NOT_FOUND,
crate::routes::members::relationships::LIST_ERR_NOT_FOUND,
"relationships.rs",
"list_for_a_did_that_is_not_a_member_is_the_declared_not_found"
),
witness!(
s::relationships::revoke::v0_1::error_codes::NOT_FOUND,
crate::routes::relationships::REVOKE_ERR_NOT_FOUND,
"relationships.rs",
"revoke_404_on_unknown"
),
witness!(
s::relationships::publish::v0_2::error_codes::VRC_INVALID,
crate::routes::relationships::PUBLISH_ERR_VRC_INVALID,
"relationships.rs",
"the_publish_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::relationships::publish::v0_2::error_codes::SUBJECT_NOT_MEMBER,
crate::routes::relationships::PUBLISH_ERR_SUBJECT_NOT_MEMBER,
"relationships.rs",
"the_publish_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::policies::test::v0_1::error_codes::NOT_FOUND,
crate::routes::policies::admin::TEST_ERR_NOT_FOUND,
"policy_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
witness!(
s::policies::test::v0_1::error_codes::EVALUATION_FAILED,
crate::routes::policies::admin::TEST_ERR_EVALUATION_FAILED,
"policy_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
witness!(
s::website::files::delete::v0_1::error_codes::NOT_FOUND,
crate::routes::website::files::FILES_DELETE_ERR_NOT_FOUND,
"website_task_gating.rs",
"deleting_a_missing_file_is_the_declared_not_found"
),
witness!(
s::website::generations::list::v0_1::error_codes::NOT_MANAGED,
crate::routes::website::generations::GENERATIONS_LIST_ERR_NOT_MANAGED,
"website_task_gating.rs",
"the_generation_tasks_answer_with_the_codes_their_specs_declare"
),
witness!(
s::website::rollback::v0_1::error_codes::NOT_MANAGED,
crate::routes::website::generations::ROLLBACK_ERR_NOT_MANAGED,
"website_task_gating.rs",
"the_generation_tasks_answer_with_the_codes_their_specs_declare"
),
witness!(
s::website::rollback::v0_1::error_codes::GENERATION_NOT_FOUND,
crate::routes::website::generations::ROLLBACK_ERR_GENERATION_NOT_FOUND,
"website_task_gating.rs",
"the_generation_tasks_answer_with_the_codes_their_specs_declare"
),
witness!(
s::admin::bootstrap::v0_1::error_codes::INVALID_TOKEN,
crate::routes::admin::bootstrap::BOOTSTRAP_ERR_INVALID_TOKEN,
"admin_bootstrap.rs",
"the_bootstrap_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::admin::bootstrap::v0_1::error_codes::ALREADY_BOOTSTRAPPED,
crate::routes::admin::bootstrap::BOOTSTRAP_ERR_ALREADY_BOOTSTRAPPED,
"admin_bootstrap.rs",
"the_bootstrap_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::admin::invites::create::v0_1::error_codes::TTL_TOO_LONG,
crate::routes::admin::invites::CREATE_INVITE_ERR_TTL_TOO_LONG,
"admin_invites.rs",
"the_create_task_answers_with_the_code_its_spec_declares"
),
witness!(
s::admin::invites::revoke::v0_1::error_codes::NOT_FOUND,
crate::routes::admin::invites::REVOKE_INVITE_ERR_NOT_FOUND,
"admin_invites.rs",
"the_revoke_task_answers_with_the_code_its_spec_declares"
),
witness!(
s::backup::export::v0_1::error_codes::PASSWORD_TOO_SHORT,
crate::backup::EXPORT_ERR_PASSWORD_TOO_SHORT,
"backup.rs",
"the_export_task_answers_with_the_code_its_spec_declares"
),
witness!(
s::community::profile::update::v0_1::error_codes::VALIDATION_FAILED,
crate::routes::community::profile::PROFILE_UPDATE_ERR_VALIDATION_FAILED,
"community_profile.rs",
"a_profile_field_failing_validation_is_the_declared_validation_failed"
),
witness!(
s::config::import::v0_1::error_codes::COMMUNITY_DID_MISMATCH,
crate::routes::admin::config::IMPORT_ERR_COMMUNITY_DID_MISMATCH,
"admin_config.rs",
"import_refuses_mismatched_community_did"
),
witness!(
s::config::import::v0_1::error_codes::UNSUPPORTED_SCHEMA_VERSION,
crate::routes::admin::config::IMPORT_ERR_UNSUPPORTED_SCHEMA_VERSION,
"admin_config.rs",
"import_wrong_schema_version_is_refused"
),
witness!(
s::directory::query::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::community_tasks::DIRECTORY_QUERY_ERR_NOT_FOUND,
"directory.rs",
"nothing_visible_is_indistinguishable_from_no_such_member"
),
witness!(
s::directory::fields::define::v0_1::error_codes::FIELD_EXISTS,
crate::trust_tasks::directory_tasks::DEFINE_ERR_FIELD_EXISTS,
"directory.rs",
"define_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::define::v0_1::error_codes::RESERVED_KEY,
crate::trust_tasks::directory_tasks::DEFINE_ERR_RESERVED_KEY,
"directory.rs",
"define_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::define::v0_1::error_codes::ABOVE_CEILING,
crate::trust_tasks::directory_tasks::DEFINE_ERR_ABOVE_CEILING,
"directory.rs",
"define_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::define::v0_1::error_codes::VALUE_INVALID,
crate::trust_tasks::directory_tasks::DEFINE_ERR_VALUE_INVALID,
"directory.rs",
"define_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::define::v0_1::error_codes::TOO_MANY_FIELDS,
crate::trust_tasks::directory_tasks::DEFINE_ERR_TOO_MANY_FIELDS,
"directory.rs",
"define_refuses_a_sixty_fifth_field"
),
witness!(
s::directory::fields::update::v0_1::error_codes::FIELD_UNKNOWN,
crate::trust_tasks::directory_tasks::UPDATE_ERR_FIELD_UNKNOWN,
"directory.rs",
"update_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::update::v0_1::error_codes::FIELD_RETIRED,
crate::trust_tasks::directory_tasks::UPDATE_ERR_FIELD_RETIRED,
"directory.rs",
"update_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::update::v0_1::error_codes::ABOVE_CEILING,
crate::trust_tasks::directory_tasks::UPDATE_ERR_ABOVE_CEILING,
"directory.rs",
"update_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::update::v0_1::error_codes::VALUE_INVALID,
crate::trust_tasks::directory_tasks::UPDATE_ERR_VALUE_INVALID,
"directory.rs",
"update_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::retire::v0_1::error_codes::FIELD_UNKNOWN,
crate::trust_tasks::directory_tasks::RETIRE_ERR_FIELD_UNKNOWN,
"directory.rs",
"retire_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::retire::v0_1::error_codes::FIELD_RETIRED,
crate::trust_tasks::directory_tasks::RETIRE_ERR_FIELD_RETIRED,
"directory.rs",
"retire_refuses_what_its_specification_declares"
),
witness!(
s::directory::fields::retire::v0_1::error_codes::BASE_FIELD,
crate::trust_tasks::directory_tasks::RETIRE_ERR_BASE_FIELD,
"directory.rs",
"retire_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::show::v0_1::error_codes::NOT_MEMBER,
crate::trust_tasks::directory_tasks::CARD_SHOW_ERR_NOT_MEMBER,
"directory.rs",
"card_tasks_answer_only_members"
),
witness!(
s::directory::card::update::v0_1::error_codes::NOT_MEMBER,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_NOT_MEMBER,
"directory.rs",
"card_tasks_answer_only_members"
),
witness!(
s::directory::card::update::v0_1::error_codes::SUPERSEDED,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_SUPERSEDED,
"directory.rs",
"an_older_update_is_superseded"
),
witness!(
s::directory::card::update::v0_1::error_codes::FIELD_UNKNOWN,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_FIELD_UNKNOWN,
"directory.rs",
"card_update_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::update::v0_1::error_codes::FIELD_RETIRED,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_FIELD_RETIRED,
"directory.rs",
"card_update_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::update::v0_1::error_codes::FIELD_NOT_WRITABLE,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_FIELD_NOT_WRITABLE,
"directory.rs",
"card_update_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::update::v0_1::error_codes::VALUE_INVALID,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_VALUE_INVALID,
"directory.rs",
"card_update_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::update::v0_1::error_codes::VALUE_REFUSED,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_VALUE_REFUSED,
"directory.rs",
"the_community_policy_refuses_a_value"
),
witness!(
s::directory::card::update::v0_1::error_codes::ABOVE_CEILING,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_ABOVE_CEILING,
"directory.rs",
"card_update_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::update::v0_1::error_codes::NOT_AVAILABLE,
crate::trust_tasks::directory_tasks::CARD_UPDATE_ERR_NOT_AVAILABLE,
"directory.rs",
"card_update_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::assert::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::directory_tasks::ASSERT_ERR_NOT_FOUND,
"directory.rs",
"card_assert_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::assert::v0_1::error_codes::FIELD_UNKNOWN,
crate::trust_tasks::directory_tasks::ASSERT_ERR_FIELD_UNKNOWN,
"directory.rs",
"card_assert_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::assert::v0_1::error_codes::FIELD_RETIRED,
crate::trust_tasks::directory_tasks::ASSERT_ERR_FIELD_RETIRED,
"directory.rs",
"card_assert_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::assert::v0_1::error_codes::FIELD_NOT_WRITABLE,
crate::trust_tasks::directory_tasks::ASSERT_ERR_FIELD_NOT_WRITABLE,
"directory.rs",
"card_assert_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::assert::v0_1::error_codes::VALUE_INVALID,
crate::trust_tasks::directory_tasks::ASSERT_ERR_VALUE_INVALID,
"directory.rs",
"card_assert_refuses_what_its_specification_declares"
),
witness!(
s::directory::card::assert::v0_1::error_codes::VALUE_REFUSED,
crate::trust_tasks::directory_tasks::ASSERT_ERR_VALUE_REFUSED,
"directory.rs",
"card_assert_refuses_what_its_specification_declares"
),
witness!(
s::directory::entries::list::v0_1::error_codes::QUERY_TOO_SHORT,
crate::trust_tasks::directory_tasks::LIST_ERR_QUERY_TOO_SHORT,
"directory.rs",
"list_refuses_what_its_specification_declares"
),
witness!(
s::directory::entries::list::v0_1::error_codes::CURSOR_INVALID,
crate::trust_tasks::directory_tasks::LIST_ERR_CURSOR_INVALID,
"directory.rs",
"a_cursor_is_bound_to_its_question_and_caller"
),
witness!(
s::directory::entries::list::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::directory_tasks::LIST_ERR_NOT_FOUND,
"directory.rs",
"list_refuses_what_its_specification_declares"
),
witness!(
s::directory::entries::list::v0_1::error_codes::RATE_LIMITED,
crate::trust_tasks::directory_tasks::LIST_ERR_RATE_LIMITED,
"directory.rs",
"reading_too_often_is_rate_limited"
),
witness!(
s::directory::entries::show::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::directory_tasks::SHOW_ERR_NOT_FOUND,
"directory.rs",
"show_by_entry_and_by_did"
),
witness!(
s::endorsement_types::delete::v0_1::error_codes::IN_USE,
crate::routes::endorsement_types::DELETE_ERR_IN_USE,
"endorsements.rs",
"delete_type_refused_while_a_criterion_names_it"
),
witness!(
s::endorsement_types::delete::v0_1::error_codes::NOT_FOUND,
crate::routes::endorsement_types::DELETE_ERR_NOT_FOUND,
"endorsements.rs",
"delete_type_404_when_unknown"
),
witness!(
s::endorsement_types::register::v0_1::error_codes::EXISTS,
crate::routes::endorsement_types::REGISTER_ERR_EXISTS,
"endorsements.rs",
"register_rejects_duplicate"
),
witness!(
s::endorsement_types::register::v0_1::error_codes::INVALID_URI,
crate::routes::endorsement_types::REGISTER_ERR_INVALID_URI,
"endorsements.rs",
"an_empty_or_oversized_type_uri_is_the_declared_invalid_uri"
),
witness!(
s::endorsement_types::register::v0_1::error_codes::RESERVED,
crate::routes::endorsement_types::REGISTER_ERR_RESERVED,
"endorsements.rs",
"register_rejects_reserved_uri"
),
witness!(
s::endorsements::issue::v0_1::error_codes::CLAIM_SCHEMA_VIOLATION,
crate::routes::endorsements::ISSUE_ERR_CLAIM_SCHEMA_VIOLATION,
"endorsements.rs",
"a_claim_failing_the_type_claim_schema_is_the_declared_violation"
),
witness!(
s::endorsements::issue::v0_1::error_codes::CLAIM_TOO_LARGE,
crate::routes::endorsements::ISSUE_ERR_CLAIM_TOO_LARGE,
"endorsements.rs",
"a_claim_over_the_cap_is_the_declared_claim_too_large"
),
witness!(
s::endorsements::issue::v0_1::error_codes::PREDICATE_NOT_ISSUABLE,
crate::routes::endorsements::ISSUE_ERR_PREDICATE_NOT_ISSUABLE,
"endorsements.rs",
"a_task_bound_predicate_is_the_declared_predicate_not_issuable"
),
witness!(
s::endorsements::issue::v0_1::error_codes::STATUS_LIST_EXHAUSTED,
crate::routes::endorsements::ISSUE_ERR_STATUS_LIST_EXHAUSTED,
"endorsements.rs",
"a_full_revocation_list_is_the_declared_status_list_exhausted"
),
witness!(
s::endorsements::issue::v0_1::error_codes::TYPE_NOT_REGISTERED,
crate::routes::endorsements::ISSUE_ERR_TYPE_NOT_REGISTERED,
"endorsements.rs",
"issue_rejects_unregistered_type"
),
witness!(
s::endorsements::list::v0_1::error_codes::INVALID_CURSOR,
crate::routes::endorsements::LIST_ERR_INVALID_CURSOR,
"endorsements.rs",
"a_forged_cursor_is_the_declared_invalid_cursor"
),
witness!(
s::endorsements::revoke::v0_1::error_codes::ALREADY_REVOKED,
crate::routes::endorsements::REVOKE_ERR_ALREADY_REVOKED,
"endorsements.rs",
"re_revoking_is_the_declared_already_revoked"
),
witness!(
s::endorsements::revoke::v0_1::error_codes::NOT_FOUND,
crate::routes::endorsements::REVOKE_ERR_NOT_FOUND,
"endorsements.rs",
"an_unknown_endorsement_is_the_declared_not_found"
),
witness!(
s::endorsements::show::v0_1::error_codes::NOT_FOUND,
crate::routes::endorsements::SHOW_ERR_NOT_FOUND,
"endorsements.rs",
"an_unknown_endorsement_is_the_declared_not_found"
),
witness!(
s::install::claim::finish::v0_2::error_codes::BINDING_INVALID,
crate::routes::install::FINISH_ERR_BINDING_INVALID,
"install_claim.rs",
"the_claim_finish_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::install::claim::finish::v0_2::error_codes::INVALID_TOKEN,
crate::routes::install::FINISH_ERR_INVALID_TOKEN,
"install_claim.rs",
"the_claim_finish_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::install::claim::finish::v0_2::error_codes::REGISTRATION_MISMATCH,
crate::routes::install::FINISH_ERR_REGISTRATION_MISMATCH,
"install_claim.rs",
"the_claim_finish_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::install::claim::start::v0_2::error_codes::INVALID_TOKEN,
crate::routes::install::START_ERR_INVALID_TOKEN,
"install_claim.rs",
"the_claim_start_task_answers_with_the_code_its_spec_declares"
),
witness!(
s::install::claim::start::v0_3::error_codes::TOKEN_NAMES_NO_DID,
crate::routes::install::START_V0_3_ERR_TOKEN_NAMES_NO_DID,
"install_claim_v0_3.rs",
"claim_start_v0_3_answers_the_codes_its_spec_declares"
),
witness!(
s::install::claim::finish::v0_3::error_codes::SUBJECT_MISMATCH,
crate::routes::install::FINISH_V0_3_ERR_SUBJECT_MISMATCH,
"install_claim_v0_3.rs",
"claim_finish_v0_3_answers_the_codes_its_spec_declares"
),
witness!(
s::install::claim::finish::v0_3::error_codes::STATEMENT_INVALID,
crate::routes::install::FINISH_V0_3_ERR_STATEMENT_INVALID,
"install_claim_v0_3.rs",
"claim_finish_v0_3_answers_the_codes_its_spec_declares"
),
witness!(
s::install::claim::finish::v0_3::error_codes::APPROVER_NOT_DISTINCT,
crate::routes::install::FINISH_V0_3_ERR_APPROVER_NOT_DISTINCT,
"install_claim_v0_3.rs",
"claim_finish_v0_3_answers_the_codes_its_spec_declares"
),
witness!(
s::install::claim::finish::v0_3::error_codes::DID_UNRESOLVABLE,
crate::routes::install::FINISH_V0_3_ERR_DID_UNRESOLVABLE,
"install_claim_v0_3.rs",
"claim_finish_v0_3_refuses_a_founder_did_that_does_not_resolve"
),
witness!(
s::members::update::v0_1::error_codes::ADMIN_ROLE_FORBIDDEN,
crate::routes::members::update::UPDATE_ERR_ADMIN_ROLE_FORBIDDEN,
"members_crud.rs",
"the_update_task_answers_with_the_admin_role_forbidden_code_its_spec_declares"
),
witness!(
s::auth::admin_session::v0_1::error_codes::INVALID_TOKEN,
crate::routes::auth::ADMIN_SESSION_ERR_INVALID_TOKEN,
"cookie_session.rs",
"the_admin_session_task_answers_with_the_invalid_token_code_its_spec_declares"
),
witness!(
s::auth::recognise::v0_2::error_codes::ROLE_NOT_MAPPED,
crate::routes::recognise::RECOGNISE_ERR_ROLE_NOT_MAPPED,
"recognise.rs",
"the_recognise_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::auth::recognise::v0_2::error_codes::CREDENTIAL_INVALID,
crate::routes::recognise::RECOGNISE_ERR_CREDENTIAL_INVALID,
"recognise.rs",
"the_recognise_task_answers_with_the_codes_its_spec_declares"
),
witness!(
s::community::theme::update::v0_1::error_codes::OUTSIDE_PROFILE,
crate::trust_tasks::surface_tasks::THEME_UPDATE_ERR_OUTSIDE_PROFILE,
"community_theme.rs",
"a_theme_outside_the_profile_is_refused_where_it_breaks_it"
),
witness!(
s::community::requested_attributes::update::v0_1::error_codes::DUPLICATE_TYPE,
crate::trust_tasks::surface_tasks::REQUESTED_ERR_DUPLICATE_TYPE,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::register::v0_1::error_codes::INVALID_CREDENTIAL_SCHEMA,
crate::trust_tasks::surface_tasks::SCHEMAS_REGISTER_ERR_INVALID_CREDENTIAL_SCHEMA,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::show::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::surface_tasks::SCHEMAS_SHOW_ERR_NOT_FOUND,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::delete::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::surface_tasks::SCHEMAS_DELETE_ERR_NOT_FOUND,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::delete::v0_1::error_codes::IN_USE,
crate::trust_tasks::surface_tasks::SCHEMAS_DELETE_ERR_IN_USE,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::accepts::register::v0_2::error_codes::INVALID_QUERY,
crate::trust_tasks::surface_tasks::ACCEPTS_REGISTER_ERR_INVALID_QUERY,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::accepts::register::v0_2::error_codes::UNREGISTERED_TYPE,
crate::trust_tasks::surface_tasks::ACCEPTS_REGISTER_ERR_UNREGISTERED_TYPE,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::accepts::register::v0_2::error_codes::UNREGISTERED_STATEMENT_TYPE,
crate::trust_tasks::surface_tasks::ACCEPTS_REGISTER_ERR_UNREGISTERED_STATEMENT_TYPE,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::accepts::register::v0_2::error_codes::INVALID_VETTING,
crate::trust_tasks::surface_tasks::ACCEPTS_REGISTER_ERR_INVALID_VETTING,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::accepts::register::v0_2::error_codes::UNSUPPORTED_REQUIREMENT,
crate::trust_tasks::surface_tasks::ACCEPTS_REGISTER_ERR_UNSUPPORTED_REQUIREMENT,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::accepts::show::v0_2::error_codes::NOT_FOUND,
crate::trust_tasks::surface_tasks::ACCEPTS_SHOW_ERR_NOT_FOUND,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::schemas::accepts::delete::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::surface_tasks::ACCEPTS_DELETE_ERR_NOT_FOUND,
"surface_verbs_spine.rs",
"the_presentation_and_registry_codes_are_answered"
),
witness!(
s::relationships::suspend::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::surface_tasks::SUSPEND_ERR_NOT_FOUND,
"surface_verbs_spine.rs",
"the_lifecycle_and_join_codes_are_answered"
),
witness!(
s::relationships::suspend::v0_1::error_codes::ALREADY_SUSPENDED,
crate::trust_tasks::surface_tasks::SUSPEND_ERR_ALREADY_SUSPENDED,
"surface_verbs_spine.rs",
"the_lifecycle_and_join_codes_are_answered"
),
witness!(
s::relationships::suspend::v0_1::error_codes::TERMINAL,
crate::trust_tasks::surface_tasks::SUSPEND_ERR_TERMINAL,
"surface_verbs_spine.rs",
"the_lifecycle_and_join_codes_are_answered"
),
witness!(
s::relationships::restore::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::surface_tasks::RESTORE_ERR_NOT_FOUND,
"surface_verbs_spine.rs",
"the_lifecycle_and_join_codes_are_answered"
),
witness!(
s::relationships::restore::v0_1::error_codes::NOT_SUSPENDED,
crate::trust_tasks::surface_tasks::RESTORE_ERR_NOT_SUSPENDED,
"surface_verbs_spine.rs",
"the_lifecycle_and_join_codes_are_answered"
),
witness!(
s::relationships::restore::v0_1::error_codes::TERMINAL,
crate::trust_tasks::surface_tasks::RESTORE_ERR_TERMINAL,
"surface_verbs_spine.rs",
"the_lifecycle_and_join_codes_are_answered"
),
witness!(
s::join_requests::vetting::show::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::surface_tasks::JOIN_VETTING_ERR_NOT_FOUND,
"surface_verbs_spine.rs",
"the_lifecycle_and_join_codes_are_answered"
),
witness!(
s::join_requests::query::v0_1::error_codes::CRITERION_NOT_FOUND,
crate::trust_tasks::surface_tasks::JOIN_QUERY_ERR_CRITERION_NOT_FOUND,
"surface_verbs_spine.rs",
"the_lifecycle_and_join_codes_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::begin::v0_1::error_codes::NOT_CONFIGURED,
crate::trust_tasks::website_tasks::BEGIN_ERR_NOT_CONFIGURED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::begin::v0_1::error_codes::TOO_LARGE,
crate::trust_tasks::website_tasks::BEGIN_ERR_TOO_LARGE,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::begin::v0_1::error_codes::PATH_REFUSED,
crate::trust_tasks::website_tasks::BEGIN_ERR_PATH_REFUSED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::begin::v0_1::error_codes::SINGLE_FILE_WRITES_DISABLED,
crate::trust_tasks::website_tasks::BEGIN_ERR_SINGLE_FILE_WRITES_DISABLED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::begin::v0_1::error_codes::INVALID_MANIFEST,
crate::trust_tasks::website_tasks::BEGIN_ERR_INVALID_MANIFEST,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::chunk::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::website_tasks::CHUNK_ERR_NOT_FOUND,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::chunk::v0_1::error_codes::CHUNK_OUT_OF_RANGE,
crate::trust_tasks::website_tasks::CHUNK_ERR_CHUNK_OUT_OF_RANGE,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::chunk::v0_1::error_codes::CHUNK_MISMATCH,
crate::trust_tasks::website_tasks::CHUNK_ERR_CHUNK_MISMATCH,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::commit::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::website_tasks::COMMIT_ERR_NOT_FOUND,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::commit::v0_1::error_codes::INCOMPLETE,
crate::trust_tasks::website_tasks::COMMIT_ERR_INCOMPLETE,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::commit::v0_1::error_codes::DIGEST_MISMATCH,
crate::trust_tasks::website_tasks::COMMIT_ERR_DIGEST_MISMATCH,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::commit::v0_1::error_codes::PRECONDITION_FAILED,
crate::trust_tasks::website_tasks::COMMIT_ERR_PRECONDITION_FAILED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::commit::v0_1::error_codes::PATH_REFUSED,
crate::trust_tasks::website_tasks::COMMIT_ERR_PATH_REFUSED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::commit::v0_1::error_codes::SINGLE_FILE_WRITES_DISABLED,
crate::trust_tasks::website_tasks::COMMIT_ERR_SINGLE_FILE_WRITES_DISABLED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::upload::abort::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::website_tasks::ABORT_ERR_NOT_FOUND,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::deploy::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::website_tasks::DEPLOY_ERR_NOT_FOUND,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::deploy::v0_1::error_codes::BUNDLE_REFUSED,
crate::trust_tasks::website_tasks::DEPLOY_ERR_BUNDLE_REFUSED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::files::show::v0_1::error_codes::NOT_FOUND,
crate::trust_tasks::website_tasks::SHOW_ERR_NOT_FOUND,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::files::show::v0_1::error_codes::PATH_REFUSED,
crate::trust_tasks::website_tasks::SHOW_ERR_PATH_REFUSED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::files::show::v0_1::error_codes::CHANGED,
crate::trust_tasks::website_tasks::SHOW_ERR_CHANGED,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
#[cfg(feature = "website")]
witness!(
s::website::files::show::v0_1::error_codes::RANGE_OUT_OF_BOUNDS,
crate::trust_tasks::website_tasks::SHOW_ERR_RANGE_OUT_OF_BOUNDS,
"website_spine.rs",
"the_codes_the_specifications_declare_are_answered"
),
];
table.extend(action_witnesses());
table.extend(event_witnesses());
table.extend(role_witnesses());
table.extend(admission_witnesses());
#[cfg(feature = "vetting-pcs")]
table.extend(pcs_witnesses());
table
}
fn admission_witnesses() -> Vec<Witness> {
use crate::ceremony::admission::codes as c;
use trust_tasks_rs::specs::vtc::members::admit;
use trust_tasks_rs::specs::vtc::members::make_membership as make;
vec![
witness!(
admit::v0_1::error_codes::HAS_ENTRY,
c::ADMIT_HAS_ENTRY,
"direct_admission.rs",
"add_a_member_admits_with_credentials_and_label"
),
witness!(
admit::v0_1::error_codes::ALREADY_MEMBER,
c::ADMIT_ALREADY_MEMBER,
"direct_admission.rs",
"add_a_member_refuses_a_live_member_record"
),
witness!(
admit::v0_1::error_codes::ROLE_NOT_PERMITTED,
c::ADMIT_ROLE_NOT_PERMITTED,
"direct_admission.rs",
"add_a_member_role_is_bounded_by_the_actors_authority"
),
witness!(
admit::v0_1::error_codes::DENIED_BY_POLICY,
c::ADMIT_DENIED_BY_POLICY,
"direct_admission.rs",
"a_refusing_policy_refuses_with_its_code"
),
witness!(
make::v0_1::error_codes::NO_ENTRY,
c::MAKE_NO_ENTRY,
"direct_admission.rs",
"make_membership_refusals"
),
witness!(
make::v0_1::error_codes::APPLICATION_ENTRY,
c::MAKE_APPLICATION_ENTRY,
"direct_admission.rs",
"make_membership_refusals"
),
witness!(
make::v0_1::error_codes::ALREADY_MEMBER,
c::MAKE_ALREADY_MEMBER,
"direct_admission.rs",
"make_membership_gives_a_bootstrap_admin_a_membership_and_leaves_its_entry"
),
witness!(
make::v0_1::error_codes::REMOVED_MEMBER,
c::MAKE_REMOVED_MEMBER,
"direct_admission.rs",
"make_membership_refusals"
),
witness!(
make::v0_1::error_codes::ENTRY_NOT_LIVE,
c::MAKE_ENTRY_NOT_LIVE,
"direct_admission.rs",
"make_membership_refusals"
),
witness!(
make::v0_1::error_codes::DENIED_BY_POLICY,
c::MAKE_DENIED_BY_POLICY,
"direct_admission.rs",
"a_refusing_policy_refuses_with_its_code"
),
]
}
fn event_witnesses() -> Vec<Witness> {
use crate::admin_events::codes as c;
use trust_tasks_rs::specs::vtc::admin::events::subscribe::v0_1::error_codes as e;
vec![
witness!(
e::NOT_ADMINISTRATOR,
c::NOT_ADMINISTRATOR,
"admin_events.rs",
"refusals_are_json_and_open_no_stream"
),
witness!(
e::STREAM_UNAVAILABLE,
c::STREAM_UNAVAILABLE,
"admin_events.rs",
"refusals_are_json_and_open_no_stream"
),
witness!(
e::TOO_MANY_STREAMS,
c::TOO_MANY_STREAMS,
"admin_events.rs",
"streams_past_the_cap_are_refused_too_many_streams"
),
]
}
fn action_witnesses() -> Vec<Witness> {
use crate::admin_actions::codes as c;
use trust_tasks_rs::specs::vtc::admin::actions as a;
vec![
witness!(
a::list::v0_1::error_codes::NOT_ADMINISTRATOR,
c::LIST_NOT_ADMINISTRATOR,
"unrestricted_admin_consent.rs",
"the_list_shows_each_caller_what_is_theirs_to_see"
),
witness!(
a::list::v0_1::error_codes::INVALID_CURSOR,
c::LIST_INVALID_CURSOR,
"unrestricted_admin_consent.rs",
"the_list_shows_each_caller_what_is_theirs_to_see"
),
witness!(
a::list::v0_1::error_codes::INVALID_FILTER,
c::LIST_INVALID_FILTER,
"unrestricted_admin_consent.rs",
"the_list_shows_each_caller_what_is_theirs_to_see"
),
witness!(
a::show::v0_1::error_codes::NOT_FOUND,
c::SHOW_NOT_FOUND,
"unrestricted_admin_consent.rs",
"the_list_shows_each_caller_what_is_theirs_to_see"
),
witness!(
a::show::v0_1::error_codes::NOT_ADMINISTRATOR,
c::SHOW_NOT_ADMINISTRATOR,
"unrestricted_admin_consent.rs",
"the_list_shows_each_caller_what_is_theirs_to_see"
),
witness!(
a::cancel::v0_1::error_codes::NOT_FOUND,
c::CANCEL_NOT_FOUND,
"unrestricted_admin_consent.rs",
"the_requester_cancels_and_nobody_else_can"
),
witness!(
a::cancel::v0_1::error_codes::NOT_REQUESTER,
c::CANCEL_NOT_REQUESTER,
"unrestricted_admin_consent.rs",
"the_requester_cancels_and_nobody_else_can"
),
witness!(
a::cancel::v0_1::error_codes::NOT_OPEN,
c::CANCEL_NOT_OPEN,
"unrestricted_admin_consent.rs",
"the_requester_cancels_and_nobody_else_can"
),
witness!(
a::acknowledge::v0_1::error_codes::NOT_FOUND,
c::ACKNOWLEDGE_NOT_FOUND,
"unrestricted_admin_consent.rs",
"an_approval_action_is_not_acknowledgeable"
),
witness!(
a::acknowledge::v0_1::error_codes::NOT_ACKNOWLEDGEABLE,
c::ACKNOWLEDGE_NOT_ACKNOWLEDGEABLE,
"unrestricted_admin_consent.rs",
"an_approval_action_is_not_acknowledgeable"
),
witness!(
a::acknowledge::v0_1::error_codes::ALREADY_ACKNOWLEDGED,
c::ACKNOWLEDGE_ALREADY_ACKNOWLEDGED,
"action_list_a2.rs",
"vti_vtc_023_every_offline_writer_raises_an_acknowledge_item"
),
]
}
fn role_witnesses() -> Vec<Witness> {
use crate::acl::roles::codes as c;
use trust_tasks_rs::specs::vtc::roles as r;
vec![
witness!(
r::define::v0_1::error_codes::BUILT_IN_ROLE,
c::DEFINE_BUILT_IN_ROLE,
"admin_roles_c2.rs",
"vtc_roles_define_refuses_with_its_declared_codes"
),
witness!(
r::define::v0_1::error_codes::EXISTS,
c::DEFINE_EXISTS,
"admin_roles_c2.rs",
"vtc_roles_define_refuses_with_its_declared_codes"
),
witness!(
r::define::v0_1::error_codes::NOT_FOUND,
c::DEFINE_NOT_FOUND,
"admin_roles_c2.rs",
"vtc_roles_define_refuses_with_its_declared_codes"
),
witness!(
r::define::v0_1::error_codes::UNKNOWN_CAPABILITY,
c::DEFINE_UNKNOWN_CAPABILITY,
"admin_roles_c2.rs",
"vtc_roles_define_refuses_with_its_declared_codes"
),
witness!(
r::define::v0_1::error_codes::ADDITIVE_CAPABILITY,
c::DEFINE_ADDITIVE_CAPABILITY,
"admin_roles_c2.rs",
"vtc_roles_define_refuses_with_its_declared_codes"
),
witness!(
r::define::v0_1::error_codes::EXCEEDS_DEFINER_AUTHORITY,
c::DEFINE_EXCEEDS_DEFINER_AUTHORITY,
"admin_roles_c2.rs",
"vtc_roles_define_refuses_with_its_declared_codes"
),
witness!(
r::delete::v0_1::error_codes::BUILT_IN_ROLE,
c::DELETE_BUILT_IN_ROLE,
"admin_roles_c2.rs",
"vtc_roles_delete_refuses_a_held_role_and_deletes_an_unheld_one"
),
witness!(
r::delete::v0_1::error_codes::NOT_FOUND,
c::DELETE_NOT_FOUND,
"admin_roles_c2.rs",
"vtc_roles_delete_refuses_a_held_role_and_deletes_an_unheld_one"
),
witness!(
r::delete::v0_1::error_codes::IN_USE,
c::DELETE_IN_USE,
"admin_roles_c2.rs",
"vtc_roles_delete_refuses_a_held_role_and_deletes_an_unheld_one"
),
witness!(
r::show::v0_1::error_codes::NOT_FOUND,
c::SHOW_NOT_FOUND,
"admin_roles_c2.rs",
"vtc_roles_delete_refuses_a_held_role_and_deletes_an_unheld_one"
),
]
}
#[cfg(feature = "vetting-pcs")]
fn pcs_witnesses() -> Vec<Witness> {
use crate::vetting::pcs_tasks as pcs;
use trust_tasks_rs::specs::vtc as s;
vec![
witness!(
s::vetting::hidden::publish::v0_1::error_codes::NO_SUCH_CRITERION,
pcs::HIDDEN_PUBLISH_ERR_NO_SUCH_CRITERION,
"hidden_vetting_tasks.rs",
"publishing_hidden_vetting_refuses_with_the_codes_it_declares"
),
witness!(
s::vetting::hidden::publish::v0_1::error_codes::NO_VETTING,
pcs::HIDDEN_PUBLISH_ERR_NO_VETTING,
"hidden_vetting_tasks.rs",
"publishing_hidden_vetting_refuses_with_the_codes_it_declares"
),
witness!(
s::vetting::hidden::publish::v0_1::error_codes::APPROVER_NOT_SIGNER,
pcs::HIDDEN_PUBLISH_ERR_APPROVER_NOT_SIGNER,
"hidden_vetting_tasks.rs",
"an_event_approval_names_its_approver_and_never_one_of_its_vetters"
),
witness!(
s::vetting::hidden::publish::v0_1::error_codes::APPROVER_IN_EVENT,
pcs::HIDDEN_PUBLISH_ERR_APPROVER_IN_EVENT,
"hidden_vetting_tasks.rs",
"an_event_approval_names_its_approver_and_never_one_of_its_vetters"
),
witness!(
s::vetting::hidden::publish::v0_1::error_codes::SIGNER_CHANGED,
pcs::HIDDEN_PUBLISH_ERR_SIGNER_CHANGED,
"hidden_vetting_tasks.rs",
"publish_refuses_a_second_criterion_and_keys_its_signer_no_longer_derives"
),
witness!(
s::vetting::hidden::publish::v0_1::error_codes::OTHER_CRITERION,
pcs::HIDDEN_PUBLISH_ERR_OTHER_CRITERION,
"hidden_vetting_tasks.rs",
"publish_refuses_a_second_criterion_and_keys_its_signer_no_longer_derives"
),
witness!(
s::vetting::vetters::pcs_tokens::v0_1::error_codes::TICK_NOT_YET,
pcs::TOKENS_ERR_TICK_NOT_YET,
"hidden_vetting_tasks.rs",
"an_approved_event_opens_its_label_at_the_tier_rate"
),
witness!(
s::vetting::hidden::withdraw::v0_1::error_codes::NO_SUCH_CRITERION,
pcs::HIDDEN_WITHDRAW_ERR_NO_SUCH_CRITERION,
"hidden_vetting_tasks.rs",
"hidden_vetting_turns_off_and_shows_what_it_stores"
),
witness!(
s::vetting::hidden::show::v0_1::error_codes::NO_SUCH_CRITERION,
pcs::HIDDEN_SHOW_ERR_NO_SUCH_CRITERION,
"hidden_vetting_tasks.rs",
"hidden_vetting_turns_off_and_shows_what_it_stores"
),
witness!(
s::vetting::vetters::pcs_root::v0_1::error_codes::ALREADY_ENROLLED,
pcs::ROOT_ERR_ALREADY_ENROLLED,
"hidden_vetting_tasks.rs",
"a_vetter_enrols_draws_and_an_applicant_gets_a_challenge"
),
witness!(
s::vetting::vetters::pcs_root::v0_1::error_codes::NOT_A_VETTER,
pcs::ROOT_ERR_NOT_A_VETTER,
"hidden_vetting_tasks.rs",
"a_vetter_enrols_draws_and_an_applicant_gets_a_challenge"
),
witness!(
s::vetting::vetters::pcs_root::v0_1::error_codes::WRONG_LABEL,
pcs::ROOT_ERR_WRONG_LABEL,
"hidden_vetting_tasks.rs",
"the_enrolment_and_the_drip_refuse_with_the_codes_they_declare"
),
witness!(
s::vetting::vetters::pcs_root::v0_1::error_codes::BAD_REQUEST,
pcs::ROOT_ERR_BAD_REQUEST,
"hidden_vetting_tasks.rs",
"the_enrolment_and_the_drip_refuse_with_the_codes_they_declare"
),
witness!(
s::vetting::vetters::pcs_root::v0_1::error_codes::IDENTIFIER_REBOUND,
pcs::ROOT_ERR_IDENTIFIER_REBOUND,
"hidden_vetting_tasks.rs",
"the_enrolment_and_the_drip_refuse_with_the_codes_they_declare"
),
witness!(
s::vetting::vetters::pcs_tokens::v0_1::error_codes::NOT_A_VETTER,
pcs::TOKENS_ERR_NOT_A_VETTER,
"hidden_vetting_tasks.rs",
"the_enrolment_and_the_drip_refuse_with_the_codes_they_declare"
),
witness!(
s::vetting::vetters::pcs_tokens::v0_1::error_codes::ALREADY_SERVED,
pcs::TOKENS_ERR_ALREADY_SERVED,
"hidden_vetting_tasks.rs",
"a_vetter_enrols_draws_and_an_applicant_gets_a_challenge"
),
witness!(
s::vetting::vetters::pcs_tokens::v0_1::error_codes::OVER_QUOTA,
pcs::TOKENS_ERR_OVER_QUOTA,
"hidden_vetting_tasks.rs",
"a_vetter_enrols_draws_and_an_applicant_gets_a_challenge"
),
witness!(
s::vetting::vetters::pcs_tokens::v0_1::error_codes::EVENT_REFUSED,
pcs::TOKENS_ERR_EVENT_REFUSED,
"hidden_vetting_tasks.rs",
"an_event_stays_shut_until_enough_vetters_have_asked"
),
witness!(
s::vetting::vetters::pcs_tokens::v0_1::error_codes::LABEL_NOT_LIVE,
pcs::TOKENS_ERR_LABEL_NOT_LIVE,
"hidden_vetting_tasks.rs",
"the_enrolment_and_the_drip_refuse_with_the_codes_they_declare"
),
witness!(
s::vetting::vetters::pcs_tokens::v0_1::error_codes::BAD_OPENING_PROOF,
pcs::TOKENS_ERR_BAD_OPENING_PROOF,
"hidden_vetting_tasks.rs",
"the_enrolment_and_the_drip_refuse_with_the_codes_they_declare"
),
witness!(
s::vetting::vetters::event_mode::v0_1::error_codes::ALREADY_REQUESTED,
pcs::EVENT_ERR_ALREADY_REQUESTED,
"hidden_vetting_tasks.rs",
"an_event_stays_shut_until_enough_vetters_have_asked"
),
witness!(
s::vetting::vetters::event_mode::v0_1::error_codes::UNKNOWN_EVENT,
pcs::EVENT_ERR_UNKNOWN_EVENT,
"hidden_vetting_tasks.rs",
"an_event_request_refuses_with_the_codes_it_declares"
),
witness!(
s::vetting::vetters::event_mode::v0_1::error_codes::UNKNOWN_TIER,
pcs::EVENT_ERR_UNKNOWN_TIER,
"hidden_vetting_tasks.rs",
"an_event_request_refuses_with_the_codes_it_declares"
),
witness!(
s::vetting::vetters::event_mode::v0_1::error_codes::BAD_WINDOW,
pcs::EVENT_ERR_BAD_WINDOW,
"hidden_vetting_tasks.rs",
"an_event_request_refuses_with_the_codes_it_declares"
),
witness!(
s::vetting::vetters::event_mode::v0_1::error_codes::EVENT_CLOSED,
pcs::EVENT_ERR_EVENT_CLOSED,
"hidden_vetting_tasks.rs",
"an_event_request_refuses_with_the_codes_it_declares"
),
witness!(
s::vetting::vetters::event_mode::v0_1::error_codes::NOT_A_VETTER,
pcs::EVENT_ERR_NOT_A_VETTER,
"hidden_vetting_tasks.rs",
"an_event_request_refuses_with_the_codes_it_declares"
),
witness!(
s::vetting::pcs_challenge::v0_1::error_codes::NOT_HIDDEN_VETTING,
pcs::CHALLENGE_ERR_NOT_HIDDEN,
"hidden_vetting_tasks.rs",
"a_community_that_runs_no_hidden_criterion_refuses_a_challenge"
),
]
}
fn unwitnessed() -> Vec<DeclaredErrorCode> {
use trust_tasks_rs::specs::vtc as s;
vec![
s::admin::invites::revoke::v0_1::error_codes::ALREADY_CONSUMED,
s::auth::recognise::challenge::v0_1::error_codes::RATE_LIMITED,
s::auth::recognise::v0_2::error_codes::ISSUER_NOT_RECOGNISED,
s::join_requests::submit::v0_3::error_codes::POLICY_UNSATISFIED,
s::vetting::revoke_statement::v0_1::error_codes::DIGEST_MISMATCH,
s::vetting::revoke_statement::v0_1::error_codes::ISSUER_MISMATCH,
s::schemas::accepts::register::v0_2::error_codes::NOT_PUBLISHABLE,
s::website::upload::chunk::v0_1::error_codes::ALREADY_STORED,
]
}
const UNWITNESSED_CEILING: usize = 9;
const CONSUMER_MINTED: &[(&str, &str)] = {
use vta_sdk::protocols::join_requests as jr;
&[(
jr::JOIN_REQUEST_SUBMIT_TYPE,
jr::JOIN_REQUEST_SUBMIT_ERR_REQUEST_ALREADY_OPEN,
)]
};
fn declared_in_scope() -> BTreeMap<&'static str, (String, DeclaredErrorCode)> {
let mut out = BTreeMap::new();
for uri in resolved_uris() {
let codes = error_codes_for(&uri).unwrap_or_else(|| {
panic!(
"{uri} resolves in schema_for but not in error_codes_for — the two \
indexes are generated from one loop and must agree"
)
});
for declared in codes {
out.insert(declared.code, (uri.clone(), *declared));
}
}
out
}
fn fn_body<'a>(text: &'a str, name: &str) -> Option<&'a str> {
let start = text.find(&format!("fn {name}("))?;
let rest = &text[start..];
let end = rest.find("\n}\n").map_or(rest.len(), |i| i + 3);
Some(&rest[..end])
}
fn baseline_row(uri: &str, declared: &DeclaredErrorCode) -> String {
let tail = uri
.strip_prefix("https://trusttasks.org/spec/vtc/")
.unwrap_or(uri);
let (slug, version) = tail.rsplit_once('/').unwrap_or((tail, ""));
let module = slug.replace('-', "_").replace('/', "::");
let version = format!("v{}", version.replace('.', "_"));
let mut ident = String::new();
for (i, c) in declared.local().chars().enumerate() {
if c.is_ascii_uppercase() && i > 0 {
ident.push('_');
}
ident.push(c.to_ascii_uppercase());
}
format!("s::{module}::{version}::error_codes::{ident},")
}
#[test]
fn every_declared_error_code_is_witnessed_or_baselined() {
let declared = declared_in_scope();
assert!(
!declared.is_empty(),
"no bound, published spec/vtc/ task declares an error code — the census \
is broken, not the code"
);
let tests_dir = Path::new(env!("CARGO_MANIFEST_DIR"))
.join("tests")
.join("it");
let mut witnessed: BTreeSet<&'static str> = BTreeSet::new();
for w in witnesses() {
let code = w.declared.code;
assert_eq!(
w.via_value, code,
"witness for {code}: `{}` is {:?}, not the code it claims to witness",
w.via, w.via_value
);
assert!(
declared.contains_key(code),
"witness for {code}: no bound, published task declares it any more — \
remove the witness"
);
assert!(witnessed.insert(code), "duplicate witness for {code}");
let path = tests_dir.join(w.file);
let text = std::fs::read_to_string(&path)
.unwrap_or_else(|e| panic!("witness for {code}: read {}: {e}", path.display()));
let body = fn_body(&text, w.test_fn).unwrap_or_else(|| {
panic!(
"witness for {code}: tests/{} has no `fn {}`",
w.file, w.test_fn
)
});
assert!(
(body.contains("tt_error_code(") || body.contains("rest_error_code("))
&& body.contains(w.via),
"witness for {code}: `{}` in tests/{} must assert on the emitted code \
(`tt_error_code(` or `rest_error_code(`) and name `{}` — a witness that \
does not look at the code proves nothing",
w.test_fn,
w.file,
w.via
);
}
let baseline: Vec<DeclaredErrorCode> = unwitnessed();
let mut baselined: BTreeSet<&'static str> = BTreeSet::new();
for b in &baseline {
assert!(
declared.contains_key(b.code),
"baseline lists {}, which no bound, published task declares any more — remove it",
b.code
);
assert!(
!witnessed.contains(b.code),
"{} is witnessed AND baselined — remove it from the baseline; that is the \
baseline shrinking, which is the point",
b.code
);
assert!(baselined.insert(b.code), "{} baselined twice", b.code);
}
let missing: Vec<String> = declared
.iter()
.filter(|(code, _)| !witnessed.contains(*code) && !baselined.contains(*code))
.map(|(code, (uri, d))| format!("{code} ({uri})\n {}", baseline_row(uri, d)))
.collect();
assert!(
missing.is_empty(),
"these declared error codes have no witness and are not baselined:\n {}\n\n\
Write a test that drives the service into each and asserts the code, then add \
a `witness!` row. Baselining is for codes that predate this census, not for \
new tasks.",
missing.join("\n ")
);
assert!(
baseline.len() <= UNWITNESSED_CEILING,
"the unwitnessed baseline grew past its ceiling ({} > {UNWITNESSED_CEILING}) — a bound \
task declares codes nothing shows this service emitting. Witness them, or — only if \
that is truly not yet possible — raise UNWITNESSED_CEILING with a reason.",
baseline.len()
);
if baseline.len() < UNWITNESSED_CEILING {
eprintln!(
"error-code census: the unwitnessed baseline ({}) is below its ceiling \
(UNWITNESSED_CEILING = {UNWITNESSED_CEILING}) — lower the ceiling to lock in the \
improvement",
baseline.len()
);
}
eprintln!(
"error-code census: {} declared in scope, {} witnessed, {} baselined",
declared.len(),
witnessed.len(),
baseline.len()
);
}
#[test]
fn consumer_minted_codes_are_not_declared_by_their_specification() {
for (uri, code) in CONSUMER_MINTED {
let declared = error_codes_for(uri)
.unwrap_or_else(|| panic!("{uri}: this build knows no specification for it"));
assert!(
!declared.iter().any(|d| d.code == *code),
"{code} is now declared by {uri} — replace the hand-written constant with \
the generated `error_codes` one, drop it from CONSUMER_MINTED, and witness it"
);
let slug = uri
.strip_prefix("https://trusttasks.org/spec/")
.and_then(|t| t.rsplit_once('/'))
.map(|(slug, _)| slug)
.expect("a Type URI");
assert!(
code.strip_prefix(slug)
.is_some_and(|rest| rest.starts_with(':')),
"{code} is not namespaced under {slug} (SPEC §8.5)"
);
}
}