Have something to say?
Разобрать unrelated `.agents/.omc` dirty layer в старом checkout
## Что это ## Резюме (RU) Разобрать unrelated `.agents/.omc` dirty layer в старом checkout *Полный перевод тела — в работе. Английский оригинал ниже.* --- # Original (EN) ## Контекст Старый checkout `/Users/marklindgreen/Projects/rox-one-terminal` остаётся dirty из-за большого unrelated слоя в `.agents/**` и `.omc/**`. T305/PR #303 собран в отдельной чистой worktree `/Users/marklindgreen/Projects/rox-one-terminal-t305-pr`, этот слой намеренно не трогался. ## Почему это важно * Старый checkout шумит в `git status` и может маскировать реальные изменения. * Нельзя автоматически удалять/откатывать слой: он может содержать user/runtime state. * Перед дальнейшими PR из старого checkout нужно отделить runtime-generated файлы от repo-owned файлов. ## Acceptance criteria * Для `.agents/**` и `.omc/**` принято решение: commit, ignore, move to local runtime path, или explicit cleanup. * После решения `git status` старого checkout не содержит unrelated runtime noise. * Никакие пользовательские runtime artifacts не потеряны без отдельного подтверждения. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Бэклог — Backlog`. Метки: `Техдолг` / `Tech Debt`. ## 🔗 Linear - [PZD-85](https://linear.app/kuhjie/issue/PZD-85/razobrat-unrelated-agentsomc-dirty-layer-v-starom-checkout) — backing ticket - Parent epic: [PZD-121](https://linear.app/kuhjie/issue/PZD-121)
C-H2: гонка stopping-флага в обработчике выхода `RoxDesignRuntimeManager.start()`/`stop()`
## Что это ## Резюме (RU) C-H2: гонка stopping-флага в обработчике выхода `RoxDesignRuntimeManager.start()`/`stop()` *Полный перевод тела — в работе. Английский оригинал ниже.* --- # Original (EN) ## Objective Eliminate the race condition in `RoxDesignRuntimeManager` where the `child.once("exit")` handler fires during an intentional `stop()` call and spuriously emits `rox-design:sidecar-exited` IPC to the renderer. **Audit source:** [2026-05-20 PR #268 Release-Readiness Audit]() — Finding **C-H2** (HIGH) **Suggested branch:** `fix/rox-design-runtime-stopping-flag-race-t543-c-h2` --- ## Source Links * Audit: [https://github.com/agisota/rox.one/blob/main/docs/audits/2026-05-20-pr268-release-readiness-audit.md]() * File: `packages/electron/src/main/rox-design/RoxDesignRuntimeManager.ts` --- ## Current State `child.once("exit")` is registered unconditionally inside `start()`. When `stop()` calls `child.kill()`, the exit handler fires and emits `rox-design:sidecar-exited` to the renderer — identical to a crash path — causing the UI to show an unexpected error banner during clean shutdown. --- ## Requirements 1. Introduce a `private stopping = false` flag on `RoxDesignRuntimeManager`. 2. Set `stopping = true` at the top of `stop()` before any `child.kill()` call. 3. Guard the `child.once("exit")` handler: if `this.stopping` is `true`, return early without emitting `rox-design:sidecar-exited`. 4. Reset `stopping = false` after `stop()` fully completes (child confirmed dead or timeout). --- ## Specification ```typescript class RoxDesignRuntimeManager { private stopping = false; async stop(): Promise { this.stopping = true; // ... kill child, await exit ... this.stopping = false; } private registerExitHandler(child: ChildProcess): void { child.once("exit", (code, signal) => { if (this.stopping) return; // intentional shutdown — do not emit this.emit("rox-design:sidecar-exited", { code, signal }); }); } } ``` --- ## Acceptance Criteria - [ ] `stop()` sets `stopping = true` before `child.kill()`. - [ ] `exit` handler short-circuits when `stopping === true`. - [ ] `rox-design:sidecar-exited` is NOT emitted during normal `stop()`. - [ ] `rox-design:sidecar-exited` IS still emitted on unex... ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `На ревью — In Review`. Метки: `Баг` / `Bug`. ## 🔗 Linear - [PZD-105](https://linear.app/kuhjie/issue/PZD-105/c-h2-gonka-stopping-flaga-v-obrabotchike-vyhoda) — backing ticket - Parent epic: [PZD-119](https://linear.app/kuhjie/issue/PZD-119)
E2E test: agent → AAP → panel viewer — E2E: agent → AAP → panel viewer
## Что это Задача `E2E test: agent → AAP → panel viewer — E2E: agent → AAP → panel viewer` отслеживается в Linear под тегом PZD-132. Метки: `Проверка` / `Verification`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Проверка` / `Verification`. ## 🔗 Linear - [PZD-132](https://linear.app/kuhjie/issue/PZD-132/zadacha-e2e-test-agent-aap-panel-viewer-e2e-agent-aap-panel-viewer) — backing ticket - Parent epic: [PZD-125](https://linear.app/kuhjie/issue/PZD-125)
Playwright video frame test
## Что это Задача `Playwright video frame test` отслеживается в Linear под тегом PZD-144. Метки: `Проверка` / `Verification`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Проверка` / `Verification`. ## 🔗 Linear - [PZD-144](https://linear.app/kuhjie/issue/PZD-144/zadacha-playwright-video-frame-test) — backing ticket - Parent epic: [PZD-136](https://linear.app/kuhjie/issue/PZD-136)
Migration: disk-space + long-paths + verbatimSymlinks
## Что это ## Критерии приёмки - [ ] Pre-check free space ≥ 2x legacy size - [ ] Windows long-paths support enabled - [ ] verbatimSymlinks preserves symlinks - [ ] Rollback на disk-full ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `История` / `Story`, `Риск` / `Risk`. ## 🔗 Linear - [PZD-147](https://linear.app/kuhjie/issue/PZD-147/istoriya-migration-disk-space-long-paths-verbatimsymlinks) — backing ticket - Parent epic: [PZD-122](https://linear.app/kuhjie/issue/PZD-122)
Disk-space pre-check + rollback
## Что это Задача `Disk-space pre-check + rollback` отслеживается в Linear под тегом PZD-151. Метки: `Риск` / `Risk`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Риск` / `Risk`. ## 🔗 Linear - [PZD-151](https://linear.app/kuhjie/issue/PZD-151/zadacha-disk-space-pre-check-rollback) — backing ticket - Parent epic: [PZD-147](https://linear.app/kuhjie/issue/PZD-147)
Windows long-paths + symlinks tests
## Что это Задача `Windows long-paths + symlinks tests` отслеживается в Linear под тегом PZD-155. Метки: `Проверка` / `Verification`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Проверка` / `Verification`. ## 🔗 Linear - [PZD-155](https://linear.app/kuhjie/issue/PZD-155/zadacha-windows-long-paths-symlinks-tests) — backing ticket - Parent epic: [PZD-147](https://linear.app/kuhjie/issue/PZD-147)
ESLint no-console + miграция всех console.* — ESLint no-console + migration
## Что это Задача `ESLint no-console + miграция всех console.* — ESLint no-console + migration` отслеживается в Linear под тегом PZD-173. Метки: `Техдолг` / `Tech Debt`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Техдолг` / `Tech Debt`. ## 🔗 Linear - [PZD-173](https://linear.app/kuhjie/issue/PZD-173/zadacha-eslint-no-console-migraciya-vseh-console-eslint-no-console) — backing ticket - Parent epic: [PZD-166](https://linear.app/kuhjie/issue/PZD-166)
classifier test set + tuning
## Что это Задача `classifier test set + tuning` отслеживается в Linear под тегом PZD-199. Метки: `Проверка` / `Verification`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Проверка` / `Verification`. ## 🔗 Linear - [PZD-199](https://linear.app/kuhjie/issue/PZD-199/zadacha-classifier-test-set-tuning) — backing ticket - Parent epic: [PZD-195](https://linear.app/kuhjie/issue/PZD-195)
Coverage gate + smoke wire
## Что это Задача `Coverage gate + smoke wire` отслеживается в Linear под тегом PZD-204. Метки: `CI/CD` / `CI/CD`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `CI/CD` / `CI/CD`. ## 🔗 Linear - [PZD-204](https://linear.app/kuhjie/issue/PZD-204/zadacha-coverage-gate-smoke-wire) — backing ticket - Parent epic: [PZD-200](https://linear.app/kuhjie/issue/PZD-200)
Bundle size regression test
## Что это Задача `Bundle size regression test` отслеживается в Linear под тегом PZD-223. Метки: `CI/CD` / `CI/CD`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `CI/CD` / `CI/CD`. ## 🔗 Linear - [PZD-223](https://linear.app/kuhjie/issue/PZD-223/zadacha-bundle-size-regression-test) — backing ticket - Parent epic: [PZD-216](https://linear.app/kuhjie/issue/PZD-216)
TanStack Router migration
## Что это Задача `TanStack Router migration` отслеживается в Linear под тегом PZD-226. Метки: `Техдолг` / `Tech Debt`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Техдолг` / `Tech Debt`. ## 🔗 Linear - [PZD-226](https://linear.app/kuhjie/issue/PZD-226/zadacha-tanstack-router-migration) — backing ticket - Parent epic: [PZD-222](https://linear.app/kuhjie/issue/PZD-222)
Figma/Pptx/Xlsx/Docx adapters: regression + fixture refresh
## Что это PZD-98/99/100/101 follow-up: regression suite + fresh fixture набор (10 файлов каждого типа из реального corpus). ## Критерии приёмки - [ ] 10 fixtures на adapter (real-world files) - [ ] Visual snapshot regression - [ ] CI publishes diff на fail ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `История` / `Story`, `Проверка` / `Verification`. ## 🔗 Linear - [PZD-253](https://linear.app/kuhjie/issue/PZD-253/istoriya-figmapptxxlsxdocx-adapters-regression-fixture-refresh) — backing ticket - Parent epic: [PZD-117](https://linear.app/kuhjie/issue/PZD-117)
Reproducibility HIGH-findings closure (T548/T549, C-H2, C-H3)
## Что это ## Контекст PZD-56 T091 recon done. 3 HIGH remain: T548/T549 (defer), C-H2 (stopping flag race — PZD-105), C-H3 (per-entry load serialization — PZD-106), B-H1 (electron-builder collide — PZD-107), B-H2 (SHA-256 digest verification — PZD-108). ## Критерии приёмки - [ ] PZD-105 (C-H2 stopping race) merged - [ ] PZD-106 (C-H3 load serialization) merged - [ ] PZD-107 (B-H1 builder collide) merged - [ ] PZD-108 (B-H2 SHA-256 digest) merged - [ ] T548/T549 либо closed, либо явный defer-decision ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `История` / `Story`, `Воспроизводимость` / `Reproducibility`. ## 🔗 Linear - [PZD-255](https://linear.app/kuhjie/issue/PZD-255/istoriya-reproducibility-high-findings-closure-t548t549-c-h2-c-h3) — backing ticket - Parent epic: [PZD-119](https://linear.app/kuhjie/issue/PZD-119)
Fixture corpus + visual snapshot
## Что это Задача `Fixture corpus + visual snapshot` отслеживается в Linear под тегом PZD-256. Метки: `Проверка` / `Verification`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Проверка` / `Verification`. ## 🔗 Linear - [PZD-256](https://linear.app/kuhjie/issue/PZD-256/zadacha-fixture-corpus-visual-snapshot) — backing ticket - Parent epic: [PZD-253](https://linear.app/kuhjie/issue/PZD-253)
C-H3 per-entry load serialization
## Что это Задача `C-H3 per-entry load serialization` отслеживается в Linear под тегом PZD-260. Метки: `Баг` / `Bug`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Баг` / `Bug`. ## 🔗 Linear - [PZD-260](https://linear.app/kuhjie/issue/PZD-260/zadacha-c-h3-per-entry-load-serialization) — backing ticket - Parent epic: [PZD-255](https://linear.app/kuhjie/issue/PZD-255)
cyclonedx-bom integration
## Что это Задача `cyclonedx-bom integration` отслеживается в Linear под тегом PZD-268. Метки: `Релиз` / `Release`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `Релиз` / `Release`. ## 🔗 Linear - [PZD-268](https://linear.app/kuhjie/issue/PZD-268/zadacha-cyclonedx-bom-integration) — backing ticket - Parent epic: [PZD-266](https://linear.app/kuhjie/issue/PZD-266)
bundle-budget.yml required + threshold
## Что это Задача `bundle-budget.yml required + threshold` отслеживается в Linear под тегом PZD-274. Метки: `CI/CD` / `CI/CD`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `CI/CD` / `CI/CD`. ## 🔗 Linear - [PZD-274](https://linear.app/kuhjie/issue/PZD-274/zadacha-bundle-budgetyml-required-threshold) — backing ticket - Parent epic: [PZD-272](https://linear.app/kuhjie/issue/PZD-272)
Preflight 16/16 + RC tag pipeline
## Что это ## Контекст Текущие 16 preflight gates прошли для RC2. Нужно консолидировать их в `bun run rc:preflight` для будущих RC/GA. ## Критерии приёмки - [ ] rc:preflight скрипт запускает все 16 - [ ] Wall time ≤ 15 min - [ ] Output: JUnit XML + summary - [ ] PZD-86 RC8 cut workflow reusable ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `История` / `Story`, `CI/CD` / `CI/CD`. ## 🔗 Linear - [PZD-278](https://linear.app/kuhjie/issue/PZD-278/istoriya-preflight-1616-rc-tag-pipeline) — backing ticket - Parent epic: [PZD-119](https://linear.app/kuhjie/issue/PZD-119)
release-notes generator script
## Что это Задача `release-notes generator script` отслеживается в Linear под тегом PZD-283. Метки: `CI/CD` / `CI/CD`. Это часть текущего инженерного backlog'а ROX.ONE — работа ведётся командой в рамках обычной поставки качества и фич. Голосуйте, если эта функциональность важна для вашего workflow — high-vote задачи приоритизируются в ближайших спринтах. ## Статус Это задача из текущего backlog'а ROX.ONE (Linear). Текущий статус в Linear: `Triage`. Метки: `CI/CD` / `CI/CD`. ## 🔗 Linear - [PZD-283](https://linear.app/kuhjie/issue/PZD-283/zadacha-release-notes-generator-script) — backing ticket - Parent epic: [PZD-281](https://linear.app/kuhjie/issue/PZD-281)