Architecture Decisions

Key design decisions with context, alternatives considered, and consequences.

#DecisionStatus
0001No Compound Assignment in BeamtalkImplemented (2026-02-08)
0002Use Erlang Comparison Operators DirectlyImplemented (2026-02-08)
0003Keep Core Erlang as Primary Code Generation TargetImplemented (2026-02-08)
0004Persistent Workspace ManagementImplemented (2026-02-15)
0005BEAM Object Model - Pragmatic Hybrid ApproachImplemented (2026-02-08)
0006Unified Method Dispatch with Hierarchy WalkingImplemented (2026-02-08)
0007Compilable Standard Library with Primitive InjectionImplemented (2026-02-07)
0008Doc Comments and API DocumentationImplemented (2026-02-15)
0009OTP Application Structure — Split Workspace from RuntimeImplemented (2026-02-07)
0010Global Objects and Singleton DispatchImplemented (2026-02-15). Phase 1 gen_server deprecation in progress (BT-1093).
0011Robustness Testing — Layered Fuzzing and Error QualityImplemented (2026-02-15)
0012Collection Literal Syntax and the `#` Data Literal SystemImplemented (2026-02-15)
0013Class Variables, Class-Side Methods, and Instantiation ProtocolImplemented (2026-02-15)
0014Beamtalk Test Framework — Native Unit Tests and CLI Integration TestsImplemented (2026-02-15)
0015Signal-Time Exception Objects and Error Class HierarchyImplemented (2026-02-15)
0016Universal Module Naming with @ SeparatorAccepted (2026-02-10), Implemented (BT-454)
0017Browser Connectivity to Running WorkspacesImplemented (Phases 0–2, 2026-02-17); Phase 3 In Progress (2026-06-06). Phase-1 vanilla-JS browser frontend **removed** (2026-06-06, BT-2415)
0018Document Tree Code Generation (Wadler-Lindig Pretty Printer)Implemented (2026-02-15)
0019Singleton Access via Class VariablesImplemented (2026-02-15)
0020Connection Security — mTLS, Proxies, and Network OverlaysImplemented (2026-02-18)
0021Stream — Lazy Pipeline for Value-Side DataImplemented (2026-02-15), Revised (2026-03-05)
0022Embedded Compiler via OTP Port (with NIF option)Implemented (2026-02-15)
0023String Interpolation Syntax and CompilationImplemented (2026-02-17)
0024Static-First, Live-Augmented IDE ToolingImplemented (Phase 1, 2026-02-17)
0025Gradual Typing and ProtocolsImplemented (Phases 1–2, 2026-02-15)
0026Package Definition and Project ManifestImplemented (2026-02-17)
0027Cross-Platform SupportImplemented (2026-02-17)
0028BEAM Interop StrategyImplemented (2026-02-18)
0029Streaming Eval OutputImplemented (2026-02-18)
0030cargo-dist Evaluation for Release PackagingRejected (2026-02-18)
0031Flat Namespace for v0.1Superseded by [ADR 0070](0070-package-namespaces-and-dependencies.md) (2026-03-24)
0032Early Class Protocol — Behaviour and Class in Beamtalk StdlibImplemented (2026-02-24)
0033Runtime-Embedded Documentation on Class and CompiledMethodImplemented (2026-02-24)
0034Stdlib Self-Hosting — Moving Logic from Erlang to BeamtalkImplemented (2026-02-24)
0035Rename Instance Variable Reflection API from instVar to fieldImplemented (2026-02-24)
0036Full Metaclass TowerImplemented (2026-02-24)
0037Collection Class Hierarchy — Shallow Abstract Layer with Minimal Primitive SurfaceImplemented (2026-02-24)
0038`subclass:` Grammar Desugaring to ClassBuilder ProtocolAccepted | Implemented (2026-02-24)
0039Syntax Pragmatism vs SmalltalkImplemented (2026-02-24)
0040Workspace-Native REPL Commands, Facade/Dictionary Split, and Class-Based ReloadAccepted | Implemented (2026-02-24)
0041Universal State-Threading Block ProtocolImplemented (2026-02-24)
0042Immutable Value Objects and Actor-Only Mutable StateAccepted | Implemented (2026-02-26)
0043Sync-by-Default Actor MessagingAccepted | Implemented (2026-02-26)
0044Comments as First-Class AST NodesAccepted | Implemented 2026-02-28
0045REPL Expression-Level Completion via Gradual Type InferenceAccepted | Implemented 2026-03-01
0046VSCode Live Workspace SidebarAccepted | Implemented (2026-03-02)
0047Return Type Arrow Token DisambiguationImplemented (2026-03-06)
0048Class-Side Method SyntaxDeferred (2026-03-15)
0049Remove Method-Level `sealed` — Infer Protection from `@primitive`/`@intrinsic`Deferred (2026-03-15)
0050Incremental Compiler ClassHierarchy via BEAM Metadata StreamingAccepted | Implemented (2026-03-04)
0051Subprocess Execution — System Commands and Interactive Subprocess ActorAccepted | Implemented (2026-03-05)
0052Recursive Descent Parser with Pratt Parsing for Binary OperatorsAccepted | Implemented (2026-03-05)
0053Double-Colon Type Annotation SyntaxImplemented (2026-03-05)
0054Communication ProtocolsImplemented (2026-03-05)
0055Erlang-Backed Class Authoring ProtocolImplemented (2026-03-06)
0056Native Erlang-Backed Actors — `native:` and `self delegate`Accepted (2026-03-07)
0057Authoritative Superclass Source for Abstract Stdlib ClassesImplemented (2026-03-07)
0058Platform Security ModelAccepted (policy, 2026-03-07)
0059Supervision Tree SyntaxImplemented (2026-03-07)
0060Result Type — Hybrid Error Handling for Expected FailuresImplemented (2026-03-08)
0061Program Entry Points and Run LifecycleImplemented (2026-03-10)
0062Bundled Example Corpus and Search Tool for MCP ServerImplemented (2026-03-15)
0063Remove File Path SandboxImplemented (2026-03-16)
0064Runtime Logging Control and Observability APIImplemented (2026-03-17)
0065Complete OTP Primitives for Actor Lifecycle and SupervisionImplemented (2026-03-17)
0066Open Class Extension Methods (`>>` Syntax)Implemented (2026-03-18)
0067Separate state:/field: Keywords by Class KindImplemented (2026-03-18)
0068Parametric Types and ProtocolsAccepted | Implemented (2026-03-20)
0069Actor Observability and TracingAccepted | Implemented (2026-03-21)
0070Package Namespaces and DependenciesImplemented (2026-03-24). Supersedes [ADR 0031](0031-flat-namespace-for-v01.md) (Flat Namespace for v0.1).
0071Class Visibility — `internal` Modifier for Package-Scoped Access ControlImplemented (2026-03-28)
0072User Erlang Sources in Beamtalk PackagesImplemented (2026-03-29)
0073Package Distribution and DiscoveryImplemented (Phase 1, 2026-03-31)
0074Deferred MetaprogrammingAccepted (deferral, 2026-04-01)
0075Auto-Extract Quality AssessmentUnknown
0075Erlang FFI Type DefinitionsImplemented (Phase 1, 2026-04-02; Phase 2 deferred)
0076Convert Erlang ok/error Tuples to Result at FFI BoundaryImplemented (2026-04-03)
0077Type Coverage VisibilityImplemented (2026-04-05)
0078Actor Initialize InheritanceImplemented (2026-04-12)
0079Named Actor RegistrationImplemented (2026-04-15)
0080Migrate Supervisor Lifecycle to ResultImplemented (2026-04-16)
0081First-Class Session Object — Walkable Binding LayersAccepted (2026-06-01), Implemented
0082Method-Level Edit and Save in the Live WorkspaceAccepted (2026-05-17)
0083Metaclass-Aware Type InferenceImplemented (2026-05-23)
0084Class-Side Runtime Method Installation and Fun DispatchAccepted (in progress, 2026-05-24)
0085Editor Live-Image RepresentationProposed (2026-05-24)
0086Make String a Subclass of BinaryImplemented (2026-03-21)
0087Maintained Selector→Sites Cross-Reference Index for SystemNavigationImplemented (2026-06-03)
0088cerl-ETF Wire Mechanism + TimingUnknown
0088Direct Core Erlang AST Emission via ETF**Phases 1–4: Rejected (2026-05-28).** Phase 0c measured the
0088Codegen Shrinkage MeasurementUnknown
0088Typed-Document-Leaves ComparisonUnknown
0089Typed Document Leaves for Core Erlang Codegen**Implemented (2026-05-31).** Long-term fix for the BT-875 recurrence
0090Canonical Array Representation for O(log n) `at:put:`Implemented (2026-06-25)
0091Connection Security for Remote Workspace Access — Phoenix as Authenticated FrontAccepted (2026-06-06), Implemented
0092Supervision Tree Introspection API (Runtime Query Surface)Implemented (2026-06-07)
0093Announcements — Typed Event Substrate (Runtime Bus + stdlib Veneer)Implemented (2026-06-08)
0094Object String Representation Protocols (printString / displayString / inspect)Implemented (2026-06-07)
0095Rich Navigable Inspector — Drillable, Live-Refreshing Object ViewsImplemented (2026-06-11)
0096System Browser Data Source — Class/Method Browse API for the LiveView IDEImplemented (2026-06-10)
0097Desktop Attach Client — One Front Node per WorkspaceProposed (2026-06-13)
0098Build Artifact Provenance and Version-Based Staleness InvalidationAccepted (2026-06-23), Implemented
0099CLI Application Story — Console, Arguments, Exit, and PackagingAccepted (2026-06-26)
0100Open-World Diagnostic Policy for Unresolved Selectors and ClassesProposed (2026-06-27)
0101Unified Erlang Interop — `native:` for Stateless Objects, Wrap-by-Default FFI, and a Clean `@primitive`/`@intrinsic`/`native:` SplitImplemented (2026-07-01)
0102Set-Theoretic Type Operators (Intersection and Negation) for Narrowing and Atom ExhaustivenessImplemented (Phases 1, 2, 4, 5, 2026-07-06)
0103Sendability Typing from Class KindsAccepted (2026-07-07)
0104Typed Actor Protocols — the Class Interface Is the ProtocolAccepted (2026-07-07)
0105Live Image Re-Checking on Hot ReloadProposed (2026-07-05)
0106Opt-In Asserted `match:` Exhaustiveness (`matchExhaustive:`)Implemented (2026-07-07)