/ 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")))