159 lines
5.0 KiB
JSON
159 lines
5.0 KiB
JSON
{
|
|
"artifact_name": "shared.i18n.lobby.mvp_keyspace_parity_report",
|
|
"artifact_version": "v1",
|
|
"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": {
|
|
"catalog": "shared/i18n/lobby.json",
|
|
"catalog_sha256": "d9f7227bddd007f2c56f33dfd0015bcffb3b60c52dc756126a02b7e4de638adb",
|
|
"source_paths": [
|
|
"lobby/views.py",
|
|
"frontend/src/spa/vertical-slice.ts",
|
|
"frontend/angular/src/app/lobby-i18n.ts",
|
|
"frontend/angular/src/app/features/host/host-shell.component.ts",
|
|
"frontend/angular/src/app/features/player/player-shell.component.ts"
|
|
]
|
|
},
|
|
"scope": {
|
|
"issue": 277,
|
|
"related_epic": 175,
|
|
"mvp_locales": [
|
|
"en",
|
|
"da"
|
|
],
|
|
"definition": "MVP-critical keys are the Django error codes emitted by lobby/views.py plus the Angular fallback/UI keys consumed by the host/player MVP shells."
|
|
},
|
|
"parity": {
|
|
"status": "pass",
|
|
"django_backend_error_codes_used_by_mvp": [],
|
|
"angular_frontend_error_fallback_keys_used_by_mvp": [
|
|
"join_failed",
|
|
"session_code_required",
|
|
"session_fetch_failed",
|
|
"start_round_failed"
|
|
],
|
|
"angular_ui_keys_used_by_mvp": [
|
|
"common.back_to_join",
|
|
"common.points_short",
|
|
"common.prompt",
|
|
"common.refresh",
|
|
"common.retry",
|
|
"common.round",
|
|
"common.round_question_id",
|
|
"common.session_code",
|
|
"common.status",
|
|
"common.unknown_error",
|
|
"host.audio_locale_hint",
|
|
"host.calculate_scores",
|
|
"host.category",
|
|
"host.final_leaderboard",
|
|
"host.finish_game",
|
|
"host.finish_game_failed",
|
|
"host.load_scoreboard",
|
|
"host.mix_answers",
|
|
"host.next_round_failed",
|
|
"host.retry_finish",
|
|
"host.retry_next_round",
|
|
"host.retry_scoreboard",
|
|
"host.scoreboard_failed",
|
|
"host.session_code_required",
|
|
"host.session_refresh_failed",
|
|
"host.show_question",
|
|
"host.start_next_round",
|
|
"host.start_round",
|
|
"host.title",
|
|
"host.winner",
|
|
"player.audio_policy_notice",
|
|
"player.final_leaderboard",
|
|
"player.guess_submit_failed",
|
|
"player.join",
|
|
"player.join_failed",
|
|
"player.lie_label",
|
|
"player.lie_submit_failed",
|
|
"player.loading_join",
|
|
"player.loading_refresh",
|
|
"player.loading_submit_guess",
|
|
"player.loading_submit_lie",
|
|
"player.nickname",
|
|
"player.offline_text",
|
|
"player.reconnecting_text",
|
|
"player.retry_guess_submit",
|
|
"player.retry_lie_submit",
|
|
"player.retry_now",
|
|
"player.session_refresh_failed",
|
|
"player.submit_guess",
|
|
"player.submit_lie",
|
|
"player.title"
|
|
],
|
|
"angular_ui_catalog_paths": [
|
|
"common.back_to_join",
|
|
"common.points_short",
|
|
"common.prompt",
|
|
"common.refresh",
|
|
"common.retry",
|
|
"common.round",
|
|
"common.round_question_id",
|
|
"common.session_code",
|
|
"common.status",
|
|
"common.unknown_error",
|
|
"host.audio_locale_hint",
|
|
"host.calculate_scores",
|
|
"host.category",
|
|
"host.final_leaderboard",
|
|
"host.finish_game",
|
|
"host.finish_game_failed",
|
|
"host.load_scoreboard",
|
|
"host.mix_answers",
|
|
"host.next_round_failed",
|
|
"host.retry_finish",
|
|
"host.retry_next_round",
|
|
"host.retry_scoreboard",
|
|
"host.scoreboard_failed",
|
|
"host.session_code_required",
|
|
"host.session_refresh_failed",
|
|
"host.show_question",
|
|
"host.start_next_round",
|
|
"host.start_round",
|
|
"host.title",
|
|
"host.winner",
|
|
"player.audio_policy_notice",
|
|
"player.final_leaderboard",
|
|
"player.guess_submit_failed",
|
|
"player.join",
|
|
"player.join_failed",
|
|
"player.lie_label",
|
|
"player.lie_submit_failed",
|
|
"player.loading_join",
|
|
"player.loading_refresh",
|
|
"player.loading_submit_guess",
|
|
"player.loading_submit_lie",
|
|
"player.nickname",
|
|
"player.offline_text",
|
|
"player.reconnecting_text",
|
|
"player.retry_guess_submit",
|
|
"player.retry_lie_submit",
|
|
"player.retry_now",
|
|
"player.session_refresh_failed",
|
|
"player.submit_guess",
|
|
"player.submit_lie",
|
|
"player.title"
|
|
],
|
|
"backend_codes_mapped_to_frontend_error_keys": {},
|
|
"unique_frontend_error_keys_reached_from_django": [],
|
|
"blocking_issues": {
|
|
"missing_backend_codes": [],
|
|
"missing_backend_translations": [],
|
|
"missing_contract_mappings": [],
|
|
"missing_frontend_error_keys": [],
|
|
"missing_frontend_runtime_fallbacks": [],
|
|
"missing_angular_catalog_paths": []
|
|
},
|
|
"follow_ups": [
|
|
{
|
|
"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.",
|
|
"evidence": "host_only_action"
|
|
}
|
|
]
|
|
}
|
|
}
|