audit(0082): cycle close — drift-clean; C10 cycle-0082 note + cost-flag validation symmetry
Cycle 0082 (cost-graph composition, cycle 2) closes drift-clean against C10. The
architect review confirms the cycle is fundamentally sound:
What holds: VolSlippageCost + CostSum are ordinary aura-std downstream nodes
(C9/C8), cost stays out of aura-engine; the vol proxy is a trailing realized range
(C2, no look-ahead); feed-forward, no equity feedback (C1); the co-temporality
contract (gate cost nodes on PM geometry only, 0-cost on a cold state input) is
consistent with C1/C2/C9 and the cycle-1 positional join, and charging 0 during
warm-up is honest (no estimate yet, not a fabricated guess). The no-cost C18 golden
is byte-identical.
Drift resolved at close:
- [medium -> fixed] docs/design/INDEX.md (C10): added the cycle-0082 realization
note. The load-bearing co-temporality contract (generalizes to all future cost
factors) lived only in code comments + spec 0082; the ledger is now its durable
home once the spec is removed.
- [low -> fixed] crates/aura-cli/src/main.rs: --cost-per-trade now rejects negatives
at parse, symmetric with --slip-vol-mult (it previously deferred to the node
assert's panic). Run-path tests + the no-cost golden stay green.
Carry-on (documented deferrals, not this cycle's debt to fix):
- The 3-field cost triple {cost_in_r, cum_cost_in_r, open_cost_in_r} is restated
by-convention across ConstantCost, VolSlippageCost, and CostSum (compiler-unlinked
lockstep) — to be unified by the general CostNode trait, now justified by two
concrete nodes (#148).
- SLIP_VOL_LENGTH=5 is sized to warm within the synthetic smoke fixture; documented
in the const doc (on real M1 data any reasonable window warms).
- A future per-cycle-held accrual (carry/funding) accrues over holding duration,
which will force a summarize_r fold change and stress the positional seam — flagged
for that deferred cycle.
Regression gate green and unchanged: full workspace suite 0-fail, clippy --workspace
--all-targets -D warnings clean. No baseline moved -> no ratify.
Spec + plan ephemera removed (git rm docs/specs/0082, docs/plans/0082).
refs #148
This commit is contained in:
@@ -733,6 +733,30 @@ composite-builder, data-grounded factors (realized-vol → slippage, recorded-ra
|
||||
swap), per-cycle-held accrual (carry / funding), and the conviction-weighting
|
||||
R-aggregation axis. Decision log: #148.
|
||||
|
||||
**Realization (cycle 0082 — cost-graph composition, cycle 2, #148).** The cost graph
|
||||
**composes**: a second, *state-dependent* cost node plus an aggregator prove that two
|
||||
cost nodes sum into one net-R curve with `summarize_r` and the `net_r_equity` tap
|
||||
structurally unchanged. `VolSlippageCost` (`aura-std`) charges `slip_vol_mult · vol /
|
||||
|entry − stop|` in R, reading an **independent short-horizon realized-range** vol
|
||||
(`RollingMax − RollingMin`, window distinct from the stop's own vol — scaling slippage
|
||||
by the stop's vol would collapse cost-in-R to a constant, indistinguishable from
|
||||
`ConstantCost`). `CostSum` (`aura-std`) is the cost-graph **output node**: it sums `N`
|
||||
cost nodes' 3-field cost-in-R records **per-field** into one aggregate (`n = 1` is the
|
||||
identity), so the seam consumes a single cost stream regardless of node count — one
|
||||
home for cost, the positional join unchanged. **Co-temporality contract (load-bearing,
|
||||
generalizes to all future factors):** since `summarize_r` positionally joins `cost[i]
|
||||
↔ record[i]`, a cost node is gated **only by the PM trade-geometry**; any not-yet-warm
|
||||
state input (the vol proxy warms later than PM) contributes **0 cost** that cycle
|
||||
rather than withholding — the node still emits its row, so the cost stream stays
|
||||
co-temporal 1:1 with the PM record. This makes co-temporality structural and
|
||||
warm-up-independent, preserves the C18 golden, and is honest (no slippage estimate yet
|
||||
→ no charge). `ConstantCost` satisfies it trivially; only state-dependent nodes need
|
||||
the missing-factor → 0 rule. Wired on the **run path** via `--slip-vol-mult`,
|
||||
composable with `--cost-per-trade` (their costs sum); sweep / walk-forward / mc pass
|
||||
`None`. The 3-field cost triple is now restated by-convention across the two producers
|
||||
+ `CostSum` (a compiler-unlinked lockstep) — to be unified by the still-deferred
|
||||
general `CostNode` trait (now justified by two concrete nodes). Decision log: #148.
|
||||
|
||||
**Reframe (2026-06-23, #117 — exposure → bias, R as the signal-quality unit).**
|
||||
[HISTORY — its R spine survives into the 2026-06-28 contract; its Stage-2 currency /
|
||||
realistic-broker / register / flat-1R-vs-compounding portions are SUPERSEDED by that
|
||||
|
||||
Reference in New Issue
Block a user