9124275bf3
Binary-only milestone fieldtest for milestone 36 (self-description): a
fieldtester agent bootstrapped from the release binary (d26f0c8) alone —
no engine sources, no repo docs, no bootstrap card — and drove five
end-to-end scenarios: cold bootstrap -> author -> validate (green,
synthetic + real EURUSD, 3944 trades), execution semantics +
latch/edge-pulse idiom (green), vocabulary breadth (33 nodes / 7 folds /
17 metrics / 6+6 blocks, every entry with a meaning), document ramp from
a bare {} (green, 3 members), trace/measurement path (dead-ends,
tracked).
Verdict: the bootstrap card (#267, closed as superseded) is empirically
redundant for the bootstrap->author->validate spine. Two seams keep the
promise short of end-to-end, both tracked outside M1: the declared-tap
drop on the registration path (#327, the missing mechanism of #312/M6)
and the sugar<->document axis namespace (#328, prerequisite of the #319
retirement). Friction routed: #329 #330 #331; evidence comments on #312
and #324. Milestone 36 closed with this adjudication; the fieldtest spec
remains the usual git-ignored working file.
refs #267, refs #312, refs #319
1.9 KiB
1.9 KiB
s2 — execution semantics + one-shot/pulse idiom
Protected property: from the surfaces alone a consumer can learn (a) what the strategy's output stream means, (b) how it is executed against a protective stop, and (c) the signal-side idiom the surfaces recommend when a held one-shot / pulse behaviour is wanted — and can author that idiom to a green run.
What the surfaces say
aura --help: "a strategy emits a bias in [-1,+1] per cycle, held as the continuously-tracked target position; a protective stop defines the risk unit R, and signal quality is measured in R."- Node schemas make the execution layer concrete:
Bias(clamp to [-1,+1]),FixedStop(price → stop_distance, defines R),PositionManagement(bias + price + stop_distance + size → managed position in R). The built-inrun/sweepharness supplies this risk executor automatically. - The scaffolded
CLAUDE.md: "Entry signals become held state via the signal-side latch/edge-pulse idiom (seeaura graph introspect --vocabulary)."
Authored idioms (both build + validate green)
latch_hold.oplist.json— momentary crossover events → held state viaLatch(set = fast>slow,reset = slow>fast), held level →Bias. Runs green (2543 trades over EURUSD 2020-01..03).edge_pulse.oplist.json— the complementary one-shot pulse, built as the first-difference of the latched level (Delay(lag=1)+Sub) fed toBias(+1 on entry edge, −1 on exit edge, 0 held). Builds + validates green.
Friction recorded
The CLAUDE.md names the "latch/edge-pulse idiom" and points to
graph introspect --vocabulary, but that surface only lists node one-liners —
it lists Latch but no edge/pulse primitive and no composition recipe. The
pulse is constructible (Latch→Delay→Sub→Bias), but the consumer must infer the
first-difference recipe; the pointer resolves to a list, not a recipe.