Deliver net-R on the family/campaign path — the cost graph lost its last production caller in #221 #234
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Invariant 7's research loop is "flat-1R, gross R → net R via the composable cost-model graph (C10)". Since the #221 cut (commit
b5ad53d, 2026-07-09) removedwrap_r's cost-graph branch — its last production caller, per the code comment at crates/aura-cli/src/main.rs:62-65 — net-R is unreachable from every CLI path:persist_tapsacceptsnet_r_equitybut skips it at run time ("net_r_equityhas no channel here", crates/aura-cli/src/campaign_run.rs:582);tap_channel("net_r_equity") == None, "unproducible on the current path" (campaign_run.rs:1004-1010).The #221 rationale — cost "routes through the sweep/campaign reduce path" — described the intended home, not a shipped one. The cost machinery itself is complete and tested (cost-model-graph milestone, closed 2026-06-29: CostNode/CostRunner/CostSum, ConstantCost/VolSlippageCost/CarryCost, the
cost_graphcomposite, thesummarize_rnet fold); it is unwired, not missing.Consequence for a research project: every sweep/walkforward/mc/generalize/campaign result is gross-of-costs, and nothing on the surface says so.
Delivery home is the campaign path (per-member cost graph →
net_r_equitytap → net summarize). #152 (intern cost port names ascost[k].<port>instead of a per-build leak) is the naming prerequisite for cost on the per-member sweep path. A cost-model reference also belongs in the harness-binding vocabulary of #231 once that lands.net_r_equityagainDesign reconciliation (specify)
Spec: net-r-campaign-cost. The delivery-shape forks the issue leaves open are resolved as follows.
cost: Vec<CostSpec>block on the campaign document, mirroring the risk-regime precedent exactly (externally tagged additive enum over the three shipped cost nodes — constant / vol_slippage / carry; serde default + skip-if-empty so cost-less documents keep their content ids; astd::costconstruct-vocabulary block and validation likestd::risk). Basis: derived — the risk block is the proven shape for a closed, Blockly-clean structural campaign axis; the cost machinery's own arity (cost_graph takes a Vec, summed by CostSum) matches a Vec block; content-id stability follows the documentedrisk/descriptionprecedent.Spec auto-signed (2026-07-11): the net-R delivery spec (docs/specs/net-r-campaign-cost.md, a git-ignored working file) was signed autonomously — the signature is an independent fresh-context grounding-check PASS (8 load-bearing assumptions about current behaviour, each ratified against a named currently-green test; one informational imprecision noted — the leak twins live in cost_graph only, cost_sum builds owned strings — which changes no requirement). No human signed. The design decisions are the five forks in the reconciliation comment of 2026-07-11 above. Planning proceeds from this spec.
Shipped on the branch, seven commits:
249aafd(#152: interned cost[k].* names, both cost_graph leaks gone),bdcf045(CostSpec campaign vocabulary — additive cost block mirroring risk, two-tier-validated, content-id-stable),a1afc2f(wrap_r's optional cost leg — the #221 wiring rebuilt behaviour-preservingly, suite green unchanged as the gate),bb1f6c8(doc -> member -> both re-run sides: genuinely net member metrics, manifest stamping, reproduce + persist re-derivation — the #233 pattern),da7d547(TapChannel::Net — the net_r_equity tap routes and persists; remedy-naming skip for cost-less docs),c32c01a(closing archive-gated e2e: costed GER40 campaign nets every member, gross parity without the block, curve persisted, family reproduces bit-identically),aaca18c(audit close: C10 ledger reconciled with superseded/discharged annotations + the cycle-net-r realization; one-knob invariant unit-pinned).Both acceptance boxes are met: a campaign/family run produces net_r_equity again (box 1), and net is the default via the explicit zero-cost model — an absent cost block hashes and behaves byte-identically to today while summarize_r's net family equals gross under it (box 2, second arm). The spec was auto-signed on a grounding-check PASS; the five design forks are in the reconciliation comment of 2026-07-11 above. #152 closed with the first commit. Closes via commit on merge.