- What this document is
- Purpose, in one paragraph
- Why it exists — the motivating pain
- Where ArghDA sits in the ecosystem
- Architecture — three layers
- The build decision in full — AffineScript feasibility
- The heart — one richly-tagged proof-node graph
- Feature set
- Communication model — legible to everyone
- Integration seams (concrete)
arghda-studio— the new RSR-compliant repo (proposed)arghda-corework needed (finish the spec)- Phased roadmap
- Open decisions & risks
- Provenance
arghda-spec.adoc (alongside this file) is the MVP contract for the
Rust engine. This document is the wider plan: what ArghDA is as a
product, how it sits inside the hyperpolymath estate, the three-layer
architecture, the build decisions (including the honest AffineScript
feasibility position), the full feature set mined from real proof
work, the integration seams, the RSR-compliant shape of the new
AffineScript visual tool, and a phased roadmap.
It is a planning artefact, not a spec freeze. Names marked "(proposed)" are open.
ArghDA is a visual proof-wiring / wiring-diagram tool whose job is to organise, visualise, and communicate the climbing-frames of large, multi-stage, multi-module proofs — for mathematicians and non-mathematicians alike — and to make the lifecycle of a proof (inbox → working → proven | rejected), its soundness, and its dependencies first-class, always-current, visible objects.
|
Important
|
ArghDA does not prove anything. Agda proves. (Directly, or dispatched through Echidna, the multi-prover orchestrator that treats Agda as a first-class backend.) ArghDA is the organising assistant around the prover: it wires the diagram, tracks what is proven / admitted / postulated / refuted, shows what depends on what, communicates a proof in registers a newcomer or an expert can each read, and writes coherent updates back into the proof workspace. When ArghDA says a node is "proven," it is reporting Agda’s verdict, never substituting for it. |
This boundary is not cosmetic. The whole motivation (below) is that the painful failure mode in real proof work is believing something is proven when it is not — orphaned modules that typecheck only because the obligations are comments, postulates hiding in the wired cone, four contradicting status tables. ArghDA’s value is precisely honest status reporting on top of the prover, so it must never blur the line by appearing to prove.
The need is not hypothetical. It was lived in echo-types and
absolute-zero (and named, in echo-types, as ArghDA: "lightweight
proof-workspace manager for Agda; triage folders, linter, DAG view").
The concrete pain points ArghDA targets, every one of them observed:
-
"Is this actually proven?" — proven vs admitted vs postulated vs refuted is tracked only in long, drifting prose ledgers (
proof-debt.md,proof-debt-triage.md,Fidelity-OPEN-postulates.md). Answering "how solid is this claim, really?" requires reading several documents that disagree by date. -
Orphan modules — compiles ≠ verified. The flagship trap:
experimental/echo-additive/VarianceGate.agdais onmain, typechecks--safe, and contains no proven theorems — the obligations are comments. A reader mistakes dead code for a result. An out-of-band cold-rebuild trust audit (2026-06-16) had to establish by hand which postulate-bearing files were quarantined outside the wired cone. -
Soundness holes hide.
postulate,believe_me,primTrustMe,TERMINATING/NO_TERMINATION_CHECK,funextimports,--cubical/safety-relaxingOPTIONS— each can silently weaken a result.kernel-guard.shexists to police this manually. -
Dependency ordering is invisible. The 57-module
Ordinal/Buchholz/ladder encodes its real dependency edges only inopen importblocks and a naming convention; a wrong base silently reverts work. -
Settled dead-ends get re-walked. Three
Refuted.agdamodules and a six-row "walled routes" table exist *solely so provably-dead branches are not re-attempted; "DO NOT reopen" lists are the human-memory backstop. -
Near-identical artefacts proliferate. 13+
_<ᵇ-family order relations, each covering a different subset of constructors; which is "the real one," what is IN/OUT, and which embeds into which lives only in prose preambles that already miscount. -
Provisional vs real. Budgeted theorems (
wf-<ᵇʳᶠᵇoverℕ × BT) stand in for the real goal (wf-<ᵇʳᶠ); whether a scaffold is the accepted final form is itself an open governance question. -
Status labels drift across files.
ROADMAPsays 50%,STATEsays 65%;AGENTIC.a2mlsays 18sorry, the triage says 0. Four date-stamped snapshots of one constructor table disagree. -
Parallel-session merge drift. Multiple agents branch off a stale
mainand silently revert each other; the mitigations (git rebase origin/mainbefore push,--only <paths>,--force-with-lease) are manual.
echo-types already shipped a UI sketch that proves the concept —
docs/echo-types/prototypes/warrant_debugger_prototype.jsx renders a
proof obligation as a visual fibre, steps through repair choices, and
keeps provenance on a restored result ("remains marked as weakened,
not cleanly proven"). That is exactly ArghDA’s honest-status tracking
in an accessible register.
The estate’s research-to-production pipeline is:
kategoria → ideas-to-alphas → typell → typed-wasm → PanLL
(lab) (incubator) (kernel) (target) (env)ArghDA is the cross-cutting proof-organisation and communication layer that rides alongside this pipeline. Each neighbour connects to a concrete ArghDA capability:
| Repo / system | How it connects to ArghDA |
|---|---|
echo-types, absolute-zero |
Primary workspaces. The proof corpora ArghDA organises, the source of every feature requirement, and the first dogfooding targets. |
kategoria |
The diagrammatic goldmine. Its headline finding — the ten
type-safety levels are a composition lattice (e.g. L9 = L2 + L6 |
ideas-to-alphas |
The graduation pipeline ("idea → alpha → programmatic"). Proof
artefacts mature by a believe_me/postulate burn-down; their
proof-dependency DAGs are already written as comments. ArghDA
renders the graduation-maturity dashboard and the promotion arrows
to |
typell (port 7800) |
The type kernel. Emits |
Echidna (Zig-API service #3, port 8090) |
The verification backend. A multi-prover orchestrator (Idris2; NOT
the Ethereum fuzzer) with Agda as a first-class prover. ArghDA
dispatches a wired goal to Echidna and renders the returned
|
Unified Zig API Stack ( |
The verified FFI front door to Echidna (and 10 other services). ArghDA reaches Echidna through `libzig_api’s connector pool, or directly over HTTP+JSON. |
hybrid-automation-router (HAR) |
The downstream automation seam for the programmatic stage. When a
proof completes, ArghDA emits a proof-completion |
nextgen-language-evangeliser |
The communication model. Its "Celebrate / Minimize / Better / Safety / Example" no-shame narrative, Makaton-style glyphs, and RAW/FOLDED/GLYPHED rendering registers are the template for making proofs legible to non-mathematicians and mathematicians alike. |
PanLL |
The eventual home surface. |
AffineScript / typed-wasm |
The implementation language and verification target for the visual tool (see the build decision below). |
ArghDA is three packages with a strict contract between them. This mirrors `arghda-spec.adoc’s original core/panll split, generalised.
| Layer | Language | Responsibility |
|---|---|---|
arghda-core |
Rust |
The engine. Filesystem state-machine (inbox → working → proven |
rejected as file moves), Agda invocation, Echidna dispatch,
import-graph extraction → DAG JSON, |
arghda-studio |
AffineScript |
The visual tool — "ArghDA" as the user experiences it. Consumes core JSON. Holds the rich proof-node graph model, the metadata importers, the soundness/reachability presentation, the sound-carrier lattice and per-constructor matrix views, the multi-register renderers, the glyph vocabulary, the narrative generator, and the human-facing write-back generators. v1 renders static SVG/HTML; interactive canvas is phased in later. |
arghda-panll |
AffineScript (panel) |
| Decision | Choice | Rationale |
|---|---|---|
Engine language |
Keep & extend Rust |
It already works and matches the HAR / proven-servers stack. The engine’s work (process spawning, filesystem, Agda invocation) leans precisely on the AffineScript features that are broken today (effect handlers, #555). Rust is the low-risk home for the engine. |
Visual-tool language |
AffineScript → typed-wasm / Deno-ESM |
Honours the directive to build the tool in AffineScript, dogfoods the estate’s flagship language, and uses its genuinely-enforced affine/linear types for resource-shaped state (e.g. a must-disconnect Groove handle). |
v1 rendering |
Static SVG/HTML from pure functions |
Sidesteps the blocking AffineScript gaps (see below) entirely: a renderer that maps the graph to an SVG/HTML string is a pure function, needing none of the broken interactive-DOM machinery. Usable now. |
Interactive canvas |
Deferred; ArghDA is the forcing function |
Lands when the AffineScript DOM/TEA toolchain matures (#255, #555). ArghDA becomes the first real consumer that motivates fixing them. |
This is stated plainly because it is in tension with a naïve reading of "build it in AffineScript compiling to typed-wasm," and honesty here is cheaper than discovering it mid-build.
What is true today (from the compiler’s own CAPABILITY-MATRIX.adoc,
the declared single source of truth, and execution-verified issues):
-
No interactive DOM/TEA path exists. The only "TEA in AffineScript" artefacts are an interpreter-level
counter.afs(model = oneInt) and a hand-written, fixed-memory-layout wasm "TitleScreen". There is no general AffineScript → vdom compiler. -
The one DOM reconciler does not run.
affinescript-dom/src/dom.affinecompiles but is blocked by #255 — a wasm-codegen defect wherefor-in/whileloop bodies never execute in the compiled module. A wiring canvas is all dynamic lists and loops, so #255 is squarely on the interactive critical path. -
Effect handlers are silently mis-lowered on core-wasm, JS-text, and Deno-ESM (#555; async CPS falls back to sync, #556) — exactly the tool one would reach for in an event-driven UI.
-
"typed-wasm" is not a rich codegen target. It is a narrow, opt-in ownership verifier (enforcing only L7 aliasing + L10 linearity + L13 isolation) over plain wasm, living in the separate
typed-wasmrepo.affinescript verifydoes not gate the compile pipeline today.
What is solid today: non-interactive logic compiled to Deno-ESM,
with enforced affine/linear (QTT) types, working pattern matching /
ADTs / generics / records, and real fetch-based HTTP
(stdlib/Http.affine).
The resolution (the chosen v1 approach): keep arghda-studio’s logic
in the solid subset and make rendering a pure function `graph →
SVG/HTML string. No interactive DOM, no effect handlers in the hot
path, no reliance on #255. The tool is genuinely AffineScript→typed-wasm
(verifiable on the linear-resource boundary), usable now, and
positioned so that the interactive upgrade is additive — at which point
ArghDA’s own needs become the forcing function for the toolchain.
|
Note
|
Avoid in |
Everything converges on a single data structure. Parts A (organisation) and B (communication) of the requirements both demand it; designing it once is the central act.
| Field | Meaning |
|---|---|
|
Stable identity; the headline theorem name; its Agda module. |
|
|
|
|
|
|
|
|
|
Classification overlays (Tier-1/2/3; Gate F1–F5; lane status). |
|
|
|
Verification confidence (0–1), e.g. from Echidna’s neural component. |
|
For open/debt items (from the proof-debt ledgers). |
|
Makaton-style semantic glyph set (communication). |
|
The 5-slot gloss: intuition / scope-caveat / why-it-matters / guarantee / witness (communication). |
|
Explicit non-claims and matched-negative links ("what this does NOT
prove"), e.g. the |
imports (from open import) · depends-on-lemma · gated-on
(gate→gate, lane→lane) · embeds-into (the sound-carrier lattice) ·
refutes / blocked-by (dead-end edges) · supersedes (dated
snapshots).
This is a strict superset of arghda-spec.adoc’s DAG JSON
(`nodes[].{id,file,status,lint,headlines}, edges[].{from,to,kind},
blocked[]). The core emits that JSON; the studio enriches it with the
status taxonomy, soundness, glyph, and narrative fields above.
Three directions, all reading from / writing to the one graph.
| Concern | arghda-core (Rust) | arghda-studio (AffineScript) |
|---|---|---|
Ground truth |
Parse |
Consume that JSON; never re-parse Agda itself. |
Enrichment |
— |
Status taxonomy, soundness badges, tier/gate/lane overlays, glyphs, narrative, confidence. |
Extra importers |
— |
A2ML |
Visualisation |
— |
SVG/HTML renderers, lattice & matrix views, audience registers. |
Code write-back |
Generate/repair |
Request it; preview the diff. |
Doc write-back |
— |
Ledgers, session-arcs, retraction/decision records, glyph legends, multi-register HTML. |
-
Authoritative import DAG from real
open importedges (core), replacing the naming-convention ladder. -
Reachability/wired analysis rooted at CI entry points (
All.agda,Smoke.agda, …): colour every node wired / pinned / classified / orphan — automating the hand audit that caughtVarianceGate. -
Soundness scanner badging
postulate/believe_me/ escape pragmas /funext/--cubicalper node, marking inside/outside the trusted cone (generaliseskernel-guard.sh+check-guardrails.sh). -
Structured-ledger importers (studio): A2ML state, the
(file,line,id,disposition,justification)triage rows, the four-bucket proof-debt, the earn-back gate graph. -
Multi-prover awareness: per-node
prover+ per-prover build/verify commands (fromconfig.ncl). -
Drift / single-source-of-truth reconciliation: cross-check the same fact across files and flag divergence (50% vs 65%; 18-sorry vs 0).
-
Refuted / walled-route registry: first-class dead-end nodes carrying their counterexample and citing route id, rendered as walls.
-
Sound-carrier lattice view: render the
_<ᵇ-family relations as nodes annotated with covered-constructor sets andembeds-intoedges; auto-detect IN/OUT count mismatches. -
Per-constructor / per-obligation status matrix read live from source, replacing the hand-maintained date-stamped tables.
-
The DAG with per-node status colour and dependency arrows — the headline ask. One picture replacing the prose mesh of lanes / gates / sub-stages and the "DO NOT reopen" notes.
-
Lane / gate / tier overlays as coloured subgraphs, with cross-lane gating edges drawn explicitly ("Lane 4 waits on Lane 1").
-
Budgeted / "blocks-goal" markers so a scaffold (
wf-<ᵇʳᶠᵇ) is never mistaken for the real theorem (wf-<ᵇʳᶠ). -
Honest-scope & matched-negative annotations attached to nodes.
-
Triage workflow (inbox → working → proven | rejected) as lanes a node moves through, the rejected lane preserving the refutation.
-
Diagrammatic views for kategoria: the type-safety composition lattice and session-types-as-graded-monads as string/wiring diagrams.
-
Graduation dashboard for ideas-to-alphas: maturity (sketch → believe_me-free → postulate-free → graduated) and promotion arrows.
-
Generate/repair
All.agda(core): addopen importfor new wired modules; warn on orphans. -
Generate/repair
Smoke.agdapins (core): emit the per-moduleusing ( … )headline blocks; fail on renamed/deleted pins (Smoke’s own stated purpose), including the parameterised-module trivial-instance trick. -
Sync status labels in one pass (studio): propagate a status change to
MAP.adoc, the roadmap lane, the verdict table, and the per-marker ledger simultaneously. -
Append-only retraction / open-problem / decision records (studio): scaffold an
R-YYYY-MM-DD/D-YYYY-MM-DDentry and find every artefact citing the retracted claim so no inflated form survives. -
Session-arc / ledger emitter (studio): produce the "where we started / ended / commits / open pieces / next advance / DO NOT reopen" entry from the diff of node statuses across a session.
-
Per-marker ledger emitter (studio): write
proof-debt(-triage).md-shaped tables withOwner/Plan/Deadline. -
CI gate export (studio → scripts): emit kernel-cone integrity, no-postulate, wired-coverage, Smoke-pin presence, and baseline-bound checks as runnable scripts, so the visual state is enforced, not just displayed.
-
Parallel-session guardrails (studio): surface "branch base N commits behind
origin/main," detect post-squash divergence, and recommend the documentedrebase/--force-with-leasemoves.
Adapted directly from nextgen-language-evangeliser. The principle:
one proof object, multiple rendering registers, single dispatcher —
never separate documents (separate documents are exactly how the
estate’s status tables drifted).
-
Three registers over the same node (mirroring
viewLayer = RAW | FOLDED | GLYPHED):-
RAW — full Agda term/type,
--safe --without-Kdetail, the mathematician’s register. -
FOLDED — grouped by lemma/section, collapsible sub-proofs, dependency counts.
-
GLYPHED — glyph-bar + theorem name + one-line "what this guarantees," the newcomer/accessibility register.
-
-
A Makaton-style glyph vocabulary
{symbol, name, meaning, category, usageExample}with alegendview. Candidate glyphs grounded in this corpus: 🛡️ no-postulate/--safe, 💎--without-K/no-UIP, 🔄 isomorphism/round-trip, 🌿 case analysis, ➡️ composition, ♻️ well-founded recursion, ⚖️ "section / left-inverse" (theno-section-of-collapsing-mapfamily). Grouped into semantic categories (Soundness, Construction, Equality, Recursion/Termination, Structure). -
A 5-slot narrative retargeted to proofs (the "you were close!" shape, no-shame): Intuition (plain English) · Scope/Caveat (the honest bound — the existing
honest-scope/NotProved-discipline maps here exactly) · *Why it matters · Guarantee (the formal content) · Witness (the concrete instance). -
Audience-parameterised projection:
--audience=mathematiciansurfaces RAW + Guarantee;--audience=newcomersurfaces GLYPHED
Intuition + Witness. Same object, audience-selected view. -
Progressive disclosure with honest fallback: if a plain-language gloss is not yet authored for a lemma, fall back to the next register and say so — never present a raw term as if it were the gloss.
-
Confidence/status as a visible register: "fully verified, 0 postulates" vs "partial (1 postulate:
denotation)" vs "open / refuted." A non-mathematician needs to know how solid a claim is. -
Difficulty-graded guided tour: suggest the easiest meaningful next theorem from unseen prerequisites — a guided walk through the proof DAG.
The warrant_debugger_prototype.jsx already in echo-types is the
working proof that organisation (Part A) and communication (Part B)
unify in one artefact; it is the design reference for the
interactive-phase studio.
ArghDA dispatches a wired goal to Echidna and renders the result.
-
Transport (production):
libzig_apiconnector pool —uapi_connector_create(UAPI_SERVICE_ECHIDNA=3, "http://127.0.0.1:8090"), thenuapi_connector_call(slot, POST, "/prove", json_theorem, …). From AffineScript/Deno:Deno.dlopenagainstlibzig_api.so. From Rust:bindgenoverzig_api.h. -
Transport (prototype): direct HTTP+JSON to Echidna’s port 8090 (
/health,/prove,/verify,/backends,/explain). The Zig layer adds verified ABI + pooling + uniform service IDs; the direct path is lighter for an early prototype. -
Request:
Theorem { statement, format: AgdaSyntax | NaturalLang, context, hints }. -
Response → node:
ProofResult { prover, status (Proven | Counterexample | Inconclusive | ProofError), proofTerm, timeTaken, confidence }maps onto the node’sstatus/soundness/confidence/ proof-term fields. -
/backends+/explaindrive a "which prover, and why" register.
|
Note
|
Echidna’s HTTP server may be partial today; verify it is listening on
8090 before designing against it, and treat the Theorem/ProofResult
JSON shapes (derived from Echidna/Prover.idr) as a contract to pin.
|
POST /api/v1/generate-obligations yields ProofObligation { id:
"PO-NNNN", description, proposition, origin, status: Pending |
Discharged | ProvedExternally(prover) | Unresolved | Refuted }.
ArghDA ingests obligations as graph nodes and tracks discharge — the
clean "TypeLL emits, Agda/Echidna discharges, ArghDA shows the
certificate" loop. (nextgen-typing/verification/proofs/agda/EchoTyping.agda
is the live pattern for cross-repo Agda wiring via ~/.agda/libraries.)
When a proof completes, ArghDA acts as an event source:
-
Build
AutomationEvent::new(EventSource::Chained{source_target:"arghda"}, "proof").with_payload({theorem_id, status:"Proven", prover:"Agda", proof_term, confidence}).with_tag("proof-complete")and feed it toRouter::route→Dispatcher::dispatch. -
Two additive extension points in HAR: a
proof-completetag rule →rpa-elysium(zero core changes; the clean prototype path), or aTargetCapability::ProofVerificationfor capability routing; plus aTargetTransportimpl for the downstream (onlyInMemoryTransportexists today). -
Caveats to design around: HAR is Phase-1 partial (3 strategies live, only
InMemoryTransport, ABI not yet FFI-linked);rpa-elysiumdelivery is AtLeastOnce (may duplicate) — keep downstream effects idempotent.
Symmetry: Echidna’s ProofResult JSON is the upstream verification
call; HAR’s AutomationEvent payload is the downstream fan-out.
ArghDA’s stable proof-event schema (theorem_id, status, prover,
proof_term, confidence) bridges them.
arghda-core serves GET /.well-known/groove advertising e.g.
proof-wiring and diagram-stream capabilities (+ /health). PanLL
discovers it by probing known ports and consumes it from a panel via
the dual-path command pattern, with the live proof-event feed as a
Tea_Sub subscription. Add the core’s port to PanLL’s mesh-probe list.
A new, fully RSR-compliant repo (default classification → MPL-2.0).
Fastest correct bring-up: clone rsr-template-repo, just init, then
reset the 6a2 files from the template’s own evolution to ArghDA.
-
Root authority files:
README.adoc(with an "AI-Assisted Installation" section),EXPLAINME.adoc,AUDIT.adoc,AFFIRMATION.adoc,GOVERNANCE.adoc,MAINTAINERS.adoc,0-AI-MANIFEST.a2ml,LICENSE(MPL-2.0),CHANGELOG.md,CONTRIBUTING.md,SECURITY.md(>10 lines),coordination.k9,Justfile. -
.machine_readable/6a2/— the six A2ML files (STATE/META/ECOSYSTEM/AGENTIC/NEUROSYM/PLAYBOOK)
anchors/ANCHOR.a2ml+CLADE.a2ml. META.a2ml must carry the verbatim maintenance-axis strings the validator greps for (scoping-first,axis-1 = "must > intend > like",idris-unsound-scan = "believe_me/assert_total", …). -
.machine_readable/contractiles/— Intentfile / Mustfile / Trustfile / Adjustfile + bust / dust. ArghDA’s own baselines fit theTrustfile/Adjustfilemodel perfectly (e.g.studio-orphan-modules ⇐ 0,affinescript-effect-handlers-in-hotpath == 0). -
.well-known/—ai.txt,humans.txt,security.txt(RFC 9116). -
Docs —
.adoconly (no.mdunderdocs/); the SSG iscasket-ssg(Jekyll banned). -
CI hard gates —
openssf-compliance,ts-blocker,npm-bun-blocker,estate-rules,secret-scanner,security-policy,workflow-linter,wellknown-enforcement,scorecard-enforcer(every workflow: SPDX header,permissions:block, SHA-pinned actions). The TS/npm blockers are not a problem — the studio is AffineScript + Deno. -
SPDX header on every file (MPL-2.0; docs may use CC-BY-SA-4.0); signed commits (a critical Mustfile check).
src/
Model.affine -- the proof-node graph types (the heart)
Status.affine -- status taxonomy + soundness + tier/gate enums
ingest/
CoreJson.affine -- parse arghda-core's DAG + lint + events JSON
A2ml.affine -- STATE.a2ml / contractiles importer
Ledger.affine -- proof-debt(-triage) + MAP.adoc + gate-graph
view/
Glyphs.affine -- Makaton-style glyph vocabulary + legend
Narrative.affine -- 5-slot proof narrative (target/audience-aware)
Register.affine -- RAW | FOLDED | GLYPHED dispatcher
Svg.affine -- pure graph -> SVG renderer (v1)
Html.affine -- pure graph -> HTML renderer (v1)
Lattice.affine -- sound-carrier lattice + composition-lattice
Matrix.affine -- per-constructor / per-obligation status grid
writeback/
Smoke.affine -- emit Smoke.agda `using` pin blocks (preview)
All.affine -- emit All.agda open-import set (preview)
SessionArc.affine -- session-ledger / retraction / decision docs
Cli.affine -- entry point (Deno-ESM host)Constraint reminder: keep view/Svg.affine and view/Html.affine
pure (graph → string); host all I/O (read core JSON, write files,
fetch Echidna) at the Deno-ESM edge in Cli.affine; use affine types
for the Groove/connector handles.
The studio is blocked on the engine emitting real JSON. Per `arghda-spec.adoc’s first-sprint backlog, items 1–3 are done; ArghDA needs 4–7 plus a few additions:
-
check <file>— runagda, capture exit code, emitLintReportJSON. (spec item 4; no Agda invocation exists yet) -
promote/reject— the state-machine transitions (file moves
events.jsonl). (spec item 5; not implemented) -
dag— emit the DAG JSON schema. Lift the import-graph code out oflint/orphan_module.rs(it already computes the edges and throws them away) into a first-class graph module. (spec item 6) -
The remaining 5 lint rules (
missing-without-k,unpinned-headline,unjustified-postulate,unused-importviaagda-unused,tab-mix) and the broadened soundness scan (believe_me,primTrustMe,TERMINATING,funext,--cubical). -
Content hashing of
proven(SHA-256 of file + imports) for automatic upstream-invalidation (proven → inbox). -
/.well-known/groovemanifest +/health+ adag/event HTTP endpoint for the studio and PanLL to consume. -
Add the missing RSR scaffolding to
arghda-coreitself — it has no.machine_readable/, noJustfile/Guix today; bring it up to estate standard as part of this work.
| Phase | Theme | Contents |
|---|---|---|
0 (now) |
Plan & contract |
This document; lock the core↔studio JSON contract; scaffold the
|
1 |
Engine real |
|
2 |
Studio MVP (static) |
AffineScript proof-node model + core-JSON ingest + A2ML/ledger
importers + glyphs + narrative + static SVG/HTML RAW/FOLDED/GLYPHED
renderers. Dogfood on |
3 |
Write-back & coherence |
|
4 |
Verification integration |
Echidna dispatch via the Zig connector (core); TypeLL
|
5 |
Programmatic stage |
HAR integration — emit proof-completion |
6 |
Interactive & PanLL |
When #255/#555 land: AffineScript interactive canvas;
|
-
Naming. "arghda-studio" is a working name; the standalone visual tool could be
arghda(with the engine stayingarghda-core) and the PanLL panelarghda-panll. Owner’s call. -
Where the plan lives long-term. This doc is in
arghda-core/docs/beside the spec; ifarghda-studiobecomes its own repo, the vision may move or be cross-linked. -
Backend maturity. Echidna’s HTTP server, TypeLL’s server, and HAR are all early-phase. Phases 4–5 must treat their schemas as contracts to pin and verify-before-build, not finished APIs.
-
Multi-prover scope.
arghda-coreis "language-agnostic" only aspirationally today (Agda-hardcoded). Coq/Lean/Idris2 support (forabsolute-zero,kategoria,ideas-to-alphas) is a real design task, deferred past the Agda MVP per the original spec’s non-goals. -
AffineScript drift. The compiler is alpha with known soundness holes; pin the studio to the genuinely-enforced subset and treat
CAPABILITY-MATRIX.adocas the authority on what may be relied upon.
This plan was synthesised from a read-only survey of: arghda-core
(docs/arghda-spec.adoc, src/), rsr-template-repo + standards
(RSR compliance), kategoria + ideas-to-alphas (pipeline &
diagrammatic content), typell + nextgen-typing (kernel & obligations),
panll + affinescript (architecture patterns & feasibility),
developer-ecosystem (Unified Zig API Stack & Echidna)
hybrid-automation-router (HAR), and echo-types + absolute-zero
nextgen-language-evangeliser (proof-organisation pain & the
communication model). No source files in any surveyed repo were
modified.