Make the Session node reachable from blueprints #261
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?
crates/aura-std/src/session.rsimplements the session node (Frankfurt session bar index, tz-aware/DST-correct,bars_since_open: i64) and it is exported from the crate, but it is not in the closed vocabulary: its construction config (open time, timezone, period) is structural, not scalar, so the zero-arg roster macro cannot build it —crates/aura-std/src/vocabulary.rsnames it in the roster-exclusion comment alongsideLinComb(arity)/CostSum(n_costs)/SimBroker(pip_size).Consequence: no session/time-of-day stream is reachable from a data-only project, so time-of-day conditioners — one of the orthogonal conditioner families for the confirm/refute research model — are not constructible as blueprints at all.
Possible shapes: preset rostered variants (e.g. a Frankfurt-baked
Sessionwithperiod_minutesas its one scalar param), or extending the param vocabulary to cover baked construction config. Claim (unverified): the node logic itself is complete and only the reachability question is open.Design reconciliation (autonomous run, 2026-07-13)
The issue's open shape question — preset rostered variants vs. extending the param vocabulary to cover baked construction config — resolves as a derived decision: the preset variant. A Frankfurt-baked zero-arg builder (open 09:00, Europe/Berlin baked as literals) enters the closed roster with
period_minutesas the node's one scalarParamSpec, bound post-construction exactly like the rostered cost nodes' single knobs (carry_per_cycle/cost_per_trade/slip_vol_mult— the proven pattern incrates/aura-std/src/{carry_cost,constant_cost,vol_slippage_cost}.rs).Basis: derived — the alternative requires non-scalar params (a timezone is a string), breaching the four-scalar param discipline outright, while the preset keeps the vocabulary closed and is precisely the "later, additive extension" the roster-exclusion comment in
crates/aura-std/src/vocabulary.rsanticipates (#156/C20). Recon verified nothing structural blocks it: the node'striggerinput wires through the ordinary graph-edge convention, and the clock comes fromCtx::now(), which every node receives.Scope note: the issue's unverified claim ("the node logic itself is complete, only reachability is open") verified TRUE —
Sessionships tz-aware/DST-correct withbars_since_open: i64; the deferredin_session/session_open_tsoutputs stay deferred (#154, untouched by this decision). With the fork decided, the remaining work is test-specifiable (a blueprint over the rostered preset builds and evals); no further design residue.