Kototoro Architecture Roadmap
Purpose
This document turns the architecture review into an execution-oriented roadmap.
It is not meant to replace the high-level review in architecture-review.md. Instead, it provides a practical sequencing guide for architectural work that should happen after the broad manga-to-content naming migration.
Scope
This roadmap excludes the generic naming migration from Manga to Content, because that work is already being handled separately.
The focus here is the remaining structural work that most affects maintainability, extensibility, and debugging cost.
Current Implementation Status
The roadmap is now partially implemented.
Completed or materially advanced items:
- Phase 1.1 is functionally complete: source resolution, repository selection, and repository instance caching have been split into dedicated components while preserving the existing factory entry contract
- Phase 1.2 is partially complete: repository creation diagnostics now expose structured statuses and failure reasons, and several high-traffic call sites consume those diagnostics directly
- Phase 2.3 has started: Mihon and Aniyomi extension managers now share common runtime processing for load-result classification, duplicate-name language suffix handling, and package-change reload observation
- Phase 2.4 is materially advanced: reader translation and enhancement orchestration has been split out of
PageLoaderinto a dedicated enhancement controller, and reader UI paths now consume enhancement state and display-variant logic without routing those concerns back through the page-loading core - Phase 2.5 has started: sync and backup trigger paths now emit distinguishable
sync_flowandbackup_flowdiagnostics in key controllers and services
Still pending:
- broader extension lifecycle consolidation beyond manager-level shared runtime support
- reader core versus enhancement boundary extraction
- sync versus backup boundary cleanup beyond initial trigger diagnostics
- external extension platform model consolidation
- the remaining system-view documentation
Planning Principles
The prioritization in this roadmap follows four simple rules:
- reduce architectural pressure at the most central choke points first
- prefer changes that improve future changeability over changes that only improve terminology
- invest early in diagnostics for high-variance subsystems
- avoid large top-down platform rewrites before the current boundaries are clearer
Phase 1: Stabilize Core Structural Pressure
1. Separate source resolution, repository selection, and instance caching
Goal:
- reduce responsibility density in the current repository factory path
- make source access easier to reason about, test, and evolve
Why this is first:
- it sits on the main path for multi-source content access
- it is already a visible complexity hotspot
- later extension and platform work depends on this area becoming clearer
Expected benefits:
- lower cognitive load for contributors
- easier testing of source lookup and repository creation logic
- safer integration of additional source ecosystems
Main risks:
- behavior regressions in source resolution
- accidental cache semantics changes
Suggested implementation shape:
- introduce a
SourceResolverresponsible for source normalization and source identity resolution - introduce a
RepositoryProviderresponsible for choosing and constructing repository instances - introduce a
RepositoryInstanceCacheresponsible for lifecycle and cache policy - keep the existing entry contract stable during the refactor
Dependency notes:
- no major upstream dependency
- should be done before deeper extension-platform generalization
Definition of done:
- source resolution logic is no longer mixed with cache management
- repository selection can be tested independently
- cache behavior is explicit rather than incidental
2. Add observability to compatibility-heavy paths
Goal:
- reduce diagnosis cost in subsystems that fail due to external change or compatibility variance
Why this is first-phase work:
- it improves engineering throughput immediately
- it lowers the risk of subsequent refactors
- it is useful even if architecture cleanup takes multiple iterations
Expected benefits:
- faster debugging of source failures and extension issues
- better visibility into sync triggers and OCR fallbacks
- clearer reproduction data for user-reported issues
Main risks:
- noisy logging without clear structure
- exposing too much internal detail without consistent categorization
Suggested implementation shape:
- define structured log categories for source resolution, repository creation, extension loading, sync execution, OCR stages, and network compatibility
- add stable failure reasons where possible instead of only free-form text
- add debug toggles or diagnostics export paths for development and support use
Dependency notes:
- should start early and continue incrementally
- pairs well with phase-1 refactors because it makes regressions easier to spot
Definition of done:
- major compatibility flows have clear start, success, fallback, and failure diagnostics
- contributor debugging no longer depends on ad hoc log insertion
Phase 2: Reduce Redundant Orchestration and Protect Core Boundaries
3. Reduce Mihon and Aniyomi runtime duplication
Goal:
- stop parallel implementations from drifting and multiplying maintenance cost
Why this is phase 2:
- it is important, but easier to execute once source/repository responsibilities are clearer
Expected benefits:
- less duplicated orchestration logic
- fewer double-fixes for install, update, and state handling
- clearer platform surface for future extension ecosystems
Main risks:
- over-abstracting real ecosystem differences
- moving too much too quickly and making failures harder to localize
Suggested implementation shape:
- extract common lifecycle concerns first
- centralize shared state, install/update flow, and repository metadata handling
- keep ecosystem-specific adapters explicit
Dependency notes:
- depends on clearer source and repository responsibilities
- benefits from the observability work in phase 1
Definition of done:
- shared runtime concerns live in one place
- ecosystem-specific differences are isolated rather than duplicated everywhere
Current status:
- initial shared runtime support is now in place for manager-level load-result processing and package observer registration
- Mihon and Aniyomi managers now also share manager-level state-flow, source-cache, wrapped-source-cache, and reload orchestration through a common runtime helper
- extension install-browser screens now share installed-extension projection and available-state resolution helpers instead of duplicating ecosystem-specific installed-map shaping in multiple view-models
- batch update queue state and installer-result progression in the extension browser have been moved into a dedicated state machine instead of remaining embedded in the browser view-model
- legacy Mihon and Aniyomi installed-extension screens now share a dedicated installed-screen runtime for refresh, loading state, extension-count aggregation, and source-count aggregation, with focused unit coverage for initialization and state projection
- duplicate orchestration still exists deeper in the loader and lifecycle layers, so this phase is not complete yet
4. Separate reader core from reader enhancements
Goal:
- keep base reading correctness and performance independent from OCR, translation, overlays, and advanced analysis
Why this is phase 2:
- the reader is one of the strongest product areas and should be protected before more enhancement complexity accumulates
Expected benefits:
- stronger reader stability
- cleaner performance reasoning
- simpler fallback behavior when enhancement stages fail
Main risks:
- hidden coupling between enhancement features and current reader flow
- interface design that is either too narrow or too generic
Suggested implementation shape:
- define a reader core that remains functional without OCR or translation
- expose enhancement hooks with clear lifecycle boundaries
- treat enhancement output as optional augmentation, not a prerequisite for rendering correctness
Dependency notes:
- can be started in parallel with extension-runtime cleanup if ownership is kept separate
Definition of done:
- reader core is conceptually and operationally complete on its own
- enhancement failures do not compromise core reading flow
Current status:
PageLoaderno longer owns the full translation-enhancement orchestration path by itself- translation state, translation job lifecycle, and rendered-variant resolution now live in a dedicated enhancement controller
- reader view-model and pager view-model paths consume enhancement-controller APIs directly instead of using
PageLoaderas an enhancement proxy PageLoaderhas shed its temporary enhancement proxy methods and is now closer to a pure page-loading core- deeper reader/OCR boundary cleanup is still pending
5. Clarify sync and backup as separate systems
Goal:
- make system responsibilities, triggers, and user expectations explicit
Why this is phase 2:
- it is a broad clarity improvement with relatively low implementation risk
- it becomes easier once diagnostic surfaces are in place
Expected benefits:
- clearer contributor understanding
- cleaner product wording and settings structure
- reduced ambiguity in bug reports and future feature design
Main risks:
- terminology cleanup without actual ownership cleanup
- retaining overlapping triggers that still confuse behavior
Suggested implementation shape:
- define sync, backup, restore, and auto-restore separately in docs and code ownership
- map each trigger path to a clear system responsibility
- align settings and execution paths with that distinction over time
Dependency notes:
- does not require major architectural rewrites
- should inform subsequent documentation work
Definition of done:
- sync and backup are described, configured, and implemented as different systems
- major flows are no longer overloaded under one mental label
Current status:
- initial implementation work has started through explicit
sync_flowversusbackup_flowdiagnostics - key sync and backup services now share a typed background-flow diagnostics helper instead of scattering raw flow-name strings and hand-built
reason=...fragments - backup-related startup orchestration has started moving out of
MainActivityinto a dedicated coordinator, so periodical backup, WebDAV auto-sync upload observation, and delayed WebDAV auto-restore startup no longer share a single UI entry-point block - the new backup startup coordinator now has focused unit coverage for incomplete-config skip behavior and delayed auto-restore startup behavior
- terminology and ownership cleanup across settings, services, and docs still remain
Phase 3: Consolidate Platform Direction
6. Define an explicit external extension platform model
Goal:
- turn current extension-management capabilities into a more explicit platform contract
Why this is phase 3:
- it is strategically important, but should be built on cleaner runtime and repository foundations
Expected benefits:
- clearer model for trust, package state, repository catalogs, and runtime integration
- better basis for future UI and policy consistency
Main risks:
- creating a vocabulary layer that does not yet map well to implementation
- over-designing a platform before shared behavior is actually stable
Suggested implementation shape:
- define minimal core entities such as repository, package, install state, trust state, update state, and runtime handle
- use those entities to guide incremental cleanup rather than forcing a full rewrite
Dependency notes:
- depends on phase-1 and phase-2 cleanup for best results
Definition of done:
- extension concepts are represented consistently across docs, state handling, and runtime orchestration
7. Expand system-view documentation
Goal:
- preserve architectural intent and reduce communication overhead during continued growth
Why this is phase 3:
- docs are most valuable when they reflect clarified boundaries rather than aspirational ones
Expected benefits:
- better onboarding
- easier design review
- lower risk of architecture drift from contributor misunderstanding
Main risks:
- documentation going stale if written too early
- duplicate explanations across too many files
Suggested first documents:
- content access architecture
- extension runtime overview
- reader subsystem overview
- sync vs backup boundary explanation
Dependency notes:
- should start after or alongside the architecture cleanup it describes
Definition of done:
- key subsystem boundaries are documented in dedicated system-view pages
- architectural intent is discoverable without reading only the code
Phase 4: Long-Term Convergence
8. Formalize the content-platform layer incrementally
Goal:
- let Kototoro's long-term architecture reflect its real product center: unified content access and consumption
Why this is long-term:
- the direction is already correct
- the remaining work is to converge safely rather than to impose a premature framework
Expected benefits:
- more coherent platform vocabulary
- better alignment across source access, content kinds, and consumption entry contracts
Main risks:
- introducing abstractions before there are enough stable use cases
- turning a useful architectural direction into a large speculative rewrite
Suggested implementation shape:
- evolve the vocabulary gradually
- introduce abstractions only when at least two or more real subsystems need them
- let earlier refactors reveal the right seams
Dependency notes:
- depends on the previous phases producing clearer boundaries
Definition of done:
- content-platform concepts emerge from real shared behavior rather than top-down speculation
Recommended Sequence
The practical execution order should be:
- separate source resolution, repository selection, and caching
- add observability across compatibility-heavy paths
- reduce Mihon and Aniyomi runtime duplication
- separate reader core from reader enhancements
- clarify sync and backup boundaries
- define the external extension platform model
- expand system-view architecture documentation
- continue long-term convergence toward a content-platform layer
Suggested Work Breakdown Strategy
To keep the roadmap aligned with KISS, DRY, SOLID, and YAGNI, implementation should follow these constraints:
- prefer extracting one responsibility at a time over broad subsystem rewrites
- add tests around current behavior before changing high-traffic paths where possible
- do not introduce generic platform abstractions until at least two concrete callers require them
- keep new interfaces small and role-focused
- treat documentation updates as part of definition-of-done for boundary-setting work
For a task-level decomposition into epics and issues, see the Epics and Issue Breakdown section below.
For the UI improvement workstream, use this document as the entry point:
ui_improvement.md: source design proposal, UI execution tasks, and implementation priority.
Current UI workstream status as of 2026-03-19:
- Home navigation integration and default-home startup path are complete
- the first dashboard-style Home screen is materially complete and backed by real reading, library, source, tracking-site, and sync summary data
- Explore filters have been converted from a horizontal scroll layout to a two-row fixed layout
- shared source-tag support now includes JavaScript sources and icon coverage for the current UI path
- tracking-site discovery abstractions have been added so future Discover and details-page work does not depend directly on a Bangumi-only implementation
Success Criteria
This roadmap is succeeding if the project becomes easier to change in the following ways:
- new source ecosystems can be added with fewer edits to central orchestration code
- extension-management changes do not require duplicated logic across parallel managers
- reader enhancements can evolve without destabilizing basic reading
- sync and backup bugs are easier to classify and reason about
- compatibility-heavy failures are diagnosable without invasive manual debugging
- new contributors can identify subsystem boundaries from docs and code structure more quickly
How to Use This Document
Use this document as a planning template for:
- creating epics
- splitting implementation work into smaller issues
- identifying dependencies and safe parallelization opportunities
- defining minimal acceptance criteria for each work item
The goal is not to predict every implementation detail in advance. The goal is to make sure each work item is small enough to execute safely and clear enough to review.
Planning Rules
When converting these items into real issues, keep the following constraints:
- prefer behavior-preserving refactors before semantic changes
- keep each issue focused on one architectural responsibility
- do not mix diagnostics work with broad behavior rewrites unless the behavior change is required
- require tests or verification notes for high-traffic paths
- prefer additive seams before invasive replacement
Epic A: Repository Factory Decomposition
Objective
Decompose the current repository factory path into smaller responsibilities so source access becomes easier to test, extend, and debug.
Status
Substantially complete.
Implemented outcomes:
- source resolution, repository selection, and repository instance caching have been extracted into dedicated components
- the legacy repository factory entry point now behaves as a thin facade over the new implementation
- characterization tests and structured diagnostics cover the main repository creation path
Why this epic exists
- this is the main architectural choke point in multi-source content access
- it currently mixes resolution, selection, construction, and caching concerns
- later source and extension work becomes riskier if this area remains dense
Suggested issues
A1. Document current repository creation flow
Goal:
- capture the current execution path before refactoring
Deliverables:
- a short design note or inline architecture comment describing the current source-to-repository flow
- a list of current input types, branches, and cache behaviors
Acceptance criteria:
- contributors can identify where source normalization, repository selection, and caching currently happen
Parallelization:
- should happen first
A2. Add characterization tests for repository resolution and cache behavior
Goal:
- protect current behavior before structural extraction
Deliverables:
- tests covering representative source types
- tests covering repository cache reuse behavior
Acceptance criteria:
- the existing behavior is exercised by tests before decomposition starts
Parallelization:
- can start after A1
A3. Extract SourceResolver
Goal:
- isolate source normalization and source identity handling
Deliverables:
- a dedicated resolver abstraction
- migration of current resolution branches into the resolver
Acceptance criteria:
- repository construction no longer owns source normalization logic
- resolver behavior is testable independently
Parallelization:
- depends on A2
A4. Extract RepositoryProvider
Goal:
- isolate repository selection and instance construction
Deliverables:
- a provider abstraction responsible for mapping resolved source information to repository implementations
Acceptance criteria:
- selection and construction logic is removed from the old central factory path
Parallelization:
- depends on A3
A5. Extract RepositoryInstanceCache
Goal:
- make repository lifecycle and reuse policy explicit
Deliverables:
- dedicated cache component
- explicit cache key and invalidation policy
Acceptance criteria:
- cache behavior is no longer implicit inside orchestration code
- cache behavior can be explained and tested directly
Parallelization:
- depends on A4
A6. Collapse old orchestration entry point into a thin facade
Goal:
- preserve external behavior while reducing internal responsibility density
Deliverables:
- the previous central entry point remains as a compatibility facade or is reduced to minimal coordination
Acceptance criteria:
- the public call path remains stable
- core responsibilities now live in dedicated components
Parallelization:
- depends on A5
Epic B: Diagnostics and Observability Foundation
Objective
Create a minimal but structured diagnostics surface for compatibility-heavy subsystems.
Status
In progress.
Implemented outcomes:
- structured repository creation diagnostics now include resolution status, provider status, cache status, candidate providers, attempted providers, resolution trace, and classified failure reasons
- diagnostics are consumed by content link resolution, exception resolution, download, page loading, and content page fetching flows
- extension manager load flows now emit more structured start, completion, error, and untrusted-package logs
- sync and backup entry points now emit distinguishable flow-prefixed diagnostics on key trigger paths
Why this epic exists
- current and future failures often come from external change
- later refactors will be significantly safer with better diagnostics
Suggested issues
B1. Define diagnostic categories and logging conventions
Goal:
- standardize how compatibility-heavy paths report state and failure
Deliverables:
- a small internal convention for categories such as source resolution, repository creation, extension loading, sync, OCR, and network compatibility
Acceptance criteria:
- contributors have one agreed pattern instead of ad hoc logs
Parallelization:
- can begin immediately
B2. Instrument source resolution and repository creation
Goal:
- make content-access failures observable
Deliverables:
- structured logs around resolver input, repository selection, fallback, and failure
Acceptance criteria:
- failures in source access are diagnosable without temporary local print-style logging
Parallelization:
- depends on B1
- should track Epic A progress
B3. Instrument extension loading and runtime state transitions
Goal:
- make extension lifecycle failures observable
Deliverables:
- diagnostics for discovery, load, install, update, and failure states
Acceptance criteria:
- extension-related failures have enough structured context to classify quickly
Parallelization:
- depends on B1
B4. Instrument OCR pipeline stage transitions and fallback decisions
Goal:
- expose where OCR or translation degrades or fails
Deliverables:
- diagnostics for stage start, fallback, partial completion, and error classification
Acceptance criteria:
- OCR failures can be localized to a pipeline stage rather than treated as generic reader issues
Parallelization:
- depends on B1
B5. Instrument sync and backup triggers separately
Goal:
- support the later boundary cleanup by making execution paths visible
Deliverables:
- diagnostics that clearly identify sync triggers versus backup or restore triggers
Acceptance criteria:
- major background flows can be classified from logs without source inspection
Parallelization:
- depends on B1
B6. Add a debug export or diagnostics collection path
Goal:
- make troubleshooting data easier to capture and share internally
Deliverables:
- a development or support-oriented export path for recent diagnostics
Acceptance criteria:
- useful debugging artifacts can be collected without patching the app locally
Parallelization:
- depends on at least B2 and one of B3, B4, or B5
Epic C: External Extension Runtime Consolidation
Objective
Reduce duplicated orchestration between Mihon and Aniyomi runtime management.
Status
Materially advanced, but not complete.
Implemented outcomes:
- manager-level load-result classification has been extracted into a shared runtime processor
- package-change reload observation has been extracted into a shared runtime helper
- duplicate language-display mapping for Mihon and Aniyomi source wrappers has been centralized
- manager-level extension state flows, source caches, wrapped-source caches, and reload orchestration have been consolidated into a shared runtime implementation
- extension browser and available-install screens now share installed-extension projection and available-state resolution helpers, reducing repeated install/update state shaping across view-models
- the extension-browser batch update queue and installer-result progression now run through a dedicated state machine instead of remaining inlined in the browser view-model
- Mihon and Aniyomi installed-extension management screens now share a dedicated screen runtime for loading, refresh, and aggregated installed/source counts, backed by unit tests
Remaining work:
- shared install and update orchestration
- shared extension state model beyond manager internals
- deeper loader/runtime consolidation
Suggested issues
C1. Map shared lifecycle responsibilities and ecosystem-specific differences
Goal:
- distinguish true duplication from justified divergence
Acceptance criteria:
- there is a clear list of shared flows versus adapter-only differences
C2. Extract shared extension state model
Goal:
- remove repeated handling of install/update/availability state
Acceptance criteria:
- common state concepts are represented once
C3. Extract shared install and update orchestration
Goal:
- centralize repeated workflow control
Acceptance criteria:
- install/update flow logic no longer has duplicated control paths in both managers
C4. Isolate ecosystem-specific adapters
Goal:
- keep compatibility details explicit while reducing spread
Acceptance criteria:
- ecosystem-specific differences are confined to adapter boundaries
C5. Verify no behavior drift in browser and management UI flows
Goal:
- ensure consolidation does not silently change user-visible behavior
Acceptance criteria:
- representative extension management flows remain consistent
Epic D: Reader Core and Enhancement Boundary
Objective
Protect reader correctness and performance from enhancement-system complexity.
Status
Started.
Implemented outcomes:
- translation enhancement orchestration has started moving out of
PageLoader.kt - a dedicated
ReaderPageEnhancementController.ktnow owns translation job lifecycle, enhancement state emission, and translated-variant resolution - reader-facing view-models and pager holders now consume enhancement-controller APIs directly instead of calling translation-related proxy methods on
PageLoader.kt - translation-related proxy methods have been removed from
PageLoader.kt, reducing its responsibility back toward page loading and cache coordination
Remaining work:
- continue separating OCR and translation concerns from page loading internals
- narrow the remaining contracts between reader core loading and enhancement execution
- add targeted verification for fallback and regression-sensitive reader flows
Suggested issues
D1. Document current reader-to-enhancement coupling points
Goal:
- identify where OCR, translation, overlays, or analysis currently affect core reading flow
Acceptance criteria:
- coupling points are explicitly listed before refactoring begins
D2. Define a minimal reader core contract
Goal:
- establish what must remain functional without enhancement systems
Acceptance criteria:
- there is a concrete definition of reader-core responsibilities
D3. Introduce enhancement hook boundaries
Goal:
- give OCR and related systems stable integration points
Acceptance criteria:
- enhancement systems attach through explicit hooks rather than scattered direct dependencies
D4. Make fallback behavior explicit
Goal:
- ensure enhancement failure cannot break reading correctness
Acceptance criteria:
- failures degrade gracefully and predictably
D5. Add targeted verification for performance and regression risk
Goal:
- protect reading smoothness while moving boundaries
Acceptance criteria:
- critical reader flows are verified after boundary changes
Epic E: Sync and Backup Boundary Clarification
Objective
Separate sync, backup, restore, and auto-restore as distinct systems in both language and implementation ownership.
Status
Started.
Implemented outcomes:
- key background paths now log
sync_flowandbackup_flowseparately - periodic backup, WebDAV auto-sync upload, and WebDAV auto-restore now produce distinct diagnostic prefixes
- sync and backup logging now use a shared typed flow helper, which reduces stringly-typed flow names and standardizes
reasonplus key-value detail formatting across the main services - backup startup orchestration has begun moving out of
MainActivity.ktintoBackupStartupCoordinator.kt, which gives periodical backup, WebDAV auto-sync upload observation, and WebDAV auto-restore separate ownership at app startup BackupStartupCoordinatorTest.ktnow covers incomplete-config skip behavior and delayed auto-restore scheduling
Remaining work:
- align naming in settings and entry points
- map ownership more explicitly across sync, backup, restore, and auto-restore paths
- add dedicated system-view documentation after the code boundary is clearer
Suggested issues
E1. Audit current trigger paths and user-facing terminology
Goal:
- inventory where the project currently overloads the idea of sync
Acceptance criteria:
- trigger paths and terms are mapped in one place
E2. Define target ownership and terminology
Goal:
- establish a stable conceptual model before cleanup
Acceptance criteria:
- each flow has a distinct name, purpose, and owner
E3. Align diagnostics with the new boundary
Goal:
- make logs reflect the clarified system distinction
Acceptance criteria:
- sync-related and backup-related execution paths are distinguishable
E4. Update settings and entry points where naming is misleading
Goal:
- reduce user and contributor confusion
Acceptance criteria:
- user-visible and contributor-visible naming no longer overloads one concept
E5. Add dedicated system-view documentation
Goal:
- prevent the ambiguity from returning later
Acceptance criteria:
- a dedicated doc explains the sync-versus-backup boundary clearly
Epic F: External Extension Platform Model
Objective
Create a minimal explicit platform model for external extension management.
Suggested issues
F1. Define core extension platform entities
Goal:
- formalize repository, package, trust, install state, update state, and runtime handle concepts
Acceptance criteria:
- platform terms are stable across docs and code discussions
F2. Map current state handling to the target model
Goal:
- identify mismatches and duplication
Acceptance criteria:
- current code paths can be explained using the target entity model
F3. Introduce the model in shared orchestration code
Goal:
- use the explicit model to simplify coordination logic
Acceptance criteria:
- shared flows consume the platform model instead of ad hoc parallel structures
F4. Align UI and repository metadata handling with the model
Goal:
- reduce conceptual drift between backend and UI behavior
Acceptance criteria:
- state shown in extension UI matches the platform model consistently
Epic G: System-View Documentation Expansion
Objective
Add architectural reference pages that explain stable subsystem boundaries.
Suggested issues
G1. Write content access architecture overview
Acceptance criteria:
- source resolution, repository selection, and caching responsibilities are documented
G2. Write extension runtime overview
Acceptance criteria:
- extension platform and runtime responsibilities are documented clearly
G3. Write reader subsystem overview
Acceptance criteria:
- reader core and enhancement boundaries are documented
G4. Write sync versus backup boundary overview
Acceptance criteria:
- the distinction is documented in a dedicated system-view page
Epic H: Long-Term Content Platform Convergence
Objective
Guide long-term abstraction work without forcing premature platformization.
Suggested issues
H1. Identify repeated cross-content concepts from real implementations
Acceptance criteria:
- proposed shared abstractions are backed by at least two concrete use cases
H2. Introduce shared vocabulary only where reuse is proven
Acceptance criteria:
- new abstractions eliminate real duplication rather than merely renaming concepts
H3. Periodically review whether platform concepts are stabilizing
Acceptance criteria:
- abstraction decisions are revisited using actual implementation pressure, not speculation
Suggested Dependency Graph
Use this as the default dependency order:
- Epic A starts first
- Epic B starts immediately and continues alongside later work
- Epic C depends on progress in Epic A and benefits from Epic B
- Epic D can start after initial diagnostics and current-boundary mapping
- Epic E can start after diagnostic categories exist
- Epic F should follow meaningful progress in Epics A and C
- Epic G should follow the subsystem clarifications it documents
- Epic H is ongoing and should remain incremental
Suggested Parallel Work Streams
The safest parallelization pattern is:
- Stream 1: Epic A and the source/repository diagnostics from Epic B
- Stream 2: OCR and reader-boundary diagnostics, then Epic D
- Stream 3: sync/backup trigger diagnostics, then Epic E
- Stream 4: extension-runtime diagnostics, then Epic C
This keeps ownership reasonably separated while allowing shared diagnostic conventions to emerge early.
Suggested Milestones
Milestone 1: Core access path is safer to change
Includes:
- A1 to A6
- B1
- B2
Milestone 2: Compatibility failures are diagnosable
Includes:
- B3 to B6
- initial outputs from E1
- initial outputs from D1
Milestone 3: Parallel runtime duplication is under control
Includes:
- C1 to C5
- F1
Milestone 4: Reader and background systems have clearer boundaries
Includes:
- D2 to D5
- E2 to E5
Milestone 5: Platform model and docs catch up to implementation
Includes:
- F2 to F4
- G1 to G4
- H1 to H3 as needed
Definition of Planning Success
This issue breakdown is working if:
- epics can be assigned without large overlaps in ownership
- issues are small enough to review independently
- acceptance criteria focus on boundaries and behavior rather than vague cleanup language
- the roadmap remains adaptable without losing architectural intent