test(cli),docs: risk-axis introspection pins + guide/glossary coverage (#216 slice 2)
closes #216 The remaining introspection e2e pins: the bare-{} envelope probe (the issue's exact reproduction) lists the optional risk slot; a bound (non-empty) risk list closes it (no open slots); an EXPLICIT empty 'risk': [] still counts as open (pins the non-emptiness branch, which an is_none()-based probe would get wrong); the --block std::risk assert is sharpened to pin the optional rendering and the block doc line (the old bare contains("risk") matched std::risk trivially). Docs: the authoring guide's bare-{} transcript gains the risk line, the §3 worked example gains a two-regime risk section (heading updated), a prose paragraph explains the structural risk axis (stop defines R; absent = the same default vol regime the verbs bind), and both validate transcripts show the new matrix counts. The glossary gains the 'risk regime' entry (canonical term; avoid: stop regime, risk section). Verified: cargo test --workspace 62 result groups / 0 failures; clippy -D warnings clean; cargo doc 0 warnings; the guide's transcript strings grep-match the shipped hint/summary bytes (1/2/1).
This commit is contained in:
+14
-3
@@ -266,13 +266,14 @@ open slot: format_version (required, must be 1)
|
||||
open slot: kind (required, must be "campaign")
|
||||
open slot: name (required, string)
|
||||
open slot: data (required section: instruments + windows)
|
||||
open slot: risk (optional, list of stop regimes { vol: { length, k } }; absent = one default regime)
|
||||
open slot: strategies (required, non-empty list of { ref, axes })
|
||||
open slot: process.ref (required, content id of a process document)
|
||||
open slot: seed (required, non-negative integer)
|
||||
open slot: presentation (required section: persist_taps (equity | exposure | r_equity | net_r_equity) + emit)
|
||||
```
|
||||
|
||||
### Worked example: two instruments, one strategy, four axis points
|
||||
### Worked example: two instruments, one strategy, four axis points, two stop regimes
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -284,6 +285,10 @@ open slot: presentation (required section: persist_taps (equity | exposure | r_e
|
||||
"instruments": ["GER40", "FRA40"],
|
||||
"windows": [ { "from_ms": 1725148800000, "to_ms": 1727740800000 } ]
|
||||
},
|
||||
"risk": [
|
||||
{ "vol": { "length": 3, "k": 1.5 } },
|
||||
{ "vol": { "length": 3, "k": 3.0 } }
|
||||
],
|
||||
"strategies": [
|
||||
{
|
||||
"ref": { "content_id": "597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a" },
|
||||
@@ -306,11 +311,17 @@ Each axis name (`fast.length`, …) must name an open param of the referenced
|
||||
blueprint (`aura graph introspect --params`, §1) and declare that param's
|
||||
`ScalarKind`.
|
||||
|
||||
The optional `risk` list is the campaign's structural risk axis: every cell
|
||||
runs under every listed stop regime, so cells differ by execution discipline,
|
||||
never by signal — the regime's stop defines the risk unit R. Absent or empty,
|
||||
the matrix runs one implicit default regime (the same vol regime the
|
||||
orchestration verbs bind when their stop flags are omitted).
|
||||
|
||||
### Validate — three tiers, honest degradation
|
||||
|
||||
```
|
||||
$ aura campaign validate mra_3_campaign_full_v2.json # outside any project
|
||||
campaign document valid (intrinsic): 1 strategy(ies), 3 axes (4 points), 1 window(s)
|
||||
campaign document valid (intrinsic): 1 strategy(ies), 3 axes (4 points), 2 instrument(s), 1 window(s), 2 regime(s) — 4 cell(s)
|
||||
referential checks skipped (no Aura.toml found up from /home/…)
|
||||
```
|
||||
|
||||
@@ -319,7 +330,7 @@ registered, the same command runs two further tiers:
|
||||
|
||||
```
|
||||
$ aura campaign validate mra_3_campaign_full_v2.json # inside a project, refs registered
|
||||
campaign document valid (intrinsic): 1 strategy(ies), 3 axes (4 points), 1 window(s)
|
||||
campaign document valid (intrinsic): 1 strategy(ies), 3 axes (4 points), 2 instrument(s), 1 window(s), 2 regime(s) — 4 cell(s)
|
||||
campaign document valid (referential): all references resolve, axes are in the param space
|
||||
campaign document valid (executable): pipeline shape and static guards pass
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user