spec: archive quiet-user-feedback after docs delivery #50

Closed
opened 2026-10-17 19:56:25 +03:00 by codex-bot · 4 comments
Owner

Контекст

Change quiet-user-feedback реализован во frontend коммитом 5b30bb8 (2026-10-06), но его спецификации оставались на локальной ветке. В PR #51 они согласованы с текущими canonical specs и приняты в develop (5a7e319).

Нормативное поведение — тихое чтение клиента + видимое состояние источника:

Коммит Дата Что сделал
frontend 5b30bb8 2026-10-06 убрал «Обновить»/«Повторить», Progress animated, investment.syncFailed, показ portfolio.lastSuccessfulAt
frontend 3c226f8 (WealthLedger/main#22) 2026-10-09 добавил SourceSyncStatus: время успеха источника, stale, исход lastAttempt, partial

Запрет относится к индикации собственного чтения клиента и ручному повтору. Состояние источника из meta — свойство данных, а не техника их получения, и показывается текстом либо доступно именованным элементом.

Что осталось

Change готов к archive, но archive заблокирован. Lifecycle spec:

Project-owned archive workflow MUST отклонять archive, если … любая affected delivery area не реализована

tasks.md объявляет 4 задачи в docs (8.1–8.4) и все отмечены [x], но фактически не выполнены:

$ git -C docs grep -lniE 'тих(ое|ого) чтени|quiet read|редкие уведомлен' origin/develop
(пусто)

$ git -C docs show origin/develop:architecture/cross-cutting/ui-resilience.md | grep -niE 'ручн|предупрежд'
31:Ручное обновление сохраняет показанный результат и applied filters; кнопка
42:портфель с предупреждением. Он не превращается в глобальный fallback.

Документация описывает отменённое поведение. Прогон archive с --skip-specs или --no-validate молча закрепил бы это расхождение, поэтому не выполнялся.

Acceptance Criteria

  • Нормативное поведение определено по фактической реализации и зафиксировано в delta-спецификациях.
  • Change присутствует в develop и проходит native validation: openspec validate quiet-user-feedback --strict → valid.
  • Ветки spec/50-quiet-user-feedback и spec/50-complete-quiet-user-feedback удалены; в репозитории только main и develop.
  • WealthLedger/docs#51 выполнена: ADR о решении и приведение ui-resilience.md, data-freshness.md и затронутых domains/** к AS-IS.
  • Отметки задач 8.1–8.4 в tasks.md приведены в соответствие с фактом.
  • openspec archive quiet-user-feedback выполнен; canonical specs обновлены native sync, change лежит в openspec/changes/archive/.

Dependencies

Блокируется WealthLedger/docs#51.

Verification

npx openspec validate quiet-user-feedback --strict
npx openspec list --changes
git for-each-ref --format='%(refname:short)' refs/remotes/origin | grep -v '^origin$'

Ограничение: [x] в tasks.md этого change не является доказательством выполнения — отметки 8.1–8.4 проставлены без фактической работы в docs. Это учитывается при приёмке.

## Контекст Change `quiet-user-feedback` реализован во `frontend` коммитом `5b30bb8` (2026-10-06), но его спецификации оставались на локальной ветке. В PR #51 они согласованы с текущими canonical specs и приняты в `develop` (`5a7e319`). Нормативное поведение — **тихое чтение клиента + видимое состояние источника**: | Коммит | Дата | Что сделал | | --- | --- | --- | | `frontend 5b30bb8` | 2026-10-06 | убрал «Обновить»/«Повторить», `Progress animated`, `investment.syncFailed`, показ `portfolio.lastSuccessfulAt` | | `frontend 3c226f8` (`WealthLedger/main#22`) | 2026-10-09 | добавил `SourceSyncStatus`: время успеха источника, `stale`, исход `lastAttempt`, `partial` | Запрет относится к индикации собственного чтения клиента и ручному повтору. Состояние источника из `meta` — свойство данных, а не техника их получения, и показывается текстом либо доступно именованным элементом. ## Что осталось Change готов к archive, но archive заблокирован. Lifecycle spec: > Project-owned archive workflow MUST отклонять archive, если … любая affected delivery area не реализована `tasks.md` объявляет 4 задачи в `docs` (8.1–8.4) и все отмечены `[x]`, но фактически не выполнены: ``` $ git -C docs grep -lniE 'тих(ое|ого) чтени|quiet read|редкие уведомлен' origin/develop (пусто) $ git -C docs show origin/develop:architecture/cross-cutting/ui-resilience.md | grep -niE 'ручн|предупрежд' 31:Ручное обновление сохраняет показанный результат и applied filters; кнопка 42:портфель с предупреждением. Он не превращается в глобальный fallback. ``` Документация описывает отменённое поведение. Прогон archive с `--skip-specs` или `--no-validate` молча закрепил бы это расхождение, поэтому не выполнялся. ## Acceptance Criteria - [x] Нормативное поведение определено по фактической реализации и зафиксировано в delta-спецификациях. - [x] Change присутствует в `develop` и проходит native validation: `openspec validate quiet-user-feedback --strict` → valid. - [x] Ветки `spec/50-quiet-user-feedback` и `spec/50-complete-quiet-user-feedback` удалены; в репозитории только `main` и `develop`. - [ ] `WealthLedger/docs#51` выполнена: ADR о решении и приведение `ui-resilience.md`, `data-freshness.md` и затронутых `domains/**` к AS-IS. - [ ] Отметки задач 8.1–8.4 в `tasks.md` приведены в соответствие с фактом. - [ ] `openspec archive quiet-user-feedback` выполнен; canonical specs обновлены native sync, change лежит в `openspec/changes/archive/`. ## Dependencies Блокируется `WealthLedger/docs#51`. ## Verification ```bash npx openspec validate quiet-user-feedback --strict npx openspec list --changes git for-each-ref --format='%(refname:short)' refs/remotes/origin | grep -v '^origin$' ``` Ограничение: `[x]` в `tasks.md` этого change не является доказательством выполнения — отметки 8.1–8.4 проставлены без фактической работы в `docs`. Это учитывается при приёмке.
Author
Owner

Ветка сохранена в origin:

$ git push origin codex/quiet-user-feedback:refs/heads/spec/50-quiet-user-feedback
 * [new branch]      codex/quiet-user-feedback -> spec/50-quiet-user-feedback

$ git rev-parse --short origin/spec/50-quiet-user-feedback
ed9025f

Коммит ed9025f теперь достижим из origin и не может быть собран сборщиком мусора. Локальная ветка codex/quiet-user-feedback удалена как дубликат.

Это единственная ветка, кроме main, develop и управляемых Renovate, которая осталась после очистки — по условию этой Issue.

Ветка сохранена в `origin`: ``` $ git push origin codex/quiet-user-feedback:refs/heads/spec/50-quiet-user-feedback * [new branch] codex/quiet-user-feedback -> spec/50-quiet-user-feedback $ git rev-parse --short origin/spec/50-quiet-user-feedback ed9025f ``` Коммит `ed9025f` теперь достижим из `origin` и не может быть собран сборщиком мусора. Локальная ветка `codex/quiet-user-feedback` удалена как дубликат. Это единственная ветка, кроме `main`, `develop` и управляемых Renovate, которая осталась после очистки — по условию этой Issue.
Author
Owner

PR не создан: change не проходит native validation против текущего develop

Попытка выполнить «довести change» остановлена на проверке. Фиксирую результат, потому что механический merge здесь приведёт к потере требований.

1. Прямой merge ветки удаляет позднейшую работу

Ветка отщепилась от e4f10de и отстаёт от develop на 44 коммита. Тестовый merge:

$ git merge --no-commit --no-ff ed9025f
CONFLICT (content) в 6 canonical specs
Automatic merge failed

Разница ветки против develop по openspec/specs/:

$ git diff --stat origin/develop ed9025f -- openspec/specs/
21 files changed, 687 insertions(+), 1316 deletions(-)

Удалению подлежали бы целые specs, появившиеся после ветки: manual-bank-cards (680 строк), stock-screener, portfolio-value-history, tbank-data-sync, hourly-investment-sync, instrument-income-schedules, online-instrument-information. Между веткой и develop прошла миграция SDD (329d66e), которую ветка не знает.

2. Перенос только каталога change — чисто, но change устарел

Вариант «взять только openspec/changes/quiet-user-feedback/» конфликтов не даёт: такого пути в develop нет, 14 файлов добавляются чисто. Проверки окружения проходят:

$ npm run verify          # git diff --check
$ npm run check:openspec
openspec 1.13.1 on Node 24.21.0: toolchain matches

Но сам change не валиден:

$ npx openspec validate quiet-user-feedback --strict
Change 'quiet-user-feedback' has issues
✗ 5 ERROR
Файл delta Ошибок
brokerage-account-upcoming-events/spec.md 2
brokerage-accounts/spec.md 1
frontend-data-resilience/spec.md 1
portfolio-view/spec.md 1

Причина одна и та же: блоки ## MODIFIED Requirements писались против старой редакции canonical specs. MODIFIED заменяет требование целиком, поэтому отсутствующие в блоке сценарии были бы удалены при archive. Валидатор перечисляет 10 таких сценариев, например:

  • Прогнозный дивиденд с неизвестной суммой
  • Первая загрузка либо ошибка без сохранённого прогноза
  • Последняя попытка неуспешна после полного списка
  • Resource сохраняется после неуспешной часовой попытки
  • Неуспешная последняя попытка сохраняет Portfolio

Это те самые сценарии, которые добавили #54, #55, #58 и hourly-работа — то есть результат уже принятой remediation.

Что при этом со change в порядке

  • Все целевые требования MODIFIED в canonical specs существуют — ни одно не переименовано и не удалено.
  • Требования в ## ADDED корректно отсутствуют в canonical specs.
  • frontend-user-feedback — новый spec с ## Purpose + ## ADDED, canonical-версия ему не нужна.

Структурно change жив; устарело только содержимое MODIFIED-блоков.

Требуется решение

Довести change нельзя одним merge — нужно переписать 5 delta-файлов, перенеся в MODIFIED-блоки 10 сценариев из текущих canonical specs. Это содержательная работа по спецификациям, а не очистка Git, и она требует Change Owner: решение о том, какое поведение остаётся нормативным, принимается не механически.

Варианты:

  1. Обновить delta-блоки под текущие canonical specs и довести change штатным путём. Объём — 5 файлов, 10 сценариев, проверка openspec validate --strict.
  2. Заархивировать как отклонённый — поместить в openspec/changes/archive/ с обоснованием, без применения к canonical specs.
  3. Отклонить и удалить ветку — коммит ed9025f теряется.

Ветка spec/50-quiet-user-feedback (ed9025f) сохранена в origin, рабочее дерево возвращено в исходное состояние:

$ git status --porcelain | wc -l
0
$ git log --oneline -1
06d08e2 chore: adopt linear git model in specs instructions (#48)

Issue остаётся открытой: закрывать её без решения по существу означало бы молча потерять либо этот change, либо 10 принятых сценариев.

## PR не создан: change не проходит native validation против текущего `develop` Попытка выполнить «довести change» остановлена на проверке. Фиксирую результат, потому что механический merge здесь приведёт к потере требований. ### 1. Прямой merge ветки удаляет позднейшую работу Ветка отщепилась от `e4f10de` и отстаёт от `develop` на 44 коммита. Тестовый merge: ``` $ git merge --no-commit --no-ff ed9025f CONFLICT (content) в 6 canonical specs Automatic merge failed ``` Разница ветки против `develop` по `openspec/specs/`: ``` $ git diff --stat origin/develop ed9025f -- openspec/specs/ 21 files changed, 687 insertions(+), 1316 deletions(-) ``` Удалению подлежали бы целые specs, появившиеся после ветки: `manual-bank-cards` (680 строк), `stock-screener`, `portfolio-value-history`, `tbank-data-sync`, `hourly-investment-sync`, `instrument-income-schedules`, `online-instrument-information`. Между веткой и `develop` прошла миграция SDD (`329d66e`), которую ветка не знает. ### 2. Перенос только каталога change — чисто, но change устарел Вариант «взять только `openspec/changes/quiet-user-feedback/`» конфликтов не даёт: такого пути в `develop` нет, 14 файлов добавляются чисто. Проверки окружения проходят: ``` $ npm run verify # git diff --check $ npm run check:openspec openspec 1.13.1 on Node 24.21.0: toolchain matches ``` Но сам change не валиден: ``` $ npx openspec validate quiet-user-feedback --strict Change 'quiet-user-feedback' has issues ✗ 5 ERROR ``` | Файл delta | Ошибок | | --- | --- | | `brokerage-account-upcoming-events/spec.md` | 2 | | `brokerage-accounts/spec.md` | 1 | | `frontend-data-resilience/spec.md` | 1 | | `portfolio-view/spec.md` | 1 | Причина одна и та же: блоки `## MODIFIED Requirements` писались против старой редакции canonical specs. `MODIFIED` заменяет требование целиком, поэтому отсутствующие в блоке сценарии были бы удалены при archive. Валидатор перечисляет 10 таких сценариев, например: - `Прогнозный дивиденд с неизвестной суммой` - `Первая загрузка либо ошибка без сохранённого прогноза` - `Последняя попытка неуспешна после полного списка` - `Resource сохраняется после неуспешной часовой попытки` - `Неуспешная последняя попытка сохраняет Portfolio` Это те самые сценарии, которые добавили `#54`, `#55`, `#58` и hourly-работа — то есть результат уже принятой remediation. ### Что при этом со change в порядке - Все целевые требования `MODIFIED` в canonical specs существуют — ни одно не переименовано и не удалено. - Требования в `## ADDED` корректно отсутствуют в canonical specs. - `frontend-user-feedback` — новый spec с `## Purpose` + `## ADDED`, canonical-версия ему не нужна. Структурно change жив; устарело только содержимое `MODIFIED`-блоков. ### Требуется решение Довести change нельзя одним merge — нужно переписать 5 delta-файлов, перенеся в `MODIFIED`-блоки 10 сценариев из текущих canonical specs. Это содержательная работа по спецификациям, а не очистка Git, и она требует Change Owner: решение о том, какое поведение остаётся нормативным, принимается не механически. Варианты: 1. **Обновить delta-блоки** под текущие canonical specs и довести change штатным путём. Объём — 5 файлов, 10 сценариев, проверка `openspec validate --strict`. 2. **Заархивировать как отклонённый** — поместить в `openspec/changes/archive/` с обоснованием, без применения к canonical specs. 3. **Отклонить и удалить ветку** — коммит `ed9025f` теряется. Ветка `spec/50-quiet-user-feedback` (`ed9025f`) сохранена в `origin`, рабочее дерево возвращено в исходное состояние: ``` $ git status --porcelain | wc -l 0 $ git log --oneline -1 06d08e2 chore: adopt linear git model in specs instructions (#48) ``` Issue остаётся открытой: закрывать её без решения по существу означало бы молча потерять либо этот change, либо 10 принятых сценариев.
Author
Owner

Change согласован и принят в develop

PR #51 слит squash, develop = 5a7e319. Change quiet-user-feedback больше не висит на локальной ветке.

Нормативное поведение

Установлено по фактической реализации, а не по текстам specs. Два изменения прошли независимо и оказались совместимы:

Коммит Дата Что сделал
frontend 5b30bb8 2026-10-06 убрал «Обновить»/«Повторить», Progress animated, investment.syncFailed, показ portfolio.lastSuccessfulAt
frontend 3c226f8 (WealthLedger/main#22) 2026-10-09 добавил SourceSyncStatus: время успеха источника, stale, исход lastAttempt, partial

Тихое чтение клиента + видимое состояние источника. Запрет change относится к индикации собственного чтения и ручному повтору; он не распространяется на состояние источника из meta — это свойство данных, а не техника их получения.

Проверено по коду:

$ git grep -nE 'investment\.refresh|events\.retry|accounts\.retry' origin/develop -- 'src/pages/**' | wc -l
0
$ grep -cE 'Button|onClick' SourceSyncStatus.tsx
0
$ grep -cE 'sourceTime|attempt\.' SourceSyncStatus.tsx
3

Исправлено в 4 delta-файлах (+79/−19)

10 сценариев, которые MODIFIED-блоки удалили бы при archive, возвращены. В brokerage-account-upcoming-events требование «предоставляет действие повторить только HTTP-чтение» заменено на обозначение неуспеха обновления источника — реализация повтора не предоставляет с 2026-10-06.

$ npx openspec validate quiet-user-feedback --strict
Change 'quiet-user-feedback' is valid
$ npx openspec list --changes
quiet-user-feedback     ✓ Complete

Canonical specs не тронуты — их обновит native sync при archive.

Ветки удалены

$ git for-each-ref --format='%(refname:short)' refs/remotes/origin | grep -v '^origin$'
origin/develop
origin/main

spec/50-quiet-user-feedback и spec/50-complete-quiet-user-feedback удалены: содержимое change в develop, а их версии canonical specs устарели относительно develop.

Issue остаётся открытой: archive блокирован

Я не выполняю openspec archive. Lifecycle spec это запрещает:

Project-owned archive workflow MUST отклонять archive, если … любая affected delivery area не реализована

tasks.md объявляет 4 задачи в docs (8.1–8.4) и все отмечены выполненными, но фактически не выполнены:

$ git -C docs grep -lniE 'тих(ое|ого) чтени|quiet read|редкие уведомлен' origin/develop
(пусто)                                  # ADR из задачи 8.1 отсутствует

$ git -C docs show origin/develop:architecture/cross-cutting/ui-resilience.md | grep -niE 'ручн|предупрежд'
31:Ручное обновление сохраняет показанный результат и applied filters; кнопка
42:портфель с предупреждением. Он не превращается в глобальный fallback.

То есть документация всё ещё описывает отменённое поведение. Отметки задач 8.1–8.4 расходятся с фактом.

Заведена WealthLedger/docs#51 на приведение документации в соответствие. После её закрытия archive этого change разблокируется — тогда закроем и эту Issue.

Что остаётся по этой Issue:

  • WealthLedger/docs#51 выполнена.
  • Отметки задач 8.1–8.4 приведены в соответствие с фактом.
  • openspec archive quiet-user-feedback выполнен; canonical specs обновлены native sync.
## Change согласован и принят в `develop` PR #51 слит squash, `develop` = `5a7e319`. Change `quiet-user-feedback` больше не висит на локальной ветке. ### Нормативное поведение Установлено по фактической реализации, а не по текстам specs. Два изменения прошли независимо и оказались **совместимы**: | Коммит | Дата | Что сделал | | --- | --- | --- | | `frontend 5b30bb8` | 2026-10-06 | убрал «Обновить»/«Повторить», `Progress animated`, `investment.syncFailed`, показ `portfolio.lastSuccessfulAt` | | `frontend 3c226f8` (`WealthLedger/main#22`) | 2026-10-09 | добавил `SourceSyncStatus`: время успеха источника, `stale`, исход `lastAttempt`, `partial` | **Тихое чтение клиента + видимое состояние источника.** Запрет change относится к индикации собственного чтения и ручному повтору; он не распространяется на состояние источника из `meta` — это свойство данных, а не техника их получения. Проверено по коду: ``` $ git grep -nE 'investment\.refresh|events\.retry|accounts\.retry' origin/develop -- 'src/pages/**' | wc -l 0 $ grep -cE 'Button|onClick' SourceSyncStatus.tsx 0 $ grep -cE 'sourceTime|attempt\.' SourceSyncStatus.tsx 3 ``` ### Исправлено в 4 delta-файлах (+79/−19) 10 сценариев, которые `MODIFIED`-блоки удалили бы при archive, возвращены. В `brokerage-account-upcoming-events` требование «предоставляет действие повторить только HTTP-чтение» заменено на обозначение неуспеха обновления источника — реализация повтора не предоставляет с 2026-10-06. ``` $ npx openspec validate quiet-user-feedback --strict Change 'quiet-user-feedback' is valid $ npx openspec list --changes quiet-user-feedback ✓ Complete ``` Canonical specs не тронуты — их обновит native sync при archive. ### Ветки удалены ``` $ git for-each-ref --format='%(refname:short)' refs/remotes/origin | grep -v '^origin$' origin/develop origin/main ``` `spec/50-quiet-user-feedback` и `spec/50-complete-quiet-user-feedback` удалены: содержимое change в `develop`, а их версии canonical specs устарели относительно `develop`. ## Issue остаётся открытой: archive блокирован Я не выполняю `openspec archive`. Lifecycle spec это запрещает: > Project-owned archive workflow MUST отклонять archive, если … любая affected delivery area не реализована `tasks.md` объявляет 4 задачи в `docs` (8.1–8.4) и **все отмечены выполненными**, но фактически не выполнены: ``` $ git -C docs grep -lniE 'тих(ое|ого) чтени|quiet read|редкие уведомлен' origin/develop (пусто) # ADR из задачи 8.1 отсутствует $ git -C docs show origin/develop:architecture/cross-cutting/ui-resilience.md | grep -niE 'ручн|предупрежд' 31:Ручное обновление сохраняет показанный результат и applied filters; кнопка 42:портфель с предупреждением. Он не превращается в глобальный fallback. ``` То есть документация всё ещё описывает отменённое поведение. Отметки задач 8.1–8.4 расходятся с фактом. Заведена `WealthLedger/docs#51` на приведение документации в соответствие. После её закрытия archive этого change разблокируется — тогда закроем и эту Issue. Что остаётся по этой Issue: - [ ] `WealthLedger/docs#51` выполнена. - [ ] Отметки задач 8.1–8.4 приведены в соответствие с фактом. - [ ] `openspec archive quiet-user-feedback` выполнен; canonical specs обновлены native sync.
codex-bot changed title from spec: decide fate of unmerged quiet-user-feedback change to spec: archive quiet-user-feedback after docs delivery 2026-10-17 21:55:11 +03:00
codex-bot added the Kind/Feature
Priority
Medium
3
labels 2026-10-17 21:55:12 +03:00
codex-bot self-assigned this 2026-10-17 21:55:47 +03:00
Author
Owner

Выполнено. PR #52 слит squash, develop = f0478c6. Change заархивирован.

Проверка Acceptance Criteria

$ npx openspec archive quiet-user-feedback --yes
Totals: + 9, ~ 12, - 0, → 0
Change 'quiet-user-feedback' archived as '2026-10-17-quiet-user-feedback'.

$ npx openspec list --changes
No active changes found.

$ npx openspec validate --all
Totals: 33 passed, 0 failed (33 items)

$ git ls-tree -r origin/develop --name-only -- openspec/changes/archive/2026-10-17-quiet-user-feedback/ | wc -l
15
$ git ls-tree -r origin/develop --name-only -- openspec/changes/quiet-user-feedback/ | wc -l
0
  • Нормативное поведение определено по фактической реализации и зафиксировано в delta-спецификациях.
  • Change проходит native validation.
  • Ветки удалены; в репозитории только main и develop.
  • WealthLedger/docs#51 выполнена — ADR 021 создан, ui-resilience.md и 6 файлов domains/** приведены к AS-IS, docs PR #52 слит (e8e3ef6).
  • Отметки задач 8.1–8.4 приведены в соответствие с фактом: работа выполнена, расхождение зафиксировано в completion-evidence.md.
  • openspec archive выполнен; canonical specs обновлены native sync, change в openspec/changes/archive/2026-10-17-quiet-user-feedback/.

Ключевая проверка: ничего не потеряно

Исходные MODIFIED-блоки удалили бы 10 принятых сценариев. После согласования в PR #51 archive дал - 0 удалений, и каждый сценарий проверен адресно:

KEPT  Неуспешная последняя попытка сохраняет Portfolio          (portfolio-view)
KEPT  Последняя попытка неуспешна после полного списка          (brokerage-accounts)
KEPT  Первая загрузка списка выполняется или неуспешна          (brokerage-accounts)
KEPT  Открытый экран перечитывает список                        (brokerage-accounts)
KEPT  Resource сохраняется после неуспешной часовой попытки     (frontend-data-resilience)
KEPT  Прогнозный дивиденд с неизвестной суммой                  (upcoming-events)
KEPT  Первая загрузка либо ошибка без сохранённого прогноза     (upcoming-events)
KEPT  Ошибка обновления при сохранённом прогнозе на странице    (upcoming-events)
KEPT  Ближайшие события недоступны без сохранённого прогноза    (upcoming-events)
KEPT  Неуспешное обновление не скрывает сохранённый прогноз     (upcoming-events)

Результат

9 canonical specs обновлены, новый frontend-user-feedback создан и внесён в AI_INDEX.md той строкой, которую предполагал исходный change. completion-evidence.md фиксирует delivery map по трём репозиториям и ограничения, включая расхождение отметок задач с фактом.

Pre-archive блокировка снята фактическим выполнением documentation delivery, а не флагом --skip-specs или --no-validate.

Issue закрывается: все delivery areas (frontend 5b30bb8, specs 5a7e319/f0478c6, docs e8e3ef6) приняты, archive выполнен.

Выполнено. PR #52 слит squash, `develop` = `f0478c6`. Change заархивирован. ## Проверка Acceptance Criteria ``` $ npx openspec archive quiet-user-feedback --yes Totals: + 9, ~ 12, - 0, → 0 Change 'quiet-user-feedback' archived as '2026-10-17-quiet-user-feedback'. $ npx openspec list --changes No active changes found. $ npx openspec validate --all Totals: 33 passed, 0 failed (33 items) $ git ls-tree -r origin/develop --name-only -- openspec/changes/archive/2026-10-17-quiet-user-feedback/ | wc -l 15 $ git ls-tree -r origin/develop --name-only -- openspec/changes/quiet-user-feedback/ | wc -l 0 ``` - [x] Нормативное поведение определено по фактической реализации и зафиксировано в delta-спецификациях. - [x] Change проходит native validation. - [x] Ветки удалены; в репозитории только `main` и `develop`. - [x] `WealthLedger/docs#51` выполнена — ADR 021 создан, `ui-resilience.md` и 6 файлов `domains/**` приведены к AS-IS, `docs` PR #52 слит (`e8e3ef6`). - [x] Отметки задач 8.1–8.4 приведены в соответствие с фактом: работа выполнена, расхождение зафиксировано в `completion-evidence.md`. - [x] `openspec archive` выполнен; canonical specs обновлены native sync, change в `openspec/changes/archive/2026-10-17-quiet-user-feedback/`. ## Ключевая проверка: ничего не потеряно Исходные `MODIFIED`-блоки удалили бы 10 принятых сценариев. После согласования в PR #51 archive дал `- 0` удалений, и каждый сценарий проверен адресно: ``` KEPT Неуспешная последняя попытка сохраняет Portfolio (portfolio-view) KEPT Последняя попытка неуспешна после полного списка (brokerage-accounts) KEPT Первая загрузка списка выполняется или неуспешна (brokerage-accounts) KEPT Открытый экран перечитывает список (brokerage-accounts) KEPT Resource сохраняется после неуспешной часовой попытки (frontend-data-resilience) KEPT Прогнозный дивиденд с неизвестной суммой (upcoming-events) KEPT Первая загрузка либо ошибка без сохранённого прогноза (upcoming-events) KEPT Ошибка обновления при сохранённом прогнозе на странице (upcoming-events) KEPT Ближайшие события недоступны без сохранённого прогноза (upcoming-events) KEPT Неуспешное обновление не скрывает сохранённый прогноз (upcoming-events) ``` ## Результат 9 canonical specs обновлены, новый `frontend-user-feedback` создан и внесён в `AI_INDEX.md` той строкой, которую предполагал исходный change. `completion-evidence.md` фиксирует delivery map по трём репозиториям и ограничения, включая расхождение отметок задач с фактом. Pre-archive блокировка снята фактическим выполнением documentation delivery, а не флагом `--skip-specs` или `--no-validate`. Issue закрывается: все delivery areas (`frontend` `5b30bb8`, `specs` `5a7e319`/`f0478c6`, `docs` `e8e3ef6`) приняты, archive выполнен.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/specs#50