docs(i18n): resolve conditional keys and triage display literals

This commit is contained in:
cesnimda
2026-11-02 11:40:29 +01:00
parent 138d8fbb6d
commit 55adc1dbd7
7 changed files with 2932 additions and 2 deletions
+1 -1
View File
@@ -21,6 +21,6 @@ Architecture authority is `docs/architecture/current.md`, which redirects to `ov
## Honest limits ## Honest limits
The TypeScript AST inventory contains 3,119 existing English catalogue entries and 3,164 syntactically identified static call sites across 134 non-test frontend files. It records 188 dynamic/unknown calls separately as an unresolved count; 853 catalogue entries have no identified static caller. These are not deletion candidates: wrappers, dynamic keys and direct object access remain unresolved. No non-catalogue literal inventory has been produced. Every-string attribution, translator context, accessible states and country-specific legal recognition require additional review. Therefore the stage's complete-inventory criterion has not passed. No translations, native approval, screenshots, model results, browser results or locale release are manufactured. The TypeScript AST inventory contains 3,119 existing English catalogue entries and 3,164 syntactically identified static call sites across 134 non-test frontend files. It records 188 dynamic/unknown calls separately as an unresolved count; 853 catalogue entries have no identified static caller. These are not deletion candidates: wrappers, dynamic keys and direct object access remain unresolved. A subsequent partial JSX/accessibility literal inventory now contains 26 source-context-reviewed candidates. CONTEXT_TRIAGE.md records the current 80 unresolved dynamic calls after 108 finite-branch resolutions. This is still not a complete non-catalogue inventory. Every-string attribution, translator context, accessible states and country-specific legal recognition require additional review. Therefore the stage's complete-inventory criterion has not passed. No translations, native approval, screenshots, model results, browser results or locale release are manufactured.
The country matrix covers an initial 59 territory/market contexts from versioned CLDR 49, with targeted official-record checks for Norway, Switzerland and Serbia. The remaining legal cross-checks are pending. The draft catalogue contains 60 planned locale candidates, not 60 supported languages. Schema, uniqueness, BCP-47 parsing and rejection of a forged released status passed using existing local tools. Node/ICU canonicalises `cnr-ME` to `sr-ME`; retain this unresolved identity issue rather than accepting an automatic product alias. See BASELINE_TESTS.md. The country matrix covers an initial 59 territory/market contexts from versioned CLDR 49, with targeted official-record checks for Norway, Switzerland and Serbia. The remaining legal cross-checks are pending. The draft catalogue contains 60 planned locale candidates, not 60 supported languages. Schema, uniqueness, BCP-47 parsing and rejection of a forged released status passed using existing local tools. Node/ICU canonicalises `cnr-ME` to `sr-ME`; retain this unresolved identity issue rather than accepting an automatic product alias. See BASELINE_TESTS.md.
+31
View File
@@ -0,0 +1,31 @@
# Source-context triage continuation
2026-11-02, unchanged application baseline `5cb903b989742b7a96cb22ddf4c0e24993b18980`. No translation or runtime implementation.
## Completed inventory refinement
- All 188 previously counted dynamic/unknown `t` calls now have source file/line/hash and exact expression in DYNAMIC_MESSAGE_CALLS.json.
- 108 calls resolve to finite literal conditional branches, accounting for 240 possible-key references. Each referenced key exists in the English catalogue. Nested ternaries are included. This is key resolution, not translator or runtime acceptance.
- 80 calls still need lookup-table, wrapper, template-token or runtime-key review. Type assertions such as `as any` or a single asserted literal must not be treated as proof of actual possible values.
- Four direct catalogue reads were located in I18nProvider: save-failure/retry feedback and the evaluator/fallback. These are active consumers missed by a `t("key")`-only search; preserve them during migration.
- 26 JSX text/selected accessibility-label candidates were extracted and individually reviewed in source context. The JSON records preservation/extraction decisions and excludes adjacent private runtime values. This scan does not cover every computed JSX expression, object-held label, string-returning helper, backend string or app-shell document text.
## Findings to carry into approved implementation
| ID | Source | Finding / required handling |
| --- | --- | --- |
| I00-13 | `App.tsx:488` | Session-invalidated alert is hardcoded English. Localisation must preserve disposal of the old application tree and must not depend on its discarded session/provider state |
| I00-14 | `JobFlowBar.tsx:147` | `Flow` is controlled UI copy outside the catalogue; extract with workflow context |
| I00-15 | `Attachments.tsx:361` | Preview iframe title is only `pdf`; use descriptive localised purpose while keeping private filenames out of translator exports |
| I00-16 | `AppShell.tsx:692` | `EN`/`NO` with `English`/`Norsk` labels conflates country-like abbreviation and Norwegian variant. Future selector needs native/English names and explicit Bokmal/Nynorsk distinction; preserve existing nb aliases |
| I00-17 | `ApplicationAssets.tsx:360` | File-size display uses `toFixed(1)` with KB. Review locale number formatting; filename and underlying byte count remain unchanged |
| I00-18 | `I18nProvider.tsx:43` | Save-failure feedback accesses catalogue directly. Migration must preserve same-language retry and stale-save sequencing; static t-call inventory alone misses this contract |
| I00-19 | `LandingPage.tsx:133` | Technology-name list is not ordinary translatable prose. Coordinate user-outcome copy with homepage design work; do not translate trademarks or add unverified feature claims |
Brand/provider names, host examples and technical identifiers were not blindly classified as missing translations. Unit/version fragments require formatting and accessibility context rather than mechanical dictionary substitution. All findings are planning tasks, not permission to edit application files.
## Verification and remaining work
The same 134 non-test TS/TSX files were scanned using the installed TypeScript AST parser. Assertions confirmed exactly 188 dynamic calls and that all 240 resolved branch-key references exist. No full application typecheck or browser suite was run. The 26 literal records were reviewed against adjacent source lines; broader semantic census remains IN_PROGRESS.
Next: resolve the remaining 80 table/template/wrapper calls; cover computed frontend values and app document metadata; inventory backend errors, queued communication text and Python processing messages. Country legal records, reviewer allocation and runtime-library choice remain separate unfinished tasks.
+47
View File
@@ -0,0 +1,47 @@
{
"baseline": "5cb903b989742b7a96cb22ddf4c0e24993b18980",
"method": "TypeScript AST syntactic triage; no symbol resolution or runtime coverage claim",
"filesScanned": 134,
"entries": [
{
"file": "job-tracker-ui/src/i18n/I18nProvider.tsx",
"line": 43,
"sourceSha256": "95a930915cb2240547cc1a91af7cb0a475bc8f46ac75304b3241a401928ed3e4",
"kind": "direct-catalogue-access",
"text": "translations[l].settingsLanguageSaveFailed",
"ownerComponent": "job-tracker-ui/src/i18n/I18nProvider.tsx",
"contextStatus": "pending",
"sensitivity": "unclassified-template; do-not-export-runtime-values"
},
{
"file": "job-tracker-ui/src/i18n/I18nProvider.tsx",
"line": 44,
"sourceSha256": "95a930915cb2240547cc1a91af7cb0a475bc8f46ac75304b3241a401928ed3e4",
"kind": "direct-catalogue-access",
"text": "translations[l].retry",
"ownerComponent": "job-tracker-ui/src/i18n/I18nProvider.tsx",
"contextStatus": "pending",
"sensitivity": "unclassified-template; do-not-export-runtime-values"
},
{
"file": "job-tracker-ui/src/i18n/I18nProvider.tsx",
"line": 67,
"sourceSha256": "95a930915cb2240547cc1a91af7cb0a475bc8f46ac75304b3241a401928ed3e4",
"kind": "direct-catalogue-access",
"text": "translations[language][key]",
"ownerComponent": "job-tracker-ui/src/i18n/I18nProvider.tsx",
"contextStatus": "pending",
"sensitivity": "unclassified-template; do-not-export-runtime-values"
},
{
"file": "job-tracker-ui/src/i18n/I18nProvider.tsx",
"line": 67,
"sourceSha256": "95a930915cb2240547cc1a91af7cb0a475bc8f46ac75304b3241a401928ed3e4",
"kind": "direct-catalogue-access",
"text": "translations.en[key]",
"ownerComponent": "job-tracker-ui/src/i18n/I18nProvider.tsx",
"contextStatus": "pending",
"sensitivity": "unclassified-template; do-not-export-runtime-values"
}
]
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,319 @@
{
"baseline": "5cb903b989742b7a96cb22ddf4c0e24993b18980",
"method": "TypeScript AST syntactic triage; no symbol resolution or runtime coverage claim",
"filesScanned": 134,
"entries": [
{
"file": "job-tracker-ui/src/App.tsx",
"line": 488,
"sourceSha256": "3b5645d12f2c92ed8999d7a072bd7d47fac77023d460a19a9b3bfc2a4191962f",
"kind": "jsx-text",
"text": "Session changed. Clearing this page…",
"ownerComponent": "job-tracker-ui/src/App.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "localise-with-session-boundary-preservation",
"translatorContext": "Alert rendered while old application tree is invalidated; preserve unmount/privacy behavior and avoid dependencies on the discarded session/provider tree."
},
{
"file": "job-tracker-ui/src/assets/JobbjaktMark.tsx",
"line": 7,
"sourceSha256": "5a539514876a66eaf17ec68eb7ce3d28c558384bc24ab76b61f73be8df754473",
"kind": "jsx-attribute:aria-label",
"text": "Jobbjakt",
"ownerComponent": "job-tracker-ui/src/assets/JobbjaktMark.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "preserve-proper-name-or-example",
"translatorContext": "Public brand/provider label or synthetic host example; not user content. Retain original spelling; localise surrounding guidance separately."
},
{
"file": "job-tracker-ui/src/components/ApplicationAssets.tsx",
"line": 198,
"sourceSha256": "25216c80ef92d519baad9e428a0e77390150605c1a3529a4809819d120661f29",
"kind": "jsx-text",
"text": "· v",
"ownerComponent": "job-tracker-ui/src/components/ApplicationAssets.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "version-or-unit-formatting-review",
"translatorContext": "Keep numeric/version identity; review locale number formatting and descriptive accessible labels. Do not translate user file/name data."
},
{
"file": "job-tracker-ui/src/components/ApplicationAssets.tsx",
"line": 360,
"sourceSha256": "25216c80ef92d519baad9e428a0e77390150605c1a3529a4809819d120661f29",
"kind": "jsx-text",
"text": "KB",
"ownerComponent": "job-tracker-ui/src/components/ApplicationAssets.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "version-or-unit-formatting-review",
"translatorContext": "Keep numeric/version identity; review locale number formatting and descriptive accessible labels. Do not translate user file/name data."
},
{
"file": "job-tracker-ui/src/components/ApplicationAssets.tsx",
"line": 699,
"sourceSha256": "25216c80ef92d519baad9e428a0e77390150605c1a3529a4809819d120661f29",
"kind": "jsx-text",
"text": "v",
"ownerComponent": "job-tracker-ui/src/components/ApplicationAssets.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "version-or-unit-formatting-review",
"translatorContext": "Keep numeric/version identity; review locale number formatting and descriptive accessible labels. Do not translate user file/name data."
},
{
"file": "job-tracker-ui/src/components/Attachments.tsx",
"line": 361,
"sourceSha256": "fe706526f36d92c10d2a0adfd7abb634d0ebee28f5d7e1794c590179b4fd884c",
"kind": "jsx-attribute:title",
"text": "pdf",
"ownerComponent": "job-tracker-ui/src/components/Attachments.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "descriptive-localised-accessible-title",
"translatorContext": "Attachment preview iframe title; describe document preview purpose, without exposing private filename in exported translator context."
},
{
"file": "job-tracker-ui/src/components/CoverLetterDocument.tsx",
"line": 157,
"sourceSha256": "17ea0c608db7bc05171fb3c44f378c1acaa78fbdd337f9330002ef6346b92546",
"kind": "jsx-text",
"text": "pt ·",
"ownerComponent": "job-tracker-ui/src/components/CoverLetterDocument.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "version-or-unit-formatting-review",
"translatorContext": "Keep numeric/version identity; review locale number formatting and descriptive accessible labels. Do not translate user file/name data."
},
{
"file": "job-tracker-ui/src/components/CoverLetterDocument.tsx",
"line": 157,
"sourceSha256": "17ea0c608db7bc05171fb3c44f378c1acaa78fbdd337f9330002ef6346b92546",
"kind": "jsx-text",
"text": "mm ·",
"ownerComponent": "job-tracker-ui/src/components/CoverLetterDocument.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "version-or-unit-formatting-review",
"translatorContext": "Keep numeric/version identity; review locale number formatting and descriptive accessible labels. Do not translate user file/name data."
},
{
"file": "job-tracker-ui/src/components/EmailProviderConnections.tsx",
"line": 227,
"sourceSha256": "b71228ee28ee73525014c8ece8690364e0f70ddaca3ee7211e9076123d120b1d",
"kind": "jsx-attribute:label",
"text": "Gmail",
"ownerComponent": "job-tracker-ui/src/components/EmailProviderConnections.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "preserve-proper-name-or-example",
"translatorContext": "Public brand/provider label or synthetic host example; not user content. Retain original spelling; localise surrounding guidance separately."
},
{
"file": "job-tracker-ui/src/components/EmailProviderConnections.tsx",
"line": 239,
"sourceSha256": "b71228ee28ee73525014c8ece8690364e0f70ddaca3ee7211e9076123d120b1d",
"kind": "jsx-attribute:label",
"text": "Outlook / Microsoft 365",
"ownerComponent": "job-tracker-ui/src/components/EmailProviderConnections.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "preserve-proper-name-or-example",
"translatorContext": "Public brand/provider label or synthetic host example; not user content. Retain original spelling; localise surrounding guidance separately."
},
{
"file": "job-tracker-ui/src/components/EmailProviderConnections.tsx",
"line": 264,
"sourceSha256": "b71228ee28ee73525014c8ece8690364e0f70ddaca3ee7211e9076123d120b1d",
"kind": "jsx-attribute:placeholder",
"text": "imap.example.com",
"ownerComponent": "job-tracker-ui/src/components/EmailProviderConnections.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "preserve-proper-name-or-example",
"translatorContext": "Public brand/provider label or synthetic host example; not user content. Retain original spelling; localise surrounding guidance separately."
},
{
"file": "job-tracker-ui/src/components/JobFlowBar.tsx",
"line": 147,
"sourceSha256": "643053f6ac883f23ef74c66def7a42678cd7917ed11ca802b11be25ec6df0cb2",
"kind": "jsx-text",
"text": "Flow",
"ownerComponent": "job-tracker-ui/src/components/JobFlowBar.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "extract-controlled-label",
"translatorContext": "Workflow overline in JobFlowBar; ordinary user-facing UI label, not a persisted status."
},
{
"file": "job-tracker-ui/src/components/QuickCommandDialog.tsx",
"line": 166,
"sourceSha256": "27cbbb8b8596fdf4e7474eccfdb6d9a8a219f4baff6a9b8013b825ce5fc2c411",
"kind": "jsx-text",
"text": "Ctrl/Cmd + K",
"ownerComponent": "job-tracker-ui/src/components/QuickCommandDialog.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "version-or-unit-formatting-review",
"translatorContext": "Keep numeric/version identity; review locale number formatting and descriptive accessible labels. Do not translate user file/name data."
},
{
"file": "job-tracker-ui/src/layout/AppShell.tsx",
"line": 312,
"sourceSha256": "e75a58f2984bf47d7edc3c2c51439242aba2df32675a30b1f17088095ea1d634",
"kind": "jsx-text",
"text": "Jobbjakt",
"ownerComponent": "job-tracker-ui/src/layout/AppShell.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "preserve-proper-name-or-example",
"translatorContext": "Public brand/provider label or synthetic host example; not user content. Retain original spelling; localise surrounding guidance separately."
},
{
"file": "job-tracker-ui/src/layout/AppShell.tsx",
"line": 415,
"sourceSha256": "e75a58f2984bf47d7edc3c2c51439242aba2df32675a30b1f17088095ea1d634",
"kind": "jsx-text",
"text": "Jobbjakt",
"ownerComponent": "job-tracker-ui/src/layout/AppShell.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "preserve-proper-name-or-example",
"translatorContext": "Public brand/provider label or synthetic host example; not user content. Retain original spelling; localise surrounding guidance separately."
},
{
"file": "job-tracker-ui/src/layout/AppShell.tsx",
"line": 563,
"sourceSha256": "e75a58f2984bf47d7edc3c2c51439242aba2df32675a30b1f17088095ea1d634",
"kind": "jsx-text",
"text": "commit",
"ownerComponent": "job-tracker-ui/src/layout/AppShell.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "localise-label-preserve-identifier",
"translatorContext": "Technical display label may be translated; commit/job identifier remains invariant and must not enter translation resources."
},
{
"file": "job-tracker-ui/src/layout/AppShell.tsx",
"line": 692,
"sourceSha256": "e75a58f2984bf47d7edc3c2c51439242aba2df32675a30b1f17088095ea1d634",
"kind": "jsx-attribute:aria-label",
"text": "English",
"ownerComponent": "job-tracker-ui/src/layout/AppShell.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "locale-selector-contract",
"translatorContext": "Replace ambiguous country-like abbreviation/undifferentiated Norwegian label only within approved locale-selector work; preserve current nb behavior and native labels."
},
{
"file": "job-tracker-ui/src/layout/AppShell.tsx",
"line": 692,
"sourceSha256": "e75a58f2984bf47d7edc3c2c51439242aba2df32675a30b1f17088095ea1d634",
"kind": "jsx-text",
"text": "EN",
"ownerComponent": "job-tracker-ui/src/layout/AppShell.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "locale-selector-contract",
"translatorContext": "Replace ambiguous country-like abbreviation/undifferentiated Norwegian label only within approved locale-selector work; preserve current nb behavior and native labels."
},
{
"file": "job-tracker-ui/src/layout/AppShell.tsx",
"line": 693,
"sourceSha256": "e75a58f2984bf47d7edc3c2c51439242aba2df32675a30b1f17088095ea1d634",
"kind": "jsx-attribute:aria-label",
"text": "Norsk",
"ownerComponent": "job-tracker-ui/src/layout/AppShell.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "locale-selector-contract",
"translatorContext": "Replace ambiguous country-like abbreviation/undifferentiated Norwegian label only within approved locale-selector work; preserve current nb behavior and native labels."
},
{
"file": "job-tracker-ui/src/layout/AppShell.tsx",
"line": 693,
"sourceSha256": "e75a58f2984bf47d7edc3c2c51439242aba2df32675a30b1f17088095ea1d634",
"kind": "jsx-text",
"text": "NO",
"ownerComponent": "job-tracker-ui/src/layout/AppShell.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "locale-selector-contract",
"translatorContext": "Replace ambiguous country-like abbreviation/undifferentiated Norwegian label only within approved locale-selector work; preserve current nb behavior and native labels."
},
{
"file": "job-tracker-ui/src/views/AdminAuditPage.tsx",
"line": 146,
"sourceSha256": "b78d0c5f6ec86a4ee3d2214e6854e638d9f73a5c69c8d5b01023d8c60b46ac81",
"kind": "jsx-text",
"text": "jobId=",
"ownerComponent": "job-tracker-ui/src/views/AdminAuditPage.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "localise-label-preserve-identifier",
"translatorContext": "Technical display label may be translated; commit/job identifier remains invariant and must not enter translation resources."
},
{
"file": "job-tracker-ui/src/views/AdminUsersPage.tsx",
"line": 274,
"sourceSha256": "674290a26fc279a25e43176194716dea87f427d1885ecce70dea7c368ab0c6f8",
"kind": "jsx-attribute:label",
"text": "—",
"ownerComponent": "job-tracker-ui/src/views/AdminUsersPage.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "empty-state-accessibility-review",
"translatorContext": "No-role placeholder; visual glyph can stay but verify meaningful accessible context."
},
{
"file": "job-tracker-ui/src/views/LandingPage.tsx",
"line": 99,
"sourceSha256": "2c550aa126e1db8786ed10b895d2403491ce50bf5073fc95b8a0fcb0cb0e083e",
"kind": "jsx-text",
"text": "Jobbjakt",
"ownerComponent": "job-tracker-ui/src/views/LandingPage.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "preserve-proper-name-or-example",
"translatorContext": "Public brand/provider label or synthetic host example; not user content. Retain original spelling; localise surrounding guidance separately."
},
{
"file": "job-tracker-ui/src/views/LandingPage.tsx",
"line": 133,
"sourceSha256": "2c550aa126e1db8786ed10b895d2403491ce50bf5073fc95b8a0fcb0cb0e083e",
"kind": "jsx-text",
"text": "React · TypeScript · ASP.NET Core · EF Core · FastAPI AI · Gmail",
"ownerComponent": "job-tracker-ui/src/views/LandingPage.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "launch-copy-review",
"translatorContext": "Technology list is public brand names but poor user-value copy; coordinate replacement with Launch Site design approval."
},
{
"file": "job-tracker-ui/src/views/career/CareerProfileSections.tsx",
"line": 100,
"sourceSha256": "0c772feb6bde8324676b0884aaf343283465c5cd3b3318128363063df4ea22ab",
"kind": "jsx-attribute:label",
"text": "GitHub",
"ownerComponent": "job-tracker-ui/src/views/career/CareerProfileSections.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "preserve-proper-name-or-example",
"translatorContext": "Public brand/provider label or synthetic host example; not user content. Retain original spelling; localise surrounding guidance separately."
},
{
"file": "job-tracker-ui/src/views/career/ProfileCompleteness.tsx",
"line": 55,
"sourceSha256": "95f017b1495cf9d88a2b69e7c6ae8ef83d55f2b1ad7b6f54895e280b147743b5",
"kind": "jsx-text",
"text": "v",
"ownerComponent": "job-tracker-ui/src/views/career/ProfileCompleteness.tsx",
"contextStatus": "source-context-reviewed; implementation-pending",
"sensitivity": "public-ui-template; adjacent runtime identifiers excluded",
"decision": "version-or-unit-formatting-review",
"translatorContext": "Keep numeric/version identity; review locale number formatting and descriptive accessible labels. Do not translate user file/name data."
}
]
}
+2
View File
@@ -14,4 +14,6 @@ Next authorised work, without implementation approval:
The delegated researcher was interrupted by a service usage limit; the parent continued, corrected references to nonexistent deliverables and produced the actual inventory/catalogue/matrix. No agent is working in the background. Full stage completion must not be inferred from the presence of the expected filenames. The delegated researcher was interrupted by a service usage limit; the parent continued, corrected references to nonexistent deliverables and produced the actual inventory/catalogue/matrix. No agent is working in the background. Full stage completion must not be inferred from the presence of the expected filenames.
Continuation: CONTEXT_TRIAGE.md records all 188 dynamic calls, 108 finite-branch resolutions (240 existing-key references), four direct catalogue reads and 26 source-context-reviewed JSX/accessibility literal candidates. Seven concrete planning findings I00-13 through I00-19 added. Remaining dynamic call queue is 80; prior 188 count is the original inventory total, not the remaining queue. No application changes.
Product tests NOT RUN; source equality and planning checks PASSED within their documented limits. Preserve existing PDF evidence. No application models, production services, orchestrator configuration or signing/approval material accessed. Product tests NOT RUN; source equality and planning checks PASSED within their documented limits. Preserve existing PDF evidence. No application models, production services, orchestrator configuration or signing/approval material accessed.
+1 -1
View File
@@ -1,6 +1,6 @@
# Surface inventory and message accounting # Surface inventory and message accounting
All rows need a source-bound contextual census before I18N-00 acceptance. Existing-catalogue inventory is in `MESSAGE_INVENTORY.json`; a non-catalogue literal inventory is still PENDING and no `LITERAL_CANDIDATES.json` was produced. This is not a 100% coverage claim. Namespace assignments remain provisional until caller review; translator context cannot be inferred safely from key names alone. The AST inventory identifies syntactically named `t` calls, not symbol-resolved calls; context fields explicitly remain pending. All rows need a source-bound contextual census before I18N-00 acceptance. Existing-catalogue inventory is in `MESSAGE_INVENTORY.json`; partial JSX/accessibility literals are now recorded in `FRONTEND_LITERAL_CANDIDATES.json`, with direct reads and dynamic calls in separate inventories. This is not a 100% coverage claim. Namespace assignments remain provisional until caller review; translator context cannot be inferred safely from key names alone. The AST inventory identifies syntactically named `t` calls, not symbol-resolved calls. See CONTEXT_TRIAGE.md for reviewed literal context and the 108 resolved conditional calls; 80 table/template/wrapper calls remain.
| Surface / proposed namespace | Source owner / inspection target | Content boundary and required evidence | | Surface / proposed namespace | Source owner / inspection target | Content boundary and required evidence |
|---|---|---| |---|---|---|