audit(0068): cycle close — lift position-event-derive rationale to ledger, drop ephemera
Architect audit clean (no drift): the derive is the faithful C10 book first-difference — Close uses the stored book volume (the actual book), never an exposure delta (the exact inversion of the abandoned 0064 exposure-integral); post-run reduction, no in-graph node (C14), positional type-erased Scalar reads (C7), each event's event_ts is its own cycle (C2), the >1-event-per-instant reversal case is why it is derived not per-eval (C8/C10); aura-engine -> aura-core only (instrument_id a caller scalar, no InstrumentSpec import). - Ledger C10: add a "Realization (cycle 0068, #115)" note — derive_position_events as the first difference of the executed book, the post-reframe replacement for the rolled-back 0064 derive; fixed-fractional / currency / equity-feedback sizing and the realistic brokers stay #116. - Remove the ephemeral spec + plan (cycle closed; rationale in the ledger + git history). Accepted low debt (architect [low]): the stop-then-same-cycle-reopen producer path emits the same closed&&open shape as a bias-flip reversal and the derive handles it correctly (it keys on closed/open/direction/size, not exit_reason; unit-covered via the reversal test), but is not separately asserted end-to-end. Cosmetic; the derive is producer-agnostic. refs #115
This commit is contained in:
@@ -674,6 +674,25 @@ member's equity/exposure/r_equity under `runs/traces/<n>/<member_key>/` via the
|
||||
refusal guard is gone, so per-member `--trace` is symmetric across all three sweep
|
||||
strategies and a swept member charts (`chart <n>/<member> --tap r_equity`).
|
||||
|
||||
**Realization (cycle 0068, #115 — position-event derive).** The Stage-2 audit layer's
|
||||
*derivation* now landed (the schema was 0063, #114; the realistic brokers consuming it
|
||||
remain #116). `derive_position_events(record, instrument_id) -> Vec<PositionEvent>`
|
||||
(`aura-engine`, beside `summarize_r`) is the **first difference of the executed book**:
|
||||
a pure post-run reduction over the `PositionManagement` dense record (read positionally
|
||||
as type-erased `Scalar`s, C7 SoA — no in-graph node, so the hot path stays domain-free,
|
||||
C14), emitting a `Buy`/`Sell` at each open and a `Close` at each exit, a reversal (or a
|
||||
stop-then-same-cycle reopen) emitting **Close then the opposite open at one `event_ts`**
|
||||
(close first — the C8 ">1 event per instant" case that forces this to be a *derived*
|
||||
table, not a per-`eval` output). The close sizes the **actual book** (the closed
|
||||
position's stored volume), never an exposure delta — the post-reframe replacement for the
|
||||
rolled-back 0064 exposure-integral derive (#117). `instrument_id` is a caller-supplied
|
||||
scalar (`aura-engine` depends only on `aura-core`, so it never imports `InstrumentSpec`).
|
||||
A position open at window end emits its open with **no synthetic `Close`** (the table
|
||||
records actual executed events; `summarize_r`'s force-close is for the R metric only).
|
||||
The `r_col` ⟷ PM-record lockstep is now guard-pinned for `direction` too. **Still #116:**
|
||||
fixed-fractional / currency / equity-feedback sizing (the equity→Sizer z⁻¹ fill-edge
|
||||
register) and the realistic brokers that consume the table.
|
||||
|
||||
### C11 — Generalized sources; record-then-replay determinism boundary
|
||||
**Guarantee.** A source is anything that produces timestamped scalar streams —
|
||||
market data (`data-server`) and non-financial sources (e.g. a news-agent node
|
||||
|
||||
Reference in New Issue
Block a user