Files
docs/development/completion-evidence.md
T

7.3 KiB

Completion Evidence

Фактические записи о поставке завершённых changes: Delivery Map, archive path, delivery commits, точные verification commands с наблюдёнными результатами и итог independent read-only review. Записи добавляются после archive и являются неизменяемой историей поставки.

2026-08-24-add-instrument-logos

Change: add-instrument-logos (schema wealth-ledger-sdd) Archive path: specs/openspec/changes/archive/2026-08-24-add-instrument-logos Specs sync: дельта portfolio-view слита в main spec (openspec/specs/portfolio-view/spec.md); повторная сверка блоков requirements подтвердила идентичность, openspec validate --specs --strict --store wealth-ledger-specs — 20 passed, 0 failed.

Delivery Map

Area Status Outcome
backend affected logoName из бренда upstream через instrument lookup и 24h metadata cache в nullable поле Portfolio Position DTO; OpenAPI артефакт перегенерирован
frontend affected generated types из snapshot; хелпер URL логотипа x160; секция STOCK одноколоночная с Avatar-логотипом (фолбэк-буква) и доходностью со знаком без подписи; тесты страницы обновлены
specs affected delta portfolio-view синхронизирована в main spec, change заархивирован
docs affected глоссарий: термин «Instrument Logo»; as-built features/portfolio-view.md: поле контракта и новый вид секции акций

Delivery commits

Repo Commit Subject
backend 5375e55 feat: expose instrument brand logo name in portfolio positions
frontend a6d3051 feat: render stock logos with signed returns on account page
specs 70a200e docs(specs): archive add-instrument-logos
docs 30e5699 docs: document instrument logos in portfolio

Verification

Command (repo) Наблюдённый результат
npm ci && npm run verify (backend) pass; Jest 19 suites / 59 tests, prisma generate + nest build без ошибок (прогон повторён после исправления извлечения brand.logoName)
npm ci && npm run verify (frontend) pass; runtime/hygiene/typecheck/lint/vitest/knip/deps/build/bundle-budget без ошибок
bash specs/scripts/verify-runtime-openapi.sh (workspace) pass; runtime SHA-256 = snapshot SHA-256 = db6133d0ad89b02851a6e2df9f23099e243e6bab72bc4e15ffe5317017bcf454
npx vitest run src/entities/portfolio/model/display.test.ts src/pages/account/ui/AccountPage.test.tsx (frontend) pass; 12 тестов (позже 12 с учётом zero-return кейса в том же файле — финальный прогон страницы 9/9)
bash specs/scripts/verify-workspace-change.sh add-instrument-logos (workspace) pass; Delivery Map verified frontend/backend/specs/docs=affected, runtime-openapi=required; все gates зелёные, «Workspace verification passed»
openspec validate --specs --strict --store wealth-ledger-specs (specs) pass; 20 passed, 0 failed

Independent read-only review

Verdict: PASS. Critical и Important findings отсутствовали. Minor findings устранены до archive: добавлен тест нулевой доходности акций (0 ₽ без знака) в AccountPage.test.tsx; baseline lazy-route бандла подтверждённо перегенерирован скриптом npm run bundle:baseline после подключения Mantine Avatar (17018 → 21868 bytes для src/pages/account/index.ts). В ходе реализации найдено и исправлено расхождение с upstream: gRPC отдаёт имя файла логотипа вложенно в brand.logo_name, извлечение выполняется в сервисе портфеля.

2026-08-25-extend-instrument-logo-to-bonds

Change: extend-instrument-logo-to-bonds (schema wealth-ledger-sdd) Archive path: specs/openspec/changes/archive/2026-08-25-extend-instrument-logo-to-bonds Specs sync: дельта portfolio-view слита в main spec; старое требование «Ошибки и состояния Portfolio на клиенте» удалено, добавлены два фокусированных: «Состояния и ошибки Portfolio на клиенте» и «Представление карточек позиций на клиенте»; openspec validate --specs --store wealth-ledger-specs — 20 passed, 0 failed.

Delivery Map

Area Status Outcome
frontend affected Презентационный флаг stock переименован в wide; секции STOCK и BOND передают wide; карточки облигаций получили логотип бренда, фолбэк первой буквы, знаковый доход без подписи, одноколоночную раскладку; регрессионный тест секции иных типов добавлен
backend N/A logoName уже потоковый для всех типов позиций; правки не требовались
specs affected Delta portfolio-view синхронизирована в main spec, change заархивирован
docs affected features/portfolio-view.md обновлён: облигации в едином стиле с акциями

Delivery commits

Repo Commit Subject
frontend c04025a feat(portfolio): extend instrument logo rendering to bonds
backend — N/A
specs bfaa04b feat(portfolio-view): sync delta spec and archive change
docs 2e9e403 docs(portfolio-view): update as-built for bond parity

Verification

Command (repo) Наблюдённый результат
npm run test:run (frontend) pass; 17 suites, 61 tests, 0 failures
npm ci && npm run verify (frontend) pass; runtime/hygiene/typecheck/lint/vitest/knip/deps/build/bundle-budget без ошибок
bash specs/scripts/verify-workspace-change.sh extend-instrument-logo-to-bonds (workspace) pass; Delivery Map verified frontend/backend=N/A/specs/docs=affected; все gates зелёные, «Workspace verification passed»
openspec validate --specs --store wealth-ledger-specs (specs) pass; 20 passed, 0 failed

Independent read-only review

Verdict: PASS. Critical findings отсутствовали. 2 WARNING устранены до archive: (1) изменение ассерта в stale-тесте объяснено осознанным изменением поведения облигаций согласно дельте; (2) хрупкий глобальный скан стилей усилен до toHaveLength(1) вместо some(). 2 SUGGESTION приняты без действий (существующий паттерн хардкода URL в тестах, именование тестов).