[READY][Gameplay] #310 Host transition idempotency and error catalog for scoreboard -> next round / finish #320
@@ -4,7 +4,7 @@
|
|||||||
"naming_version_rule": "Keep a stable artifact_name and append only explicit schema-major suffixes to the filename/version (v1, v2, ...). Update artifact_version only when the report shape changes; refresh content in-place for catalog/keyspace changes.",
|
"naming_version_rule": "Keep a stable artifact_name and append only explicit schema-major suffixes to the filename/version (v1, v2, ...). Update artifact_version only when the report shape changes; refresh content in-place for catalog/keyspace changes.",
|
||||||
"source_of_truth": {
|
"source_of_truth": {
|
||||||
"catalog": "shared/i18n/lobby.json",
|
"catalog": "shared/i18n/lobby.json",
|
||||||
"catalog_sha256": "e3ed39f2fa25622c01b450bd14fd4da5fc7f96c0d9635bb819f73cae14203beb",
|
"catalog_sha256": "d9f7227bddd007f2c56f33dfd0015bcffb3b60c52dc756126a02b7e4de638adb",
|
||||||
"source_paths": [
|
"source_paths": [
|
||||||
"lobby/views.py",
|
"lobby/views.py",
|
||||||
"frontend/src/spa/vertical-slice.ts",
|
"frontend/src/spa/vertical-slice.ts",
|
||||||
@@ -24,28 +24,7 @@
|
|||||||
},
|
},
|
||||||
"parity": {
|
"parity": {
|
||||||
"status": "pass",
|
"status": "pass",
|
||||||
"django_backend_error_codes_used_by_mvp": [
|
"django_backend_error_codes_used_by_mvp": [],
|
||||||
"category_has_no_questions",
|
|
||||||
"category_not_found",
|
|
||||||
"category_slug_required",
|
|
||||||
"host_only_mix_answers",
|
|
||||||
"host_only_show_question",
|
|
||||||
"host_only_start_round",
|
|
||||||
"mix_answers_invalid_phase",
|
|
||||||
"nickname_invalid",
|
|
||||||
"nickname_taken",
|
|
||||||
"no_available_questions",
|
|
||||||
"not_enough_answers_to_mix",
|
|
||||||
"question_already_shown",
|
|
||||||
"round_already_configured",
|
|
||||||
"round_config_missing",
|
|
||||||
"round_question_not_found",
|
|
||||||
"round_start_invalid_phase",
|
|
||||||
"session_code_required",
|
|
||||||
"session_not_found",
|
|
||||||
"session_not_joinable",
|
|
||||||
"show_question_invalid_phase"
|
|
||||||
],
|
|
||||||
"angular_frontend_error_fallback_keys_used_by_mvp": [
|
"angular_frontend_error_fallback_keys_used_by_mvp": [
|
||||||
"join_failed",
|
"join_failed",
|
||||||
"session_code_required",
|
"session_code_required",
|
||||||
@@ -158,36 +137,8 @@
|
|||||||
"player.submit_lie",
|
"player.submit_lie",
|
||||||
"player.title"
|
"player.title"
|
||||||
],
|
],
|
||||||
"backend_codes_mapped_to_frontend_error_keys": {
|
"backend_codes_mapped_to_frontend_error_keys": {},
|
||||||
"category_has_no_questions": "start_round_failed",
|
"unique_frontend_error_keys_reached_from_django": [],
|
||||||
"category_not_found": "start_round_failed",
|
|
||||||
"category_slug_required": "start_round_failed",
|
|
||||||
"host_only_mix_answers": "start_round_failed",
|
|
||||||
"host_only_show_question": "start_round_failed",
|
|
||||||
"host_only_start_round": "start_round_failed",
|
|
||||||
"mix_answers_invalid_phase": "start_round_failed",
|
|
||||||
"nickname_invalid": "nickname_invalid",
|
|
||||||
"nickname_taken": "nickname_taken",
|
|
||||||
"no_available_questions": "start_round_failed",
|
|
||||||
"not_enough_answers_to_mix": "start_round_failed",
|
|
||||||
"question_already_shown": "start_round_failed",
|
|
||||||
"round_already_configured": "start_round_failed",
|
|
||||||
"round_config_missing": "start_round_failed",
|
|
||||||
"round_question_not_found": "start_round_failed",
|
|
||||||
"round_start_invalid_phase": "start_round_failed",
|
|
||||||
"session_code_required": "session_code_required",
|
|
||||||
"session_not_found": "session_not_found",
|
|
||||||
"session_not_joinable": "join_failed",
|
|
||||||
"show_question_invalid_phase": "start_round_failed"
|
|
||||||
},
|
|
||||||
"unique_frontend_error_keys_reached_from_django": [
|
|
||||||
"join_failed",
|
|
||||||
"nickname_invalid",
|
|
||||||
"nickname_taken",
|
|
||||||
"session_code_required",
|
|
||||||
"session_not_found",
|
|
||||||
"start_round_failed"
|
|
||||||
],
|
|
||||||
"blocking_issues": {
|
"blocking_issues": {
|
||||||
"missing_backend_codes": [],
|
"missing_backend_codes": [],
|
||||||
"missing_backend_translations": [],
|
"missing_backend_translations": [],
|
||||||
@@ -201,11 +152,6 @@
|
|||||||
"priority": "need-to-have",
|
"priority": "need-to-have",
|
||||||
"item": "Either add missing backend/error_codes + backend/errors entries for dead contract aliases or remove them from contract.backend_to_frontend_error_keys.",
|
"item": "Either add missing backend/error_codes + backend/errors entries for dead contract aliases or remove them from contract.backend_to_frontend_error_keys.",
|
||||||
"evidence": "host_only_action"
|
"evidence": "host_only_action"
|
||||||
},
|
|
||||||
{
|
|
||||||
"priority": "nice-to-have",
|
|
||||||
"item": "Decide whether grouped backend codes should keep collapsing into one Angular fallback key or be split into more specific frontend error copy as UX matures.",
|
|
||||||
"evidence": "start_round_failed <= category_has_no_questions, category_not_found, category_slug_required, host_only_mix_answers, host_only_show_question, host_only_start_round, mix_answers_invalid_phase, no_available_questions, not_enough_answers_to_mix, question_already_shown, round_already_configured, round_config_missing, round_question_not_found, round_start_invalid_phase, show_question_invalid_phase"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user