You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs+feat: honest wiki claims + Dense pair/keyword constructor so docs resolve (#68)
## Summary
A **documentation-honesty pass** on the flagship wiki (from a dedicated
doc-vs-code audit), plus the one **code change** needed to make the
wiki's own examples valid — fixing at source rather than sweeping the
symptom.
Every claim below was ground-truthed against the code and the repo's own
benchmark, *not* taken on the audit's word (some audit findings were
over-flagged — see "What the audit got wrong").
## Docs — no overclaim
| Claim (before) | Reality | Fix |
|---|---|---|
| "2-3× faster than PyTorch" (FAQ/Vision/Migration/Home) | The repo's
**own** benchmark measures a **~0.73× geomean** vs PyTorch — slower on
average, winning 11/25 ops; PyTorch's MKL wins large element-wise ops
5–25× | State the measured truth, link
`benchmark/results_2026-02-20_framework-comparison.md`, and say the
differentiator is provable correctness (the benchmark's own conclusion)
|
| "Rust backend" as the current/optional compute backend | The compute
backend is **Zig** (`ZigBackend`); there is **no** `RustBackend` compute
path (the only `RustBackend` is in vendored
`AcceleratorGateVendored.jl`) | Fix present-tense mislabels → Zig |
| `compile(model, backend=:rust/:zig/:julia)` | `compile(;
backend::AbstractBackend = JuliaBackend())` — a **symbol** MethodErrors
| → `backend=ZigBackend("/path/to/libaxiom_zig.so")` (the README's real
idiom) |
| "`@ensure`/`@prove` are PROVEN, not just tested" / "mathematical
proof" | `prove.jl` itself says its heuristics are "**NOT** symbolic
execution and **NOT** formal verification" and returns `:unknown`
honestly | Soften to match the code's own disclaimer |
| `[Rust Backend](Rust-Backend.md)` | File does not exist | →
`Performance-Tuning.md` (real page) |
## Code — make the documented API real (doctrine: fix at source)
The docstring (`src/layers/dense.jl:38`) and **dozens** of wiki examples
use Flux-style `Dense(in => out)` and keyword `activation=…`, but the
constructor was positional-only — so those standalone examples
MethodError. Rather than sweep 40+ doc sites, the constructor now
accepts what its own docs advertise:
- `Dense(in => out)`, `Dense(in => out, relu)`, `Dense(in => out;
activation=relu)` (Flux-style pair form)
- `Dense(in, out; activation=relu)` (keyword activation)
- Positional `Dense(in, out, relu)` still works and behaves
**identically**; the keyword wins if both are given.
Verified: **0 method ambiguities** (`detect_ambiguities(Axiom;
recursive=true) == 0`), forward pass unchanged, new-forms guarded in the
`Dense Layer` testset (**11/11 pass**), and the two disagreeing Dense
docstrings reconciled.
## What the audit got wrong (and I corrected for)
- The audit claimed *all* `Dense(=>)` examples MethodError. In fact,
**inside `@axiom` blocks the macro parses layers structurally and
accepts both pair-form and keyword-activation** — so the Tutorials build
fine. Only **standalone** constructor calls were broken. This
constructor change makes both paths correct.
## ⚠️ Two items I deliberately did NOT change — they need your decision
1. **Version maturity contradiction.** `Project.toml` / `src/Axiom.jl` /
the benchmark all say **1.0.0**, but `FAQ.md:30` says "alpha (v0.1.0)"
and the README roadmap leaves "v1.0 — production ready" **unchecked**.
Resolving this is a release-semantics call (bump docs to 1.0, or the tag
down to 0.1) — flagged, not touched.
2. **Roadmap "Rust backend" vs shipped Zig.** The forward-looking
roadmap (`Vision.md` "The Road Ahead", `Roadmap-Commitments.md` — which
declares itself the source of truth — and `Certification-Readiness.md`)
commits to a *future* "Full Rust backend", and
`Roadmap-Commitments.md:94` cites a non-existent
`docs/wiki/Rust-Backend.md`. The **shipped** backend is Zig, and estate
policy migrated Rust→Zig. I did **not** rewrite the commitments doc
(outward-facing promise; intent is yours). Please decide: align the
roadmap to Zig, or keep a genuine Rust-backend commitment (and add the
missing `Rust-Backend.md`)?
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1
---
_Generated by [Claude
Code](https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1)_
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments