33; ; Media-Type: application/meta+scheme
44
55(meta
6- (architecture-decisions ())
6+ (architecture-decisions
7+ (adr-001
8+ (title " Dual Implementation Strategy" )
9+ (status " accepted" )
10+ (date " 2024-10" )
11+ (context " Need both rapid prototyping and production performance" )
12+ (decision " Use OCaml for language theory, Rust for production runtime" )
13+ (consequences
14+ " Faster iteration on language design"
15+ " Production-grade performance"
16+ " Requires maintaining two codebases" ))
17+ (adr-002
18+ (title " Consent-First Design" )
19+ (status " accepted" )
20+ (date " 2024-10" )
21+ (context " Sensitive operations should require explicit permission" )
22+ (decision " Implement 'only if okay' gates for sensitive operations" )
23+ (consequences
24+ " Safer by default"
25+ " Self-documenting dangerous code paths"
26+ " Slight increase in verbosity" ))
27+ (adr-003
28+ (title " Human-Readable Syntax" )
29+ (status " accepted" )
30+ (date " 2024-10" )
31+ (context " Code should be readable by non-programmers" )
32+ (decision " Use English-like keywords: to, give back, remember, when" )
33+ (consequences
34+ " Lower barrier to entry"
35+ " More inclusive programming"
36+ " Slightly longer code" ))
37+ (adr-004
38+ (title " Units of Measure as First-Class" )
39+ (status " accepted" )
40+ (date " 2024-11" )
41+ (context " Unit-related bugs are common and dangerous" )
42+ (decision " Add 'measured in' syntax for compile-time unit checking" )
43+ (consequences
44+ " Prevents NASA-style unit bugs"
45+ " Self-documenting calculations"
46+ " Requires dimensional analysis system" )))
747
848 (development-practices
9- (code-style ())
49+ (code-style
50+ (rust " cargo fmt and clippy" )
51+ (ocaml " ocamlformat" )
52+ (documentation " AsciiDoc preferred" ))
1053 (security
11- (principle " Defense in depth" ))
12- (testing ())
54+ (principle " Defense in depth" )
55+ (consent-model " Explicit opt-in for sensitive operations" )
56+ (capability-system " Fine-grained permission control" ))
57+ (testing
58+ (unit " Per-component tests in tests/" )
59+ (integration " End-to-end language tests" )
60+ (fuzzing " Property-based testing for parser" ))
1361 (versioning " SemVer" )
14- (documentation " AsciiDoc" )
15- (branching " main for stable" ))
62+ (documentation " AsciiDoc for docs, docstrings for code " )
63+ (branching " main for stable, feature branches for development " ))
1664
17- (design-rationale ()))
65+ (design-rationale
66+ (why-consent-gates
67+ " Sensitive operations like file I/O, network access, and data deletion "
68+ " should require explicit permission. This prevents accidental damage "
69+ " and makes dangerous code paths visible." )
70+ (why-gratitude-blocks
71+ " Attribution is often lost in codebases. The 'thanks to' syntax makes "
72+ " it easy to acknowledge contributors inline where their work is used." )
73+ (why-emote-annotations
74+ " Code carries emotional context. A fix made under pressure differs from "
75+ " one made thoughtfully. @emote tags capture this for future readers." )
76+ (why-units-of-measure
77+ " The Mars Climate Orbiter was lost due to a unit conversion error. "
78+ " Compile-time dimensional analysis prevents these catastrophic bugs." )))
0 commit comments