|
1 | 1 | // SPDX-License-Identifier: MPL-2.0 |
2 | | -// SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 2 | +// SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> |
3 | 3 |
|
4 | 4 | = git-reticulator |
5 | 5 | :toc: preamble |
6 | 6 | :icons: font |
| 7 | +:revdate: 2026-05-26 |
7 | 8 |
|
8 | 9 | image:https://img.shields.io/badge/OpenSSF-Best_Practices-green?logo=opensourcesecurity[OpenSSF Best Practices,link="https://www.bestpractices.dev/en/projects/new?repo_url=https://github.com/hyperpolymath/git-reticulator"] |
9 | | -image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] |
| 10 | +image:https://img.shields.io/badge/License-MPL--2.0-blue.svg[License: MPL-2.0,link="https://github.com/hyperpolymath/palimpsest-license"] |
10 | 11 | image:https://api.thegreenwebfoundation.org/greencheckimage/github.com[Green Web,link="https://www.thegreenwebfoundation.org/green-web-check/?url=github.com"] |
11 | 12 |
|
| 13 | +Semantic-lattice builder for git repositories — derives a lattice |
| 14 | +representation of a repo's history (commits, files, semantic edits) and |
| 15 | +exposes it via a Rust API. AffineScript is the eventual frontend target. |
12 | 16 |
|
| 17 | +== Why this exists |
| 18 | + |
| 19 | +Existing git-analysis tools work at the raw commit/blob level. `git-reticulator` |
| 20 | +lifts the analysis to a **semantic lattice** — meet/join operations over |
| 21 | +commits, file-trajectories, and (eventually) AST-level semantic edits. |
| 22 | +The output is suitable for: |
| 23 | + |
| 24 | +* Refactoring-impact analysis (what changes propagate where). |
| 25 | +* Authorship attribution at semantic-unit granularity. |
| 26 | +* Time-aware queries ("when did this concept enter the codebase"). |
| 27 | + |
| 28 | +== Quickstart |
| 29 | + |
| 30 | +[source,bash] |
| 31 | +---- |
| 32 | +# Build: |
| 33 | +just build # or: cargo build --release |
| 34 | +
|
| 35 | +# Run against a local repo: |
| 36 | +./target/release/git-reticulator scan /path/to/repo |
| 37 | +
|
| 38 | +# See available commands: |
| 39 | +./target/release/git-reticulator --help |
| 40 | +---- |
| 41 | + |
| 42 | +== Architecture |
| 43 | + |
| 44 | +Written in Rust. AffineScript bindings planned in a future phase |
| 45 | +(currently a Rust-only library + CLI). |
| 46 | + |
| 47 | +* `src/` — core library + CLI. |
| 48 | +* `benches/` — benchmark harness. |
| 49 | +* `configs/` — example configurations for typical scan profiles. |
| 50 | +* `docs/` — design notes and ADRs. |
| 51 | + |
| 52 | +== Status |
| 53 | + |
| 54 | +* **Licence**: MPL-2.0. (Previously declared PMPL-1.0-or-later — migrated |
| 55 | + 2026-05-26 per the estate licence-debt audit, hyperpolymath/standards#196.) |
| 56 | +* **Maturity**: research / iteration. API not stable. |
| 57 | +* **Audit findings**: see `docs/tech-debt-2026-05-26.md` if present |
| 58 | + (added by the 2026-05-26 estate tech-debt scan). |
| 59 | + |
| 60 | +== Contributing |
| 61 | + |
| 62 | +See link:CONTRIBUTING.md[CONTRIBUTING.md]. All commits must be GPG-signed. |
| 63 | +Conventional-commits required (CHANGELOG is generated by |
| 64 | +link:https://github.com/hyperpolymath/standards/pull/206[standards#206]'s |
| 65 | +`changelog-reusable.yml`). |
| 66 | + |
| 67 | +== Companion repositories |
| 68 | + |
| 69 | +* link:https://github.com/hyperpolymath/standards[`hyperpolymath/standards`] — canonical estate standards. |
| 70 | +* link:https://github.com/hyperpolymath/affinescript[`hyperpolymath/affinescript`] — the language whose bindings will become this repo's eventual frontend. |
| 71 | +* link:https://github.com/hyperpolymath/k9[`hyperpolymath/k9`] — the related metadata-extraction tooling (`k9iser.toml` is consumed here). |
0 commit comments