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
33 lines
1.9 KiB
Markdown
33 lines
1.9 KiB
Markdown
# 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-in
|
||
`run`/`sweep` harness supplies this risk executor automatically.
|
||
- The scaffolded `CLAUDE.md`: "Entry signals become held state via the signal-side
|
||
latch/edge-pulse idiom (see `aura graph introspect --vocabulary`)."
|
||
|
||
## Authored idioms (both build + validate green)
|
||
- `latch_hold.oplist.json` — momentary crossover events → held state via `Latch`
|
||
(`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 to `Bias`
|
||
(+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.
|