|
| 1 | +<!-- SPDX-License-Identifier: PMPL-1.0-or-later --> |
| 2 | +<!-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk> --> |
| 3 | + |
| 4 | +# groove-protocol Component Readiness Assessment |
| 5 | + |
| 6 | +**Standard:** [Component Readiness Grades (CRG) v1.0](https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades) |
| 7 | +**Assessed:** 2026-04-04 |
| 8 | +**Assessor:** Jonathan D.A. Jewell + Claude Sonnet 4.6 |
| 9 | + |
| 10 | +**Current Grade:** B |
| 11 | + |
| 12 | +## Summary |
| 13 | + |
| 14 | +| Component | Grade | Release Stage | Evidence Summary | |
| 15 | +|--------------------|-------|--------------------|------------------------------------------------------------------------------------------------------| |
| 16 | +| `groove validate` | B | Release Candidate | Manifests deployed on 65+ repos across diverse service types; validated in CI via dogfood-gate groove-check job. | |
| 17 | +| `groove init` | B | Release Candidate | Initialises Groove manifests on new repos; used as part of rsr-template-repo onboarding for all new repos. | |
| 18 | +| `groove check` | B | Release Candidate | CI enforcement subcommand; wired in dogfood-gate groove-check job on 65+ repos. | |
| 19 | +| `groove-core` | C | Beta | Core Idris2 ABI layer with formal proofs of protocol correctness; type-checks with zero believe_me; no runtime tests yet. | |
| 20 | +| `groove-ffi` | C | Beta | Zig FFI implementation; 10 language binding targets; builds clean; integration tests partial. | |
| 21 | +| `groove-browser` | C | Beta | Firefox-first browser extension; Groove protocol in browser context; Chrome MV3 workarounds implemented. | |
| 22 | + |
| 23 | +## Overall Project Readiness |
| 24 | + |
| 25 | +- **Components at B or above:** 3/6 (50%) — groove validate, groove init, groove check |
| 26 | +- **Components at C (Beta) or above:** 6/6 (100%) |
| 27 | +- **Components at D (Alpha):** 0/6 (0%) |
| 28 | +- **Weighted assessment:** The primary use case (universal plug-and-play inter-service protocol with CI enforcement) is **Grade B**. Core ABI/FFI layers are Beta-quality. |
| 29 | + |
| 30 | +## Detailed Assessment |
| 31 | + |
| 32 | +### `groove validate` — Manifest Validation (Grade: B) |
| 33 | + |
| 34 | +**Evidence:** |
| 35 | +- Groove manifests deployed on 65+ hyperpolymath repos |
| 36 | +- Diverse service type coverage confirmed: |
| 37 | + 1. Rust CLI tools (panic-attacker, januskey, conflow) — native binary services |
| 38 | + 2. Elixir/Phoenix services (burble, oblibeny) — BEAM web services |
| 39 | + 3. Gleam services (k9_gleam, a2ml_gleam) — typed BEAM services |
| 40 | + 4. Julia batch services (statistease, developer-ecosystem) — data pipeline services |
| 41 | + 5. ReScript/Deno frontends (idaptik, nafa-app) — browser-facing services |
| 42 | + 6. Idris2 proof services (ephapax, stapeln) — formal verification services |
| 43 | + 7. Infrastructure services (hypatia, gitbot-fleet) — CI/CD services |
| 44 | + 8. Container services (boj-server, idaptik containers) — Stapeln/Podman services |
| 45 | +- Validation covers: protocol version, endpoint schema, capability declarations, authentication requirements |
| 46 | + |
| 47 | +**Known limitations:** |
| 48 | +- Groove v2 manifest format not yet deployed on all repos (v1/v2 coexistence in progress) |
| 49 | +- Some legacy repos have partial manifests (missing optional capability sections) |
| 50 | + |
| 51 | +**Promotion path to A:** External services outside hyperpolymath adopt Groove manifests; IANA service type registration. |
| 52 | + |
| 53 | +### `groove init` — Manifest Initialisation (Grade: B) |
| 54 | + |
| 55 | +**Evidence:** |
| 56 | +- Used as part of rsr-template-repo onboarding process for all new repos |
| 57 | +- Applied to 65+ existing repos during Groove deployment |
| 58 | +- Generates correct v1/v2 manifests for all supported service types |
| 59 | +- Idempotent: safe to run on repos that already have manifests |
| 60 | + |
| 61 | +**Known limitations:** |
| 62 | +- v2 manifest generation requires `--v2` flag (default still v1 for compatibility) |
| 63 | +- Custom capability templates not yet supported |
| 64 | + |
| 65 | +**Promotion path to A:** External adopters confirm init workflow is non-breaking. |
| 66 | + |
| 67 | +### `groove check` — CI Enforcement (Grade: B) |
| 68 | + |
| 69 | +**Evidence:** |
| 70 | +- Deployed as `groove-check` job in dogfood-gate CI workflow on 65+ repos |
| 71 | +- Blocks merge when manifest is absent or malformed |
| 72 | +- Runs on diverse CI environments: GitHub Actions (primary), GitLab CI (mirror) |
| 73 | +- SHA-pinned, `permissions: read-all`, SPDX headers present |
| 74 | + |
| 75 | +**Known limitations:** |
| 76 | +- Periodic SHA pin refresh required for CI workflow |
| 77 | +- Some legacy repos not yet enrolled in groove-check enforcement |
| 78 | + |
| 79 | +**Promotion path to A:** External maintainers adopt groove-check; no harmful false-positives in wild. |
| 80 | + |
| 81 | +### `groove-core` — Idris2 ABI Layer (Grade: C) |
| 82 | + |
| 83 | +**Evidence:** |
| 84 | +- Formal proofs of protocol correctness in Idris2 with dependent types |
| 85 | +- Zero `believe_me`, zero `assert_total`, zero `Admitted` |
| 86 | +- Type-checks clean with `%default total` |
| 87 | +- Protocol invariants proved: message ordering, capability negotiation, connection state machine |
| 88 | + |
| 89 | +**Known limitations:** |
| 90 | +- Proof checking not wired in CI (requires idris2 binary in CI image) |
| 91 | +- No runtime tests yet (proofs cover specification, not implementation) |
| 92 | + |
| 93 | +**Promotion path to B:** Proof check wired in CI; runtime integration tests on 6+ target language pairs. |
| 94 | + |
| 95 | +### `groove-ffi` — Zig FFI Implementation (Grade: C) |
| 96 | + |
| 97 | +**Evidence:** |
| 98 | +- 10 language binding targets: Rust, Elixir, Gleam, Julia, ReScript, OCaml, Haskell, Ada, Idris2, Zig-native |
| 99 | +- Builds clean for all 10 targets |
| 100 | +- C headers generated from Idris2 ABI |
| 101 | +- Integration tests passing for Rust and Elixir bindings |
| 102 | + |
| 103 | +**Known limitations:** |
| 104 | +- Integration tests only complete for Rust and Elixir (8/10 targets need integration tests) |
| 105 | +- Cross-compilation for non-Linux targets untested |
| 106 | + |
| 107 | +**Promotion path to B:** Integration tests complete for all 10 binding targets. |
| 108 | + |
| 109 | +### `groove-browser` — Browser Extension (Grade: C) |
| 110 | + |
| 111 | +**Evidence:** |
| 112 | +- Firefox-first implementation; Chrome MV3 workarounds implemented |
| 113 | +- Groove protocol available in browser context for web-facing services |
| 114 | +- Dogfooded on idaptik and nafa-app frontend integrations |
| 115 | + |
| 116 | +**Known limitations:** |
| 117 | +- Chrome MV3 service worker constraints limit some Groove capabilities |
| 118 | +- Browser extension store submission not yet made (Firefox + Chrome) |
| 119 | + |
| 120 | +**Promotion path to B:** Published on Firefox Add-ons and Chrome Web Store; 6+ external users. |
| 121 | + |
| 122 | +## Architecture (Idris2 ABI + Zig FFI Standard) |
| 123 | + |
| 124 | +``` |
| 125 | +groove-protocol/ |
| 126 | +├── spec/ # Groove protocol specification |
| 127 | +├── src/abi/ # Idris2 ABI definitions (formal proofs) |
| 128 | +│ ├── Types.idr # Protocol types with dependent proofs |
| 129 | +│ ├── Layout.idr # Memory layout verification |
| 130 | +│ └── Foreign.idr # FFI declarations |
| 131 | +├── ffi/zig/ # Zig FFI implementation |
| 132 | +│ ├── build.zig |
| 133 | +│ ├── src/main.zig # C-ABI compatible implementation |
| 134 | +│ └── test/ # Integration tests |
| 135 | +├── generated/abi/ # Auto-generated C headers |
| 136 | +├── bindings/ # Language-specific wrappers |
| 137 | +│ ├── rust/ |
| 138 | +│ ├── elixir/ |
| 139 | +│ ├── gleam/ |
| 140 | +│ ├── julia/ |
| 141 | +│ ├── rescript/ |
| 142 | +│ ├── ocaml/ |
| 143 | +│ ├── haskell/ |
| 144 | +│ ├── ada/ |
| 145 | +│ └── idris2/ |
| 146 | +├── cli/ # groove CLI (validate, init, check) |
| 147 | +├── harness/ # Test harness for CI integration |
| 148 | +└── examples/ # Usage examples |
| 149 | +``` |
| 150 | + |
| 151 | +## Recipes |
| 152 | + |
| 153 | +``` |
| 154 | +just validate <path> # Validate Groove manifest |
| 155 | +just init <path> # Initialise new manifest |
| 156 | +just check <path> # CI check (pass/fail) |
| 157 | +just test # All tests including FFI integration |
| 158 | +just build # Build CLI + all bindings |
| 159 | +just prove # Run Idris2 proof checks |
| 160 | +``` |
| 161 | + |
| 162 | +## Known Debt |
| 163 | + |
| 164 | +- Groove v2 manifest migration not complete (v1/v2 coexistence) |
| 165 | +- Proof checking not wired in CI |
| 166 | +- 8/10 FFI binding integration tests incomplete |
| 167 | +- Browser extension store submissions pending |
| 168 | +- IANA service type registration pending |
0 commit comments