Skip to content

Latest commit

 

History

History
116 lines (97 loc) · 31.8 KB

File metadata and controls

116 lines (97 loc) · 31.8 KB

Audits — каталог документів та статусів

Last validated: 2026-06-03 by Claude (audits-runner execute pass — закрито security-observability S9 (→ 11/11, Closed) + documentation-hygiene P2-1 (Closed) + testing-devx P0-2 + full-app-regression queue #4/#6 + page-audit-02 hub-dashboard F4/F7/F23 (→ 24/24); ДРУГА execute-хвиля 2026-06-03 (усі аудити з <10 outstanding): web-frontend F2-II/F7 (→ 7/7 Closed), testing-devx P1-2/P1-3/P1-6/P2-3 (→ ~13/14), full-app-regression #3/#8 drift (→ 10/10 Closed), page-audit-01 F4 dead-code видалено (→ 25/25), deep-audit D1/D4 (PR #2872/#2874 merged → 0), web-arch P1-A..D closed (P1-E carried на missing server endpoints), dead-code P1.1/P1.3 (→ 17/17), consolidated теми 2/4/5/6 (ESLint rules + lifecycle gate, warn-burndown), doc-hygiene items 5/6 (→ Closed); попередній drift+archive pass 2026-06-02 — архівовано 2026-05-07-app-audit.md (13/13) + 2026-05-13-backend-performance-roast.md (14/14) у archive/; додано 11 відсутніх index-рядків (page-audit 01/02/03/05/06/07/08/09/10 + consolidated + full-app-regression); re-sync лічильників: security-observability 8/11 → 10/11, testing-devx 8/14 → ~11/14, dead-code 13/17 → 15/17, web-frontend-ergonomics 3/7 → 5/7, deep-audit Outstanding 3 → 2, ux-roast-pr-plan 10/41 → 20/41; пофікшено footnote ⁴ (D2 #2933 + D3 закриті — лишились D1/D4) + ⁵ (S8/S11 закриті — лишився S9). Попередня валідація 2026-05-14 by Devin — деталі в git history). Next review: 2026-08-01.

Status: Active

Single source of truth → root AGENTS.md. Цей файл — індекс аудиторських документів. Не дублюй repo policy: hard rules, performance budgets, governance — у docs/04-governance/governance/.

Що тут лежить

  • Прожарки (*-roast.md) — тематичні rolling-roast програми (#1/10 … #10/10) з freshness-маркером, cross-refs, TL;DR, P0/P1/P2 розбивкою.
  • Аудити (*-audit.md) — комплексні перевірки якості, безпеки, UX, doc-hygiene тощо.
  • Implementation-roadmap-и (*-roadmap.md) — план послідовних PR-ів за результатами аудитів.
  • Архів (archive/) — superseded або completed-and-frozen аудити.

Як читати

Status — поточний life-cycle статус документа: Active (актуальний, треба перевіряти), Archived (superseded або завершений), Scaffolded (skeleton без вмісту).

Implemented / Outstanding — coarse-grain лічильники recommended-items у документі. Числа — приблизні («≈»), бо різні аудити форматують рекомендації по-різному (топ-9, скоринг, секційні гаптики, P0/P1/P2-теги). Точні per-item статуси завжди живуть у самому документі або у пов'язаному *-implementation-roadmap.md. Реакомпуляція цих лічильників — раз на квартал під час Last validated бампу.

Документи

Документ Опис Status Implemented Outstanding Tracker
2026-05-02-doc-hygiene-audit.md Doc-hygiene аудит — структура, freshness, dead code Archived 5/5 ≈ 0 embedded fix list
2026-05-03-readme-gap-analysis.md README gap analysis — що відсутнє у root README Archived 15/15 ¹ 0 self
2026-05-05-dead-code-and-stale-links-audit.md Dead-code & stale-links прохід (knip / docs:check-links) Archived 5/5 migrated Knip/dead-code follow-ups → 2026-05-13-dead-code-hard-rules-roast.md; docs-link/freshness follow-ups → 2026-05-13-documentation-hygiene-roast.md
2026-05-06-ux-roast-pr-plan.md План PR-ів за UX-прожаркою — 41 PR + 4 cross-cutting Active 21/41 ⁶ 20 self
2026-05-06-ux-roast.md UX-прожарка post-onboarding (день 0–7), web Archived 10/39 migrated Source snapshot; active execution → 2026-05-06-ux-roast-pr-plan.md
2026-05-07-full-app-regression-ux-audit.md Регресійний прохід після chain #2191–#2218; черга #1–#10 follow-up-ів Archived 10/10 ≈ 0 self (§Fix passes + queue)
2026-05-13-documentation-hygiene-roast.md Doc-hygiene прожарка #8/10 — links/freshness/playbook-catalog, post-archive-move regression fix Archived 4/4 P0 + 3/3 P1 + 2/2 P2 ² 0 embedded §Progress
2026-05-13-ftux-onboarding-roast.md FTUX onboarding day 0-7 roast (прожарка #1/10) Archived migrated migrated docs/01-product/launch/product-os/ftux-master-tracker.md
2026-05-13-mobile-reliability-ux-roast.md Прожарка #10/10 — mobile (Expo + Capacitor) reliability & UX Archived migrated migrated docs/90-work/tech-debt/mobile.md
2026-05-13-security-observability-roast.md Security & observability roast — CSP, secrets, Sentry/OTel/web-vitals, audit logs Archived 11/11 ⁵ 0 embedded §Прогрес-виконання + §P0/P1/P2
2026-05-13-testing-devx-roast.md Прожарка #6/10 — Testing & DevX (Vitest/Jest/Playwright/Detox, CI, pre-commit) Active ~13/14 ≈ ≈1 (P1-4 Detox + P2 nice-to-haves, out-of-scope) embedded §Outstanding + docs/02-engineering/testing/2026-05-05-tests-pr-plan.md
2026-05-13-web-frontend-ergonomics-roast.md Прожарка #2/10 Web Frontend Ergonomics — toast policy, shortcuts, modal a11y, PWA defer Archived 7/7 ≈ 0 self (F1 / F3 / F5 [FIXED] / F6 (#2743) closed; F2 part-1 rule landed warn-only; F2 part-II + F4 / F7 outstanding)
2026-05-13-dead-code-hard-rules-roast.md Dead code + hard-rules roast #9/10 (knip / dead-code:files / docs:check-links) Closed 17/17 ≈ ³ 0 (P1.1/P1.3 closed; residual = knip false-positives watchlist) embedded §6 (knip Unlisted/Unresolved sweep) — P1.2/P1.4/P1.5/P1.6 closed; P1.1/P1.3 deferred to next roast
2026-05-13-consolidated-page-audit.md Зведений page-audit (найбільший — 255 знахідок); багато тем закрито, CI-gate теми 2/4/5/6 outstanding Active ≈ part ≈ burn-downs відкриті ⁶: ~96 non-null warns, bulk lifecycle-міграція deferred, 4 storage-key suppressions, 3 touch-target поверхні self (Themes 1–7 + Scopes 01–10)
2026-05-13-page-audit-01-auth-onboarding.md Page-audit auth/onboarding — a11y, copy, decomposition Closed ~24/25 ≈ 0 (F4 dead-code already deleted) self (F1–F25)
2026-05-13-page-audit-03-hub-chat-search.md Page-audit hub chat & search — Critical F3 (Zod envelope) лише напів-закрито Active ~14/26 ≈ ≈12 ≈ (incl. F3 part) self (F1–F26)
2026-05-13-page-audit-07-fizruk-part2.md Page-audit Fizruk part 2 — type-safety, measurements, a11y (найбільша черга) Active 16/50 ⁶ 34 self (F1–F50)
2026-05-13-page-audit-08-nutrition.md Page-audit Nutrition — invalidate scope, a11y, copy; uom-conversion F15 deferred Active ≈ part ≈ ≈ (incl. F15 uom-conversion) self (F1–…)
2026-05-13-page-audit-09-routine-strategy.md Page-audit Routine & Strategy — drag-guard, i18n, touch targets, a11y Active ≈ part ≈ self (F1–…)
2026-05-13-page-audit-10-errors-pwa-marketing.md Page-audit Errors/PWA/Marketing — несе Critical F2 (SW per-user cache, mitigated; e2e тест deferred) Active ≈ part ≈ ≈ (incl. F2 e2e deferred) self (F1–F29)

| 2026-05-13-revenue-monetization-roast.md | Revenue / monetization / paywall roast — follow-up до 2026-05-04 | Archived | migrated | migrated | docs/90-work/planning/pr-plan-revenue-2026-05.md |

| 2026-05-15-deep-audit-state-of-repo.md | Synthesis-аудит зовнішнім проходом — крос-валідація P0/P1 закриттів, 4 hygiene-outstanding | Archived | n/a (synthesis) | 0 ⁴ | self (§Truly outstanding D1, D4 — D2/D3 closed) | | 2026-08-XX-sync-engine-roast.md | Stub: майбутній deep-roast apps/server/src/modules/sync/syncV2.ts (473 LOC after per-domain applySync extraction) — chunkability, atomic-tx boundaries, idempotency hot path, retry semantics | Draft | n/a (stub) | n/a | docs/90-work/planning/archive/pr-plan-backend-perf-2026-05.md §PR-12 | | 2026-08-XX-openclaw-internal-roast.md | Stub: майбутній deep-roast apps/server/src/routes/internal/openclaw.ts (1781 LOC) — security boundary, audit-log coverage, write-tool approval gate | Draft | n/a (stub) | n/a | docs/90-work/planning/archive/pr-plan-backend-perf-2026-05.md §PR-12 | | 2026-06-08-codebase-cleanup-audit.md | Cleanup-audit (мертвий код, застарілі рішення, інфра-дрейф) — 4 founder-decisions executed; lint-debt / tombstones / інфра outstanding | Active | 4 decisions ≈ | lint-debt + tombstones + інфра | self (§ Виконано + теми 1-4) | | 2026-06-11-fable5-independent-audit.md | Незалежний аудит Fable 5 — 10 вимірів, 53 агенти, адверсарна верифікація; P0+P1 хвиля виконана 2026-06-11 (PR #3498–#3503, #3507, #3509–#3512); стиснуто до remaining-черги | Active | 11 ws ≈ | ws-10/12/13 (P1), ws-14/15 (P2), founder: ws-01b/02 | self (§ Action plan + § Workflow delegation spec) |

| archive/2026-04-26-sergeant-audit-devin.md | Незалежний аудит Devin (historical record) | Archived | 30/31 | 1 | embedded таблиця у самому файлі | | archive/2026-04-28-implementation-roadmap.md | План реалізації покращень (архівовано P1-4 — консолідовано у master tracker) | Archived | — | — | docs/01-product/launch/product-os/ftux-master-tracker.md | | archive/2026-04-28-sergeant-comprehensive-audit.md | Комплексний генеральний аудит | Archived | 12/18 ≈ | 6 ≈ | archive/2026-04-28-implementation-roadmap.md | | archive/2026-04-28-ux-improvement-plan.md | Технічний план покращення UX (архівовано P1-4 — консолідовано у master tracker) | Archived | — | — | docs/01-product/launch/product-os/ftux-master-tracker.md | | archive/2026-04-28-ux-ui-audit.md | UX/UI аудит 2026 | Archived | — | — | archive/2026-04-28-ux-improvement-plan.md | | archive/2026-05-03-ftux-onboarding-roast.md | Web FTUX onboarding roast — 6 P0 + 22 рекомендацій | Archived | 3/6 P0 | 3 P0 | docs/01-product/launch/product-os/ftux-master-tracker.md | | archive/2026-05-04-csp-disable-retrospective.md | CSP_DISABLE retrospective audit (initiative 0011 PR 1.4) | Archived | 5/5 | 0 | self (A1–A5 resolved 2026-05-06) | | archive/2026-05-07-app-audit.md | Повний аудит застосунку — web-blocker, mobile/web tests, lint hard-rule, latent imports (completed-and-frozen 2026-06-02) | Archived | 13/13 | 0 | 2026-05-07-full-app-regression-ux-audit.md | | archive/2026-05-11-docs-audit-summary.md | Документаційний аудит 2026-05-11 | Archived | all CRIT | 6 scheduled | self (future-dated follow-ups) | | archive/2026-05-13-backend-performance-roast.md | Backend/performance прожарка #4/10 — error handling, validation, observability, env (completed-and-frozen 2026-06-02; SQLite Stage 8/9 out-of-scope) | Archived | 14/14 | 0 | docs/90-work/planning/archive/pr-plan-backend-perf-2026-05.md | | archive/2026-05-13-web-architecture-state-roast.md | Roast #3/10 — Web Architecture & State (provider invariant test, typed standalone routes registry, state-write-paths doctrine) | Archived | 5/5 closed in PR | 0 (P1-E carried out-of-band) | docs/90-work/tech-debt/frontend.md (P1-E writer-path) + Initiative 0006/0013 + Hard Rule #18 | | archive/2026-05-13-page-audit-02-hub-dashboard.md | Page-audit hub dashboard — bento, cards, storage keys, a11y | Archived | ~23/24 ≈ | 0 (F1 raw-key residual out-of-band) | ESLint sergeant-design/no-raw-storage-key + STORAGE_KEYS registry (residual F1 raw-key sweep) | | archive/2026-05-13-page-audit-05-finyk.md | Page-audit Finyk — Kyiv-tz, parseLocalDate, touch targets, a11y | Archived | 23/25 | 0 (F20/F21 non-blocking) | self (residual F20 page-shell tests / F21 highlight-scroll — non-blocking follow-up) | | archive/2026-05-13-page-audit-06-fizruk-part1.md | Page-audit Fizruk part 1 — route-shell, lifecycle markers, a11y | Archived | 17/27 | 0 (residual tail optional) | self (residual F17/F18/F20/F25/F26 tail — optional cleanup) | | archive/ux-audit-2025.md | UX-аудит 2025 | Archived | n/a | n/a | superseded by archive/2026-04-28-ux-ui-audit.md |

¹ 2026-05-03-readme-gap-analysis.md — обидві раніше outstanding-секції («Packages» окрема таблиця-каталог і «Environment Variables») де-факто існують у README.md: «Packages» — README.md:73-93 як підсекція ## What is in the repo; «Environment Variables» — README.md:167-182 як підсекція ## Quickstart із таблицею + посиланням на docs/02-engineering/integrations/env-vars.md. Семантичний gap закрито; формальне промотування у top-level секції — out of scope (косметика).

² 2026-05-13-documentation-hygiene-roast.md — P1-1 / P1-3 / P2-2 закриті у попередніх прохідах (вказано у самому документі). P1-2 (archive/2026-04-28-ux-ui-audit.md 3-date canonicalization) переведено у Non-actionable: рекомендована дія документа — «leave as-is, файл архівний». P2-1 (codemod catalog enforcement gap, ESLint guard для kvStore deep imports) — closed: scripts/check-kvstore-deep-imports.mjs + package.json lint:kvstore-deep-imports (chained у top-level lint) + scripts/__tests__/check-kvstore-deep-imports.test.mjs (verified 2026-06-03). Усі actionable-пункти закриті → Status Closed.

³ 2026-05-13-dead-code-hard-rules-roast.md — лічильник пересинхронізовано 2026-06-02 на основі самого документа: 15 закритих items (11 unmarked unused-файлів + knip.json cleanup + P1.2 lighthouse workflow + P1.6 AuthPage re-decomposition + P1.4 process.env Phase 2 burn-down + P1.5 mobile-shell) з 17 total. P1.4 закрито — .tech-debt/env-single-source-budget.json 2026-06-01 sweep завершив burn-down. P1.5 (mobile-shell knip) — Non-actionable: за update у самому документі цей пункт «застарів». P1.1 і P1.3 закриті 2026-06-03 (audits-runner execute pass): pnpm knip — 0 unused deps (sweep вже зроблено попередніми хвилями); knip.json hygiene 11→4 configuration hints; 4 genuinely-dead exports видалено (knip Unused exports 94→90), решта (~86 exports + 14 types + 72 duplicates) — документовані knip false-positives (lazy React default-exports, __reset*ForTests, scaffolded barrel surface) → watchlist, не red-gate. Status → Closed 2026-06-08: окремий dead-code:files lifecycle-marker drift (5 файлів) теж resolved — pnpm dead-code:files повертає «No unmarked unused files ✓». 0 actionable outstanding.

2026-05-15-deep-audit-state-of-repo.md — D2 (Stryker removal decision-record) підтверджено already-closed другим проходом 2026-05-15 (explicit decision у docs/02-engineering/testing/README.md:12, docs/90-work/audits/2026-05-05-tests-review.md:40 та docs/04-governance/adr/0020-…:235); закрито через PR #2933. D3 (VOYAGE_API_KEY fail-loud) закрито 2026-05-17 — startup-guard + тести verified. D1 (Stripe webhook e2e) закрито через PR #2872 (merged 2026-05-15 — apps/server/src/routes/billing.webhook.test.ts, 8 cases) + D4 (ADR freshness backfill) через PR #2874 (merged 2026-05-15 — scripts/docs/backfill-adr-freshness.mjs, 54/54 ADR); обидва підтверджено в main 2026-06-03. Outstanding: 0.

2026-05-13-security-observability-roast.md — лічильник пересинхронізовано 2026-06-02 на основі статус-маркерів у самому документі: closed = S1/S3/S6/S7 (у власному PR-і ауд-у) + S2 (#2754) + S4 (#2749) + S5 (verified already covered у tracing.test.ts:115-127, 2026-05-16) + S10 (verified — logger.ts:3 уже single-source-imports REDACT_KEY_NAMES з @sergeant/shared, 2026-05-16) + S8 (web-vitals scrubPII + тест — verified closed 2026-06-02) + S11 (повний CSP-directive parity test <meta>vercel.json — verified closed 2026-06-02) + S9 (Sentry init tags — verified closed 2026-06-03: apps/web/src/core/observability/sentry.ts:398/404/411 ставлять cspMode / outboxBootOutcome / webVitalsEnabled) = 11. Outstanding: 0 → Status Closed.

⁶ Re-sync 2026-06-11 (незалежний аудит, ws-12): лічильники перераховано механічно з per-finding closure-маркерів у самих документах — README завищував finyk у 6× (≈13 → факт 2: лише F20/F21 без closure note) і занижував consolidated (заявлений «0 outstanding» при відкритих burn-down-ах). ux-roast PR-1a був phantom-open: повна імплементація App-lock існує в apps/web/src/core/security/ — DONE-маркер проставлено 2026-06-11. Залишкова сліпа пляма: Scope-04 (Hub Settings / Profile / Assistant Catalogue) досі не аудитований — child-сесія впала по VM-інфрі 2026-05-13, retry не виконаний; оцінка 30–40 H/M знахідок (_runner-report.md). _runner-report.md авто-регенерується twice-weekly routine-ою з цих доків — цей re-sync прибирає фікцію з її входу.

Deep-dive прожарки

Точкові ad-hoc прожарки на конкретний зріз системи з власним internal roadmap (sub-файли + sprint-burndown файли). Часто породжують нові tracker-items, які вливаються у *-implementation-roadmap.md.

Документ Опис Status Implemented Outstanding
2026-05-03-web-deep-dive/ Web deep-dive — 18-item roadmap (forms, state, security, observability, DevX) Closed migrated migrated

Process

  • При злитті PR-у, що закриває recommendation з аудиту:
    1. Оновити inline статус усередині самого документа (taglines типу — done #PR).
    2. Бампнути Implemented лічильник у таблиці вище.
    3. Якщо це закриває all-items → перевести Status у Closed і вказати tracker.
    4. Якщо документ повністю superseded — перенести у archive/ і додати посилання на правонаступника в колонці Tracker.
  • CI freshness-gate (scripts/check-tech-debt-freshness.mjs) форсить Last validated: маркер ≤ 60 днів. PR падає, якщо маркер старший за поріг — re-validate сторінку (статуси, лічильники, нові аудити) і онови дату.
  • Для нових аудитів використовуй шаблон з docs/90-work/audits/archive/2026-04-28-ux-ui-audit.md (front-matter блок зверху + Lifecycle-status + явний tracker).