|
| 1 | +# SPDX-License-Identifier: MPL-2.0 |
| 2 | +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk> |
| 3 | +# |
| 4 | +# META.a2ml — Project meta-level information |
| 5 | +# Architecture decisions, design rationale, governance. |
| 6 | + |
| 7 | +[metadata] |
| 8 | +version = "0.1.0" |
| 9 | +last-updated = "2026-06-18" |
| 10 | + |
| 11 | +[project-info] |
| 12 | +type = "library" # library | binary | monorepo | service | website |
| 13 | +languages = ["rust"] |
| 14 | +license = "MPL-2.0" |
| 15 | +author = "Jonathan D.A. Jewell (hyperpolymath)" |
| 16 | + |
| 17 | +[architecture-decisions] |
| 18 | +# status = proposed | accepted | deprecated | superseded | rejected |
| 19 | +# - { id = "ADR-001", title = "Rust for the language-agnostic engine", status = "accepted", date = "2026-05-30" } |
| 20 | +# - { id = "ADR-002", title = "Triage transitions are file moves; ground truth is the filesystem", status = "accepted", date = "2026-05-30" } |
| 21 | +# - { id = "ADR-003", title = "Dependency-free RFC 3339 timestamps (hermetic build, no chrono)", status = "accepted", date = "2026-06-18" } |
| 22 | +# - { id = "ADR-004", title = "Orphan reachability is the union of discovered CI roots (All.agda/Smoke.agda)", status = "accepted", date = "2026-06-18" } |
| 23 | + |
| 24 | +[development-practices] |
| 25 | +build-tool = "just" |
| 26 | +container-runtime = "podman" |
| 27 | +ci-platform = "github-actions" |
| 28 | +package-manager = "cargo" # Rust crate; guix/nix dev-shells are a future addition. |
| 29 | + |
| 30 | +[maintenance-axes] |
| 31 | +scoping-first = true |
| 32 | +execution-order = "axis-1 > axis-2 > axis-3" |
| 33 | +axis-1 = "must > intend > like" |
| 34 | +axis-2 = "corrective > adaptive > perfective" |
| 35 | +axis-3 = "systems > compliance > effects" |
| 36 | + |
| 37 | +[scoping] |
| 38 | +sources = "README, roadmap, status docs, maintenance checklist, CI/security docs" |
| 39 | +marker-scan = "TODO/FIXME/XXX/HACK/STUB/PARTIAL" |
| 40 | +idris-unsound-scan = "believe_me/assert_total" |
| 41 | + |
| 42 | +[axis-2-maintenance-rules] |
| 43 | +corrective-first = true |
| 44 | +adaptive-second = true |
| 45 | +adaptive-focus = "scope-change reconciliation, stale-reference removal, obsolete-work culling" |
| 46 | +perfective-third = true |
| 47 | +perfective-source = "axis-1 honest state after corrective/adaptive updates" |
| 48 | + |
| 49 | +[axis-3-audit-rules] |
| 50 | +audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed" |
| 51 | +compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks" |
| 52 | +drift-risk-example = "single exception broadening into policy violation (e.g. ReScript->TypeScript spread)" |
| 53 | +effects-evidence = "benchmark execution/results and maintainer status dialogue/review" |
| 54 | + |
| 55 | +[design-rationale] |
| 56 | +# arghda-core is the engine half of the arghda split (engine in Rust; |
| 57 | +# arghda-studio presentation in AffineScript -> typed-wasm). It organises, |
| 58 | +# lints, and emits the DAG / events.jsonl JSON contract a visual layer |
| 59 | +# consumes. It never proves: Agda (directly, or via echidna) proves. |
0 commit comments