|
1 | 1 | ;; SPDX-License-Identifier: AGPL-3.0-or-later |
2 | 2 | ;; SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell |
3 | | -;;; META.scm — fogbinder |
| 3 | + |
| 4 | +;;; META.scm — Architecture Decisions and Development Practices |
| 5 | +;;; fogbinder |
| 6 | +;;; Reference: https://github.com/hyperpolymath/META.scm |
4 | 7 |
|
5 | 8 | (define-module (fogbinder meta) |
6 | | - #:export (architecture-decisions development-practices design-rationale)) |
| 9 | + #:export (architecture-decisions |
| 10 | + development-practices |
| 11 | + design-rationale)) |
| 12 | + |
| 13 | +;;;============================================================================ |
| 14 | +;;; Architecture Decision Records (ADR) |
| 15 | +;;; Following MADR format in structured S-expression form |
| 16 | +;;;============================================================================ |
7 | 17 |
|
8 | 18 | (define architecture-decisions |
9 | 19 | '((adr-001 |
10 | | - (title . "RSR Compliance") |
| 20 | + (title . "Initial Architecture and RSR Compliance") |
11 | 21 | (status . "accepted") |
12 | 22 | (date . "2025-12-15") |
13 | 23 | (context . "link:https://github.com/hyperpolymath/rhodium-standard-repositories[image:badges/rhodium.svg[RSR Rhodium,align=center]]") |
14 | | - (decision . "Follow Rhodium Standard Repository guidelines") |
15 | | - (consequences . ("RSR Gold target" "SHA-pinned actions" "SPDX headers" "Multi-platform CI"))))) |
| 24 | + (decision . "Establish foundational architecture following Rhodium Standard Repository guidelines with multi-platform CI/CD, SHA-pinned actions, and SPDX headers") |
| 25 | + (consequences . ("RSR Gold compliance target" |
| 26 | + "SHA-pinned GitHub Actions for security" |
| 27 | + "SPDX license headers on all source files" |
| 28 | + "Multi-platform CI/CD (GitHub, GitLab, Bitbucket)" |
| 29 | + "OpenSSF Scorecard compliance"))))) |
| 30 | + |
| 31 | +;;;============================================================================ |
| 32 | +;;; Development Practices |
| 33 | +;;; Codified standards for this repository |
| 34 | +;;;============================================================================ |
16 | 35 |
|
17 | 36 | (define development-practices |
18 | | - '((code-style (languages . ("CSS" "JavaScript" "Just" "Nickel" "Nix" "ReScript" "Rust" "Scheme" "TLA")) (formatter . "auto-detect") (linter . "auto-detect")) |
19 | | - (security (sast . "CodeQL") (credentials . "env vars only")) |
20 | | - (testing (coverage-minimum . 70)) |
21 | | - (versioning (scheme . "SemVer 2.0.0")))) |
| 37 | + '((code-style |
| 38 | + (languages . ("CSS" "JavaScript" "Just" "Nickel" "Nix" "ReScript" "Rust" "Scheme" "Shell" "TLA")) |
| 39 | + (formatter . "auto-detect") |
| 40 | + (linter . "auto-detect") |
| 41 | + (line-length . 100) |
| 42 | + (indent . "spaces") |
| 43 | + (indent-size . 2)) |
| 44 | + |
| 45 | + (security |
| 46 | + (sast . "CodeQL + Semgrep") |
| 47 | + (dependency-scanning . "Dependabot + OSSF Scorecard") |
| 48 | + (credentials . "Environment variables only, never committed") |
| 49 | + (input-validation . "Whitelist + schema validation at boundaries") |
| 50 | + (license-compliance . "AGPL-3.0-or-later")) |
| 51 | + |
| 52 | + (testing |
| 53 | + (framework . "language-native") |
| 54 | + (coverage-minimum . 70) |
| 55 | + (unit-tests . "Required for business logic") |
| 56 | + (integration-tests . "Required for API boundaries") |
| 57 | + (property-testing . "Where applicable")) |
| 58 | + |
| 59 | + (versioning |
| 60 | + (scheme . "Semantic Versioning 2.0.0") |
| 61 | + (changelog . "Keep a Changelog format") |
| 62 | + (release-process . "GitHub releases with auto-generated notes")) |
| 63 | + |
| 64 | + (documentation |
| 65 | + (format . "AsciiDoc preferred, Markdown accepted") |
| 66 | + (api-docs . "Language-native doc comments") |
| 67 | + (adr-location . "META.scm")) |
| 68 | + |
| 69 | + (branching |
| 70 | + (strategy . "GitHub Flow") |
| 71 | + (main-branch . "main") |
| 72 | + (pr-required . #t)))) |
| 73 | + |
| 74 | +;;;============================================================================ |
| 75 | +;;; Design Rationale |
| 76 | +;;; Explains the "why" behind technical choices |
| 77 | +;;;============================================================================ |
22 | 78 |
|
23 | 79 | (define design-rationale |
24 | | - '((why-rsr "RSR ensures consistency, security, and maintainability."))) |
| 80 | + '((why-rsr |
| 81 | + "Following Rhodium Standard Repositories (RSR) ensures consistency, |
| 82 | + security, and maintainability across the hyperpolymath ecosystem. |
| 83 | + RSR provides: SHA-pinned actions, SPDX headers, OpenSSF Scorecard |
| 84 | + compliance, and multi-platform CI/CD. This creates a unified |
| 85 | + approach to quality across all repositories.") |
| 86 | + |
| 87 | + (why-agpl |
| 88 | + "AGPL-3.0-or-later chosen to ensure derivative works remain open |
| 89 | + source while allowing integration with MIT/BSD libraries. The |
| 90 | + copyleft provision protects community contributions and ensures |
| 91 | + improvements flow back to the ecosystem.") |
| 92 | + |
| 93 | + (why-polyglot |
| 94 | + "Language selection based on domain fit: Rust for performance-critical |
| 95 | + paths, Elixir for concurrent services, Julia for numerical computing, |
| 96 | + ReScript for type-safe frontends, Ada/SPARK for formally verified code. |
| 97 | + Each language is chosen for its strengths in its domain."))) |
| 98 | + |
| 99 | +;;; End of META.scm |
0 commit comments