Files
main/audits/2026-10-11/triage.md
T
codex-bot d07fbfabb1 docs: archive technical audit 2026-10-11 in develop (#36)
Переносит архив `audits/2026-10-11/` (19 файлов) из codex/audit-remediation-2026-10-11 в develop и добавляет точечный allowlist в .gitignore.
2026-10-17 19:38:03 +03:00

373 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Triage — 2026-10-11
## Правила и единица счёта
Основные источники — отчёты 01–15, 125 finding IDs из их конечных таблиц.
Предыдущие источники: Technical F1–F17 и отдельная рекомендация удаления
controller test (TA-X01); Complexity H1–H20 и девять дополнительных кандидатов
(CA-X01–09); Efficiency RC-01–RC-18. Итого 190 исходных записей.
Повторные executive summaries, G-list и D/F sections Complexity сопоставлены
с H/X, а не посчитаны как новые независимые дефекты. CA-Hnn — номер строки
раздела H; CA-Xnn перечислены ниже с точным предметом, поскольку исходных IDs
у этих дополнительных предложений нет. TA-Fnn соответствует исходному Fnn.
`DUPLICATE` означает покрытие указанным deliverable; исходные confidence и
ограничения сохраняются в отчёте. Дубликат INVESTIGATE не становится runtime
FIX: недоказанная часть проверяется внутри соответствующего Issue до решения.
Порядок исполнения не считается блокирующей зависимостью. Gitea владеет
статусами; в реестре нет второго поддерживаемого status checklist.
## Нормализованные engineering topics
Каждый topic — цель с самостоятельно проверяемым результатом. Два local
verification owners и четыре title-trigger owners поставляются независимо.
Поэтому число Issues может превышать число topics. P0 не установлен.
| Topic | Priority / owner | Результат / Issue |
| --- | --- | --- |
| T01 | P1 backend | [#56: Hourly completion/recovery и executable proof](https://git.personal.ksv741.ru/WealthLedger/backend/issues/56) |
| T02 | P1 backend | [#55: Latest complete forecast/identity/filtering/failure policy](https://git.personal.ksv741.ru/WealthLedger/backend/issues/55) |
| T03 | P2 backend | [#54: Long-walk eligibility](https://git.personal.ksv741.ru/WealthLedger/backend/issues/54) |
| T04 | P2 backend | [#53: Mutable calendars/fallback](https://git.personal.ksv741.ru/WealthLedger/backend/issues/53) |
| T05 | P2 backend | [#57: Local Income/narrow Ledger interval](https://git.personal.ksv741.ru/WealthLedger/backend/issues/57) |
| T06 | P2 backend | [#59: Online invalid-token translation](https://git.personal.ksv741.ru/WealthLedger/backend/issues/59) |
| T07 | P2 backend | [#58: Accounts/Income hourly meta](https://git.personal.ksv741.ru/WealthLedger/backend/issues/58) |
| T08 | P2 backend | [#60: Password bytes/artifact](https://git.personal.ksv741.ru/WealthLedger/backend/issues/60) |
| T09 | P2 backend | [#61: Auth role/expiry/cookie regressions](https://git.personal.ksv741.ru/WealthLedger/backend/issues/61) |
| T10 | P2 backend | [#62: Dead producer closure](https://git.personal.ksv741.ru/WealthLedger/backend/issues/62) |
| T11 | P2 backend | [#64: Legacy reader compatibility](https://git.personal.ksv741.ru/WealthLedger/backend/issues/64) |
| T12 | P2 backend | [#63: Source races/rollback/barriers](https://git.personal.ksv741.ru/WealthLedger/backend/issues/63) |
| T13 | P2 backend | [#65: HTTP case isolation](https://git.personal.ksv741.ru/WealthLedger/backend/issues/65) |
| T14 | P2 backend + frontend | [backend #66: Single preparation](https://git.personal.ksv741.ru/WealthLedger/backend/issues/66); [frontend #62: Lean local gates/hook](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/62) |
| T15 | P2 backend | [#67: Compatible SQLite driver](https://git.personal.ksv741.ru/WealthLedger/backend/issues/67) |
| T16 | P2 backend | [#4, reused: Compiler dependencies](https://git.personal.ksv741.ru/WealthLedger/backend/issues/4#issuecomment-1083) |
| T17 | P2 backend | [#68: Banking page batches](https://git.personal.ksv741.ru/WealthLedger/backend/issues/68) |
| T18 | P3 backend | [#69: Single publicInstrument projection](https://git.personal.ksv741.ru/WealthLedger/backend/issues/69) |
| T19 | P3 backend | [#72: Small real runner workload](https://git.personal.ksv741.ru/WealthLedger/backend/issues/72) |
| T20 | P2 frontend | [#54: Query-owned lifecycle/eligibility/API pruning](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/54) |
| T21 | P2 frontend | [#55: Investment source/client feedback](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/55) |
| T22 | P2 frontend | [#57: Banking read recovery](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/57) |
| T23 | P3 frontend | [#58: Payment-system tuple](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/58) |
| T24 | P2 frontend | [#56: Pending auth navigation](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/56) |
| T25 | P2 frontend | [#61: Late-response client barriers](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/61) |
| T26 | P2 frontend | [#59: CURRENCY visibility decision](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/59) |
| T27 | P2 frontend | [#63: Events screen contract/oracles](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/63) |
| T28 | P3 frontend | [#60: Native OpenAPI check](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/60) |
| T29 | P2 specs | [#1, reused: Documentation authority](https://git.personal.ksv741.ru/WealthLedger/specs/issues/1#issuecomment-1080) |
| T30 | P2 specs | [#28: Five capability index entries](https://git.personal.ksv741.ru/WealthLedger/specs/issues/28) |
| T31 | P2 specs | [#29: Completion disposition](https://git.personal.ksv741.ru/WealthLedger/specs/issues/29) |
| T32 | P2 specs | [#2, reused: Meaningful committed CI input](https://git.personal.ksv741.ru/WealthLedger/specs/issues/2#issuecomment-1067) |
| T33 | P2 docs | [#34: Current system explanation](https://git.personal.ksv741.ru/WealthLedger/docs/issues/34) |
| T34 | P3 frontend + backend + specs + docs | [frontend #64](https://git.personal.ksv741.ru/WealthLedger/frontend/issues/64), [backend #74](https://git.personal.ksv741.ru/WealthLedger/backend/issues/74), [specs #30](https://git.personal.ksv741.ru/WealthLedger/specs/issues/30), [docs #35](https://git.personal.ksv741.ru/WealthLedger/docs/issues/35): title edit proof |
| T35 | P2 main | [#24: Generic applicability/evidence/approval/bootstrap](https://git.personal.ksv741.ru/WealthLedger/main/issues/24) |
| T36 | P2 main | [#25: Private provider credential investigation](https://git.personal.ksv741.ru/WealthLedger/main/issues/25) |
| T37 | P2 backend | [#70: Published screener constraints](https://git.personal.ksv741.ru/WealthLedger/backend/issues/70) |
| T38 | P2 backend | [#73: Actual auth perimeter evidence](https://git.personal.ksv741.ru/WealthLedger/backend/issues/73) |
| T39 | P2 backend | [#71: Independent prices/detail start](https://git.personal.ksv741.ru/WealthLedger/backend/issues/71) |
P1 обоснован финансовой publication/recovery boundary, а не частотой упоминаний.
T34 понижен до P3: это metadata policy proof, не financial/security runtime bug.
T17 допускает KEEP текущего loader по подтверждённому cost/maintenance trade-off.
## Реестр специализированных findings
| Finding | Decision | Topic / причина |
| --- | --- | --- |
| ARCH-002 | DUPLICATE | T05: оба live readPlan callers |
| ARCH-003 | DUPLICATE | T20: timer принадлежит query lifecycle |
| ARCH-005 | KEEP | Session owner, cookie queue, authenticated transport и refresh CAS |
| ARCH-006 | KEEP | Singleton source owners, durable store и conditional publication |
| ARCH-007 | KEEP | Cohesive banking transaction и exact money |
| ARCH-008 | DUPLICATE | T02: event-specific selection проверяется вместе с financial fix |
| ARCH-009 | DUPLICATE | T11: public observe compatibility требует evidence |
| CPLX-001 | DUPLICATE | T20: native polling с сохранением session/cadence |
| CPLX-002 | SIMPLIFY | T05: существующий operationIntervals вместо screen round-trip |
| CPLX-003 | NO_ACTION | Optional label-only VM cleanup; текущая convention и a11y работают, отдельный результат не оправдан |
| CPLX-004 | DUPLICATE | T02: semantics proof внутри fix; неизвестный GET publication outcome не объявлен defect |
| CPLX-005 | DUPLICATE | T11: externally reachable reader, retirement не предрешён |
| CPLX-006 | DUPLICATE | T05: cold Income decision до удаления request work |
| CPLX-007 | KEEP | Complete forecast fences и exact currency totals |
| CPLX-008 | KEEP | Durable reservation, attempts и source owners |
| CPLX-009 | KEEP | Banking replay/CAS/tombstones/rollback |
| CPLX-010 | KEEP | Stable screener snapshot, raw-input guard и latest intent |
| DRY-001 | DUPLICATE | T08: byte-policy runtime boundary |
| DRY-002 | SIMPLIFY | T18: одна projection, orchestration не объединяется |
| DRY-003 | SIMPLIFY | T23: tuple schema/options, empty sentinel отдельно |
| DRY-004 | SIMPLIFY | T21: общий access-loss membership predicate, recovery actions остаются локальны |
| DRY-005 | KEEP | Independent browser/server validation и точные деньги |
| DRY-006 | KEEP | Разные stock/bond payout/quote semantics |
| DRY-007 | KEEP | Session/resource wrappers и accessible UI primitives |
| DRY-008 | KEEP | Provider artifact, consumer derivative и unknown-code fallback |
| DRY-009 | KEEP | Только live enrichment/shared fence, не dead discovery producer |
| DRY-010 | DUPLICATE | T20: policy equivalence доказать до native migration |
| DEAD-001 | DELETE | T10: manual writer closure, status reader сохраняется |
| DEAD-002 | DELETE | T10: dead-parent catalog producer; shared publishSource сохраняется |
| DEAD-003 | DELETE | T10: только orphan Accepted DTO |
| DEAD-004 | DELETE | T20: only-test frontend observe API, backend query не удаляется |
| DEAD-005 | DUPLICATE | T20: facade/descriptors удаляются после переноса live timer |
| DEAD-006 | INVESTIGATE | T11: external status consumers и old screen rows |
| DEAD-007 | DUPLICATE | T11: endpoint-specific observe support |
| DEAD-008 | KEEP | Live interval/history helpers; keeper не требует сохранять round-trip caller |
| DEAD-009 | KEEP | Registered hourly runtime owner |
| DEAD-010 | KEEP | Candle first-load, staging и complete coverage |
| DEAD-011 | KEEP | Shared source CAS, identities и candle FK |
| FE-001 | FIX | T21: source metadata проходит VM/container/view |
| FE-002 | FIX | T21: cached transport warning и read-only retry |
| FE-003 | FIX | T20: disabled manual refetch и policy ownership |
| FE-004 | FIX | T22: error не blank, sections independently recover |
| FE-005 | FIX | T24: Fieldset не блокирует anchor |
| FE-006 | INVESTIGATE | T26: tests/spec спорят о currency instrument |
| FE-007 | DUPLICATE | CPLX-003: optional cleanup без самостоятельной задачи |
| FE-008 | KEEP | Реальные page VMs и scroll/form presentation lifecycle |
| FE-009 | KEEP | Semantic Mantine wrappers/package foundation |
| FE-010 | KEEP | RHF draft, intent replay, explicit version adoption и bigint |
| FE-011 | KEEP | Generated keys, session/connection/access boundaries |
| FE-012 | NO_ACTION | Только unmeasured render hypothesis; нет симптома/scale input, profiler/virtualization backlog не нужен |
| BE-001 | FIX | T02: complete candidate не veto старым overlap |
| BE-002 | FIX | T01: failed/interrupted durable settlement и live-process recovery |
| BE-003 | FIX | T04: mutable calendar refresh |
| BE-004 | FIX | T05: local Income и bounded Ledger exception |
| BE-005 | FIX | T06: все direct online callers используют translator |
| BE-006 | FIX | T03: skipped terms вместо immediate repeat |
| BE-007 | DUPLICATE | T10: writer closure already DEAD-001 |
| BE-008 | FIX | T07: resource-relevant hourly meta |
| BE-009 | KEEP | Простой modular monolith и concrete singleton DI |
| BE-010 | KEEP | Banking transactions/replay и refresh CAS |
| BE-011 | KEEP | Decimal strings/bigint и meaningful mappers |
| BE-012 | KEEP | Revision/attempt/source fences, staged complete publication |
| BE-013 | INVESTIGATE | T02: failed-existing-calendar GET fixture до publication policy change |
| BE-014 | INVESTIGATE | T04: missing MOEX block contract внутри calendar boundary, malformed guards сохраняются |
| BE-015 | INVESTIGATE | T01: controlled app.close/restart arm; graceful-stop необходимость не предрешена |
| FLOW-001 | DUPLICATE | T05: ordinary Income/targeted Ledger source budget |
| FLOW-002 | DUPLICATE | T20: common readiness boundary |
| FLOW-003 | SIMPLIFY | T39: независимая prices/detail waterfall, прежний DTO и limiter |
| FLOW-004 | DUPLICATE | T06: permanent failure не усиливается GET retry |
| FLOW-005 | SIMPLIFY | T17: page loader adoption после isolated trace |
| FLOW-006 | DUPLICATE | T04: calendar-specific refresh и multi-account coalescing |
| FLOW-007 | DUPLICATE | T02: producer update отличается от read filter |
| FLOW-008 | DUPLICATE | T20: focus/mount/reconnect/hidden-tab решение |
| FLOW-009 | NO_ACTION | Local hydration/DTO price не измерена; нет оснований менять unlimited Income contract или добавлять BFF |
| FLOW-010 | KEEP | Authorization, cursor, CAS, atomicity, whitelist и current reuse |
| TQ-001 | FIX | T12: start source request перед replace, await done |
| TQ-002 | FIX | T25: loser client settlement, не gate release |
| TQ-003 | DUPLICATE | T01 + T03: real coordinator/reservation outcomes входят в scheduler acceptance |
| TQ-004 | DUPLICATE | T21: заменить quiet oracle положительным route proof |
| TQ-005 | DUPLICATE | T02: shifted-window publication и disjoint saved-empty |
| TQ-006 | DUPLICATE | T04: conservative missing-block policy до provider evidence |
| TQ-007 | FIX | T08 + T09: UTF-8 и token-role/cookie/expiry distinctions независимо |
| TQ-008 | FIX | T12: throw после первого real tx write, snapshot + points unchanged |
| TQ-009 | DUPLICATE | T10: normalization suite удаляется с подтверждённым dead writer |
| TQ-010 | SIMPLIFY | T27: screen-owner решение, актуальные visible oracles; API filtering сохраняется |
| TQ-011 | KEEP | Real auth CAS, usable winner и session generations |
| TQ-012 | KEEP | Independent money oracles на complementary levels |
| TQ-013 | KEEP | Deterministic SQLite rollback/dependency CAS/replay |
| TI-001 | FIX | T13: case-owned bank prerequisites |
| TI-002 | FIX | T13: existing scheduler override в unrelated HTTP/benchmark |
| TI-003 | FIX | T12: started/release/done вместо readiness sleeps |
| TI-004 | FIX | T14 backend: explicit fresh dist prerequisite targeted crash |
| TI-005 | SIMPLIFY | T19: меньший настоящий SQLite payload, safety assertions прежние |
| TI-006 | DELETE | T25: удалить unused failBond при adjacent async suite cleanup |
| TOOL-001 | SIMPLIFY | T28: native read-only generator check |
| TOOL-002 | FIX | T14 frontend: explicit no-install npx, occurrence не заявлена |
| TOOL-003 | KEEP | Восьмистрочная manual diagnostic имеет допустимую boundary; нет доказанного external-unused/cost, автоматически не подключать/удалять |
| TOOL-004 | KEEP | Targeted manual publication regression сохраняет digest/recovery proof; отсутствие blanket verify caller допустимо |
| VERIFY-001 | FIX | T32: meaningful committed input, required context сохраняется |
| VERIFY-002 | FIX | T34: четыре независимо поставляемых edited triggers |
| VERIFY-003 | SIMPLIFY | T14 backend: одна preparation до consumers, fresh dist reuse |
| VERIFY-004 | SIMPLIFY | T14 frontend: whole graph final/CI вместо every-commit |
| DEPS-001 | FIX | T14 backend: explicit fresh quick-start preparation |
| DEPS-002 | DELETE | T16: только direct ts-loader/source-map-support, штатный lock resolution |
| DEPS-003 | SIMPLIFY | T15: adapter-compatible direct driver, не forced override |
| DEPS-004 | FIX | T14 backend: debug development mode согласован с startup guidance |
| RISK-001 | DUPLICATE | T01: abandoned running/live-process recovery |
| RISK-002 | DUPLICATE | T01: outer exception никогда не false succeeded |
| RISK-003 | DUPLICATE | T02: latest full forecast |
| RISK-004 | DUPLICATE | T04: mutable calendar policy |
| RISK-005 | DUPLICATE | T21: source/client feedback, cached sums сохранены |
| RISK-006 | DUPLICATE | T06: safe permanent token error |
| RISK-007 | DUPLICATE | T08: UTF-8 minimum, raw password |
| RISK-008 | INVESTIGATE | T38: live proxy/admission evidence, не подтверждённая exploitation |
| AGENT-001 | SIMPLIFY | T14 backend + frontend: separate installation/iteration/final boundary |
| AGENT-002 | SIMPLIFY | T35: risk-based tests/evidence revision вместо message-count freshness |
| AGENT-003 | FIX | T35: generic rulings внутри approved semantics; standard OpenSpec неизменен |
| AGENT-004 | FIX | T35: conditional existing nvm.sh bootstrap, без нового script |
| AGENT-005 | NO_ACTION | Tool/schema overhead не измерен; нет current blocker, global A/B infrastructure не создаётся |
| AGENT-006 | SIMPLIFY | T35: model override только при tool capability |
| SPEC-001 | SIMPLIFY | T29: одна documentation authority, audits в root по запросу |
| SPEC-002 | FIX | T31: explicit original delivery disposition, unchecked archive не переписать |
| SPEC-003 | FIX | T33: current Portfolio/Stock/Bond/Container claims сверены |
| SPEC-004 | FIX | T30: пять topic entries, active screener не fake canonical |
| SPEC-005 | FIX | T37: additionalProperties/lot constraints, runtime последствия unverified |
## Реестр предыдущих источников
Предыдущие измерения относятся к своим samples и не подтверждают runtime
состояние нынешней системы. Служебные CA/TA IDs введены только для ссылок
на уже существующие разделы, не как дополнительный finding source.
| Finding | Decision | Topic / причина |
| --- | --- | --- |
| TA-F01 | DUPLICATE | T02 |
| TA-F02 | DUPLICATE | T01 |
| TA-F03 | DUPLICATE | T04 |
| TA-F04 | DUPLICATE | T03 |
| TA-F05 | DUPLICATE | T21 |
| TA-F06 | DUPLICATE | T05 |
| TA-F07 | DUPLICATE | T20 |
| TA-F08 | DUPLICATE | T12 + T25 + T01 |
| TA-F09 | DUPLICATE | T10 |
| TA-F10 | DUPLICATE | T39; full detail поля нужны actual bond cards |
| TA-F11 | DUPLICATE | T17 |
| TA-F12 | DUPLICATE | T08 |
| TA-F13 | DUPLICATE | T06 |
| TA-F14 | DUPLICATE | T04 |
| TA-F15 | DUPLICATE | T18 |
| TA-F16 | DUPLICATE | T30 + T33 |
| TA-F17 | DUPLICATE | CPLX-003: optional labels cleanup не оправдывает задачу |
| TA-X01 | KEEP | §Simplification Opportunities/controller test: audit 08 подтверждает полезный arbitrary-sub adapter seam; no blanket mock-test deletion |
| CA-H01 | DUPLICATE | T14: installation/final gates |
| CA-H02 | DUPLICATE | T19: real small runner workload |
| CA-H03 | NO_ACTION | Второй FE tsc invocation не доказывает повторную recompilation/равноценность удаления; более точный audit 11 сохраняет |
| CA-H04 | KEEP | App/test compiler roots различаются; superset не доказал эквивалентные diagnostics |
| CA-H05 | DUPLICATE | T14 backend: prepared dist reuse |
| CA-H06 | DUPLICATE | T14 frontend: lean hook |
| CA-H07 | DUPLICATE | T28 |
| CA-H08 | DUPLICATE | T32: исправить actual input, не удалить required check |
| CA-H09 | NO_ACTION | Нет concrete false-positive/cost proof mechanical lint; прежняя blanket cut гипотеза не отменяет user decisions main #18 |
| CA-H10 | KEEP | Motion реально используется, measured bundle/cost проблемы нет; native CSS — необязательная альтернатива |
| CA-H11 | SIMPLIFY | T12: metadata tests на production-used request/savedMany; unused combined read удалять только после caller proof |
| CA-H12 | DELETE | T20: only-test plural authenticated-query API после current caller inventory |
| CA-H13 | SIMPLIFY | T12: existing public request/done и provider вместо private test access; publication owner не дробить |
| CA-H14 | SIMPLIFY | T20: unused history.retry/initial isFetching surface после полного caller proof; automatic cursor recovery сохраняется |
| CA-H15 | NO_ACTION | Малый stock/bond renderer union — лишь предыдущая гипотеза; нет current defect/существенной цены narrowing |
| CA-H16 | DUPLICATE | T27: current Events RTL/MSW outcomes вместо old fake-query oracle |
| CA-H17 | SIMPLIFY | T12: pure mapper/repository seam для unit proof, real SQLite guarantees отдельно |
| CA-H18 | NO_ACTION | Blanket delegation/page fallback test deletion не обоснован primary TQ review; exact duplicate route case допустим opportunistically |
| CA-H19 | DUPLICATE | T13: case-owned prerequisites |
| CA-H20 | DUPLICATE | T29 + T35: opt-in/project applicability, no new workflow |
| CA-X01 | NO_ACTION | D5 membershipWork accessor: prior-only small dead API hypothesis; removal при касании owner, не отдельный результат |
| CA-X02 | NO_ACTION | D5 candleTail key: prior-only tiny unused field, candle loader KEEP |
| CA-X03 | DELETE | D5 HourlySyncSectionDto: T10, только orphan DTO после schema/caller proof |
| CA-X04 | NO_ACTION | D5 totalsByCurrency export: optional local API narrowing; calculation используется |
| CA-X05 | DUPLICATE | G5 runtime-check: TOOL-003 KEEP manual boundary до external-consumer evidence |
| CA-X06 | KEEP | D7 FormProvider: действующая local form convention, context-only optimization необязательна |
| CA-X07 | KEEP | §SIMPLIFY/specs prepare: current explicit install lifecycle; нежелательный effect не подтверждён |
| CA-X08 | KEEP | B4 visual SHA tables: отдельно передаваемые approval exports имеют integrity boundary, не удалять без proof |
| CA-X09 | KEEP | G InvestmentRefreshState: четыре catalog stories и isolation consumer, не confirmed dead |
| RC-01 | DUPLICATE | T14: один final gate после последнего relevant input change |
| RC-02 | NO_ACTION | Aggregates repeated reads не кодируют semantic novelty; session-local reuse действует, cache service не нужен |
| RC-03 | DUPLICATE | T14 + T35: reuse evidence по diff/command/outcome, без persistent validation ledger |
| RC-04 | NO_ACTION | Multi-repo task scope законен; routers уже самостоятельны, hard permissions/manifest не оправданы sample count |
| RC-05 | KEEP | Scoped independent semantic review сохраняется; elapsed task time не доказал waste |
| RC-06 | NO_ACTION | Повторные tool calls могут быть intentional polling; pending/completed dedup framework не нужен |
| RC-07 | DUPLICATE | T14 |
| RC-08 | DUPLICATE | T14: standalone preparation сохраняется, composed boundary reuse |
| RC-09 | DUPLICATE | T14 backend |
| RC-10 | KEEP | Standard OpenSpec lifecycle/context refresh сохраняется по явному ограничению пользователя; mtime/hash cache не вводить |
| RC-11 | NO_ACTION | 127-line unstaged root block отсутствует в проверенном HEAD; stale-context finding, current router 32 строки |
| RC-12 | KEEP | Standard OpenSpec skills неизменны; явный request routing уже принадлежит local AGENTS |
| RC-13 | DUPLICATE | AGENT-005 NO_ACTION: отсутствие measured routing cost не основание удалять skills |
| RC-14 | DUPLICATE | AGENT-005 NO_ACTION: browser tools дают разные capabilities, default deletion не обоснован |
| RC-15 | DUPLICATE | T14 frontend |
| RC-16 | NO_ACTION | Global permission profiles не входят в Git behavior owner; новый management layer не обоснован |
| RC-17 | INVESTIGATE | T36: historical inline credential claim не равен confirmed live exposure/P0; локальная приватная проверка и rotation при подтверждении |
| RC-18 | NO_ACTION | Memory plugin activation не подтверждена, disabled/stale config не требует инфраструктуры |
## KEEP / NO_ACTION и границы
KEEP не создаёт Issues без конкретной задачи. Сохраняются exact money,
server validation, nested ownership, auth CAS/cookie/session generations,
connection/attempt/dependency fences, banking replay/version/tombstone,
SQLite migrations/isolation/crash/restore, signed cursors, public projection,
native OpenSpec phases и immutable history. Optional cleanup не становится
mandatory backlog только из-за числа строк. Старые confidence/severity не
переносятся автоматически на новый campaign priority.
## Dependencies и блокеры
- T04 зависит от T02 только в части проверенного failed-existing-calendar
publication/fallback contract: force не должен создавать новую регрессию.
- T10 имеет внутренний порядок удаления manual parent → exclusive discovery
producer; отдельная Gitea dependency между файлами не нужна.
- T27 финальная source-window presentation зависит от опубликованного T02
artifact; договориться о UX можно до его реализации.
- T11 не блокирует code-only T10/T20: public readers/DB identities сохраняются.
- T14/T35 не блокируют P1. T01/T02/T03 independent, salvo common final diff checks.
- T38 остаётся investigation до приватного proxy input, T36 — до локальной
проверки актуального credential state; raw values и session IDs не публикуются.
- Архивирование одного оригинала blocked: `АудитЭффективности.md` содержит
private session metadata. Исходник сохранён; RC findings не потеряны.
- Cold historical Income, hidden-tab/cadence, CURRENCY и Events filters —
только named product questions внутри T05/T20/T26/T27, без guessed contract.
## Проверка и provenance
Discovery: все repositories доступны, Issues enabled, bot имеет push/pull.
Remote commits пяти audited revisions подтверждены API. Gitea 1.27.3
предоставляет native issue-dependencies endpoint; issue-types API не обнаружен.
Labels организации переиспользуются: Priority/High=P1, Medium=P2, Low=P3;
Kind/Bug, Enhancement, Testing, Documentation. Reviewed/status labels не
используются для дублирования lifecycle. Assignees новых Issues не угадываются.
Все 44 participating Issues прочитаны обратно через API: 43 working и один
[главный Issue](https://git.personal.ksv741.ru/WealthLedger/main/issues/23).
Новых Issues 41 (40 working + navigation), reused 3. Working priorities:
P1=2, P2=33, P3=8; navigation дополнительно P2. 39 topics, не 190 Issues.
| Source disposition | Count |
| --- | --- |
| FIX | 31 |
| REFACTOR | 0 |
| SIMPLIFY | 20 |
| DELETE | 8 |
| INVESTIGATE | 7 |
| KEEP | 40 |
| DUPLICATE | 67 |
| NO_ACTION | 17 |
| Total | 190 |
Source disposition и Issue kind — разные единицы: структурные simplification/
deletion tasks используют existing Kind/Enhancement без дублирующего kind label.
Оригинальные user-authored тела/assignees reused #4/#1/#2 сохранены; supplements
даны comments с stable markers. Старые priority префиксы в titles исторические,
актуальный campaign priority задаёт единственный Priority/Medium label.
Непривязанных actionable findings: 0. Все INVESTIGATE имеют Issue либо bounded
proof внутри соответствующего fix. Два findings явно требуют недоступного
внешнего private input: RISK-008 (actual proxy) и RC-17 (actual local credential
owner); это 2 mapped external-evidence blockers, не подтверждённые runtime bugs.
Product/compatibility decisions T05/T11/T20/T26/T27/T29 и original completion
review T31 остаются named preconditions, сроки/ответы не выдуманы. Отдельный
publication blocker — один original report, не потерянный finding.
Native dependency read-back: backend #53 → backend #55; frontend #63 → backend
#55; specs #2 → specs #4 (исходные native toolchain criteria, Git-range portion
можно исправить независимо). Других technical blocking edges нет, cycles нет.
Новые labels: 8 repo-scoped, только используемые. Organization label creation
вернуло permission denial, resolved repo fallback; MCP issue update не меняет
labels, resolved dedicated replace_labels для reused Issues. Необработанных
API write failures нет. Milestone URLs проверены HTTP 200, due dates пусты.
Final read-back: 44 Issues и 44 уникальных stable markers, 0 template/metadata
errors; у каждого ровно один priority, один primary kind, audit label и нужный
milestone. 59 linked Git resources существуют на указанных commits; главный
Issue перечисляет все 43 working Issues. Все 8 новых labels реально используются.
Первая широкая параллельная HEAD-проверка прервана connection timeout, не
ошибкой созданной сущности. Заменена адресным API/Git read-back и последовательным
HTTP check: campaign, README, triage, original archive и все 5 milestones — 200.
Этот verification transport failure обработан; полный parallel URL scan
успешным не объявляется.
Дополнительные cross-audit signals/open questions не удваивают finding count.
SDD DR-08 одноразовый pilot/transition — NO_ACTION до конкретной потребности;
off-host backup/dummy hashing/logout bounded access/native lifecycle — KEEP
существующих guarantees, без заявлений об их live verification. Ни история,
ни role/security protections не удаляются ради неподтверждённой экономии.
Root gates: original/archived Git blob equality, redacted Gitleaks exit 0,
staged allowlist review, semantic/Boy Scout review, diff check и commitlint.
Первый archive push/read-back успешен; финальные links публикуются вторым commit
в той же task branch. Полный application verify, build, tests, codegen,
migration и реальная финансовая сеть в planning не запускались.