/ META.scm
META.scm
 1  ; SPDX-License-Identifier: AGPL-3.0-or-later
 2  ; META.scm - Meta-level information for bitfuckit
 3  
 4  (meta
 5    (version "1.0.0")
 6    (schema-version "1.0")
 7    (media-type "application/meta+scheme")
 8  
 9    (architecture-decisions
10      (adr-001
11        (title "Use Ada for CLI implementation")
12        (status accepted)
13        (date "2025-12-25")
14        (context "Need a reliable CLI tool for Bitbucket. Options: Rust, Go, Python, Ada.")
15        (decision "Use Ada/SPARK for implementation due to:
16          - Strong type safety and compile-time guarantees
17          - SPARK subset enables formal verification
18          - Native compilation without runtime dependencies
19          - Excellent for safety-critical and reliable software
20          - Aligns with RSR language policy")
21        (consequences
22          (positive "High reliability, formal verification possible, no runtime deps")
23          (negative "Smaller ecosystem than Rust, fewer available libraries")))
24  
25      (adr-002
26        (title "Use curl subprocess for HTTP")
27        (status accepted)
28        (date "2025-12-25")
29        (context "Need to make HTTP requests to Bitbucket API. Options: AWS.Client, libcurl bindings, curl subprocess.")
30        (decision "Use curl subprocess via GNAT.OS_Lib.Spawn")
31        (consequences
32          (positive "Simple, portable, no additional dependencies")
33          (negative "Subprocess overhead, less control over HTTP details")))
34  
35      (adr-003
36        (title "SPARK Mode for TUI specification")
37        (status accepted)
38        (date "2025-12-25")
39        (context "TUI module has clear interface that could benefit from formal verification.")
40        (decision "Enable SPARK_Mode for tui.ads specification, disable for body due to I/O")
41        (consequences
42          (positive "Interface contracts formally verified")
43          (negative "Body cannot be verified due to I/O operations"))))
44  
45    (development-practices
46      (code-style "Ada 2012 style guide, 3-space indentation")
47      (security "Credentials stored with user-only permissions, no secrets in code")
48      (testing "Manual testing for now, automated tests planned")
49      (versioning "Semantic versioning (semver)")
50      (documentation "AsciiDoc for docs, Ada comments for code")
51      (branching "main is stable, feature branches for development"))
52  
53    (design-rationale
54      (why-ada "Ada provides the reliability and safety guarantees needed for a tool that manages git forges. SPARK subset allows formal verification of critical interfaces.")
55      (why-tui "Interactive mode improves UX for complex operations like browsing repos")
56      (why-curl "Minimizes dependencies while providing full HTTP capability")
57      (why-app-password "Bitbucket requires app passwords for API access, more secure than storing account password")))