Files
claude 170c6c82dc feat: full-workspace C28 guard — the shell boundary is structural (#295 part 2)
Completes the shell-boundary cycle (tasks 10-13):

- c28_layering now enumerates the FULL workspace: every crate row is
  reconciled against its real production [dependencies], a completeness
  assertion pins the table to the on-disk crates/ set (a new crate can no
  longer escape the guard silently), the shell/assembly imported-by-
  nothing rule is asserted, and a shell-content check pins aura-cli to
  no-[lib] plus a closed allow-list of argv/translation/presentation
  modules. A new domain module in the shell now fails the suite.
- Ledger amendments: C28 gains the assembly position (aura-runner) and
  the corrected import-rule prose (the ratified aura-campaign ->
  aura-backtest production edge, #291/#292); phase 3 is marked done with
  the #297 process::exit residual named; a provenance note records this
  as structural-debt closure, not a demonstrated downstream blocker.
  C25 records the control-surface decision: the text artifact vocabulary
  is canonical, every control surface (CLI executor verbs, a future
  host, an MCP face, a World program) is a projection/executor over it —
  the which-projection-next ranking deliberately open on #295. C14 gets
  the executor-face amendment, C26 the binding-module relocation.
- aura_campaign::MemberRunner's doc names the shipped default
  implementor (aura-runner::DefaultMemberRunner) while the column keeps
  zero dependency on it.
- New library-only E2E fixture (aura-runner/tests/world_member_run_e2e):
  runs the canonical member recipe over a tiny synthetic archive with no
  aura-cli in the link graph, and pins C1 determinism (two independently
  constructed runners produce a byte-identical RunReport).
- campaign_run.rs module doc: intra-doc MemberRunner link re-anchored to
  aura_campaign::MemberRunner (the impl moved out with part 1).

Verification: cargo test --workspace green (1473 passed, 0 failed);
clippy --workspace --all-targets -D warnings clean; cargo doc clean of
NEW warnings (the five unresolved-link warnings in aura-std/aura-backtest
predate this cycle byte-identically at the anchor — #288-era doc drift,
left for the cycle audit).

refs #295
2026-07-21 06:35:31 +02:00

42 lines
1.8 KiB
TOML

[package]
name = "aura-runner"
edition.workspace = true
version.workspace = true
license.workspace = true
publish.workspace = true
# C28 assembly position (#295): composes the ladder rungs, the ingestion
# edge, and the process column into the canonical member-run recipe — the
# harness assembly, input binding (C26), the param<->config translators, and
# the shipped default MemberRunner. Imported by the shell and by downstream
# World programs; imported by no ladder or column crate.
[dependencies]
aura-core = { path = "../aura-core" }
aura-engine = { path = "../aura-engine" }
aura-std = { path = "../aura-std" }
aura-strategy = { path = "../aura-strategy" }
aura-backtest = { path = "../aura-backtest" }
aura-composites = { path = "../aura-composites" }
aura-ingest = { path = "../aura-ingest" }
aura-registry = { path = "../aura-registry" }
aura-research = { path = "../aura-research" }
aura-campaign = { path = "../aura-campaign" }
aura-vocabulary = { path = "../aura-vocabulary" }
data-server = { git = "http://192.168.178.103:3000/Brummel/data-server.git", branch = "main" }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
# sha2: the project.rs dylib load boundary's identity stamp (dylib_sha256) —
# a vetted RustCrypto crate (per-case C16 review, SHA256 user-settled).
sha2 = "0.10"
libloading = "0.8"
toml = "0.8"
[dev-dependencies]
# zip: hand-packs a tiny synthetic M1 archive for the library-reachability E2E
# (tests/world_member_run_e2e.rs) — already transitive via the data-server
# dependency above (a normal, non-dev dependency there); declared directly
# here so test code may `use zip::...` (mirrors aura-ingest's Cargo.toml and
# aura-cli's tests/common/mod.rs, no new dependency actually enters the build
# graph).
zip = "2"