13d8500402
Architect drift review (cycle bfb8648..0389399): no domain-invariant breach. What holds: aura-bench is bin-only dev tooling with zero production reverse deps (invariant 8/C13); every committed surface runs on seeded synthetic data in scratch temp projects (invariant 9); run_reps enforces cross-rep fingerprint identity and the campaign fingerprint carries integer ordinals across the child boundary, consistent with C1 and its cross-command ULP carve-out; zip/clap per-case dependency notes in place (C16), and the ledger correctly gains no entry — tooling lives in the project facts + README. Three drift items, resolved in this commit: - [medium] the winner_fingerprint doc claimed walk-forward regressions fail the bench; the walk-forward stage in fact emits an empty realization record, so coverage is only indirect (via the bootstrap trade count). Doc now states the gap honestly; the engine-side fix is parked on #279. - [low] the fingerprint's lenient JSON parse would silently erode on a registry-schema rename: a new lockstep test builds a real CampaignRunRecord from the aura-registry/aura-analysis/aura-engine types (new dev-deps) and asserts the extracted fingerprint, so a rename breaks this crate's tests instead. - [low] LIBRARY_SURFACES was hand-synced with measure_surface: a new test pins that every listed surface measures without a binary path. Regression gates on the closing tree: cargo test --workspace 1379 green, clippy -D warnings clean, doc build clean, aura-bench run exit 0 with five 'fingerprint OK' at <=2% drift. No baseline moved in this commit — the bench baselines were pinned and verified in the feature commit. refs #251
39 lines
1.6 KiB
TOML
39 lines
1.6 KiB
TOML
[package]
|
|
name = "aura-bench"
|
|
edition.workspace = true
|
|
version.workspace = true
|
|
license.workspace = true
|
|
publish.workspace = true
|
|
|
|
[[bin]]
|
|
name = "aura-bench"
|
|
path = "src/main.rs"
|
|
|
|
# Dev-only measurement tool (issue #251): benches the engine / ingest / campaign
|
|
# surfaces against committed baselines under baselines/. No production crate
|
|
# depends on this crate; nothing here reaches a frozen deploy artifact (C13).
|
|
[dependencies]
|
|
aura-core = { path = "../aura-core" }
|
|
aura-engine = { path = "../aura-engine" }
|
|
aura-std = { path = "../aura-std" }
|
|
aura-ingest = { path = "../aura-ingest" }
|
|
serde = { workspace = true, features = ["derive"] }
|
|
serde_json = { workspace = true }
|
|
# clap: same CLI surface convention as aura-cli (usage errors exit 2).
|
|
clap = { version = "4", features = ["derive"] }
|
|
# zip: writes the synthetic 48-byte M1 archives the ingest/campaign surfaces
|
|
# measure — the same on-disk format the test suites hand-pack as a dev-dep
|
|
# (aura-cli/aura-ingest). First runtime (non-dev) use in the workspace, admitted
|
|
# under the C16 per-case policy: aura-bench is a dev tool outside every deploy
|
|
# path, and zip is already in the build graph via data-server.
|
|
zip = "2"
|
|
|
|
[dev-dependencies]
|
|
# Lockstep guard for the campaign fingerprint's stdout-schema coupling: the
|
|
# winner_fingerprint test constructs a REAL CampaignRunRecord (aura-registry)
|
|
# with a real FamilySelection (aura-analysis) and serializes it, so a field
|
|
# rename in those crates fails this crate's tests instead of silently eroding
|
|
# fingerprint coverage.
|
|
aura-registry = { path = "../aura-registry" }
|
|
aura-analysis = { path = "../aura-analysis" }
|