Files
Aura/Cargo.toml
T
Brummel ef3bec5844 feat(research): 0106 tasks 1-9 — document layer, content-id move, stores + referential tier
The aura-research leaf crate: ProcessDoc/CampaignDoc with strict parsing
(hand-rolled StageBlock deserializer — deny_unknown_fields does not compose
with internally-tagged enums; Axis declares its ScalarKind once with bare
values, per the #189 user veto), canonical form + content_id_of (the
SHA-256 primitive moved from aura-cli, which now delegates — the id pin set
incl. the independent sweep-store recompute stayed green untouched),
intrinsic validation for both document types (P1 constraints structural),
and the introspection contract (schema tables single-source parse
strictness AND vocabulary/describe/open-slots — the Blockly litmus made
checkable). aura-registry: content-addressed processes/ + campaigns/
stores on the blueprint-store pattern (Ok(None) treat-as-empty) and the
referential tier (validate_campaign_refs: process/strategy refs incl.
identity-scan, axis-name + declared-kind checks against param_space).

Plan deviations, verified by hand and folded back into the plan file:
- Task 9's fixture could not use aura-composites as planned: every shipped
  composite with an open param routes through LinComb, which the zero-arg
  std_vocabulary roster deliberately excludes, so none round-trips through
  blueprint_from_json with the by-type-name resolver. The test hand-builds
  a minimal Bias composite instead (generic over param_space, as planned);
  the unused pro-forma aura-composites dev-dep from the repair pass is
  dropped. This is why the loop reported task 9 BLOCKED
  (review-loop-exhausted on the literal code block); the tree itself is
  complete and green.
- A plan-verbatim test assertion false-matched ("deflate" as substring of
  "deflated-positive"); tightened to the JSON key.
- OpenSlot doc comment backticked (rustdoc read strategies[0] as a link;
  doc gate back to 0 warnings).

Verification: cargo test --workspace 898/0; clippy -D warnings clean;
cargo doc --no-deps 0 warnings. Tasks 10-12 (CLI verb families, final
gates) follow.

refs #189
2026-07-03 15:09:39 +02:00

38 lines
1.4 KiB
TOML

# aura — a "game engine for traders": a Rust framework + playground to author
# trading nodes, backtest them deterministically and in parallel, compose them
# fractally, and freeze a validated strategy into a standalone bot.
#
# Workspace split is driven by the cdylib hot-reload boundary: `aura-core` is the
# shared contract that BOTH the engine and every hot-reloadable signal/node
# cdylib link against. Add crates only when a boundary proves real.
[workspace]
resolver = "3"
members = [
"crates/aura-core",
"crates/aura-std",
"crates/aura-engine",
"crates/aura-analysis",
"crates/aura-composites",
"crates/aura-cli",
"crates/aura-ingest",
"crates/aura-registry",
"crates/aura-research",
]
[workspace.package]
edition = "2024"
version = "0.1.0"
license = "proprietary"
publish = false
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
# float_roundtrip is load-bearing for bit-identical reproduction (`aura reproduce`,
# #158): an f64 blueprint param (e.g. a Bias `scale`) is round-tripped through the
# content-addressed store as JSON, and the DEFAULT serde_json parser can be 1 ULP off,
# which would re-derive a member as DIVERGED. This feature guarantees the exact f64 is
# parsed back. Exercised (with a 1-ULP canary value) by aura-cli's
# `f64_blueprint_param_survives_store_round_trip_bit_identically`.
serde_json = { version = "1", features = ["float_roundtrip"] }