|
1 | 1 | // SPDX-License-Identifier: PMPL-1.0-or-later |
2 | | -= flatracoon — Show Me The Receipts |
| 2 | +// Copyright (c) 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 3 | += FlatRacoon — Show Me The Receipts |
3 | 4 | :toc: |
4 | 5 | :icons: font |
| 6 | +:author: Jonathan D.A. Jewell |
5 | 7 |
|
6 | | -The README makes claims. This file backs them up. |
| 8 | +The README makes claims. This file backs them up, traces the critical paths, |
| 9 | +and tells a reviewer exactly where to look. |
| 10 | + |
| 11 | +== Claim 1: Operating System and Networking Stack |
7 | 12 |
|
8 | 13 | [quote, README] |
9 | 14 | ____ |
10 | 15 | Flatracoon operating system and networking stack. |
11 | 16 | ____ |
12 | 17 |
|
| 18 | +*How it works:* |
| 19 | +FlatRacoon is a workspace of independent subsystems, each a self-contained module |
| 20 | +under `netstack/modules/`. The networking half (`netstack/`) holds crates for |
| 21 | +DNS (Hesiod), BGP labs, IPFS overlay, ZeroTier Kubernetes bridging, and an IPv6 |
| 22 | +site enforcer. The OS half (`os/`) holds the FlatRacoon OS core, also in its own |
| 23 | +module layout with `src/`, `ffi/`, and presentation layers following the |
| 24 | +Idris2-ABI/Zig-FFI architecture standard. |
| 25 | + |
| 26 | +The entry point for DNS work is `netstack/modules/hesiod-dns-map/`, a Rust |
| 27 | +workspace that compiles to two binaries: `hesiod-lib` (the library) and |
| 28 | +`hesinfo` (the CLI query tool). `hesiod-lib/src/lib.rs` re-exports five |
| 29 | +sub-modules: `config`, `health`, `records`, `server`, and `zone` — providing |
| 30 | +HS-class TXT record management, a lightweight UDP DNS server, and HTTP |
| 31 | +health/metrics endpoints. |
| 32 | + |
| 33 | +*Honest caveat:* |
| 34 | +Most `os/` sub-modules and several `netstack/modules/` entries (e.g., `bgp-backbone-lab`, |
| 35 | +`poly-k8s-mcp`) are at early/stub stage. The DNS modules are further along; |
| 36 | +the broader OS layer is aspirational. |
| 37 | + |
| 38 | +== Claim 2: Hesiod DNS Naming System Support |
| 39 | + |
| 40 | +[quote, README] |
| 41 | +____ |
| 42 | +See link:TOPOLOGY.md[TOPOLOGY.md] for a visual architecture map and completion dashboard. |
| 43 | +____ |
| 44 | + |
| 45 | +*How it works:* |
| 46 | +`TOPOLOGY.md` at the repo root maps every module with a completion percentage. |
| 47 | +The Hesiod DNS module (`netstack/modules/hesiod-dns-map/`) implements RFC 1035 |
| 48 | +HS-class (Hesiod class) TXT lookups. The library is `#![forbid(unsafe_code)]` |
| 49 | +and uses Tokio for async I/O. A `server.rs` provides a UDP listener; `zone.rs` |
| 50 | +manages zone file structures; `records.rs` holds the typed DNS record model; |
| 51 | +`health.rs` exposes an HTTP metrics endpoint used in FlatRacoon CI pipelines. |
| 52 | + |
| 53 | +Build path: `cargo build --release` in `netstack/modules/hesiod-dns-map/` → |
| 54 | +produces `hesinfo` (CLI) and `libhesiod` (library linked into OS components). |
| 55 | + |
| 56 | +*Honest caveat:* |
| 57 | +TSIG authentication and actual Hesiod NS delegation are documented in `PROOF-NEEDS.md` |
| 58 | +as not yet implemented. The server currently resolves statically configured zones |
| 59 | +only. |
| 60 | + |
| 61 | +== Dogfooded Across The Account |
| 62 | + |
| 63 | +[cols="2,3,1"] |
| 64 | +|=== |
| 65 | +| Repo / System | How FlatRacoon is used | Status |
| 66 | + |
| 67 | +| `zerotier-k8s-link` (module) | ZeroTier overlay networking sits inside netstack | In-module |
| 68 | +| `ipfs-overlay` (module) | IPFS gateway module within the netstack | In-module |
| 69 | +| `hesiod-dns-map` (module) | DNS/Hesiod subsystem consumed by OS bootstrapper | In-module |
| 70 | +| `flatracoon-os` (module) | Core OS module referencing netstack services | In-module |
| 71 | +| CI/CD pipelines | `health.rs` HTTP endpoint pinged by Hypatia scanner | Planned |
| 72 | +|=== |
| 73 | + |
13 | 74 | == File Map |
14 | 75 |
|
15 | | -[cols="1,2"] |
| 76 | +[cols="1,3"] |
16 | 77 | |=== |
17 | 78 | | Path | What's There |
18 | 79 |
|
19 | | -| `test(s)/` | Test suite |
| 80 | +| `netstack/` | Network stack top-level; Rust workspace root with `modules/` |
| 81 | +| `netstack/modules/hesiod-dns-map/` | Hesiod DNS library + `hesinfo` CLI (Rust workspace) |
| 82 | +| `netstack/modules/hesiod-dns-map/crates/hesiod-lib/src/lib.rs` | Library root; re-exports `config`, `health`, `records`, `server`, `zone` |
| 83 | +| `netstack/modules/hesiod-dns-map/crates/hesiod-lib/src/server.rs` | UDP DNS server implementation |
| 84 | +| `netstack/modules/hesiod-dns-map/crates/hesiod-lib/src/records.rs` | Typed DNS record model |
| 85 | +| `netstack/modules/hesiod-dns-map/crates/hesiod-lib/src/health.rs` | HTTP health/metrics endpoint |
| 86 | +| `netstack/modules/hesiod-dns-map/crates/hesiod-lib/src/zone.rs` | Zone file structure management |
| 87 | +| `netstack/modules/bgp-backbone-lab/` | BGP lab environment (early stage) |
| 88 | +| `netstack/modules/ipfs-overlay/` | IPFS overlay gateway module |
| 89 | +| `netstack/modules/zerotier-k8s-link/` | ZeroTier + Kubernetes bridging |
| 90 | +| `netstack/modules/ipv6-site-enforcer/` | IPv6 enforcement policy module |
| 91 | +| `netstack/modules/network-dashboard/` | Observability dashboard for the netstack |
| 92 | +| `os/` | FlatRacoon OS module; mirrored `src/`, `ffi/`, Idris2 ABI layout |
| 93 | +| `os/src/` | OS core source (Rust/Ada depending on subsystem) |
| 94 | +| `os/ffi/` | Zig FFI bridge (zero-logic pass-through) |
| 95 | +| `TOPOLOGY.md` | Architecture map and per-module completion percentages |
| 96 | +| `PROOF-NEEDS.md` | Formal verification backlog for this repo |
| 97 | +| `Justfile` | Build recipes: `just build`, `just test`, `just check` |
| 98 | +| `flake.nix` / `guix.scm` | Reproducible environment definitions |
| 99 | +| `contractiles/` | Contractile trust/dust/intend check files |
| 100 | +| `.machine_readable/` | A2ML state, meta, ecosystem, agentic manifests |
20 | 101 | |=== |
21 | 102 |
|
22 | 103 | == Questions? |
|
0 commit comments