@senpi/runtime 3.0.9-dev.feat-strategy-compos.20260718011320 → 3.0.9-dev.feat-strategy-compos.20260719233135
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/composer-commands.d.ts.map +1 -1
- package/dist/cli/composer-commands.js +20 -0
- package/dist/cli/composer-commands.js.map +1 -1
- package/dist/composer/authoring/__init__.py +4 -1
- package/dist/composer/authoring/answers.py +54 -1
- package/dist/composer/authoring/archetypes/classifier.py +1 -0
- package/dist/composer/authoring/archetypes/relative_value.py +1 -0
- package/dist/composer/authoring/archetypes/thesis_fund.py +1 -0
- package/dist/composer/authoring/builder.py +7 -1
- package/dist/composer/authoring/emit.py +8 -2
- package/dist/composer/authoring/generate.py +57 -1
- package/dist/composer/authoring/runtime_emit.py +69 -33
- package/dist/composer/cli.py +21 -0
- package/dist/composer/generated/catalog.md +4 -24
- package/dist/composer/generated/describe.md +20 -0
- package/dist/composer/generated/graph.schema.json +4 -0
- package/dist/composer/pure_fn/models.py +8 -0
- package/dist/composer/registry/generate.py +190 -7
- package/dist/composer/validator/errors.py +4 -0
- package/dist/composer/verbs/__init__.py +4 -0
- package/dist/composer/verbs/_dsl_state.py +419 -0
- package/dist/composer/verbs/_unit_diff.py +446 -0
- package/dist/composer/verbs/check.py +130 -3
- package/dist/composer/verbs/deploy.py +1 -1
- package/dist/composer/verbs/docs.py +8 -3
- package/dist/composer/verbs/materialize.py +163 -0
- package/dist/composer/verbs/runtime_validate.py +103 -0
- package/dist/composer/verbs/update.py +153 -10
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer-commands.d.ts","sourceRoot":"","sources":["../../src/cli/composer-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CACJ,EAAE,EACE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAC5B,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AA0GD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAuBvG;AAYD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"composer-commands.d.ts","sourceRoot":"","sources":["../../src/cli/composer-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CACJ,EAAE,EACE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAC5B,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AA0GD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAuBvG;AAYD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CA6VjE"}
|
|
@@ -241,6 +241,26 @@ export function registerComposerCli(senpi) {
|
|
|
241
241
|
process.stderr.write(stderr);
|
|
242
242
|
process.exitCode = status;
|
|
243
243
|
});
|
|
244
|
+
composer
|
|
245
|
+
.command("materialize <graph>")
|
|
246
|
+
.description("Migrate a pre-F1 graph in place: rename a legacy `answers:` block to `spec:` wholesale and backfill metadata.spec.protection (idempotent)")
|
|
247
|
+
.option("--verbose", VERBOSE_HELP)
|
|
248
|
+
.option("--json", "Emit the structured result as JSON")
|
|
249
|
+
.action(async (graph, opts) => {
|
|
250
|
+
const args = ["materialize", graph];
|
|
251
|
+
if (opts.json)
|
|
252
|
+
args.push("--json");
|
|
253
|
+
const { status, stdout, stderr, envError } = runComposer(args);
|
|
254
|
+
if (envError) {
|
|
255
|
+
process.exitCode = 1;
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (stdout)
|
|
259
|
+
process.stdout.write(stdout);
|
|
260
|
+
if (stderr)
|
|
261
|
+
process.stderr.write(stderr);
|
|
262
|
+
process.exitCode = status;
|
|
263
|
+
});
|
|
244
264
|
composer
|
|
245
265
|
.command("check <graph>")
|
|
246
266
|
.description("ONE verdict: validate + pure_fn tests + compile + fixture smoke (GREEN/RED)")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer-commands.js","sourceRoot":"","sources":["../../src/cli/composer-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"composer-commands.js","sourceRoot":"","sources":["../../src/cli/composer-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ from .answers import (
|
|
|
20
20
|
Answers,
|
|
21
21
|
ExitSignals,
|
|
22
22
|
Indicator,
|
|
23
|
+
Protection,
|
|
23
24
|
Risk,
|
|
24
25
|
Scoring,
|
|
25
26
|
Universe,
|
|
@@ -29,7 +30,7 @@ from .answers import (
|
|
|
29
30
|
)
|
|
30
31
|
from .archetypes import ARCHETYPES, SKELETON
|
|
31
32
|
from .gaps import Gap, GapReport, detect_gaps
|
|
32
|
-
from .generate import NewResult, compose_new, render_graph
|
|
33
|
+
from .generate import NewResult, compose_new, render_graph, resolve_protection
|
|
33
34
|
from .presets import DEFAULT_PRESET, EXIT_PRESETS, ExitPreset, preset_names, resolve_guard_rails
|
|
34
35
|
from .runtime_emit import answers_from_metadata, render_runtime_yaml
|
|
35
36
|
from .strategy_manifest import render_strategy_yaml
|
|
@@ -38,6 +39,7 @@ __all__ = [
|
|
|
38
39
|
"Answers",
|
|
39
40
|
"ExitSignals",
|
|
40
41
|
"Indicator",
|
|
42
|
+
"Protection",
|
|
41
43
|
"Risk",
|
|
42
44
|
"Scoring",
|
|
43
45
|
"Universe",
|
|
@@ -52,6 +54,7 @@ __all__ = [
|
|
|
52
54
|
"NewResult",
|
|
53
55
|
"compose_new",
|
|
54
56
|
"render_graph",
|
|
57
|
+
"resolve_protection",
|
|
55
58
|
"EXIT_PRESETS",
|
|
56
59
|
"ExitPreset",
|
|
57
60
|
"DEFAULT_PRESET",
|
|
@@ -90,6 +90,31 @@ class ExitSignals(BaseModel):
|
|
|
90
90
|
min_divergence: float = 0.0 # per-window vote noise gate (0.0 = no-op); relative_value only
|
|
91
91
|
|
|
92
92
|
|
|
93
|
+
class Protection(BaseModel):
|
|
94
|
+
"""The MATERIALIZED exit-protection spec — the FULL resolved protection carried IN the graph
|
|
95
|
+
(F1 "the graph IS the spec"). Before F1 the exit values were resolved from a named preset only
|
|
96
|
+
at EMIT time, invisible in the graph and un-editable (a hand-edit of the emitted runtime.yaml
|
|
97
|
+
breaks the content-addressed install hash). Now ``composer new`` RESOLVES the seeding preset's
|
|
98
|
+
``dsl_preset`` (time-cuts + phase1 floor + the phase2 tier ladder) and the risk-overridden
|
|
99
|
+
``guard_rails`` into ``metadata.spec.protection``, so every tunable exit knob lives in the graph
|
|
100
|
+
and survives regeneration. Edit it there, then ``composer check`` (which re-validates the
|
|
101
|
+
ladder through the LIVE Zod+DSL oracle over the emitted runtime.yaml) + ``deploy``.
|
|
102
|
+
|
|
103
|
+
``seeded_from`` is PROVENANCE only — the preset name that seeded these values at generation
|
|
104
|
+
(an edit does not change it; it never re-resolves from the preset). ``dsl_preset`` and
|
|
105
|
+
``guard_rails`` are kept as plain dicts, NOT re-typed here: the single authority on ladder
|
|
106
|
+
validity is the live oracle over the emitted runtime.yaml (a re-typed twin would drift from the
|
|
107
|
+
real Zod schema). A structurally-malformed hand-edit is caught pure-Python (CMP124) before emit;
|
|
108
|
+
a value-level one (tier order, ranges, breaches) is caught by the oracle (CMP110)."""
|
|
109
|
+
|
|
110
|
+
model_config = ConfigDict(extra="forbid")
|
|
111
|
+
|
|
112
|
+
seeded_from: str
|
|
113
|
+
interval_seconds: int = 60
|
|
114
|
+
dsl_preset: dict = Field(default_factory=dict)
|
|
115
|
+
guard_rails: dict = Field(default_factory=dict)
|
|
116
|
+
|
|
117
|
+
|
|
93
118
|
class Universe(BaseModel):
|
|
94
119
|
"""How the tradeable set is chosen. A superset of the corpus shapes; each archetype
|
|
95
120
|
reads the fields it needs (D4 — the answer stays declarative, the template binds it):
|
|
@@ -196,6 +221,14 @@ class Answers(BaseModel):
|
|
|
196
221
|
unmanaged: bool = False # explicit opt-out: no exit section (else CMP120 RED at check)
|
|
197
222
|
risk: Risk = Field(default_factory=Risk)
|
|
198
223
|
edge: str = "" # the user's EDGE, verbatim; the machine never interprets it
|
|
224
|
+
# F1 — the MATERIALIZED protection spec + a free-prose thesis, both carried in metadata.spec.
|
|
225
|
+
# ``protection`` is None on directly-constructed answers (byte-identical to before) and is set by
|
|
226
|
+
# `composer new` (generate._materialize_protection) so the resolved exit ladder lives IN the graph
|
|
227
|
+
# and survives regeneration + edit. ``thesis`` is an optional one-line intent summary generation
|
|
228
|
+
# derives from the edge (never blocking). Both emit into metadata.spec ONLY when set (round-trip
|
|
229
|
+
# discipline: an answers object without them round-trips byte-identically).
|
|
230
|
+
protection: Optional[Protection] = None
|
|
231
|
+
thesis: str = ""
|
|
199
232
|
requires: tuple[RequiredCapability, ...] = ()
|
|
200
233
|
# F1 — OPTIONAL expressiveness surface. Absent (the defaults below) => byte-identical to
|
|
201
234
|
# the pre-F1 output; present => the archetype re-selects gates/weights (scoring) and adds
|
|
@@ -243,6 +276,9 @@ class Answers(BaseModel):
|
|
|
243
276
|
block: dict = {
|
|
244
277
|
"archetype": self.archetype,
|
|
245
278
|
"strategy": self.strategy,
|
|
279
|
+
# F1: a one-line intent thesis, emitted ONLY when generation derived one (round-trip
|
|
280
|
+
# discipline — an answers object with thesis="" carries no key and round-trips as before).
|
|
281
|
+
**({"thesis": self.thesis} if self.thesis else {}),
|
|
246
282
|
"universe": {
|
|
247
283
|
"whitelist": list(self.universe.whitelist),
|
|
248
284
|
"long_basket": list(self.universe.long_basket),
|
|
@@ -256,8 +292,25 @@ class Answers(BaseModel):
|
|
|
256
292
|
"intervals": list(self.intervals),
|
|
257
293
|
"max_positions": self.max_positions,
|
|
258
294
|
"ttl_seconds": self.ttl_seconds,
|
|
259
|
-
"exit_preset": self.exit_preset, # LIVE: the emitted runtime.yaml exit preset
|
|
295
|
+
"exit_preset": self.exit_preset, # LIVE: the emitted runtime.yaml exit preset (SEED)
|
|
260
296
|
"unmanaged": self.unmanaged, # explicit protection opt-out
|
|
297
|
+
# F1: the MATERIALIZED protection block — the resolved exit ladder + guard rails carried
|
|
298
|
+
# IN the graph so they are visible + editable + survive regeneration. Emitted ONLY when
|
|
299
|
+
# set (a directly-constructed answers has protection=None and round-trips byte-identically;
|
|
300
|
+
# `composer new` materializes it — generate._materialize_protection). runtime_emit reads
|
|
301
|
+
# this when present; the preset is only the SEED at generation time.
|
|
302
|
+
**(
|
|
303
|
+
{
|
|
304
|
+
"protection": {
|
|
305
|
+
"seeded_from": self.protection.seeded_from,
|
|
306
|
+
"interval_seconds": self.protection.interval_seconds,
|
|
307
|
+
"dsl_preset": self.protection.dsl_preset,
|
|
308
|
+
"guard_rails": self.protection.guard_rails,
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if self.protection is not None
|
|
312
|
+
else {}
|
|
313
|
+
),
|
|
261
314
|
"risk": {
|
|
262
315
|
"margin_pct": self.risk.margin_pct,
|
|
263
316
|
"leverage": self.risk.leverage,
|
|
@@ -89,6 +89,7 @@ def build(answers: Answers) -> GraphBuilder:
|
|
|
89
89
|
fn=_common.CLASSIFIER_FN,
|
|
90
90
|
tests=_common.classifier_tests(_MIN_SCORE),
|
|
91
91
|
header=("pure_fn classifier — THE EDGE SLOT (edit the body; see the EDGE block above).",),
|
|
92
|
+
title="direction classifier from 4h/1h trend + smart-money lean",
|
|
92
93
|
)
|
|
93
94
|
b.set_edge_anchor("classify")
|
|
94
95
|
|
|
@@ -337,6 +337,7 @@ def build(answers: Answers) -> GraphBuilder:
|
|
|
337
337
|
min_divergence),
|
|
338
338
|
header=("pure_fn signed-net-score comparison — THE EDGE SLOT (edit the body; see the EDGE",
|
|
339
339
|
"block above). TWO outputs: entry_scores (entry tail) + exit_scores (exit tail).",),
|
|
340
|
+
title="signed net-score: target vs benchmark across lookbacks",
|
|
340
341
|
)
|
|
341
342
|
b.set_edge_anchor("score")
|
|
342
343
|
|
|
@@ -84,6 +84,7 @@ def build(answers: Answers) -> GraphBuilder:
|
|
|
84
84
|
fn=_common.THESIS_FN,
|
|
85
85
|
tests=_common.thesis_tests(list(u.long_basket), list(u.short_basket), _MIN_SCORE),
|
|
86
86
|
header=("pure_fn confirmation scorer — THE EDGE SLOT (edit the body; see the EDGE block above).",),
|
|
87
|
+
title="per-leg thesis confirmation score",
|
|
87
88
|
)
|
|
88
89
|
b.set_edge_anchor("score")
|
|
89
90
|
|
|
@@ -41,6 +41,7 @@ class BuiltNode:
|
|
|
41
41
|
pure_params: tuple[dict, ...] = ()
|
|
42
42
|
fn: Optional[str] = None
|
|
43
43
|
tests: tuple[dict, ...] = ()
|
|
44
|
+
title: Optional[str] = None # pure_fn OPTIONAL one-line title (one semantic unit)
|
|
44
45
|
# presentation
|
|
45
46
|
header: tuple[str, ...] = () # comment lines emitted above the node
|
|
46
47
|
param_comments: dict = field(default_factory=dict) # param -> trailing comment
|
|
@@ -117,9 +118,13 @@ class GraphBuilder:
|
|
|
117
118
|
fn: str,
|
|
118
119
|
tests: tuple[dict, ...] = (),
|
|
119
120
|
header: tuple[str, ...] = (),
|
|
121
|
+
title: Optional[str] = None,
|
|
120
122
|
) -> "GraphBuilder":
|
|
121
123
|
"""Add a per-graph pure_fn node (D2 kind 2). Its declared ports must use the closed
|
|
122
|
-
PortType vocabulary — a bad type is a ``ValueError`` (CI catches template drift).
|
|
124
|
+
PortType vocabulary — a bad type is a ``ValueError`` (CI catches template drift).
|
|
125
|
+
|
|
126
|
+
``title`` is the OPTIONAL one-line "one titled semantic unit" label. Generation SHOULD
|
|
127
|
+
pass it for every pure_fn it emits (a missing title is a non-blocking check annotation)."""
|
|
123
128
|
for side, ports in (("input", inputs), ("output", outputs)):
|
|
124
129
|
for p in ports:
|
|
125
130
|
try:
|
|
@@ -139,6 +144,7 @@ class GraphBuilder:
|
|
|
139
144
|
fn=fn,
|
|
140
145
|
tests=tuple(tests),
|
|
141
146
|
header=tuple(header),
|
|
147
|
+
title=title,
|
|
142
148
|
)
|
|
143
149
|
)
|
|
144
150
|
return self
|
|
@@ -158,6 +158,10 @@ def _emit_node(bn: BuiltNode) -> list[str]:
|
|
|
158
158
|
|
|
159
159
|
if bn.kind == "pure_fn":
|
|
160
160
|
lines.append(" kind: pure_fn")
|
|
161
|
+
if bn.title:
|
|
162
|
+
# OPTIONAL one-line title (one titled semantic unit); emitted only when set so
|
|
163
|
+
# title-less pure_fns round-trip byte-identically.
|
|
164
|
+
lines.append(f" title: {_dq(bn.title)}")
|
|
161
165
|
lines.append(" inputs:")
|
|
162
166
|
for p in bn.inputs:
|
|
163
167
|
lines.append(f" - {_inline_port(p)}")
|
|
@@ -199,13 +203,15 @@ def render(builder: GraphBuilder, answers: Answers, banner: list[str]) -> str:
|
|
|
199
203
|
lines.append("version: 1")
|
|
200
204
|
lines.append("")
|
|
201
205
|
|
|
202
|
-
# --- metadata (D7: the spec file IS the state —
|
|
206
|
+
# --- metadata (D7: the spec file IS the state — the interview spec lives under `spec`; F1
|
|
207
|
+
# renamed the block `answers` -> `spec` since it now carries the MATERIALIZED protection too.
|
|
208
|
+
# The loader still reads a legacy `answers` block for back-compat) ---
|
|
203
209
|
lines.append("metadata:")
|
|
204
210
|
meta = {
|
|
205
211
|
"archetype": answers.archetype,
|
|
206
212
|
"strategy": answers.strategy,
|
|
207
213
|
"generated": {"by": "composer new", "content_hash": _HASH_PLACEHOLDER},
|
|
208
|
-
"
|
|
214
|
+
"spec": answers.metadata_block(),
|
|
209
215
|
}
|
|
210
216
|
for k, v in meta.items():
|
|
211
217
|
lines.extend(_emit_kv(k, v, 2))
|
|
@@ -21,7 +21,7 @@ from pathlib import Path
|
|
|
21
21
|
from typing import Optional
|
|
22
22
|
|
|
23
23
|
from . import emit
|
|
24
|
-
from .answers import Answers, defaulted_interview_fields
|
|
24
|
+
from .answers import Answers, Protection, defaulted_interview_fields
|
|
25
25
|
from .archetypes import ARCHETYPES, SKELETON
|
|
26
26
|
from .gaps import GapReport, detect_gaps
|
|
27
27
|
|
|
@@ -73,6 +73,60 @@ def _bind_protection_default(answers: Answers) -> Answers:
|
|
|
73
73
|
return answers
|
|
74
74
|
|
|
75
75
|
|
|
76
|
+
def resolve_protection(answers: Answers) -> Protection:
|
|
77
|
+
"""F1 — resolve the FULL protection block for these answers from the seeding preset: the
|
|
78
|
+
preset's ``dsl_preset`` (deep-copied so a later edit never mutates the shared preset) + the
|
|
79
|
+
guard_rails resolved through the SAME helper the emit path uses, with ``seeded_from`` recording
|
|
80
|
+
the provenance preset. Byte-identical to the emit-time fallback (``runtime_emit`` resolves the
|
|
81
|
+
SAME values live for an un-materialized graph), so a graph materialized from this emits a
|
|
82
|
+
byte-identical runtime.yaml (the F1 invariant). The caller guarantees a protected unit
|
|
83
|
+
(``exit_preset`` set, not ``unmanaged``); this is the ONE place ``composer new``, ``composer
|
|
84
|
+
materialize``, and the ``check`` backfill annotation all resolve protection, so they never
|
|
85
|
+
drift."""
|
|
86
|
+
import copy
|
|
87
|
+
|
|
88
|
+
from .presets import EXIT_PRESETS
|
|
89
|
+
from .runtime_emit import resolve_emit_guard_rails
|
|
90
|
+
|
|
91
|
+
preset = EXIT_PRESETS[answers.exit_preset]
|
|
92
|
+
return Protection(
|
|
93
|
+
seeded_from=preset.name,
|
|
94
|
+
interval_seconds=preset.interval_seconds,
|
|
95
|
+
dsl_preset=copy.deepcopy(preset.dsl_preset),
|
|
96
|
+
guard_rails=resolve_emit_guard_rails(answers, preset),
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def _materialize_protection(answers: Answers) -> Answers:
|
|
101
|
+
"""F1 — MATERIALIZE the resolved protection into the graph spec (the graph IS the spec).
|
|
102
|
+
|
|
103
|
+
Before F1 the exit ladder was resolved from a named preset only at EMIT time — invisible in the
|
|
104
|
+
graph, un-editable (a hand-edit of the emitted runtime.yaml breaks the content-addressed install
|
|
105
|
+
hash). Now generation writes the FULL resolved block into ``metadata.spec.protection`` (see
|
|
106
|
+
:func:`resolve_protection`). Only a PROTECTED unit materializes — an unmanaged opt-out has no
|
|
107
|
+
exit block, and an explicit ``protection`` (a re-generation over an already-materialized answers)
|
|
108
|
+
is left untouched. Returns a (possibly) updated copy."""
|
|
109
|
+
if answers.unmanaged or answers.exit_preset is None or answers.protection is not None:
|
|
110
|
+
return answers
|
|
111
|
+
return answers.model_copy(update={"protection": resolve_protection(answers)})
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def _derive_thesis(answers: Answers) -> Answers:
|
|
115
|
+
"""F1 — write a short, deterministic intent thesis into the graph spec when none was supplied.
|
|
116
|
+
|
|
117
|
+
Derived from the interview intent (the verbatim edge, normalized to one line and capped); when
|
|
118
|
+
there is no edge, a generic archetype descriptor. Purely descriptive graph metadata — it never
|
|
119
|
+
reaches the runtime.yaml and never blocks generation. An explicit thesis is left untouched."""
|
|
120
|
+
if answers.thesis:
|
|
121
|
+
return answers
|
|
122
|
+
edge = " ".join((answers.edge or "").split()).strip()
|
|
123
|
+
if edge:
|
|
124
|
+
thesis = edge if len(edge) <= 200 else edge[:197].rstrip() + "..."
|
|
125
|
+
else:
|
|
126
|
+
thesis = f"A {answers.archetype} strategy ({answers.strategy})."
|
|
127
|
+
return answers.model_copy(update={"thesis": thesis})
|
|
128
|
+
|
|
129
|
+
|
|
76
130
|
def _fmt_default_value(value) -> str:
|
|
77
131
|
"""Render a baked default value for the DEFAULTED echo: ``None`` (a preset-default knob like
|
|
78
132
|
drawdown_halt_pct) reads as ``none`` so the reader sees it was never offered."""
|
|
@@ -107,6 +161,8 @@ def _defaulted_message(lines: list[str]) -> str:
|
|
|
107
161
|
def render_graph(answers: Answers) -> tuple[str, bool]:
|
|
108
162
|
"""Build + render the graph for these answers; returns (yaml_text, used_skeleton)."""
|
|
109
163
|
answers = _bind_protection_default(answers)
|
|
164
|
+
answers = _materialize_protection(answers) # F1: resolved protection INTO the graph spec
|
|
165
|
+
answers = _derive_thesis(answers) # F1: a one-line intent thesis in the graph spec
|
|
110
166
|
module = ARCHETYPES.get(answers.archetype)
|
|
111
167
|
used_skeleton = module is None
|
|
112
168
|
if used_skeleton:
|
|
@@ -6,12 +6,14 @@ The composer no longer stages a bare scanner (entry-less, exit-less — the inco
|
|
|
6
6
|
(NOT nodes in the DAG — they are consumed by the DslPlugin / ActionRegistry at runtime boot,
|
|
7
7
|
a different lifecycle than the ``nodes``/``edges`` compiled into ``scan.py``; design §6).
|
|
8
8
|
|
|
9
|
-
Everything derives from the graph's ``metadata.
|
|
10
|
-
artifacts share, D7
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
Everything derives from the graph's ``metadata.spec`` (the single source of truth both
|
|
10
|
+
artifacts share, D7; the legacy ``metadata.answers`` key is still read for back-compat), so
|
|
11
|
+
recompiling regenerates ``scan.py`` AND ``runtime.yaml`` byte-identically. The exit ``dsl_preset``
|
|
12
|
+
(time-cuts + phase1 floor + the phase2 tier ladder) and ``risk.guard_rails`` are rendered from
|
|
13
|
+
``spec.protection`` when the graph carries it (F1 — the graph IS the spec; the emitted file is
|
|
14
|
+
INSPECT-ONLY build output). An older graph with no materialized ``spec.protection`` falls back to
|
|
15
|
+
resolving them live from the named preset (byte-identical). To tune protection, edit
|
|
16
|
+
``spec.protection`` in the GRAPH, then ``composer check`` + ``deploy`` — never hand-edit this file.
|
|
15
17
|
|
|
16
18
|
``unmanaged=True`` emits NO ``exit`` section plus a loud warning banner — the deliberate,
|
|
17
19
|
explicit opt-out of protection (a graph that reaches here with ``unmanaged=False`` and no
|
|
@@ -42,6 +44,28 @@ _UNMANAGED_BANNER = [
|
|
|
42
44
|
]
|
|
43
45
|
|
|
44
46
|
|
|
47
|
+
def resolve_emit_guard_rails(answers: Answers, preset) -> dict:
|
|
48
|
+
"""The guard_rails dict the runtime.yaml ``risk:`` section renders — the preset's guard_rails
|
|
49
|
+
with the answers ``risk.*`` overrides layered on, plus the signal-exit-derived per-asset cooldown
|
|
50
|
+
(an explicit risk override always wins; else a signal-exit pair supplies its reentry cooldown;
|
|
51
|
+
else absent). Extracted so BOTH generation (materialize into ``spec.protection.guard_rails``) and
|
|
52
|
+
the emit-time fallback (an older graph with no materialized protection) compute the SAME dict —
|
|
53
|
+
the guarantee that a freshly-materialized graph emits a BYTE-IDENTICAL runtime.yaml."""
|
|
54
|
+
per_asset_cooldown = answers.risk.per_asset_cooldown_seconds
|
|
55
|
+
if per_asset_cooldown is None and answers.exit_signals is not None:
|
|
56
|
+
per_asset_cooldown = answers.exit_signals.reentry_cooldown_seconds
|
|
57
|
+
return resolve_guard_rails(
|
|
58
|
+
preset,
|
|
59
|
+
{
|
|
60
|
+
"drawdown_halt_pct": answers.risk.drawdown_halt_pct,
|
|
61
|
+
"max_consecutive_losses": answers.risk.max_consecutive_losses,
|
|
62
|
+
"cooldown_seconds": answers.risk.cooldown_seconds,
|
|
63
|
+
"max_entries_per_day": answers.risk.max_entries_per_day,
|
|
64
|
+
"per_asset_cooldown_seconds": per_asset_cooldown,
|
|
65
|
+
},
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
45
69
|
def _env_wallet(strategy: str) -> str:
|
|
46
70
|
slug = re.sub(r"[^0-9a-zA-Z]+", "_", strategy).strip("_").upper() or "STRATEGY"
|
|
47
71
|
return "${" + f"{slug}_WALLET" + "}"
|
|
@@ -121,12 +145,15 @@ def render_runtime_yaml(answers: Answers) -> str:
|
|
|
121
145
|
lines.append(f"# {b}")
|
|
122
146
|
elif has_exit:
|
|
123
147
|
preset = EXIT_PRESETS[answers.exit_preset]
|
|
148
|
+
seeded = answers.protection.seeded_from if answers.protection is not None else answers.exit_preset
|
|
124
149
|
lines.append(f"# {strategy} — complete standalone strategy runtime (composer deploy).")
|
|
125
150
|
lines.append("#")
|
|
126
|
-
lines.append("# PROTECTED BY DEFAULT: the exit:
|
|
127
|
-
lines.append(f"# '
|
|
151
|
+
lines.append("# PROTECTED BY DEFAULT: the exit: / risk: sections below are BUILD OUTPUT, rendered")
|
|
152
|
+
lines.append(f"# from the graph's metadata.spec.protection (seeded from preset '{seeded}').")
|
|
128
153
|
lines.append("# A standalone runtime in its own funded wallet; ops mints the wallet + installs")
|
|
129
|
-
lines.append("# (one wallet per instance).
|
|
154
|
+
lines.append("# (one wallet per instance). This file is INSPECT-ONLY: to tune protection, edit")
|
|
155
|
+
lines.append("# spec.protection in the graph, then re-run composer check + deploy + update. Do")
|
|
156
|
+
lines.append("# NOT hand-edit this file — a content-addressed install verifies its hash.")
|
|
130
157
|
else:
|
|
131
158
|
# exit_preset unset AND not opted out — the CMP120 contradiction (check flags it RED).
|
|
132
159
|
lines.append(f"# {strategy} — runtime with NO exit preset set and NO unmanaged opt-out.")
|
|
@@ -215,14 +242,23 @@ def render_runtime_yaml(answers: Answers) -> str:
|
|
|
215
242
|
lines.append(f" execution_timeout_seconds: {_ENTRY_EXECUTION_TIMEOUT}")
|
|
216
243
|
lines.append("")
|
|
217
244
|
|
|
218
|
-
# --- exit: the resolved DSL
|
|
245
|
+
# --- exit: the resolved DSL protection (materialized from metadata.spec.protection when present;
|
|
246
|
+
# else seeded live from the named preset — an older graph with no materialized block). The values
|
|
247
|
+
# are BUILD OUTPUT; the editable source is spec.protection in the graph, not this file. ---
|
|
219
248
|
if has_exit:
|
|
220
249
|
preset = EXIT_PRESETS[answers.exit_preset]
|
|
221
|
-
|
|
222
|
-
|
|
250
|
+
if answers.protection is not None:
|
|
251
|
+
dp = answers.protection.dsl_preset
|
|
252
|
+
exit_interval = answers.protection.interval_seconds
|
|
253
|
+
seeded_from = answers.protection.seeded_from
|
|
254
|
+
else:
|
|
255
|
+
dp = preset.dsl_preset
|
|
256
|
+
exit_interval = preset.interval_seconds
|
|
257
|
+
seeded_from = preset.name
|
|
258
|
+
lines.append(f"# EXIT — from spec.protection (seeded '{seeded_from}': {preset.intent})")
|
|
223
259
|
lines.append("exit:")
|
|
224
260
|
lines.append(" engine: dsl")
|
|
225
|
-
lines.append(f" interval_seconds: {
|
|
261
|
+
lines.append(f" interval_seconds: {exit_interval}")
|
|
226
262
|
lines.append(" order_type: FEE_OPTIMIZED_LIMIT")
|
|
227
263
|
lines.append(" fee_optimized_limit_options:")
|
|
228
264
|
lines.append(" ensure_execution_as_taker: true") # exit closes MUST happen
|
|
@@ -240,17 +276,16 @@ def render_runtime_yaml(answers: Answers) -> str:
|
|
|
240
276
|
lines.append(f" enabled: {_num(p1['enabled'])}")
|
|
241
277
|
lines.append(
|
|
242
278
|
f" max_loss_pct: {_num(p1['max_loss_pct'])}"
|
|
243
|
-
" #
|
|
279
|
+
" # from spec.protection.dsl_preset.phase1.max_loss_pct (edit in the graph, not here)."
|
|
244
280
|
)
|
|
245
281
|
lines.append(f" retrace_threshold: {_num(p1['retrace_threshold'])}")
|
|
246
282
|
lines.append(f" consecutive_breaches_required: {_num(p1['consecutive_breaches_required'])}")
|
|
247
283
|
p2 = dp["phase2"]
|
|
248
284
|
lines.append(" phase2:")
|
|
249
285
|
lines.append(f" enabled: {_num(p2['enabled'])}")
|
|
250
|
-
lines.append(" tiers: #
|
|
251
|
-
for
|
|
252
|
-
|
|
253
|
-
lines.append(f" - {_tier_inline(tier)}{note}")
|
|
286
|
+
lines.append(" tiers: # from spec.protection.dsl_preset.phase2.tiers (edit in the graph).")
|
|
287
|
+
for tier in p2["tiers"]:
|
|
288
|
+
lines.append(f" - {_tier_inline(tier)}")
|
|
254
289
|
lines.append("")
|
|
255
290
|
|
|
256
291
|
# --- risk.guard_rails: the automated pause / circuit breaker (design §4) ---
|
|
@@ -260,19 +295,16 @@ def render_runtime_yaml(answers: Answers) -> str:
|
|
|
260
295
|
# signal-exit pair supplies exit_signals.reentry_cooldown_seconds. None (exit-less, no override)
|
|
261
296
|
# => absent from guard_rails => byte-identical to today. resolve_guard_rails only adds a key
|
|
262
297
|
# whose value is not None, so the emit loop below stays silent for the exit-less case.
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
"per_asset_cooldown_seconds": per_asset_cooldown,
|
|
274
|
-
},
|
|
275
|
-
)
|
|
298
|
+
# A materialized protection block carries the ALREADY-resolved guard_rails (generation ran the
|
|
299
|
+
# SAME resolve_emit_guard_rails, so this is byte-identical); an older graph with no materialized
|
|
300
|
+
# block falls back to resolving live from the seeding preset. unmanaged (has_exit False, never
|
|
301
|
+
# materialized) always falls back — the drawdown circuit breaker ships from the default preset.
|
|
302
|
+
if answers.protection is not None and has_exit:
|
|
303
|
+
guard_rails = answers.protection.guard_rails
|
|
304
|
+
else:
|
|
305
|
+
guard_rails = resolve_emit_guard_rails(
|
|
306
|
+
answers, EXIT_PRESETS[answers.exit_preset or DEFAULT_PRESET]
|
|
307
|
+
)
|
|
276
308
|
lines.append("# RISK guard rails — the automated pause / circuit breaker (composer owns policy; ops owns manual stop).")
|
|
277
309
|
lines.append("risk:")
|
|
278
310
|
lines.append(f" data_retention_seconds: {_DATA_RETENTION_SECONDS}")
|
|
@@ -298,13 +330,17 @@ def answers_from_metadata(metadata: dict) -> Answers:
|
|
|
298
330
|
from). Used by ``check``/``deploy`` to emit runtime.yaml from the graph.
|
|
299
331
|
|
|
300
332
|
Two shapes are accepted:
|
|
301
|
-
* ``composer new`` output carries a full ``metadata.
|
|
333
|
+
* ``composer new`` output carries a full ``metadata.spec`` block -> construct from it.
|
|
334
|
+
BACK-COMPAT: an older graph carries the same block under the legacy key ``metadata.answers``
|
|
335
|
+
(the writer now always emits ``spec``); it is read identically when ``spec`` is absent.
|
|
302
336
|
* A hand-authored example carries only top-level ``metadata`` keys (archetype, strategy,
|
|
303
337
|
and optionally ``exit_preset`` / ``unmanaged``) -> construct a minimal Answers, letting
|
|
304
338
|
the exit_preset default to protected_standard (PROTECTION BY DEFAULT).
|
|
305
339
|
"""
|
|
306
340
|
metadata = metadata or {}
|
|
307
|
-
block = metadata.get("
|
|
341
|
+
block = metadata.get("spec")
|
|
342
|
+
if not (isinstance(block, dict) and block):
|
|
343
|
+
block = metadata.get("answers") # BACK-COMPAT: legacy `answers` key on older graphs
|
|
308
344
|
if isinstance(block, dict) and block:
|
|
309
345
|
return Answers(**block)
|
|
310
346
|
kwargs: dict = {
|
package/dist/composer/cli.py
CHANGED
|
@@ -59,6 +59,7 @@ from composer.verbs import (
|
|
|
59
59
|
check_file,
|
|
60
60
|
deploy_file,
|
|
61
61
|
describe_text,
|
|
62
|
+
materialize_file,
|
|
62
63
|
run_close,
|
|
63
64
|
run_fund,
|
|
64
65
|
run_install,
|
|
@@ -223,6 +224,17 @@ def _cmd_check(args: argparse.Namespace) -> int:
|
|
|
223
224
|
return 0 if result.ok else 1
|
|
224
225
|
|
|
225
226
|
|
|
227
|
+
def _cmd_materialize(args: argparse.Namespace) -> int:
|
|
228
|
+
# F1b: migrate a pre-F1 graph in place — rename a legacy `answers:` block to `spec:` wholesale
|
|
229
|
+
# and backfill metadata.spec.protection (idempotent). materialize_file writes only on a change.
|
|
230
|
+
result = materialize_file(args.file)
|
|
231
|
+
if args.json:
|
|
232
|
+
print(json.dumps(result.to_json(), indent=2, sort_keys=True))
|
|
233
|
+
else:
|
|
234
|
+
print(result.render(), end="")
|
|
235
|
+
return 0 if result.ok else 1
|
|
236
|
+
|
|
237
|
+
|
|
226
238
|
def _cmd_deploy(args: argparse.Namespace) -> int:
|
|
227
239
|
result = deploy_file(args.file, args.out)
|
|
228
240
|
if args.json:
|
|
@@ -430,6 +442,15 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
430
442
|
p_check.add_argument("--json", action="store_true", help="Emit the verdict as JSON.")
|
|
431
443
|
p_check.set_defaults(func=_cmd_check)
|
|
432
444
|
|
|
445
|
+
p_materialize = sub.add_parser(
|
|
446
|
+
"materialize",
|
|
447
|
+
help="Migrate a pre-F1 graph in place: rename a legacy `answers:` block to `spec:` WHOLESALE "
|
|
448
|
+
"and backfill metadata.spec.protection (idempotent; refuses on unmanaged / both-keys).",
|
|
449
|
+
)
|
|
450
|
+
p_materialize.add_argument("file", help="Path to the YAML strategy graph (rewritten in place).")
|
|
451
|
+
p_materialize.add_argument("--json", action="store_true", help="Emit the structured result as JSON.")
|
|
452
|
+
p_materialize.set_defaults(func=_cmd_materialize)
|
|
453
|
+
|
|
433
454
|
p_deploy = sub.add_parser(
|
|
434
455
|
"deploy",
|
|
435
456
|
help="Stage the deployable artifact set (idempotent); HARD-gated on a GREEN check.",
|