Architectural Invariant Design: Kotlin 2.1 Swift Direct-Export Memory Ownership & Dual-Runtime Boundary Standard
Kotlin 2.1 Swift Direct-Export Memory Ownership & Dual-Runtime Boundary Standard defines an industrial-grade behavioral standard for mobile engineering. Governs inter-runtime reference topologies across Swift direct-export boundaries in Kotlin Multiplatform 2.1. Prevents uncollected dual-runtime retain cycles between Swift ARC and Kotlin/Native Concurrent Mark-Sweep GC by prohibiting cross-boundary bidirectional strong handles and mandating explicit lifecycle tokens. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.
Hazard Analysis: What Breaks Without This Rule
The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:
| Failure Mode | AI Symptom (The Anti-Pattern) | Severity | Production Impact & Remedy |
|---|---|---|---|
| AI Hallucination & Deprecation Drift | Cross-Runtime Retain Cycles via Closures Capturing Swift Self Passing to Kotlin GC Roots | Critical | Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production. Enforce explicit behavioral system directives across all AI coding assistants in your repository. |
| Silent Architecture Inconsistency | AI assistants produce mixed paradigms across files, creating fragmented codebase conventions. | Medium | Increases cognitive load during code reviews and leads to maintenance debt across engineering teams. Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails. |
Step-by-Step Production Directives
Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:
Engineers MUST ALWAYS treat Swift ARC and Kotlin/Native GC as strictly disjoint memory domains lacking cross-boundary cycle detection.
Engineers MUST ALWAYS treat Swift ARC and Kotlin/Native GC as strictly disjoint memory domains lacking cross-boundary cycle detection.
Engineers MUST NOT allow a Swift instance holding a direct-exported Kotlin object to pass escaping closures or callbacks into Kotlin that strongly capture `self`.
Engineers MUST NOT allow a Swift instance holding a direct-exported Kotlin object to pass escaping closures or callbacks into Kotlin that strongly capture `self`.
Code MUST pass Swift closures capturing dependencies with explicit `[weak self]` or `[unowned self]` (when lifespan is strictly bounded) across any direct Kotlin export boundary.
Code MUST pass Swift closures capturing dependencies with explicit `[weak self]` or `[unowned self]` (when lifespan is strictly bounded) across any direct Kotlin export boundary.
Services exposing Kotlin StateFlow, SharedFlow, or Coroutine streams MUST return a deterministic `DisposableHandle` or `CancellationHandle` consumed by Swift lifecycle coordinators.
Services exposing Kotlin StateFlow, SharedFlow, or Coroutine streams MUST return a deterministic `DisposableHandle` or `CancellationHandle` consumed by Swift lifecycle coordinators.
Components NEVER store direct Swift closures or interface implementations in Kotlin-side long-lived singletons or top-level GC roots without explicit Kotlin `WeakReference` encapsulation.
Components NEVER store direct Swift closures or interface implementations in Kotlin-side long-lived singletons or top-level GC roots without explicit Kotlin `WeakReference` encapsulation.
Frequently Asked Technical Questions
Common questions developers face when configuring AI coding assistants for this stack:
Q:Why is Kotlin 2.1 Swift Direct-Export Memory Ownership & Dual-Runtime Boundary Standard critical for AI coding assistants?
Governs inter-runtime reference topologies across Swift direct-export boundaries in Kotlin Multiplatform 2.1. Prevents uncollected dual-runtime retain cycles between Swift ARC and Kotlin/Native Concurrent Mark-Sweep GC by prohibiting cross-boundary bidirectional strong handles and mandating explicit lifecycle tokens. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.
Q:How does adopting this rule prevent AI hallucinations?
This rule explicitly declares what the AI must avoid (Cross-Runtime Retain Cycles via Closures Capturing Swift Self Passing to Kotlin GC Roots) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.
Q:Which AI coding environments are supported?
This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).
Q:Can I combine this rule with other technology stacks?
Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.