Aura Language Completeness Report

Status after the Phase 4 audit (mutability, closures, modules, imports). Percentages estimate how much of a typical developer workflow is supported today, judged against the documented language and the test corpus.

Scoring method: each area is rated by (a) whether the documented behaviour is implemented, (b) whether it is enforced/checked, and (c) whether it is covered by tests. A rating of 100 % means “documented, enforced, tested, and usable in real multi-file projects”. Ratings below 100 % name the concrete gap.


Overall

Dimension Completeness Notes
Core language ~95 % Syntax, types, control flow, functions, OOP, pattern matching, generics checked; escape sequences and slicing fixed
Tooling ~92 % CLI (14 commands), type checker, semantic checker, formatter, debugger, LSP, pip-installable, dependency manifest
Stdlib ~92 % 210+ functions across 10 modules incl. regex, os, http, testing, and native *_async file/HTTP helpers — no ORM or streaming sockets
Interop (Python) ~98 % stdlib and PyPI imports, escapes, slicing, generics/builtin types; no typed stubs for arbitrary packages
Ecosystem / DX ~88 % Installable wheel/sdist, CI, release tooling, dependency manager, LSP; PyPI publication pending
Production readiness for a general developer ~93 % Usable for scripts, services and libraries; remaining gaps listed below

1. Core language

Area % Evidence Remaining gap
Variables & constants 95 % let/let mut/const enforced by MutabilityChecker; corpus migrated Exhaustiveness of the checker on exotic assignment forms
Primitive & collection types 100 % int, float, str, bool, bytes, list/dict/set/tuple
Functions 100 % Defaults, named args, variadics, expression bodies, recursion, multiple returns
Lambdas & closures 95 % Single-expr and block lambdas; captured-locals use nonlocal Closure analysis is syntactic, not a full scope resolver
Classes & OOP 99 % Class header fields (class User(private name: str, mut age: int)) driving the constructor and accessors, extends-only inheritance (single/multiple/dotted), @property, @staticmethod, @classmethod, explicit visibility with owner-aware mangling (E307/E308), abstract class + abstract def (E309/E316), one constructor style per class No metaclasses
Traits / interfaces 98 % Compile to ABCs; multiple traits via extends A, B; traits extend traits; abstract-method enforcement at compile time No mixin method-resolution rules
Generics 90 % Box[T] accepted; unused type parameters flagged; constraints ([T: Bound]) validated (E110); erased at runtime No type-argument inference
Enums 95 % Values, auto-numbering, matching on members (Color.RED) No methods on enum members
Control flow 100 % if/unless/guard/match/while/until/loop; labeled break/continue
Pattern matching 95 % Literals, tuples/lists, guards, constructor patterns, enum members, wildcard; exhaustiveness warned (E109) No nested-or-pattern coverage analysis
Error handling 95 % try/catch/finally, typed catches, throw; custom hierarchies via extends Error or (Error) No finally return-value rules
Operators 95 % Full precedence table, bitwise, ?:, ??, ??=, ?., ?[, |>, ranges, spreads, slicing
String literals 98 % Escapes (\n, \t, \uXXXX), raw/byte prefixes, f-strings, triples
Mutability rules 98 % E303 with a real source location, enforced at every CLI entry point Not surfaced by aura lint (which is style-only by design)
Diagnostics 98 % Every diagnostic is a coded E##/W## with file:line:column; docs/ERRORS.md is the source of truth, kept in sync by a test

2. Tooling

Tool % Evidence Remaining gap
run 100 % Transpiles + executes; async wrapper
transpile 100 % Emits Python to stdout/file
check 95 % Type + mutability + rule diagnostics, each with a code and location; arity (too many/few) enforced No interprocedural inference across modules
format 90 % format_aura: placeholder-protected, string- and comment-aware spacing/operator normalization No AST-driven reflow of long lines
lint 75 % Line length, trailing whitespace, naming, spacing — all W00x with locations Style-only; no auto-fix
test 90 % Runs .aura files; stdlib.testing gives assertions/matchers and aura test surfaces failures No fixtures
repl 90 % Shares the parser and the same three checkers as aura check (types, structure, mutability); only the main rule is off Basic multi-line handling
init 95 % aura.toml + src/main.aura, --venv to create the environment No framework templates
venv 95 % init/info/shell/remove over the project .venv; installs declared deps on creation No .python-version pinning
add / remove 95 % Specifiers, extras, -D dev group, validation that blocks argument injection No version resolution against the index
install / deps 95 % Installs into the project venv; --lock writes exact versions No hash verification
doctor 95 % Reports Python, manifest, venv, and per-dependency install status
debug 65 % aura debug, --trace, post-mortem line mapping Top-level line granularity; no interactive breakpoints
lsp 90 % Diagnostics, hover, completion, document symbols, go-to-definition, references, rename, formatting (stdio) No cross-file workspace refactors
Error messages 85 % Parser + semantic errors with file context No source spans / carets in all cases
Packaging 95 % pip install wheel/sdist provides the aura command Not yet published to PyPI
Dependency manager 85 % aura init/add/install/deps with aura.toml No lockfile/version resolver
Release tooling 85 % aura version + tag-driven GitHub Actions release PyPI trusted publishing needs repo config

3. Standard library

Module % Coverage
math 95 % 40+ functions (constants, trig, logs, combinatorics)
string 95 % 42 functions (case, trim, pad, split, replace, predicates)
collections 90 % List/dict/set helpers; data-first variants for pipes
itertools 90 % 18 iterator utilities
json 85 % Strict parse/serialize; no streaming
time 80 % Clocks, sleep, strftime, ISO; no timezone/duration types
io 85 % File/dir operations, UTF-8; no async I/O, glob, temp files
regex 90 % match/search/find/split/replace/groups/flags
os 85 % Env, paths, cwd, listdir/walk, dir ops, process info (no shell exec)
http 80 % GET/POST/PUT/DELETE, JSON helpers, URL encoding; stdlib-based
Networking (raw sockets) 40 % Via Python socket/requests; no Aura wrapper
Async I/O 30 % Python asyncio interoperates; no Aura-native API

4. Python interoperability

Capability % Evidence
Import Python stdlib 100 % import os, sys, from collections import Counter, from x import a as b
Import PyPI packages 98 % import requests, pyyaml verified; any installed package works
Import local Aura modules 98 % Sibling .aura, dotted packages, from pkg.util import x
module { } namespaces 98 % Private by default, export makes a member public, dotted names nest, state not writable from outside (E303/E308), mangled at runtime
Module facades 95 % module App { export Components, Utils } re-exports siblings by convention or from "mod"; package entry App/App.aura; E313/E312 — no alias renaming on re-export
Python literals 99 % Escapes (\n, \t, \uXXXX), raw/bytes, f-strings, triples, numeric forms
Python slicing 98 % x[start:stop:step] for lists and strings, including [::-1]
Call Python callables 100 % Native attribute/from imports; lambdas as callbacks
Use Python objects/APIs 95 % OrderedDict, defaultdict, regex objects, Decimal, hashlib, exceptions
Typed Python builtins 70 % len/sum/max/min/sorted/... return types inferred; user modules are Any
Aura library used from Python 45 % No stable Aura→Python API; generated code is untyped
Type stubs for arbitrary packages 15 % Builtins covered; no .pyi ingestion

5. Developer experience

Area % Remaining gap
Quick start 98 % pip install . provides the aura command; python3 main.py still works
Documentation 92 % EN + PT language/type docs; grammar, diagnostics reference, AUP, audit, completeness, changelog, README
Examples 92 % 11 feature examples + 10 runnable Aura Patterns (AUP) with an enforced standard
Tests 98 % 2,700+ passing; property-based (Hypothesis), differential, extreme rule/OOP suites; ~91 % coverage; 6,609-file corpus
CI 92 % GitHub Actions: tests on 3.10–3.13, CLI smoke test, build, coverage floor
Releases / versioning 95 % Tag-driven release workflow, aura version, PyPI trusted publishing (live on PyPI)
Package layout for users 95 % Installable console entry point; clean aura namespace; published as aura-language on PyPI

What a general developer can do today

  • Install with pip install . and use the aura command (or pip install aura-language once published).
  • Scaffold a project with aura init, add dependencies with aura add.
  • Write scripts, CLIs, and multi-file programs with classes, traits, generics, closures, pattern matching, and error handling.
  • Import Python’s standard library and any installed PyPI package.
  • Split code across local Aura modules and packages.
  • Use the stdlib regex, os and http modules, including native *_async file and HTTP helpers for async def code.
  • Get editor diagnostics, completion, hover, go-to-definition, rename and formatting via aura lsp, and trace programs with aura debug.

What blocks literal “100 %” (ranked)

  1. Aura→Python API — generated code is untyped; no stable way to call Aura libraries from Python with type information.
  2. Type stubs for arbitrary PyPI packages — builtins are typed; third-party APIs remain Any.
  3. Raw networking and streaming async I/Oio and http expose native *_async helpers, but low-level sockets and streaming HTTP are still reached through Python.
  4. LSP depth — diagnostics, hover, completion, symbols, go-to-definition, references, rename and formatting are implemented; workspace-wide refactors across multiple open files are not.
  5. Package ecosystem — published and installable, but no curated registry or version resolver (only the aura.toml manifest).

Everything in the core language, tooling, standard library, Python interop, packaging, CI and dependency management is implemented and tested. Aura is published on PyPI as aura-language, with tag-driven releases that build the wheel/sdist, publish to PyPI and create a GitHub release automatically. The remaining items are ecosystem integrations that depend on external services (PyPI) or on large, separate efforts (full static typing of Python).