From 47301d7492c38c685ede5c835c7369778836b9a7 Mon Sep 17 00:00:00 2001 From: sudacode Date: Sat, 21 Feb 2026 19:04:19 -0800 Subject: [PATCH] docs(architecture): consolidate canonical docs and archive roadmap noise --- ...rchitecture-docs-and-archive-task-noise.md | 56 +++++-- docs/architecture.md | 4 +- docs/development.md | 39 ++++- docs/structure-roadmap.md | 156 +----------------- docs/subagents/INDEX.md | 7 +- ...k101-docs-archive-20260222T024156Z-hneu.md | 42 +++++ docs/subagents/collaboration.md | 9 + 7 files changed, 144 insertions(+), 169 deletions(-) create mode 100644 docs/subagents/agents/codex-task101-docs-archive-20260222T024156Z-hneu.md diff --git a/backlog/tasks/task-101 - Consolidate-architecture-docs-and-archive-task-noise.md b/backlog/tasks/task-101 - Consolidate-architecture-docs-and-archive-task-noise.md index ca15d6b..c4246e8 100644 --- a/backlog/tasks/task-101 - Consolidate-architecture-docs-and-archive-task-noise.md +++ b/backlog/tasks/task-101 - Consolidate-architecture-docs-and-archive-task-noise.md @@ -1,10 +1,11 @@ --- id: TASK-101 title: Consolidate architecture docs and archive task noise -status: To Do -assignee: [] +status: Done +assignee: + - codex-task101-docs-archive created_date: '2026-02-21 07:15' -updated_date: '2026-02-21 07:15' +updated_date: '2026-02-22 03:01' labels: - documentation - maintainability @@ -37,16 +38,49 @@ Architecture guidance is fragmented across long-lived docs and task notes. Conso ## Acceptance Criteria -- [ ] #1 Runtime composition guidance exists in one canonical location. -- [ ] #2 Duplicated/stale architecture notes removed from long-lived docs. -- [ ] #3 Task evidence retained in backlog/archive, not lost. -- [ ] #4 Docs build and links pass after consolidation. +- [x] #1 Runtime composition guidance exists in one canonical location. +- [x] #2 Duplicated/stale architecture notes removed from long-lived docs. +- [x] #3 Task evidence retained in backlog/archive, not lost. +- [x] #4 Docs build and links pass after consolidation. +## Implementation Plan + + +1) Canonicalize runtime architecture guidance in `docs/architecture.md` and remove task-ID provenance wording so architecture guidance remains timeless. +2) Trim duplicated runtime architecture bullets from `docs/development.md` Contributor Notes and point contributors to `/architecture` as canonical guidance. +3) Convert `docs/structure-roadmap.md` from a full task-history roadmap into a short archival note that points to canonical architecture docs and states historical detail is retained in backlog task records. +4) Record a changelog of moved/removed sections in TASK-101 notes/final summary to preserve evidence that was removed from long-lived docs. +5) Run `bun run docs:build` and finalize AC/DoD checks in Backlog once docs build/link validation passes. + + +## Implementation Notes + + +Plan captured in docs/plans/2026-02-22-task-101-architecture-doc-consolidation.md before edits. + +Initial removal/move inventory: (a) TASK-tagged provenance bullets in docs/architecture.md Why This Design, (b) duplicated runtime-composer/domain-ownership bullets in docs/development.md Contributor Notes, (c) TASK-27 split-sequence/migration-risk body in docs/structure-roadmap.md. + +Doc consolidation changelog (pass 1): +- docs/architecture.md: removed task-ID provenance bullets from `Why This Design` and replaced with timeless architecture wording. +- docs/development.md: removed duplicated runtime-composer/domain-registry/MPV-split architecture bullets from `Contributor Notes`; added single canonical pointer to `/architecture`. +- docs/structure-roadmap.md: replaced full TASK-27 roadmap/migration-risk/split-sequence body with archival notice that redirects to canonical architecture docs and backlog historical records. + + +## Final Summary + + +Consolidated runtime architecture guidance into canonical long-lived docs and removed task-history noise: +- `docs/architecture.md`: removed task-ID provenance bullets from `Why This Design` and kept architecture rationale timeless. +- `docs/development.md`: trimmed duplicated architecture implementation bullets in `Contributor Notes`; retained a direct canonical link to `/architecture`. +- `docs/structure-roadmap.md`: replaced full TASK-27 roadmap body with archival notice pointing to canonical architecture guidance. + +Task-noise evidence is preserved in Backlog records (TASK-101 implementation notes/final summary plus existing backlog archive/task history) rather than long-lived docs. Verification: `bun run docs:build` passed (VitePress build complete, no link errors). + + ## Definition of Done -- [ ] #1 Change log of moved/removed doc sections included in task notes. -- [ ] #2 `bun run docs:build` passes. -- [ ] #3 Contributor-facing entry points link to canonical architecture section. +- [x] #1 Change log of moved/removed doc sections included in task notes. +- [x] #2 `bun run docs:build` passes. +- [x] #3 Contributor-facing entry points link to canonical architecture section. - diff --git a/docs/architecture.md b/docs/architecture.md index d48fd94..ba2b82c 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -251,8 +251,8 @@ flowchart TD - **Better testability:** most behavior can be tested without Electron windows/mpv. - **Better reviewability:** PRs can be scoped to one subsystem. - **Backward compatibility:** CLI flags and IPC channels can remain stable while internals evolve. -- **Extracted composition root:** TASK-27 refactored `main.ts` into focused modules under `src/main/`, isolating startup, lifecycle, IPC, CLI, and domain-specific runtime wiring. -- **Split MPV service:** TASK-27.4 separated `mpv.ts` into transport (`mpv-transport.ts`), protocol (`mpv-protocol.ts`), state (`mpv-state.ts`), and properties (`mpv-properties.ts`) layers for improved maintainability. +- **Extracted composition root:** `main.ts` delegates to focused modules under `src/main/` for startup, lifecycle, IPC, CLI, and domain runtime wiring. +- **Split MPV service layers:** MPV internals are separated into transport (`mpv-transport.ts`), protocol (`mpv-protocol.ts`), state (`mpv-state.ts`), and properties (`mpv-properties.ts`) for maintainability. ## Extension Rules diff --git a/docs/development.md b/docs/development.md index f24e22a..ba4cd95 100644 --- a/docs/development.md +++ b/docs/development.md @@ -83,6 +83,40 @@ bun run test:core:dist # optional full dist core suite bun run test:subtitle:dist # subtitle dist lane (currently placeholder) ``` +## Maintainability Guardrails + +Run guardrails locally before opening a PR: + +```bash +bun run check:file-budgets:strict +bun run check:main-fanin:strict +bun run check:runtime-cycles:strict +``` + +Expected success output includes: + +- `[OK] hotspot budget check (strict) — no hotspots over limit` +- `[OK] main runtime fan-in (strict) — ...` +- `[OK] runtime cycle check (strict) - ... no cycles detected` + +Hotspot budget baselines (2026-02-22): + +| File | Baseline LOC | Limit LOC | +| ----------------------------------------- | ------------ | --------- | +| `src/main.ts` | 2978 | 3150 | +| `src/config/service.ts` | 116 | 140 | +| `src/core/services/tokenizer.ts` | 232 | 260 | +| `launcher/main.ts` | 101 | 130 | +| `src/config/resolve.ts` | 33 | 55 | +| `src/main/runtime/composers/contracts.ts` | 13 | 30 | + +Troubleshooting guardrail failures: + +- File budget hotspot failure: split logic by runtime/domain boundaries and keep orchestration facades thin. +- Main fan-in failure: move runtime imports behind `src/main/runtime/domains/*` or composer barrels. +- Runtime cycle failure: break bidirectional imports by extracting shared helpers into leaf modules. +- Optional broad-budget audit (legacy/global): run `bun run scripts/check-file-budgets.ts --strict --enforce-global`. + ## Config Generation ```bash @@ -124,11 +158,8 @@ Run `make help` for a full list of targets. Key ones: - To add/change generated config template blocks/comments, update `src/config/definitions/template-sections.ts`. - Keep `src/config/definitions.ts` as the composed public API (`DEFAULT_CONFIG`, registries, template export) that wires domain modules together. - Overlay window/visibility state is owned by `src/core/services/overlay-manager.ts`. -- Main process composition is split across `src/main/` modules plus focused runtime composers under `src/main/runtime/composers/*` (for example AniList tracking and MPV runtime assembly clusters). -- Runtime composer contracts should use shared helpers in `src/main/runtime/composers/contracts.ts` (`ComposerInputs`, `ComposerOutputs`, and `BuiltMainDeps`) so required deps remain compile-time enforced. -- Runtime domain imports for `src/main.ts` should route through `src/main/runtime/domains/*`; shared domain access point is `src/main/runtime/registry.ts`. +- Runtime architecture/module-boundary conventions are documented in [Architecture](/architecture); keep contributor changes aligned with that canonical guide. - Linux packaged desktop launches pass `--background` using electron-builder `build.linux.executableArgs` in `package.json`. -- MPV service has been split into transport, protocol, state, and properties layers in `src/core/services/`. - Prefer direct inline deps objects in `src/main/` modules for simple pass-through wiring. - Add a helper/adapter service only when it performs meaningful adaptation, validation, or reuse (not identity mapping). - See [Architecture](/architecture) for the composition model and extension rules. diff --git a/docs/structure-roadmap.md b/docs/structure-roadmap.md index dafda08..bc63c07 100644 --- a/docs/structure-roadmap.md +++ b/docs/structure-roadmap.md @@ -1,153 +1,7 @@ -# Structure Roadmap for TASK-27 +# Structure Roadmap (Archived) -Date: 2026-02-14 +This page previously contained TASK-27 migration planning details. -## 1) Oversized refactor candidates (>=400 LOC) - -| File | Concern | Status | Reason | -| ------------------------------ | ------------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `src/main.ts` | Bootstrap / composition root / orchestration | Active | Main entrypoint owns startup, lifecycle orchestration, service construction, state mutation surfaces, and IPC bindings | -| `src/anki-integration.ts` | Domain service orchestration / integrations | Active | 2.6k+ LOC, high cyclomatic coupling to mpv/subtitle timing and mining flows | -| `src/core/services/mpv.ts` | MPV protocol + app state bridge | Active | ~780 LOC, large protocol and behavior mix, 22-entry dep interface | -| `src/core/services/subsync.ts` | Subsync orchestration (ffsubsync/alass workflows) | Active | ~494 LOC, file IO + mpv command orchestration + result shaping | -| `src/renderer/positioning.ts` | Renderer positioning layout policy | Active (downstream of TASK-27.5) | 513 LOC, layout/rules + platform-specific behavior in one module | -| `src/config/service.ts` | Config load/validation | Active support | ~601 LOC, central schema validation + mutation APIs | -| `src/types.ts` | Shared contract surface | Active support | ~640 LOC, foundational type exports driving module boundaries | -| `src/config/definitions.ts` | Config schema/registry definitions | Active support | ~480 LOC, dense constants/interfaces used by config runtime and docs | -| `src/media-generator.ts` | Media generation helpers | Active support | ~431 LOC, utility-heavy with multiple generation flows | - -## 2) API contracts by target file - -### `src/main.ts` (bootstrap + composition root) - -- **Entry points**: Electron main process boot path (executed by package `main` entry). -- **Contract responsibilities**: - - parse CLI/env and select startup flow through `runStartupBootstrapRuntimeService` - - register app-level lifecycle and command handlers (`runAppLifecycleService`, `handleCliCommandService`) - - instantiate core services (mpv, overlay runtime, IPC handlers, shortcuts, tokenizer, config services) - - hold mutable application runtime state: - - parser/Yomitan windows and extension state - - mpv client and tracker/state - - overlay/app bootstrap flags and modal/shortcut state - - runtime option and anki integration containers -- **Primary callers/integration points**: - - Electron event loop (`app.whenReady`, `process` signals) - - startup/bootstrap services, service adapters in `src/core/services` - -### `src/core/services/mpv.ts` (protocol + facade) - -- **Core exports**: `MpvIpcClient`, `MPV_REQUEST_ID_SECONDARY_SUB_VISIBILITY`, `MpvIpcClientDeps` -- **Primary responsibilities / API**: - - connection management (`connect`, `setSocketPath`, `request`, `send`, `requestProperty`) - - protocol message handling (`processBuffer`, private message handlers for `property-change` and request IDs) - - reconnection lifecycle (`scheduleReconnect`, `failPendingRequests`) - - mpv control actions (`setSubVisibility`, `replayCurrentSubtitle`, `playNextSubtitle`) - - state restoration (`restorePreviousSecondarySubVisibility`) -- **Current caller set**: - - `src/main.ts` (construction + lifecycle + service invocations) - - `src/main/ipc-mpv-command.ts` (runtime control API) - - `src/core/services/subsync.ts` (`requestProperty`, request ID usage) - - tests under `src/core/services/mpv.test.ts` -- **Observed coupling risk**: - - `MpvIpcClientDeps` mixes protocol config with app-level side effects (subtitle broadcast, tokenizer, overlay updates, config reads) - -### `src/anki-integration.ts` - -- **Class export**: `AnkiIntegration` -- **Primary public operations (validated from external callsites)**: - - lifecycle: `start`, `stop`, `destroy` - - card flow: `createSentenceCard`, `updateLastAddedFromClipboard`, `triggerFieldGroupingForLastAddedCard`, `markLastCardAsAudioCard` - - runtime patching: `applyRuntimeConfigPatch` -- **State dependencies (constructor)**: - - config, subtitle timing tracker, mpv client, OSD/notification callbacks -- **Primary callers**: - - `src/core/services/overlay-runtime-init.ts` (initial integration creation) - - `src/core/services/anki-jimaku.ts` (enable/disable and field-grouping RPC) - - `src/core/services/mining.ts` (delegates mining actions) - -### `src/core/services/subsync.ts` - -- **Exports**: `runSubsyncManualService`, `openSubsyncManualPickerService`, `triggerSubsyncFromConfigService` -- **Caller set**: - - `src/core/services/subsync-runner.ts` (runtime wrappers) - - `src/core/services/mpv-jimaku/`? (through runtime services and IPC command handlers) - -### `src/config/service.ts` - -- **Class export**: `ConfigService` -- **Primary API**: - - `reloadConfig`, `saveRawConfig`, `patchRawConfig` - - read methods: `getConfig`, `getRawConfig`, `getWarnings`, `getConfigPath` -- **Primary callers**: - - `src/main.ts`, `src/core/services/cli-command` and runtime config consumers - -### `src/renderer/positioning.ts` - -- **Public style/runtime contract** - - exported calculation helpers for subtitle Y-position and inset offsets - - event handlers for window geometry and subtitle-size changes -- **Primary callers**: - - `src/renderer/handlers/*` - - `src/renderer/subtitle-render.ts` - -## 3) Split sequence / dependency ordering - -Adopted sequence (from TASK-27 parent): - -1. `TASK-27.3` (Anki integration split) -2. `TASK-27.2` (main.ts composition-root split) — depends on TASK-7 and TASK-27.3 -3. `TASK-27.4` (mpv-service protocol/transport/property/facade split) — depends on TASK-27.1 and absorbs TASK-8 -4. `TASK-27.5` (renderer positioning split) — downstream - -## 4) Compatibility and migration risks per split - -### TASK-27.3 / anki integration surface - -- Risk: interface breakage in field-grouping preview/build/enable flow -- Mitigation: keep constructor params and public methods stable; preserve IPC payload shapes - -### TASK-27.2 (composition root) - -- Risk: lifecycle/cleanup regressions from moving startup hooks and shutdown behavior -- Mitigation: preserve service construction order and keep existing event registration boundaries - -Migration note: - -- `src/main.ts` now delegates composition edges to `src/main/startup.ts`, `src/main/app-lifecycle.ts`, `src/main/startup-lifecycle.ts`, `src/main/ipc-runtime.ts`, `src/main/cli-runtime.ts`, and `src/main/subsync-runtime.ts`. -- Overlay/modal interaction has been moved into `src/main/overlay-runtime.ts` (window selection, modal restore set tracking, runtime-options palette/modal close handling) so `main.ts` now uses a dedicated runtime service for modal routing instead of inline window bookkeeping. -- Stateful runtime session data has moved to `src/main/state.ts` via `createAppState()` so `main.ts` no longer owns the `AppState` shape inline, only importing and mutating the shared state instance. -- Behavioral contract remains stable: startup flow, CLI dispatch, IPC handlers, and subsync orchestration keep existing external behavior; only dependency wiring moved out of `main.ts`. - -### TASK-27.4 (mpv-service) - -- Risk: request/deps interface changes could break control and subsync interactions -- Mitigation: preserve public `MpvClient` methods, request semantics, and reconnect events while splitting internal modules - -### TASK-27.4 expected event flow snapshot (current) - -- `connect()` establishes socket and starts `observe_property` subscriptions via `subscribeToProperties()`. -- `processBuffer()` uses `splitMpvMessagesFromBuffer()` to parse JSON lines and route each message to `handleMessage()`. -- `dispatchMpvProtocolMessage()` now owns protocol-level handling for: - - `event === "property-change"` updates (subtitle text/ASS/timing, media/path/title, track metrics, secondary subtitles, visibility restore flags) - - `request_id` responses for startup state fetches and dynamic property queries - - shutdown handling and pending request resolution -- `handleMessage()` now delegates state mutation and side effects through `MpvProtocolHandleMessageDeps` to the client facade (`emit(...)`, state fields, `sendCommand`, etc.). -- Reconnect path stays behavior-critical: - - socket close/error clears pending requests and calls `scheduleReconnect()` - - timer callback calls `connect()` after exponential-ish delay - -### TASK-27.5 (renderer positioning) - -- Risk: UI placement drift on platform edge cases -- Mitigation: keep existing DOM state updates and geometry math in place while refactoring module boundaries - -## 5) Global smoke checklist (required for all TASK-27 subtasks) - -- App starts and connects to MPV -- Subtitle text appears in overlay -- Card mining creates a note in Anki -- Field grouping modal opens and resolves -- Global shortcuts work (mine, toggle overlay, copy subtitle) -- Secondary subtitle display works -- TypeScript compiles with no new errors -- Manual smoke checklist executed for runtime behavior +- Canonical runtime architecture guidance now lives in `docs/architecture.md`. +- Contributor-facing implementation expectations are in `docs/development.md` and link back to `docs/architecture.md`. +- Historical task-level migration context is preserved in Backlog task records and archive folders. diff --git a/docs/subagents/INDEX.md b/docs/subagents/INDEX.md index 827f7a6..4663e2f 100644 --- a/docs/subagents/INDEX.md +++ b/docs/subagents/INDEX.md @@ -57,4 +57,9 @@ Read first. Keep concise. | `opencode-task80-ipc-contract-20260222T001728Z-obrv` | `opencode-task80-ipc-contract` | `Execute TASK-80 IPC contract typing + runtime payload validation end-to-end without commit` | `done` | `docs/subagents/agents/opencode-task80-ipc-contract-20260222T001728Z-obrv.md` | `2026-02-22T00:56:00Z` | | `opencode-task82-smoke-20260222T002150Z-p5bp` | `opencode-task82-smoke` | `Execute TASK-82 e2e smoke suite for launcher/mpv/ipc/overlay end-to-end without commit` | `done` | `docs/subagents/agents/opencode-task82-smoke-20260222T002150Z-p5bp.md` | `2026-02-22T00:54:29Z` | | `codex-task82-smoke-20260222T002523Z-3j7u` | `codex-task82-smoke` | `Execute TASK-82 e2e smoke suite for launcher/mpv/ipc/overlay end-to-end without commit` | `done` | `docs/subagents/agents/codex-task82-smoke-20260222T002523Z-3j7u.md` | `2026-02-22T00:53:25Z` | -| `opencode-task81-launcher-modules-20260222T005725Z-8oh8` | `opencode-task81-launcher-modules` | `Execute TASK-81 launcher command-module/process-adapter refactor end-to-end without commit` | `in_progress` | `docs/subagents/agents/opencode-task81-launcher-modules-20260222T005725Z-8oh8.md` | `2026-02-22T00:57:25Z` | +| `opencode-task81-launcher-modules-20260222T005725Z-8oh8` | `opencode-task81-launcher-modules` | `Execute TASK-81 launcher command-module/process-adapter refactor end-to-end without commit` | `done` | `docs/subagents/agents/opencode-task81-launcher-modules-20260222T005725Z-8oh8.md` | `2026-02-22T01:09:30Z` | +| `codex-task99-guardrails-20260222T010930Z-m9q2` | `codex-task99-guardrails` | `Execute TASK-99 maintainability guardrail expansion and runtime cycle checks end-to-end without commit` | `done` | `docs/subagents/agents/codex-task99-guardrails-20260222T010930Z-m9q2.md` | `2026-02-22T03:01:34Z` | +| `opencode-task84-keybindings-gating-20260222T011624Z-llor` | `opencode-task84-keybindings-gating` | `Execute TASK-84 gate feature-dependent keybindings behind config flags end-to-end without commit` | `done` | `docs/subagents/agents/opencode-task84-keybindings-gating-20260222T011624Z-llor.md` | `2026-02-22T01:35:30Z` | +| `codex-task98-source-tests-20260222T021156Z-a1b2` | `codex-task98-source-tests` | `Execute TASK-98 shift core tests to source level and trim dist coupling end-to-end without commit` | `done` | `docs/subagents/agents/codex-task98-source-tests-20260222T021156Z-a1b2.md` | `2026-02-22T02:36:00Z` | +| `codex-task101-docs-archive-20260222T024156Z-hneu` | `codex-task101-docs-archive` | `Execute TASK-101 consolidate architecture docs and archive task-noise evidence` | `done` | `docs/subagents/agents/codex-task101-docs-archive-20260222T024156Z-hneu.md` | `2026-02-22T03:01:38Z` | +| `codex-fix-ci-20260222T025848Z-0xdl` | `codex-fix-ci` | `Inspect failing GitHub Actions PR checks and implement approved fix` | `in_progress` | `docs/subagents/agents/codex-fix-ci-20260222T025848Z-0xdl.md` | `2026-02-22T02:58:55Z` | diff --git a/docs/subagents/agents/codex-task101-docs-archive-20260222T024156Z-hneu.md b/docs/subagents/agents/codex-task101-docs-archive-20260222T024156Z-hneu.md new file mode 100644 index 0000000..5cd3757 --- /dev/null +++ b/docs/subagents/agents/codex-task101-docs-archive-20260222T024156Z-hneu.md @@ -0,0 +1,42 @@ +# Agent: codex-task101-docs-archive-20260222T024156Z-hneu + +- alias: codex-task101-docs-archive +- mission: Execute TASK-101 consolidate architecture docs and archive task-noise evidence +- status: done +- branch: main +- started_at: 2026-02-22T02:41:56Z +- heartbeat_minutes: 5 + +## Current Work (newest first) + +- [2026-02-22T03:01:38Z] handoff: TASK-101 done; backlog AC/DoD checked and status set Done; docs build verified. +- [2026-02-22T03:01:38Z] change: updated `docs/architecture.md` to remove task-number provenance wording from long-lived architecture rationale. +- [2026-02-22T03:01:38Z] change: trimmed duplicated architecture guidance in `docs/development.md` Contributor Notes and kept canonical `/architecture` pointer. +- [2026-02-22T03:01:38Z] change: replaced `docs/structure-roadmap.md` body with archival notice + canonical architecture pointer. +- [2026-02-22T03:01:38Z] test: `bun run docs:build` pass. +- [2026-02-22T02:41:56Z] intent: load TASK-101 full context from Backlog MCP; write execution plan via writing-plans skill; execute via executing-plans skill with parallel subagents where possible. +- [2026-02-22T02:41:56Z] planned files: `docs/architecture.md`, `docs/development.md`, `docs/subagents/collaboration.md`, `docs/subagents/INDEX.md`, `docs/subagents/agents/codex-task101-docs-archive-20260222T024156Z-hneu.md`, backlog TASK-101 notes via MCP. +- [2026-02-22T02:41:56Z] assumptions: canonical architecture source likely `docs/architecture.md`; task-noise migration should preserve evidence in `backlog/archive` and task notes instead of deleting historical context. + +## Files Touched + +- `docs/subagents/INDEX.md` +- `docs/subagents/agents/codex-task101-docs-archive-20260222T024156Z-hneu.md` +- `docs/plans/2026-02-22-task-101-architecture-doc-consolidation.md` +- `docs/architecture.md` +- `docs/development.md` +- `docs/structure-roadmap.md` +- `docs/subagents/collaboration.md` +- Backlog task `TASK-101` (MCP updates only) + +## Assumptions + +- Backlog is initialized and TASK-101 exists with actionable acceptance criteria. + +## Open Questions / Blockers + +- none + +## Next Step + +- Await next assigned task. diff --git a/docs/subagents/collaboration.md b/docs/subagents/collaboration.md index 5946436..b489408 100644 --- a/docs/subagents/collaboration.md +++ b/docs/subagents/collaboration.md @@ -78,3 +78,12 @@ Shared notes. Append-only. - [2026-02-22T00:54:29Z] [opencode-task82-smoke-20260222T002150Z-p5bp|opencode-task82-smoke] completed TASK-82 implementation pass: launcher smoke e2e stabilized (`launcher/smoke.e2e.test.ts`), CI/release smoke + artifact upload wired, docs updated (`docs/development.md`, `docs/installation.md`), and verification lanes green (`test:launcher:smoke:src`, `test:launcher`, `test:fast`, `build`, `test:smoke:dist`, `docs:build`). - [2026-02-22T00:53:25Z] [codex-task82-smoke-20260222T002523Z-3j7u|codex-task82-smoke] completed TASK-82: added `launcher/smoke.e2e.test.ts`, wired `test:launcher:smoke:src` + CI/release smoke gates with `.tmp/launcher-smoke` failure artifact upload, docs updated (`docs/development.md`, `docs/installation.md`), launcher/fast/docs lanes green; `build + test:smoke:dist` still blocked by unrelated TASK-80 IPC typing errors. - [2026-02-22T00:57:25Z] [opencode-task81-launcher-modules-20260222T005725Z-8oh8|opencode-task81-launcher-modules] starting TASK-81 via Backlog MCP + writing-plans/executing-plans; expected scope `launcher/main.ts` command extraction, process adapters, and launcher tests while preserving CLI behavior/exit codes. +- [2026-02-22T01:09:30Z] [opencode-task81-launcher-modules-20260222T005725Z-8oh8|opencode-task81-launcher-modules] completed TASK-81 implementation pass: extracted launcher command handlers under `launcher/commands/*`, added `launcher/process-adapter.ts` seam + thin `launcher/main.ts` dispatcher, added adapter-mocked command tests (`launcher/commands/command-modules.test.ts`), and validated `bun run test:launcher && bun run test:core:src` green. +- [2026-02-22T01:09:30Z] [codex-task99-guardrails-20260222T010930Z-m9q2|codex-task99-guardrails] starting TASK-99 via Backlog MCP + writing-plans/executing-plans; scope expected around guardrail budgets, runtime cycle-check fixture coverage, CI fail-fast wiring, and contributor docs. +- [2026-02-22T03:01:34Z] [codex-task99-guardrails-20260222T010930Z-m9q2|codex-task99-guardrails] completed TASK-99 implementation pass: added hotspot budget thresholds + baseline reporting in `scripts/check-file-budgets.ts`, added runtime cycle checker + fixture-backed tests (`scripts/check-runtime-cycles*.ts`), wired CI fail-fast guardrail step, updated contributor docs with guardrail commands/baselines, and verified guardrail/docs/test lanes green. +- [2026-02-22T01:16:24Z] [opencode-task84-keybindings-gating-20260222T011624Z-llor|opencode-task84-keybindings-gating] starting TASK-84 via Backlog MCP + writing-plans/executing-plans; expected scope keybinding feature-flag gating, disabled-integration startup guards (Jellyfin case), tests, and docs. +- [2026-02-22T01:35:30Z] [opencode-task84-keybindings-gating-20260222T011624Z-llor|opencode-task84-keybindings-gating] completed TASK-84: gated Anki-dependent shortcuts in `src/core/utils/shortcut-config.ts`, added Jellyfin `enabled` startup guards in `src/main.ts` + `jellyfin-remote-session-lifecycle.ts`, added focused tests (`shortcut-config`, jellyfin lifecycle, warmups), updated config docs, and validated focused tests + `test:core:src` + `docs:build`. +- [2026-02-22T02:11:56Z] [codex-task98-source-tests-20260222T021156Z-a1b2|codex-task98-source-tests] starting TASK-98 closure pass via Backlog MCP + writing-plans/executing-plans; validating remaining DoD evidence and finalization status, no commit. +- [2026-02-22T02:36:00Z] [codex-task98-source-tests-20260222T021156Z-a1b2|codex-task98-source-tests] completed TASK-98 closure: validated `test:fast` + `build` + `test:smoke:dist` all pass on current HEAD, captured timing repro (`2.18s` source lane, `0.21s` dist smoke), confirmed script/workflow/docs split unchanged, and finalized Backlog task to Done. +- [2026-02-22T02:41:56Z] [codex-task101-docs-archive-20260222T024156Z-hneu|codex-task101-docs-archive] starting TASK-101 via Backlog MCP + writing-plans/executing-plans; scope architecture docs consolidation, stale-note cleanup, archive evidence retention, and docs link/build verification. +- [2026-02-22T03:01:38Z] [codex-task101-docs-archive-20260222T024156Z-hneu|codex-task101-docs-archive] completed TASK-101: canonicalized runtime architecture wording in `docs/architecture.md`, trimmed duplicated architecture bullets in `docs/development.md`, converted `docs/structure-roadmap.md` to archival notice, `bun run docs:build` passed, and backlog TASK-101 finalized Done with AC/DoD evidence.