docs: link verified Gitea remediation resources

This commit is contained in:
2026-10-11 22:08:34 +03:00
parent 0d6344abfd
commit 7dc1c76964
2 changed files with 127 additions and 43 deletions
+27 -1
View File
@@ -4,7 +4,7 @@
frontend, backend, specs и docs. Программа управляется Gitea Issues; этот
архив сохраняет доказательства и решения triage, а не текущие статусы задач.
Главный Issue: ссылка будет добавлена после подтверждённого создания в Gitea.
Главный Issue: [Technical Audit Remediation — WealthLedger — 2026-10-11](https://git.personal.ksv741.ru/WealthLedger/main/issues/23).
Нормализованный реестр и задачи: [triage](triage.md).
## Исследованные revisions
@@ -86,3 +86,29 @@ integrity validators не вводятся: версии архива прина
Архив публикуется в task branch `codex/audit-remediation-2026-10-11` от свежего
`origin/develop`. Локальный commit без подтверждённого push не считается
публикацией. Release/version bump из названия программы не следует.
Первый архивный commit `0d6344abfdf9c4c6139e4d2b50bf3bd3b2ee690e` успешно
отправлен и прочитан через Gitea; отчёты в нём неизменяемы. Финальные README и
triage доступны в той же remote task branch и имеют фактические Issue URLs.
## Gitea программа
39 нормализованных engineering topics поставляются 43 working Issues:
40 новых и 3 повторно используемых. Главный navigation Issue создан отдельно;
итого 41 новое Issue и 44 participating Issues. Все новые задачи неназначены;
существующие assignees/тексты сохранены, audit supplements добавлены comments.
| Repository | Milestone | Participating Issues |
| --- | --- | --- |
| main | [milestone 1](https://git.personal.ksv741.ru/WealthLedger/main/milestone/1) | 3, включая главный Issue |
| backend | [milestone 4](https://git.personal.ksv741.ru/WealthLedger/backend/milestone/4) | 23 |
| frontend | [milestone 3](https://git.personal.ksv741.ru/WealthLedger/frontend/milestone/3) | 11 |
| specs | [milestone 5](https://git.personal.ksv741.ru/WealthLedger/specs/milestone/5) | 5 |
| docs | [milestone 2](https://git.personal.ksv741.ru/WealthLedger/docs/milestone/2) | 2 |
Milestones не имеют due date. Переиспользованы organization labels;
8 новых repo-scoped labels — 5 audit и 3 investigation. Создание org labels
отвергнуто недостатком organization-owner permission; repo-scoped fallback
подтверждён. Для reused Issues назначение labels сделано через replace_labels:
обычный issue update в MCP их не применяет. Оба ограничения API обработаны.
Native dependencies установлены и прочитаны обратно, cycles отсутствуют.
+100 -42
View File
@@ -25,45 +25,45 @@ verification owners и четыре title-trigger owners поставляютс
| Topic | Priority / owner | Результат / Issue |
| --- | --- | --- |
| T01 | P1 backend | Hourly completion, durable recovery и executable coordinator proof |
| T02 | P1 backend | Latest complete forecast, persisted identity, saved filtering и failed-source policy proof |
| T03 | P2 backend | Eligibility после пропущенных long-walk terms |
| T04 | P2 backend | Повторное обновление mutable calendars с сохранением fallback |
| T05 | P2 backend | Local Income и только missing requested Ledger interval; прямой interval planner |
| T06 | P2 backend | Permanent invalid-token translation на всех online entrypoints |
| T07 | P2 backend | Accounts/Income meta получает resource-relevant durable hourly attempt |
| T08 | P2 backend | UTF-8 password bounds и согласованный OpenAPI artifact |
| T09 | P2 backend | Auth token-role, expiry и cookie regression distinctions |
| T10 | P2 backend | Dead manual/discovery producer closure, orphan DTO, active readers/fences сохранены |
| T11 | P2 backend | Проверенное compatibility решение для status/observe consumers |
| T12 | P2 backend | Настоящие source races, post-write rollback и controlled completion вместо sleeps |
| T13 | P2 backend | Self-contained HTTP scenarios и отсутствие uncontrolled scheduler |
| T14 | P2 backend + frontend | Соразмерные local gates; backend single preparation; frontend lean pre-commit |
| T15 | P2 backend | Один adapter-supported SQLite driver, native/durability guarantees сохранены |
| T16 | P2 backend | Удалены только неподдерживаемые unused direct compiler dependencies |
| T17 | P2 backend | Bounded banking page relations вместо per-row loaders, adoption по измерению |
| T18 | P3 backend | Один safe publicInstrument projection owner |
| T19 | P3 backend | Малый real SQLite workload runner-regression при тех же safety assertions |
| T20 | P2 frontend | Query-owned read lifecycle; disabled/session gating; pruning unused observe/facade |
| T21 | P2 frontend | Source/client failure visibility и GET-only recovery инвестиционных sections |
| T22 | P2 frontend | Cold/cached banking read recovery без потери сумм/draft |
| T23 | P3 frontend | Один payment-system tuple у существующей bank-card schema |
| T24 | P2 frontend | Auth navigation disabled для pointer/keyboard во время submit |
| T25 | P2 frontend | Late-response assertions после полного settlement проигравшего |
| T26 | P2 frontend | Явное решение о видимости CURRENCY без double counting |
| T27 | P2 frontend | Согласованный Events screen contract и актуальные test oracles |
| T28 | P3 frontend | Native openapi-typescript --check вместо custom temp wrapper |
| T29 | P2 specs | Task-first/documentation authority без competing audit/feature trees |
| T30 | P2 specs | Пять точных current capability entries в AI_INDEX |
| T31 | P2 specs | Достоверный completion disposition, оригинальный archive не переписан |
| T32 | P2 specs | Meaningful committed-range CI check; native validation scope явно определён |
| T33 | P2 docs | Непротиворечивое current hourly/local/online объяснение |
| T34 | P3 frontend + backend + specs + docs | Title edit перезапускает только commits proof |
| T35 | P2 main | Generic workflow applicability, evidence reuse, approval precedence и nvm bootstrap |
| T36 | P2 main | Проверка live provider credential handling без раскрытия значения |
| T37 | P2 backend | Published screener constraints согласованы с target и HTTP boundary |
| T38 | P2 backend | Пассивная проверка реального auth perimeter/admission policy |
| T39 | P2 backend | Независимый prices RPC стартует вместе с выбранными bond details |
| 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.
@@ -309,6 +309,64 @@ Labels организации переиспользуются: Priority/High=P1
Kind/Bug, Enhancement, Testing, Documentation. Reviewed/status labels не
используются для дублирования lifecycle. Assignees новых Issues не угадываются.
Read-back URLs/metadata, итоговые counts и опубликованные revisions будут
добавлены после фактического создания. Полный application verify, build,
tests, codegen, migration и реальная финансовая сеть в planning не запускались.
Все 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 не запускались.