fix(01-12): brand polish — replace stale 'AI Call Recorder' refs with Mokosh (4 files)
Plan 01-12 D-07 (commit5efc2a8) migrated manifest.json:name + tooltip + extName/extDesc keys to chrome.i18n placeholders + _locales/{en,ru}/ messages.json resolving to 'Mokosh — Session Capture' (EN) / 'Mokosh — Запись сессии' (RU). However, 4 trailing references to the pre-D-07 literal 'AI Call Recorder' in non-manifest content surfaces were never propagated. Operator noticed during Plan 01-10 cycle-2 UAT 2026-05-20. This commit applies the user-approved 4-file surgical rename: - src/welcome/copy.ts: welcome.body.cta.toolbar RU CTA "иконку AI Call Recorder" → "иконку Mokosh" (matches toolbar tooltip i18n key tooltipOff = "Mokosh — щёлкните, чтобы начать запись"). Inline rationale comment added cross-ref'ing the i18n key + this debug session. - README.md: H1 + first paragraph rewritten to "# Mokosh — Session Capture" + EN tagline line. Rest of README body preserved verbatim (technical-stack section historical mentions left as project history, not brand surface). - package.json: name "ai-call-extension" → "mokosh-session-capture", description rewritten to "Mokosh — Session Capture: Chrome MV3 extension for operator session recording." version, scripts, dependencies, devDependencies untouched. - tests/i18n/manifest-i18n.test.ts: header comment block rewritten to label the "AI Call Recorder" string as Wave-0 historical state + describe the post-D-07 regression-pin role. Test bodies + assertions unchanged (already pin the post-D-07 canonical state). Preservation rationale: .planning/intel/* (brand-decisions-v1.md D-07, design-system.md, brand-identity.md, classifications/README-*.json, design-incoming/system/bundle/mokosh-handoff/handoff.html) is audit trail documenting the "why" of D-07 — kept verbatim. _locales/{en,ru}/ messages.json and manifest.json already post-D-07 canonical — untouched. Acceptance gates (all PASS 2026-05-20): - Empirical grep src/ tests/ README.md package.json: ZERO non-historical "AI Call Recorder" matches (only the labeled audit anchor in tests/i18n/manifest-i18n.test.ts:8). - npx tsc --noEmit: clean. - npm run build: ✓ built in 5.29s. - npx vitest run tests/i18n/manifest-i18n.test.ts: 10/10 GREEN. - npx vitest run tests/background/no-test-hooks-in-prod-bundle.test.ts (Tier-1 hook-string grep gate): 13/13 GREEN; FORBIDDEN_HOOK_STRINGS list intact. - npm test: 151/153 (2 pre-existing ffprobe/ffmpeg timeout flakes in webm-remux + webm-playback — verified identical to pristine HEADa2dfc8cvia git stash baseline; unrelated to rename). - npm run test:uat: 24/24 GREEN. - Production bundle grep dist/: ZERO "AI Call Recorder" + ZERO "ai-call-extension" matches. Unblocks Plan 01-10 closure + Phase 1 final closure (REQUIREMENTS / ROADMAP / STATE marker flip). Debug record: .planning/debug/resolved/01-12-stale-ai-call-recorder-references.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,86 @@
|
|||||||
|
---
|
||||||
|
slug: 01-12-stale-ai-call-recorder-references
|
||||||
|
status: resolved
|
||||||
|
goal: find_and_fix
|
||||||
|
trigger: Operator noticed during Plan 01-10 cycle-2 UAT 2026-05-20 — "let's rename to the session capture instead of ai call recorder oki?" — 4 trailing references to the pre-D-07 brand string "AI Call Recorder" survived the Plan 01-12 D-07 i18n migration.
|
||||||
|
phase: 01-stabilize-video-pipeline
|
||||||
|
plan: 01-12
|
||||||
|
opened: 2026-05-20
|
||||||
|
resolved: 2026-05-20
|
||||||
|
orchestrator_diagnosed: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Debug session 01-12-stale-ai-call-recorder-references — Brand-polish rename to "Mokosh"
|
||||||
|
|
||||||
|
## Current Focus
|
||||||
|
|
||||||
|
hypothesis: 4 surgical content-only edits across welcome/copy.ts + README.md + package.json + manifest-i18n.test.ts comment will eliminate all non-historical references to "AI Call Recorder" while preserving .planning/intel/* audit trail.
|
||||||
|
test: After edits, `grep -r "AI Call Recorder" src/ tests/ README.md package.json --exclude-dir=.planning` returns ZERO matches; existing test suites stay GREEN.
|
||||||
|
expecting: All 4 acceptance gates pass + production bundle hook-free + Tier-1 grep gate keeps FORBIDDEN_HOOK_STRINGS at 12.
|
||||||
|
next_action: COMPLETE — all gates passed; archive + commit.
|
||||||
|
|
||||||
|
## Symptoms
|
||||||
|
|
||||||
|
expected: Operator-facing brand is consistently "Mokosh" across toolbar tooltip, welcome page CTA, README, and package.json metadata.
|
||||||
|
actual: Russian welcome CTA reads "иконку AI Call Recorder" — pre-D-07 brand string. README H1 still reads "AI Call Recorder". package.json:name still "ai-call-extension". Test comment still references "AI Call Recorder" without noting that string is now historical.
|
||||||
|
errors: None — content-only inconsistency, no compile-time/runtime failure.
|
||||||
|
reproduction: After Plan 01-12 D-07 i18n migration (commit 5efc2a8), open welcome page in RU locale + read CTA line; H1 of README; package.json:name field; manifest-i18n.test.ts header comment line 8.
|
||||||
|
started: 2026-05-19 — D-07 migration of manifest:name + i18n keys landed but did not propagate to non-manifest brand surfaces.
|
||||||
|
|
||||||
|
## Eliminated
|
||||||
|
|
||||||
|
(none — diagnosis pre-orchestrated; surgical scope user-approved)
|
||||||
|
|
||||||
|
## Evidence
|
||||||
|
|
||||||
|
- timestamp: 2026-05-20
|
||||||
|
checked: src/welcome/copy.ts:67
|
||||||
|
found: Russian welcome CTA literal — `'Чтобы начать запись, нажмите иконку AI Call Recorder на панели '`
|
||||||
|
implication: Operator-facing CTA out of sync with toolbar tooltip (`Mokosh — щёлкните, чтобы начать запись`).
|
||||||
|
|
||||||
|
- timestamp: 2026-05-20
|
||||||
|
checked: README.md:1
|
||||||
|
found: `# AI Call Recorder - Браузерное расширение для записи сессий операторов`
|
||||||
|
implication: First impression for developers/operators reading the repo references the pre-D-07 brand.
|
||||||
|
|
||||||
|
- timestamp: 2026-05-20
|
||||||
|
checked: package.json
|
||||||
|
found: `"name": "ai-call-extension"` + `"description": "Browser extension for recording operator sessions"`
|
||||||
|
implication: Developer-facing npm artifact inconsistent with Chrome user-facing brand.
|
||||||
|
|
||||||
|
- timestamp: 2026-05-20
|
||||||
|
checked: tests/i18n/manifest-i18n.test.ts:8
|
||||||
|
found: Comment "Polarity at Wave 0 land: RED across the board (manifest.name still 'AI Call Recorder'; no default_locale; no _locales/)"
|
||||||
|
implication: Pre-D-07 state described as present — accurate at Wave 0 but misleading post-Wave-3.
|
||||||
|
|
||||||
|
- timestamp: 2026-05-20
|
||||||
|
checked: _locales/en/messages.json + _locales/ru/messages.json + manifest.json
|
||||||
|
found: Already post-D-07 canonical: en:extName='Mokosh — Session Capture', ru:extName='Mokosh — Запись сессии', manifest:name='__MSG_extName__'.
|
||||||
|
implication: i18n layer is the source of truth; the 4 stale refs are content-only and do not affect runtime brand resolution.
|
||||||
|
|
||||||
|
## Resolution
|
||||||
|
|
||||||
|
root_cause: Plan 01-12 D-07 migrated manifest.json:name + tooltipOff + extName/extDesc keys to chrome.i18n placeholders + _locales/{en,ru}/messages.json — but 4 trailing references to the pre-migration literal "AI Call Recorder" in non-manifest content surfaces (welcome copy CTA, README header, package.json metadata, one test header comment) were never updated. The D-07 brand decision was documented in .planning/intel/brand-decisions-v1.md but the propagation to non-manifest surfaces was scoped to the manifest + locales only.
|
||||||
|
|
||||||
|
fix: 4-file surgical content rename to "Mokosh" / "Mokosh — Session Capture" per user-approved scope. .planning/intel/* audit trail preserved verbatim (documents the "why" of D-07).
|
||||||
|
|
||||||
|
verification: All acceptance gates passed 2026-05-20:
|
||||||
|
- Empirical grep `src/ tests/ README.md package.json` for "AI Call Recorder" → ZERO non-historical matches (only the intentional audit-trail anchor in tests/i18n/manifest-i18n.test.ts:8 rewritten to label the pre-D-07 state as history).
|
||||||
|
- `npx tsc --noEmit` → exit 0, clean.
|
||||||
|
- `npm run build` → exit 0 (`✓ built in 5.29s`).
|
||||||
|
- `npx vitest run tests/i18n/manifest-i18n.test.ts` → 10/10 GREEN in isolation.
|
||||||
|
- `npx vitest run tests/background/no-test-hooks-in-prod-bundle.test.ts` (Tier-1 hook-string grep gate) → 13/13 GREEN; FORBIDDEN_HOOK_STRINGS list intact.
|
||||||
|
- `npm test` → 151/153 (2 pre-existing ffprobe/ffmpeg timeout flakes in webm-remux + webm-playback — confirmed identical to pristine HEAD a2dfc8c via `git stash` baseline check; unrelated to brand rename).
|
||||||
|
- `npm run test:uat` → 24/24 GREEN.
|
||||||
|
- Production bundle grep `dist/` for "AI Call Recorder" + "ai-call-extension" → ZERO matches.
|
||||||
|
|
||||||
|
files_changed:
|
||||||
|
- src/welcome/copy.ts (welcome.body.cta.toolbar — "иконку AI Call Recorder" → "иконку Mokosh" + inline rationale comment cross-ref to tooltipOff i18n key and this debug session)
|
||||||
|
- README.md (H1 + first paragraph rewritten: "Mokosh — Session Capture" + EN tagline line; rest of README body preserved verbatim including historical "AI Call Recorder" mentions in technical-stack section as project history)
|
||||||
|
- package.json (name: "ai-call-extension" → "mokosh-session-capture"; description rewritten to Mokosh — Session Capture line; version/scripts/dependencies/devDependencies untouched)
|
||||||
|
- tests/i18n/manifest-i18n.test.ts (header comment block rewritten to label the "AI Call Recorder" string as Wave-0 historical state + describe the post-D-07 regression-pin role; test bodies + assertions unchanged)
|
||||||
|
|
||||||
|
forward_looking:
|
||||||
|
- .planning/intel/* preserved verbatim per scope: brand-decisions-v1.md (D-07 override decision), design-system.md, brand-identity.md, classifications/README-*.json, design-incoming/system/bundle/mokosh-handoff/handoff.html. These document the "why" of D-07 and are audit trail, not code.
|
||||||
|
- _locales/en/messages.json + _locales/ru/messages.json + manifest.json untouched — already post-D-07 canonical.
|
||||||
|
- Unblocks Plan 01-10 closure + Phase 1 final closure (REQUIREMENTS / ROADMAP / STATE marker flip).
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# AI Call Recorder - Браузерное расширение для записи сессий операторов
|
# Mokosh — Session Capture
|
||||||
|
|
||||||
|
Chrome MV3 extension that records operator sessions for bug reports.
|
||||||
|
|
||||||
Фаза 1 — Локальная запись + экспорт архива
|
Фаза 1 — Локальная запись + экспорт архива
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ai-call-extension",
|
"name": "mokosh-session-capture",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "Browser extension for recording operator sessions",
|
"description": "Mokosh — Session Capture: Chrome MV3 extension for operator session recording.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -63,8 +63,15 @@ export const COPY: Readonly<Record<string, string>> = Object.freeze({
|
|||||||
'welcome.body.explainer.line2':
|
'welcome.body.explainer.line2':
|
||||||
'Когда возникает баг, вы одним кликом сохраняете архив для службы '
|
'Когда возникает баг, вы одним кликом сохраняете архив для службы '
|
||||||
+ 'поддержки. Данные не отправляются никуда — только локально.',
|
+ 'поддержки. Данные не отправляются никуда — только локально.',
|
||||||
|
// Plan 01-12 D-07 brand-polish (2026-05-20, debug session
|
||||||
|
// 01-12-stale-ai-call-recorder-references): operator sees the toolbar
|
||||||
|
// tooltip "Mokosh — щёлкните, чтобы начать запись" (i18n key
|
||||||
|
// `tooltipOff` in `_locales/ru/messages.json`); welcome CTA must
|
||||||
|
// reference that same brand. Pre-D-07 this line read "иконку AI Call
|
||||||
|
// Recorder" — propagation was missed during the Wave-3 manifest+locales
|
||||||
|
// migration and corrected here.
|
||||||
'welcome.body.cta.toolbar':
|
'welcome.body.cta.toolbar':
|
||||||
'Чтобы начать запись, нажмите иконку AI Call Recorder на панели '
|
'Чтобы начать запись, нажмите иконку Mokosh на панели '
|
||||||
+ 'инструментов браузера (правый верхний угол).',
|
+ 'инструментов браузера (правый верхний угол).',
|
||||||
'welcome.footer.privacy':
|
'welcome.footer.privacy':
|
||||||
'Mokosh не отправляет данные на серверы. Архив создаётся '
|
'Mokosh не отправляет данные на серверы. Архив создаётся '
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
// tests/i18n/manifest-i18n.test.ts — Plan 01-12 Wave 0 RED unit test.
|
// tests/i18n/manifest-i18n.test.ts — Plan 01-12 i18n migration regression
|
||||||
|
// pin (post-D-07 state).
|
||||||
//
|
//
|
||||||
// Asserts manifest.json migrated to chrome i18n placeholders with
|
// Asserts manifest.json uses chrome i18n placeholders with default_locale='en'
|
||||||
// default_locale='en' + _locales/{en,ru}/messages.json carrying the
|
// + _locales/{en,ru}/messages.json carrying the D-07 + D-08 canonical strings.
|
||||||
// D-07 + D-08 canonical strings.
|
|
||||||
//
|
//
|
||||||
// Polarity at Wave 0 land: RED across the board (manifest.name still
|
// History: Plan 01-12 D-07 migrated manifest.json:name from the literal
|
||||||
// 'AI Call Recorder'; no default_locale; no _locales/). Flips GREEN
|
// 'AI Call Recorder' (no default_locale; no _locales/) to the
|
||||||
// after Wave 3 Task 1 migrates manifest + lands messages.json files.
|
// '__MSG_extName__' i18n placeholder that resolves to
|
||||||
|
// 'Mokosh — Session Capture' (en) / 'Mokosh — Запись сессии' (ru). The
|
||||||
|
// test was Wave-0 RED against the pre-migration state and flipped GREEN
|
||||||
|
// after Wave-3 Task 1 landed the manifest + messages.json files. This
|
||||||
|
// file now pins the post-D-07 state as a regression guard.
|
||||||
//
|
//
|
||||||
// References:
|
// References:
|
||||||
// - RESEARCH §10 + §11 (Chrome i18n schema; __MSG_* placeholder rules)
|
// - RESEARCH §10 + §11 (Chrome i18n schema; __MSG_* placeholder rules)
|
||||||
|
|||||||
Reference in New Issue
Block a user