Skip to content

Maintainability: characterize and extract shared backend/system-service cores #185

Description

@turinglambdaai

Outcome

Make the pre-1.0 architecture small, teachable, and internally consistent. Compatibility is evidence to consider, not a reason to preserve a weak boundary: an intentional breaking change is acceptable when the replacement is materially clearer and ships with migration notes.

Acceptance criteria

  • Add characterization tests around Windows/Linux backend lifecycle, framing, cancellation, shutdown, and error translation.
  • Extract transport-neutral C++ backend behavior shared by Windows and Linux, or replace the current split if a cleaner design is demonstrated.
  • Keep WinUI 3, SwiftUI/AppKit, GTK4/Wayland, process transport, and platform policy in explicit native adapters.
  • Split Linux system services into focused single-instance, notifications/tray, autostart, secure-storage, and crash/shutdown units.
  • Split or redesign the large Racket backend along stable responsibilities with a small documented public surface.
  • Remove accidental APIs and duplicate concepts before 1.0; document every intentional break and its migration path.
  • Demonstrate no unexplained protocol-golden, fuzz, package, or roundtrip regression.
  • Document the resulting module boundaries for readers learning the architecture.

Guardrails

  • RVT1 changes require a written protocol rationale, cross-runtime golden updates, and migration evidence; refactoring alone is not a reason to change the wire format.
  • Do not introduce a cross-platform UI DSL or hide native framework capabilities.
  • Prefer a sequence of reviewable changes over a wholesale rewrite, but do not preserve pre-1.0 debt merely to minimize a diff.

Activity

  1. turinglambdaai commented on Oct 12, 2026

    @turinglambdaai
    OwnerAuthor

    Acceptance criteria are now satisfied by the reviewable sequence that landed:

    The final #201 base passed the protocol/golden/fuzz, embedded roundtrip, package/architecture, Linux installer lifecycle, Kotlin, Swift, and core Racket matrix. RVT1 did not change. The reader-facing module boundaries are documented, and the pre-1.0 public-surface break in #194 has migration notes.

    Closing as complete. Further cross-project contract adoption remains tracked separately in #196.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions