a8c29d130b
New top-level experiments/2026-05-12-cross-model-authoring/ (out of
root Cargo workspace; nested-crate standalone via empty [workspace]
table per Cargo idiom). The renderer projects one canonical
master/spec.md into two form-specific files (rendered/json.md and
rendered/ailx.md) by walking three directive forms ({form-only:
json}, {form-only: ailx}, {example: <id>}) and emitting per-example
fenced blocks sourced from 13 curated .ail.json fixtures.
Four test gates green (10/10 total):
- splitter_unit (7) — directive parser, malformed inputs panic
- spec_completeness (1) — AST-variant visitor lifted verbatim from
schema_coverage.rs; 34/34 variants covered by the curated subset
- example_roundtrip (1) — every fixture roundtrips through
ailang_surface::{print, parse} to identical canonical bytes
- token_balance (1) — form-only block totals balanced to 3.22% under
tiktoken-rs::cl100k_base (gate is ±5%)
Six of the 34 variants did not have a dedicated fixture topic in the
plan and were absorbed into the closest existing fixture per the
plan's Step 4.14 escape hatch (Let/Clone → fn_calls_prelude; LetRec
→ data_with_match; If → match_literal_pattern; ReuseAs →
data_simple; Const → floats). Surfaced as a journal note, not a
plan revision.
Two ancillary additions vs. plan, both structural Cargo necessities,
spec-compatible: render/Cargo.toml carries an empty [workspace] table
so the nested crate refuses parent-workspace discovery, and
render/.gitignore drops /target + Cargo.lock. Both surfaced inline
in the per-iter journal's Concerns section.
cma.2 (harness) and cma.3 (live IONOS run + DESIGN.md addendum +
journal + roadmap edits) remain out of scope per the spec.
31 lines
823 B
TOML
31 lines
823 B
TOML
# Empty `[workspace]` table declares this crate as a standalone
|
|
# Cargo workspace of its own, so it is NOT auto-discovered as a member
|
|
# of the root workspace at /home/brummel/dev/ailang/Cargo.toml. The
|
|
# spec (`docs/specs/2026-05-12-cross-model-authoring-form-test.md`
|
|
# §Architecture lines 90-95) requires this experiment to live outside
|
|
# the root workspace; the root Cargo.toml is intentionally not modified.
|
|
[workspace]
|
|
|
|
[package]
|
|
name = "xmodel-render"
|
|
version = "0.0.1"
|
|
edition = "2021"
|
|
publish = false
|
|
|
|
[[bin]]
|
|
name = "xmodel-render"
|
|
path = "src/main.rs"
|
|
|
|
[lib]
|
|
name = "xmodel_render"
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
ailang-core = { path = "../../../crates/ailang-core" }
|
|
ailang-surface = { path = "../../../crates/ailang-surface" }
|
|
serde_json = "1"
|
|
anyhow = "1"
|
|
|
|
[dev-dependencies]
|
|
tiktoken-rs = "0.6"
|