|
| 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 | +# Component Readiness — QuandleDB |
| 5 | + |
| 6 | +**Current Grade:** D |
| 7 | +**Assessed:** 2026-04-05 |
| 8 | +**Standard:** [CRG v2.0 STRICT](../../standards/component-readiness-grades/) |
| 9 | + |
| 10 | +## Grade rationale (evidence for D) |
| 11 | + |
| 12 | +Works on some things + partial RSR compliance. QuandleDB is a polyglot project: |
| 13 | +Julia HTTP server (Skein.jl wrapper) + Julia semantic sidecar + Idris2 ABI + |
| 14 | +Zig FFI + V-lang API + Elixir BEAM NIFs. |
| 15 | + |
| 16 | +### Evidence |
| 17 | + |
| 18 | +- **Tests:** 21 passing (9 quandle extraction + 12 semantic index integration) |
| 19 | +- **Components present:** |
| 20 | + - `server/serve.jl` — HTTP server with quandle_semantic_index SQLite sidecar |
| 21 | + - `server/quandle_semantic.jl` — QuandleSemantic module (presentation extraction + hashing) |
| 22 | + - `src/abi/Types.idr` — Idris2 ABI type layer |
| 23 | + - `src/ffi/semantic_ffi.zig` — Zig FFI layer |
| 24 | + - `src/api/*.v` — V-lang API triples |
| 25 | + - `beam/` — Elixir BEAM client with NIFs |
| 26 | +- **RSR compliance:** Partial. Has 5 per-directory READMEs. 0-AI-MANIFEST.a2ml |
| 27 | + present (template). `.machine_readable/6a2/` directory exists. |
| 28 | +- **CI:** panic-attack assail 0 findings. |
| 29 | + |
| 30 | +## Gaps preventing higher grades |
| 31 | + |
| 32 | +### Blocks C (works reliably + annotated) |
| 33 | +- No EXPLAINME.adoc, TEST-NEEDS.md, PROOF-NEEDS.md at repo root. |
| 34 | +- Julia server code has no docstrings. |
| 35 | +- Elixir BEAM layer has no dedicated test coverage documented here. |
| 36 | +- No integration tests spanning the full Idris2 → Zig → V → Julia → Elixir stack. |
| 37 | +- No dogfooding evidence — has anyone actually driven this end-to-end? |
| 38 | +- Only 4 commits in history before absorption into nextgen-databases monorepo. |
| 39 | + |
| 40 | +### Blocks B |
| 41 | +- Requires C first. |
| 42 | + |
| 43 | +## What to do for C |
| 44 | + |
| 45 | +1. Add EXPLAINME.adoc explaining the polyglot architecture and its intended |
| 46 | + users. |
| 47 | +2. Add TEST-NEEDS.md documenting what's tested at each language layer and what isn't. |
| 48 | +3. Write docstrings for `server/serve.jl`, `server/quandle_semantic.jl`. |
| 49 | +4. Add per-language READMEs at `src/abi/`, `src/ffi/`, `src/api/`, `beam/` |
| 50 | + explaining what each layer contributes. |
| 51 | +5. Demonstrate a full-stack dogfood: invoke Idris2 ABI-verified call, through |
| 52 | + Zig FFI, via V-lang API, hitting Julia server, surfacing via BEAM NIF, and |
| 53 | + have a real test assert on it. |
| 54 | + |
| 55 | +## Review cycle |
| 56 | + |
| 57 | +Reassess after the full-stack dogfood test exists. |
0 commit comments