diff --git a/docs/i18n/DYNAMIC_RESOLUTION_REGISTER.json b/docs/i18n/DYNAMIC_RESOLUTION_REGISTER.json index dc4a3b5a..f5e16e70 100644 --- a/docs/i18n/DYNAMIC_RESOLUTION_REGISTER.json +++ b/docs/i18n/DYNAMIC_RESOLUTION_REGISTER.json @@ -3,15 +3,16 @@ "inventorySha256": "79928688a7b1a4961286aaaf48c028eb13ae8286d72d132561d6b5fdd192e323", "historicalCalls": 188, "previouslyResolved": 108, - "additionalResolved": 23, - "resolved": 131, - "pending": 57, + "additionalResolved": 28, + "resolved": 136, + "pending": 52, "evidence": [ "CHECKLIST_DYNAMIC_REVIEW.md", "FINITE_OWNER_MAP_REVIEW.md", "UNKNOWN_LABEL_FALLBACKS.md", "PIPELINE_ALIAS_FALLBACK.md", - "PROCESSING_LABEL_FALLBACKS.md" + "PROCESSING_LABEL_FALLBACKS.md", + "REMINDER_INTERVIEW_KEY_REVIEW.md" ], "entries": [ { @@ -220,6 +221,51 @@ "reviewedSourceSha256": "dadaf0c481af705c6e6f8ac2ce0e63dd3453680d575d3f7262721d3c2574005a", "status": "finite-key-domain-reviewed", "runtimeCoverage": "PROCESSING_LABEL_FALLBACKS.md; six inherited-key/language regressions plus eleven existing cases" + }, + { + "file": "job-tracker-ui/src/components/InterviewPrep.tsx", + "historicalLine": 236, + "expression": "t(selected.labelKey)", + "historicalSourceSha256": "eadf345d3613ad867788f6a74a8fd1fbba508bb81ec7bc87fe54e4f66dadc69b", + "reviewedSourceSha256": "eadf345d3613ad867788f6a74a8fd1fbba508bb81ec7bc87fe54e4f66dadc69b", + "status": "finite-key-domain-reviewed", + "runtimeCoverage": "static owner-map review only; no inference or provider calls" + }, + { + "file": "job-tracker-ui/src/components/InterviewPrep.tsx", + "historicalLine": 261, + "expression": "t(selected.labelKey)", + "historicalSourceSha256": "eadf345d3613ad867788f6a74a8fd1fbba508bb81ec7bc87fe54e4f66dadc69b", + "reviewedSourceSha256": "eadf345d3613ad867788f6a74a8fd1fbba508bb81ec7bc87fe54e4f66dadc69b", + "status": "finite-key-domain-reviewed", + "runtimeCoverage": "static owner-map review only; no inference or provider calls" + }, + { + "file": "job-tracker-ui/src/components/InterviewPrep.tsx", + "historicalLine": 285, + "expression": "t(item.labelKey)", + "historicalSourceSha256": "eadf345d3613ad867788f6a74a8fd1fbba508bb81ec7bc87fe54e4f66dadc69b", + "reviewedSourceSha256": "eadf345d3613ad867788f6a74a8fd1fbba508bb81ec7bc87fe54e4f66dadc69b", + "status": "finite-key-domain-reviewed", + "runtimeCoverage": "static owner-map review only; no inference or provider calls" + }, + { + "file": "job-tracker-ui/src/components/RemindersView.tsx", + "historicalLine": 35, + "expression": "t(key)", + "historicalSourceSha256": "1eedbc443761001e86be1f322691ab4058553033e764b0c6cf9c93ce4fab05c0", + "reviewedSourceSha256": "1eedbc443761001e86be1f322691ab4058553033e764b0c6cf9c93ce4fab05c0", + "status": "finite-key-domain-reviewed", + "runtimeCoverage": "static owner-map review only; no inference or provider calls" + }, + { + "file": "job-tracker-ui/src/components/RemindersView.tsx", + "historicalLine": 38, + "expression": "t(dayKey, { days: match[1] })", + "historicalSourceSha256": "1eedbc443761001e86be1f322691ab4058553033e764b0c6cf9c93ce4fab05c0", + "reviewedSourceSha256": "1eedbc443761001e86be1f322691ab4058553033e764b0c6cf9c93ce4fab05c0", + "status": "finite-key-domain-reviewed", + "runtimeCoverage": "static owner-map review only; no inference or provider calls" } ], "limitations": [ diff --git a/docs/i18n/REMINDER_INTERVIEW_KEY_REVIEW.md b/docs/i18n/REMINDER_INTERVIEW_KEY_REVIEW.md new file mode 100644 index 00000000..9e3613d4 --- /dev/null +++ b/docs/i18n/REMINDER_INTERVIEW_KEY_REVIEW.md @@ -0,0 +1,10 @@ +# Reminder and interview key review — 2 November 2026 + +Five additional historical dynamic call sites resolved by source review; no implementation or runtime inference changed. + +- InterviewPrep.tsx:236/261/285: INTERVIEW_AI_FOCUS is a literal five-entry array. The selected value uses find plus a guaranteed first-entry fallback; menu labels iterate the same array. All five labelKeys are fixed catalogue keys. InterviewAiAssistant obtains t from useI18n. UI language and selected generated-content language remain separate; resolving these labels does not enable AI or prove semantic output quality. +- RemindersView.tsx:35/38: generatedReasons is a Map with seven fixed catalogue values; generatedDayReasons has four literal key/regex pairs. Map.get guards the direct lookup; only anchored numeric-day matches interpolate the days placeholder. Unknown reason text returns unchanged as data. The supplied translator is the useI18n translator. Map semantics do not admit inherited Object-property keys. + +All 16 distinct keys were asserted present in both catalogues. This proves finite key coverage and translator ownership, not grammar/native review, all every-string context, plural quality or notification delivery. European plural/formatting architecture remains separately gated; no existing working translation was rewritten. No source edit, live model/provider call, paid scan or duplicate regression rerun was needed for this static review. + +Machine register: 108 original resolved sites + 28 individually recorded supplemental sites = 136 resolved / 52 pending of 188. Source hashes and exact historical expressions are bound in DYNAMIC_RESOLUTION_REGISTER.json. Continue unresolved category/asset/import maps and backend-owned keys; never treat this count as complete i18n acceptance.