Track future iOS portability seams for HermternalCore #31

Open
opened 2026-08-22 08:24:57 +00:00 by kayg · 0 comments
Owner

Goal

Track the portability seams required before a future iOS adapter can use HermternalCore. This is architecture work, not a present-tense breakage report.

Architecture rule

HermternalCore is the platform-neutral module. macOS and iOS are thin adapters. Capabilities plug in behind Foundation/domain-typed interfaces; Core must not depend on platform UI or an adapter's lifecycle.

Issue #14 already covers the performance harness and the initial Foundation-focused HermternalCore extraction/seams. This issue is the complementary iOS portability and capability contract; it should extend #14 rather than duplicate its extraction work.

Acceptance criteria

  • HermternalCore compiles for an iOS deployment target in CI or a scripted check without forcing the macOS executable target into the iOS package graph.
  • No default filesystem path derived from homeDirectoryForCurrentUser survives in Core.
  • Credential, cache, and log locations come from injected directories or standard FileManager URLs rather than literal macOS paths.
  • Interactive sign-in lives behind an auth capability; the loopback listener is one implementation of that capability, not an assumption made by Core. The capability contract states how an adapter handles app suspension and return from the external browser.
  • SQLite3 linkage is explicit, and FTS5 availability is proven on the supported iOS target; if it cannot be proven, the search capability is omitted rather than silently relying on unavailable FTS5 behavior.
  • Network transport lifecycle assumptions are stated. Reconnect-on-foreground, token revalidation, and other app lifecycle handling are adapter concerns, not implicit Core behavior.
  • Core public interfaces remain Foundation/domain-typed, with platform-shaped behavior represented by injected capability protocols.

This is not a blocker for current macOS work. No iOS app target exists yet; the iOS deployment compile check and adapter contracts are preparatory work for a future target.

## Goal Track the portability seams required before a future iOS adapter can use `HermternalCore`. This is architecture work, not a present-tense breakage report. ## Architecture rule `HermternalCore` is the platform-neutral module. macOS and iOS are thin adapters. Capabilities plug in behind Foundation/domain-typed interfaces; Core must not depend on platform UI or an adapter's lifecycle. Issue #14 already covers the performance harness and the initial Foundation-focused `HermternalCore` extraction/seams. This issue is the complementary iOS portability and capability contract; it should extend #14 rather than duplicate its extraction work. ## Acceptance criteria - `HermternalCore` compiles for an iOS deployment target in CI or a scripted check without forcing the macOS executable target into the iOS package graph. - No default filesystem path derived from `homeDirectoryForCurrentUser` survives in Core. - Credential, cache, and log locations come from injected directories or standard `FileManager` URLs rather than literal macOS paths. - Interactive sign-in lives behind an auth capability; the loopback listener is one implementation of that capability, not an assumption made by Core. The capability contract states how an adapter handles app suspension and return from the external browser. - SQLite3 linkage is explicit, and FTS5 availability is proven on the supported iOS target; if it cannot be proven, the search capability is omitted rather than silently relying on unavailable FTS5 behavior. - Network transport lifecycle assumptions are stated. Reconnect-on-foreground, token revalidation, and other app lifecycle handling are adapter concerns, not implicit Core behavior. - Core public interfaces remain Foundation/domain-typed, with platform-shaped behavior represented by injected capability protocols. This is not a blocker for current macOS work. No iOS app target exists yet; the iOS deployment compile check and adapter contracts are preparatory work for a future target.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/hermternal-apple#31
No description provided.