You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(context "Incorrect max_restarts/max_seconds causes restart storms or premature shutdown")
31
+
(decision "Compute restart intensity from SLA definitions: high-availability services get aggressive budgets, best-effort services get conservative ones")
32
+
(consequences "Self-tuning fault tolerance without manual parameter guessing"))
33
+
34
+
(adr "005-rsr-template"
23
35
(status "accepted")
24
36
(context "Need consistent project structure across 29+ -iser repos")
25
37
(decision "All repos cloned from rsr-template-repo with full CI/CD and governance")
26
38
(consequences "17 workflows, SECURITY.md, CONTRIBUTING, bot directives from day one")))
27
39
28
40
(development-practices
29
-
(language "Rust" (purpose "CLI and orchestration"))
30
-
(language "Idris2" (purpose "ABI formal proofs"))
31
-
(language "Zig" (purpose "FFI C-ABI bridge"))
41
+
(language "Rust" (purpose "CLI orchestration and manifest parsing"))
42
+
(language "Idris2" (purpose "ABI formal proofs for supervision tree invariants"))
43
+
(language "Zig" (purpose "FFI C-ABI bridge for Erlang NIF generation"))
44
+
(language "Elixir" (purpose "Target language — generated code"))
32
45
(build-tool "cargo")
33
46
(ci "GitHub Actions (17 workflows)"))
34
47
35
48
(design-rationale
36
49
(principle "Manifest-driven"
37
-
(explanation "User intent captured in TOML; all generation is deterministic and reproducible"))
50
+
(explanation "User intent captured in otpiser.toml; supervision tree generation is deterministic and reproducible"))
38
51
(principle "Formally verified bridges"
39
-
(explanation "Idris2 dependent types prove interface correctness at compile time"))
52
+
(explanation "Idris2 dependent types prove supervision tree well-formedness at compile time"))
40
53
(principle "Zero target language exposure"
41
-
(explanation "Users never write Chapel/Julia/Futhark/etc. — the -iser handles everything"))))
54
+
(explanation "Users never write Elixir/Erlang — otpiser generates everything including Application, Supervisor, GenServer, tests, and mix.exs"))
55
+
(principle "Let it crash, correctly"
56
+
(explanation "OTP's 'let it crash' philosophy is correct but easy to misconfigure — otpiser ensures the crash recovery strategy matches service semantics"))))
0 commit comments