[ { "id": "T001", "description": "Lang-pack validation: `node scripts/generate-pseudo-locales.cjs && node scripts/validate-translations.cjs` passes for all 9 locales after each namespace update (covers key parity, missing/extra keys, interpolation variables, pseudo-locale patterns, Italian accents). Single check, run on every commit.", "implemented": true, "featureIds": [ "F001", "F002", "F003", "F004", "F005", "F006", "F007", "F008", "F009" ] }, { "id": "T002", "description": "Unit: ContractDetail.i18n.test -- tab labels (Overview, Contract Lines, Pricing Schedules, Documents, Invoices) render via t() in en", "implemented": true, "featureIds": [ "F011" ] }, { "id": "T003", "description": "Unit: ContractDetail.i18n.test -- unsaved changes alert and save success alert render translated text", "implemented": true, "featureIds": [ "F011" ] }, { "id": "T004", "description": "Unit: ContractDetail.i18n.test -- Contract Details card labels, edit/save/cancel buttons render via t()", "implemented": true, "featureIds": [ "F012" ] }, { "id": "T005", "description": "Unit: ContractDetail.i18n.test -- Contract Header card renders translated status, billing, currency, renewal labels", "implemented": true, "featureIds": [ "F013" ] }, { "id": "T006", "description": "Unit: ContractDetail.i18n.test -- Client Ownership and Assignment cards render translated labels, PO fields, empty state", "implemented": true, "featureIds": [ "F014" ] }, { "id": "T007", "description": "Unit: ContractDetail.i18n.test -- Quick Actions buttons, save/cancel row, and confirmation dialogs render translated text", "implemented": true, "featureIds": [ "F015" ] }, { "id": "T008", "description": "Unit: ContractDetail.i18n.test -- invoice tab column headers and empty/loading states render translated text", "implemented": true, "featureIds": [ "F015" ] }, { "id": "T009", "description": "Unit: ContractDetail.i18n.test -- pseudo-locale (xx) shows no bare English leakage across all tabs", "implemented": true, "featureIds": [ "F011", "F012", "F013", "F014", "F015" ] }, { "id": "T010", "description": "Unit: ContractDialog.i18n.test -- dialog title, form field labels, and validation errors render via t()", "implemented": true, "featureIds": [ "F016" ] }, { "id": "T011", "description": "Unit: ContractDialog.i18n.test -- PO section labels and preset picker section render translated text", "implemented": true, "featureIds": [ "F017" ] }, { "id": "T012", "description": "Unit: ContractDialog.i18n.test -- pseudo-locale (xx) coverage for all visible strings", "implemented": true, "featureIds": [ "F016", "F017", "F018" ] }, { "id": "T013", "description": "Unit: ContractTemplateDetail.i18n.test -- page header, back button, tab labels render via t()", "implemented": true, "featureIds": [ "F019" ] }, { "id": "T014", "description": "Unit: ContractTemplateDetail.i18n.test -- contract lines section columns, actions, and inline editing labels render translated", "implemented": true, "featureIds": [ "F020" ] }, { "id": "T015", "description": "Unit: ContractTemplateDetail.i18n.test -- billing timing and cadence owner options render translated labels", "implemented": true, "featureIds": [ "F021" ] }, { "id": "T016", "description": "Unit: ContractTemplateDetail.i18n.test -- pseudo-locale (xx) coverage", "implemented": true, "featureIds": [ "F019", "F020", "F021" ] }, { "id": "T017", "description": "Unit: CreateCustomContractLineDialog.i18n.test -- dialog title, type selector labels, service picker labels render via t()", "implemented": true, "featureIds": [ "F022" ] }, { "id": "T018", "description": "Unit: CreateCustomContractLineDialog.i18n.test -- bucket overlay, proration, and validation messages render translated", "implemented": true, "featureIds": [ "F023" ] }, { "id": "T019", "description": "Unit: CreateCustomContractLineDialog.i18n.test -- pseudo-locale (xx) coverage", "implemented": true, "featureIds": [ "F022", "F023", "F024" ] }, { "id": "T020", "description": "Unit: ContractLines.i18n.test -- section header, Add/Create buttons, column labels, empty state render via t()", "implemented": true, "featureIds": [ "F025" ] }, { "id": "T021", "description": "Unit: ContractLines.i18n.test -- inline edit fields, service config details, delete confirmation render translated", "implemented": true, "featureIds": [ "F026" ] }, { "id": "T022", "description": "Unit: ContractLines.i18n.test -- pseudo-locale (xx) coverage for expanded line details", "implemented": true, "featureIds": [ "F025", "F026", "F027" ] }, { "id": "T023", "description": "Unit: AddContractLinesDialog.i18n.test -- dialog title, search, filter, preset labels render via t()", "implemented": true, "featureIds": [ "F028" ] }, { "id": "T024", "description": "Unit: AddContractLinesDialog.i18n.test -- expanded preset details and empty/loading states render translated", "implemented": true, "featureIds": [ "F029" ] }, { "id": "T025", "description": "Unit: Contracts.i18n.test -- sub-tab labels, New Contract/Template buttons, search placeholders render via t()", "implemented": true, "featureIds": [ "F030" ] }, { "id": "T026", "description": "Unit: Contracts.i18n.test -- row action menus, confirmation dialogs, toast messages render translated", "implemented": true, "featureIds": [ "F031" ] }, { "id": "T027", "description": "Unit: Contracts.i18n.test -- column headers for all three sub-tabs render via t()", "implemented": true, "featureIds": [ "F032" ] }, { "id": "T028", "description": "Unit: Contracts.i18n.test -- pseudo-locale (xx) coverage", "implemented": true, "featureIds": [ "F030", "F031", "F032" ] }, { "id": "T029", "description": "Unit: ClientContractsTab.i18n.test -- column headers, status badges, search placeholder render via t()", "implemented": true, "featureIds": [ "F033" ] }, { "id": "T030", "description": "Unit: ClientContractsTab.i18n.test -- empty state, terminate dialog, and error alert render translated", "implemented": true, "featureIds": [ "F034" ] }, { "id": "T031", "description": "Unit: ContractWizard.i18n.test -- step labels render via t() in the wizard progress component", "implemented": true, "featureIds": [ "F035" ] }, { "id": "T032", "description": "Unit: ContractWizard.i18n.test -- validation errors and save/draft buttons render translated", "implemented": true, "featureIds": [ "F036" ] }, { "id": "T033", "description": "Unit: ContractOverview.i18n.test -- stat cards (Est. Monthly Value, Contract Lines, Total Services) render via t()", "implemented": true, "featureIds": [ "F037" ] }, { "id": "T034", "description": "Unit: ContractOverview.i18n.test -- line cards with service count interpolation and empty state render translated", "implemented": true, "featureIds": [ "F038" ] }, { "id": "T035", "description": "Unit: PricingSchedules.i18n.test -- section title, columns, actions, empty state render via t()", "implemented": true, "featureIds": [ "F039", "F040" ] }, { "id": "T036", "description": "Unit: TemplatesTab.i18n.test -- columns, status badges, search, actions render via t()", "implemented": true, "featureIds": [ "F041" ] }, { "id": "T037", "description": "Unit: ContractForm.i18n.test -- form heading, field labels, status options, validation messages render via t()", "implemented": true, "featureIds": [ "F043" ] }, { "id": "T038", "description": "Unit: QuickStartGuide.i18n.test -- step headings, descriptions, billing model labels, best practices render via t()", "implemented": true, "featureIds": [ "F044" ] }, { "id": "T039", "description": "Unit: QuickStartGuide.i18n.test -- pseudo-locale (xx) covers all visible text", "implemented": true, "featureIds": [ "F044" ] }, { "id": "T040", "description": "Unit: BucketOverlayFields.i18n.test -- included units label, overage rate label, rollover checkbox label render via t()", "implemented": true, "featureIds": [ "F045" ] }, { "id": "T041", "description": "Unit: ContractLineEditDialog.i18n.test -- dialog title with interpolation, rate/timing labels, timing options render via t()", "implemented": true, "featureIds": [ "F046" ] }, { "id": "T042", "description": "Unit: ContractHeader.i18n.test -- stat labels, status badges, Template/Client-owned badges, PO alert render via t()", "implemented": true, "featureIds": [ "F047" ] }, { "id": "T043", "description": "Unit: ContractDetailSwitcher.i18n.test -- error messages and loading text render via t()", "implemented": true, "featureIds": [ "F048" ] }, { "id": "T044", "description": "Unit: ContractLineRateDialog.i18n.test -- dialog title with interpolation, rate label, validation error, buttons render via t()", "implemented": true, "featureIds": [ "F049" ] }, { "id": "T045", "description": "Unit: BillingFrequencyOverrideSelect.i18n.test -- label, description with interpolation, placeholder with interpolation render via t()", "implemented": true, "featureIds": [ "F050" ] }, { "id": "T046", "description": "Unit: ServicePicker.i18n.test -- placeholder and empty message render via t()", "implemented": true, "featureIds": [ "F051" ] }, { "id": "T047", "description": "Unit: ContractBasicsStep.i18n.test -- step heading, template picker labels, client picker label render via t()", "implemented": true, "featureIds": [ "F052" ] }, { "id": "T048", "description": "Unit: ContractBasicsStep.i18n.test -- renewal section, PO fields, cadence owner options render translated", "implemented": true, "featureIds": [ "F053" ] }, { "id": "T049", "description": "Unit: FixedFeeServicesStep.i18n.test -- step heading, service picker, rate/proration labels render via t()", "implemented": true, "featureIds": [ "F054" ] }, { "id": "T050", "description": "Unit: ProductsStep.i18n.test -- step heading, service picker, quantity/rate labels render via t()", "implemented": true, "featureIds": [ "F055" ] }, { "id": "T051", "description": "Unit: HourlyServicesStep.i18n.test -- step heading, rate/minimum/rounding labels render via t()", "implemented": true, "featureIds": [ "F056" ] }, { "id": "T052", "description": "Unit: UsageBasedServicesStep.i18n.test -- step heading, unit rate/measure labels render via t()", "implemented": true, "featureIds": [ "F057" ] }, { "id": "T053", "description": "Unit: ReviewContractStep.i18n.test -- Contract Basics section labels and fallback values render via t()", "implemented": true, "featureIds": [ "F058" ] }, { "id": "T054", "description": "Unit: ReviewContractStep.i18n.test -- service summary sections with rates and bucket summaries render translated", "implemented": true, "featureIds": [ "F059" ] }, { "id": "T055", "description": "Unit: TemplateWizard.i18n.test -- step labels and validation messages render via t()", "implemented": true, "featureIds": [ "F060" ] }, { "id": "T056", "description": "Unit: TemplateContractBasicsStep.i18n.test -- step heading, name/notes/frequency labels render via t()", "implemented": true, "featureIds": [ "F061" ] }, { "id": "T057", "description": "Unit: TemplateFixedFeeServicesStep.i18n.test -- step heading, service picker, preview render via t()", "implemented": true, "featureIds": [ "F062" ] }, { "id": "T058", "description": "Unit: TemplateProductsStep.i18n.test -- step heading, service picker, preview render via t()", "implemented": true, "featureIds": [ "F063" ] }, { "id": "T059", "description": "Unit: TemplateHourlyServicesStep.i18n.test -- step heading, service picker, bucket/minimum/rounding labels render via t()", "implemented": true, "featureIds": [ "F064" ] }, { "id": "T060", "description": "Unit: TemplateUsageBasedServicesStep.i18n.test -- step heading, service picker, unit measure/bucket labels render via t()", "implemented": true, "featureIds": [ "F065" ] }, { "id": "T061", "description": "Unit: TemplateReviewContractStep.i18n.test -- review heading, section labels, service summaries render via t()", "implemented": true, "featureIds": [ "F066" ] }, { "id": "T062", "description": "Unit: TemplateServicePreviewSection.i18n.test -- service type labels, heading with interpolation, remove confirmation dialog render via t()", "implemented": true, "featureIds": [ "F067" ] }, { "id": "T063", "description": "Integration: /msp/billing?tab=contracts loads Contracts.tsx in en with no hardcoded English visible in template/client/draft sub-tabs", "implemented": true, "featureIds": [ "F030", "F031", "F032", "F041", "F033", "F034" ] }, { "id": "T064", "description": "Integration: /msp/billing?tab=contracts loads in de with translated sub-tab labels, column headers, and action menus", "implemented": true, "featureIds": [ "F030", "F031", "F032" ] }, { "id": "T065", "description": "Integration: /msp/billing?tab=contracts&contractId= contract detail page renders all tabs translated in de with no English leakage", "implemented": true, "featureIds": [ "F011", "F012", "F013", "F014", "F015", "F025", "F026", "F039", "F040" ] }, { "id": "T066", "description": "Integration: contract creation wizard renders all step labels and form fields translated in de", "implemented": true, "featureIds": [ "F035", "F052", "F053", "F054", "F055", "F056", "F057", "F058", "F059" ] }, { "id": "T067", "description": "Integration: template creation wizard renders all step labels and form fields translated in de", "implemented": true, "featureIds": [ "F060", "F061", "F062", "F063", "F064", "F065", "F066", "F067" ] }, { "id": "T068", "description": "Integration: contract detail QuickStartGuide renders fully translated in de with no English leakage", "implemented": true, "featureIds": [ "F044" ] }, { "id": "T069", "description": "Integration: currency amounts in contract detail and review steps use locale-aware formatting (not hardcoded 'en-US')", "implemented": true, "featureIds": [ "F015", "F059" ] } ]