@senpi/runtime 3.0.9-dev.feat-strategy-compos.20260719221425 → 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.
@@ -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,CAyUjE"}
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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,WAAW,CAAC;AAwB1E;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC3C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,uEAAuE;AACvE,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,kBAAkB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CACrB,SAAiB,EACjB,IAAY,EACZ,MAA0C;IAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,KAA0C,CAAC;IAC9D,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,cAAc,SAAS,oFAAoF,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7I,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACtD,OAAO,wDAAwD,IAAI,gGAAgG,CAAC;QACtK,CAAC;QACD,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACtD,yFAAyF;YACzF,yFAAyF;YACzF,gFAAgF;YAChF,OAAO,yTAAyT,CAAC;QACnU,CAAC;QACD,OAAO,gCAAgC,GAAG,6CAA6C,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IAClH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,IAAc;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;IAC3D,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU;QACvC,CAAC,CAAC,GAAG,YAAY,GAAG,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;QAC7D,CAAC,CAAC,YAAY,CAAC;IACjB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE;QACnE,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QAClC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE;KAChD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACjE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACtF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,IAAI,IAAI,GAAmC,IAAI,CAAC;IAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9E,CAAC;AASD,SAAS,cAAc,CAAC,GAA8B;IACpD,IAAI,CAAC,GAAG;QAAE,OAAO,UAAU,CAAC;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,MAAuB;IAC1C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,CAAC,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,OAAe,EAAE,IAA6B;IAC3F,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAI,IAAI,CAAC,MAAmC,IAAI,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,wFAAwF;QACxF,MAAM,IAAI,GAAI,IAAI,CAAC,MAAsC,IAAI,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACvF,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,QAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,YAAY,GAChB,yFAAyF,CAAC;AAE5F,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAqB,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAClB,oJAAoJ,CACrJ,CAAC;IAEF,sFAAsF;IACtF,sFAAsF;IACtF,6FAA6F;IAC7F,QAAQ;SACL,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,uEAAuE,CAAC;SACpF,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,oBAAoB,EAAE,gEAAgE,CAAC;SAC9F,MAAM,CAAC,kBAAkB,EAAE,sDAAsD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;SAC5D,MAAM,CAAC,SAAS,EAAE,8DAA8D,CAAC;SACjF,MAAM,CAAC,QAAQ,EAAE,wDAAwD,CAAC;SAC1E,MAAM,CACL,KAAK,EACH,EAAU,EACV,IAA6F,EAC7F,EAAE;QACF,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CACF,CAAC;IAEJ,QAAQ;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,QAAQ,EAAE,oCAAoC,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAwB,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,QAAQ;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,oFAAoF,CAAC;SACjG,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAsB,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,QAAQ;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAwB,EAAE,EAAE;QACxD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAI,IAAI,CAAC,MAA0B,IAAI,EAAE,CAAC;QACtD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,qBAAqB,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,MAAM,CAAC,MAAM,2CAA2C,CAAC,CAAC;YACzF,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,wFAAwF;YACxF,yFAAyF;YACzF,oFAAoF;YACpF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,QAAQ;SACL,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;SAC9D,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAsC,EAAE,EAAE;QACtE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAmD,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,eAAe,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;YAC1F,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,qFAAqF;YACrF,yFAAyF;YACzF,2FAA2F;YAC3F,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAqB,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,0BAA0B,CAAC;YACrD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,wBAAwB,GAAG,yCAAyC,CAAC,CAAC;YACvG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,KAAK,gBAAgB,GAAG,GAAG,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,QAAQ;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CACV,2JAA2J,CAC5J;SACA,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,gBAAgB,EAAE,iFAAiF,CAAC;SAC3G,MAAM,CAAC,iBAAiB,EAAE,6DAA6D,CAAC;SACxF,MAAM,CAAC,mBAAmB,EAAE,6EAA6E,CAAC;SAC1G,MAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC;SAC1D,MAAM,CACL,KAAK,EACH,MAAc,EACd,IAA0E,EAC1E,EAAE;QACF,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,kGAAkG;QAClG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CACF,CAAC;IAEJ,QAAQ;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CACV,wJAAwJ,CACzJ;SACA,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,oBAAoB,EAAE,mFAAmF,CAAC;SACjH,MAAM,CAAC,iBAAiB,EAAE,6DAA6D,CAAC;SACxF,MAAM,CAAC,mBAAmB,EAAE,6EAA6E,CAAC;SAC1G,MAAM,CAAC,mBAAmB,EAAE,+DAA+D,CAAC;SAC5F,MAAM,CAAC,QAAQ,EAAE,2CAA2C,CAAC;SAC7D,MAAM,CACL,KAAK,EACH,MAAc,EACd,IAA8F,EAC9F,EAAE;QACF,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,4FAA4F;QAC5F,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CACF,CAAC;IAEJ,QAAQ;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CACV,kPAAkP,CACnP;SACA,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,oBAAoB,EAAE,uEAAuE,CAAC;SACrG,MAAM,CAAC,OAAO,EAAE,qFAAqF,CAAC;SACtG,MAAM,CAAC,iBAAiB,EAAE,6DAA6D,CAAC;SACxF,MAAM,CAAC,mBAAmB,EAAE,6EAA6E,CAAC;SAC1G,MAAM,CAAC,mBAAmB,EAAE,+DAA+D,CAAC;SAC5F,MAAM,CAAC,QAAQ,EAAE,0CAA0C,CAAC;SAC5D,MAAM,CACL,KAAK,EACH,MAAc,EACd,IAOC,EACD,EAAE;QACF,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,4FAA4F;QAC5F,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CACF,CAAC;IAEJ,QAAQ;SACL,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CACV,kJAAkJ,CACnJ;SACA,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;SAC9E,MAAM,CAAC,oBAAoB,EAAE,iEAAiE,CAAC;SAC/F,MAAM,CAAC,mBAAmB,EAAE,6EAA6E,CAAC;SAC1G,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CAAC;SAC3D,MAAM,CACL,KAAK,EACH,MAAc,EACd,IAAiF,EACjF,EAAE;QACF,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CACF,CAAC;IAEJ,QAAQ;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,+EAA+E,CAAC;SAC5F,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,iBAAiB,EAAE,oDAAoD,CAAC;SAC/E,MAAM,CAAC,mBAAmB,EAAE,oEAAoE,CAAC;SACjG,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAyD,EAAE,EAAE;QAC1F,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,QAAQ;SACL,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,QAAQ;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"composer-commands.js","sourceRoot":"","sources":["../../src/cli/composer-commands.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ from .answers import (
30
30
  )
31
31
  from .archetypes import ARCHETYPES, SKELETON
32
32
  from .gaps import Gap, GapReport, detect_gaps
33
- from .generate import NewResult, compose_new, render_graph
33
+ from .generate import NewResult, compose_new, render_graph, resolve_protection
34
34
  from .presets import DEFAULT_PRESET, EXIT_PRESETS, ExitPreset, preset_names, resolve_guard_rails
35
35
  from .runtime_emit import answers_from_metadata, render_runtime_yaml
36
36
  from .strategy_manifest import render_strategy_yaml
@@ -54,6 +54,7 @@ __all__ = [
54
54
  "NewResult",
55
55
  "compose_new",
56
56
  "render_graph",
57
+ "resolve_protection",
57
58
  "EXIT_PRESETS",
58
59
  "ExitPreset",
59
60
  "DEFAULT_PRESET",
@@ -73,32 +73,42 @@ def _bind_protection_default(answers: Answers) -> Answers:
73
73
  return answers
74
74
 
75
75
 
76
- def _materialize_protection(answers: Answers) -> Answers:
77
- """F1 — MATERIALIZE the resolved protection into the graph spec (the graph IS the spec).
78
-
79
- Before F1 the exit ladder was resolved from a named preset only at EMIT time — invisible in the
80
- graph, un-editable (a hand-edit of the emitted runtime.yaml breaks the content-addressed install
81
- hash). Now generation writes the FULL resolved block into ``metadata.spec.protection``: the
82
- seeding preset's ``dsl_preset`` (deep-copied so a later graph edit never mutates the shared
83
- preset) and the guard_rails resolved through the SAME helper the emit path uses (byte-identity),
84
- with ``seeded_from`` recording the provenance preset. Only a PROTECTED unit materializes — an
85
- unmanaged opt-out has no exit block, and an explicit ``protection`` (a re-generation over an
86
- already-materialized answers) is left untouched. Returns a (possibly) updated copy."""
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."""
87
86
  import copy
88
87
 
89
88
  from .presets import EXIT_PRESETS
90
89
  from .runtime_emit import resolve_emit_guard_rails
91
90
 
92
- if answers.unmanaged or answers.exit_preset is None or answers.protection is not None:
93
- return answers
94
91
  preset = EXIT_PRESETS[answers.exit_preset]
95
- protection = Protection(
92
+ return Protection(
96
93
  seeded_from=preset.name,
97
94
  interval_seconds=preset.interval_seconds,
98
95
  dsl_preset=copy.deepcopy(preset.dsl_preset),
99
96
  guard_rails=resolve_emit_guard_rails(answers, preset),
100
97
  )
101
- return answers.model_copy(update={"protection": protection})
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)})
102
112
 
103
113
 
104
114
  def _derive_thesis(answers: Answers) -> Answers:
@@ -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.",
@@ -119,6 +119,9 @@ ERROR_CODES: dict[str, str] = {
119
119
  "CMP243": "Update refused — could not verify the wallet is flat (positions unreadable); re-run with `--yes` to proceed.",
120
120
  "CMP244": "Update failed — `openclaw senpi runtime delete` failed; the new runtime was NOT installed (strategy unchanged).",
121
121
  "CMP245": "Update failed — the old runtime is still present after delete (teardown unconfirmed); new runtime withheld.",
122
+ "CMP246": "Update non-fatal — the DSL exit-protection state could not be seeded into the new runtime dir; the new runtime re-adopts positions fresh (floors/clocks reset).",
123
+ # ---- F1b spec-migration affordance: metadata shape guard for the answers -> spec migration ----
124
+ "CMP247": "metadata carries BOTH a `spec` block and a legacy `answers` block — the loader uses `spec` and silently discards `answers`; rename `answers` to `spec` WHOLESALE and delete the legacy key.",
122
125
  }
123
126
 
124
127
 
@@ -23,6 +23,7 @@ from .deploy import DeployResult, deploy_file, run_deploy
23
23
  from .docs import catalog_text, describe_text
24
24
  from .fund import FundResult, fund_target, run_fund
25
25
  from .install import CreateResult, InstallResult, install_target, run_install
26
+ from .materialize import MaterializeResult, materialize_file, run_materialize
26
27
  from .smoke import SmokeError, run_smoke
27
28
  from .status import StatusResult, run_status
28
29
  from .update import UpdateResult, run_update, update_target
@@ -41,6 +42,9 @@ __all__ = [
41
42
  "FundResult",
42
43
  "run_fund",
43
44
  "fund_target",
45
+ "MaterializeResult",
46
+ "run_materialize",
47
+ "materialize_file",
44
48
  "CloseResult",
45
49
  "run_close",
46
50
  "StatusResult",
@@ -182,6 +182,7 @@ def run_check(source_text: str, source_name: str) -> CheckResult:
182
182
  # mirroring how runtime_validate surfaces the wallet-binding acknowledgment.
183
183
  validate_stage.messages.extend(_hatch_annotations(source_text))
184
184
  validate_stage.messages.extend(_pure_fn_title_annotations(source_text))
185
+ validate_stage.messages.extend(_protection_backfill_annotations(source_text))
185
186
 
186
187
  # --- compile ---
187
188
  scan_source: Optional[str] = None
@@ -318,6 +319,43 @@ def _pure_fn_title_annotations(source_text: str) -> list[str]:
318
319
  return lines
319
320
 
320
321
 
322
+ def _protection_backfill_annotations(source_text: str) -> list[str]:
323
+ """F1b BACKFILL AFFORDANCE (non-blocking): a graph whose metadata (spec OR legacy answers) has
324
+ NO materialized ``protection`` and is not ``unmanaged`` runs with preset-resolved protection
325
+ that is INVISIBLE in the graph and NOT editable there — the pre-F1 shape the field agent hit
326
+ ("tune tiers in metadata.spec.protection" with nothing to tune). This prints the EXACT resolved
327
+ protection block (seeded from the graph's exit_preset, via the SAME resolver `composer new` and
328
+ the emit path use — render-identical values), paste-ready under ``metadata.spec.protection``,
329
+ plus the one-line rename instruction and a pointer to ``composer materialize``.
330
+
331
+ Silent (empty) when protection is already materialized, when the unit is unmanaged, or when no
332
+ exit_preset resolves (that graph is CMP120 RED — the missing-preset error covers it). Only called
333
+ on a GREEN-validated graph, mirroring the hatch / pure_fn-title annotations."""
334
+ from composer.authoring.emit import _emit_kv
335
+ from composer.authoring.generate import resolve_protection
336
+ from composer.authoring.runtime_emit import answers_from_metadata
337
+
338
+ try:
339
+ doc, _ = load_graph(source_text)
340
+ answers = answers_from_metadata(doc.get("metadata") or {})
341
+ except Exception: # noqa: BLE001 — a parse failure here is already reported by validate
342
+ return []
343
+ if answers.unmanaged or answers.exit_preset is None or answers.protection is not None:
344
+ return []
345
+
346
+ materialized = answers.model_copy(update={"protection": resolve_protection(answers)})
347
+ block = materialized.metadata_block()["protection"]
348
+ lines = [
349
+ "protection not materialized (non-blocking): exit protection is preset-resolved at emit "
350
+ f"time (seeded_from '{answers.exit_preset}') and is NOT yet editable in this graph. To "
351
+ "tune tiers/floors/guard-rails, add the block below under metadata.spec.protection "
352
+ "(rename a legacy `answers:` block to `spec:` WHOLESALE first), then re-run composer check "
353
+ "— or run `composer materialize <graph>` to insert it in place:",
354
+ ]
355
+ lines.extend(_emit_kv("protection", block, 4))
356
+ return lines
357
+
358
+
321
359
  def _run_runtime_validate(source_text: str, stage: Stage):
322
360
  """Emit runtime.yaml from the graph's metadata, enforce PROTECTION policy (CMP120), and run
323
361
  the real Zod+DSL oracle. Records status/errors/messages on ``stage``; returns
@@ -326,11 +364,27 @@ def _run_runtime_validate(source_text: str, stage: Stage):
326
364
  SAME source runtime_emit consumed). ``answers`` is None when metadata could not be parsed."""
327
365
  from composer.authoring.runtime_emit import answers_from_metadata, render_runtime_yaml
328
366
 
329
- from .runtime_validate import graph_facts
367
+ from .runtime_validate import graph_facts, metadata_shape_error
330
368
 
331
369
  try:
332
370
  doc, _ = load_graph(source_text)
333
- answers = answers_from_metadata(doc.get("metadata") or {})
371
+ metadata = doc.get("metadata") or {}
372
+ except Exception as exc: # noqa: BLE001 — a bad metadata block is a graph defect, reported here
373
+ stage.status = RED
374
+ stage.messages.append(f"could not derive runtime answers from metadata: {exc}")
375
+ return None, None
376
+
377
+ # F1b CMP247 FIRST: metadata carrying BOTH `spec` and legacy `answers` is ambiguous — the loader
378
+ # would silently use `spec` and discard `answers`. Bail with the teaching error before deriving
379
+ # answers (deriving from the ambiguous metadata would emit a runtime.yaml over a partial spec).
380
+ both_keys_err = metadata_shape_error(metadata)
381
+ if both_keys_err is not None:
382
+ stage.status = RED
383
+ stage.errors.append(both_keys_err)
384
+ return None, None
385
+
386
+ try:
387
+ answers = answers_from_metadata(metadata)
334
388
  except Exception as exc: # noqa: BLE001 — a bad metadata block is a graph defect, reported here
335
389
  stage.status = RED
336
390
  stage.messages.append(f"could not derive runtime answers from metadata: {exc}")
@@ -0,0 +1,163 @@
1
+ """materialize — the F1b SPEC-MIGRATION verb: backfill metadata.spec.protection in place.
2
+
3
+ The field failure this closes: an agent with a PRE-F1 graph (a legacy ``metadata.answers`` block,
4
+ no materialized ``protection``) followed the new skill doctrine ("tune tiers in
5
+ metadata.spec.protection") and hit three walls — ``spec.protection`` did not exist and nothing
6
+ offered to create it; hand-adding a ``spec:`` block holding ONLY ``protection`` next to the legacy
7
+ ``answers:`` block made ``spec`` win the precedence and the archetype/strategy fields vanish; and the
8
+ errors never showed the expected shape.
9
+
10
+ ``composer materialize <graph>`` does the ONE correct migration mechanically:
11
+
12
+ * renames a legacy ``answers:`` block to ``spec:`` WHOLESALE (all fields, one block), and
13
+ * inserts the resolved ``protection`` block (seeded from the graph's ``exit_preset``, via the
14
+ SAME :func:`composer.authoring.resolve_protection` ``composer new`` uses — so a materialized
15
+ graph re-checks GREEN and emits a BYTE-IDENTICAL runtime.yaml to the preset path).
16
+
17
+ Idempotent: a no-op with a clear message when ``spec.protection`` is already present. Refuses on an
18
+ ``unmanaged`` unit (no protection to materialize) and on the ambiguous both-keys shape (CMP247 — the
19
+ author must resolve the double block first; materialize will not guess which fields win).
20
+
21
+ Pure planning + CLI-writes discipline (mirrors ``compose_new``): :func:`run_materialize` returns a
22
+ result carrying the rewritten text; the CLI (or :func:`materialize_file`) does the write, so the
23
+ migration is unit-testable without disk.
24
+ """
25
+
26
+ from __future__ import annotations
27
+
28
+ import re
29
+ from dataclasses import dataclass
30
+ from pathlib import Path
31
+ from typing import Optional
32
+
33
+ from composer.authoring.emit import _emit_kv
34
+ from composer.authoring.generate import resolve_protection
35
+ from composer.authoring.runtime_emit import answers_from_metadata
36
+ from composer.validator.errors import TeachingError
37
+ from composer.validator.loader import load_graph
38
+
39
+ from .runtime_validate import metadata_shape_error
40
+
41
+ # The metadata spec/answers key line, at exactly indent 2 (the emit layout).
42
+ _SPEC_KEY_RE = re.compile(r"^ {2}(spec|answers):\s*$")
43
+
44
+
45
+ @dataclass
46
+ class MaterializeResult:
47
+ """The outcome of planning a ``composer materialize`` invocation."""
48
+
49
+ ok: bool
50
+ source: str
51
+ new_text: Optional[str] = None # the rewritten graph (set only when changed is True)
52
+ changed: bool = False # True when a rewrite is needed (False == idempotent no-op)
53
+ message: str = ""
54
+ error: Optional[TeachingError] = None # the CMP247 both-keys refusal, when that is why ok=False
55
+
56
+ def to_json(self) -> dict:
57
+ out: dict = {
58
+ "verb": "materialize",
59
+ "graph": self.source,
60
+ "ok": self.ok,
61
+ "changed": self.changed,
62
+ "message": self.message,
63
+ }
64
+ if self.error is not None:
65
+ out["error"] = self.error.to_dict()
66
+ return out
67
+
68
+ def render(self) -> str:
69
+ head = "MATERIALIZED" if (self.ok and self.changed) else ("OK" if self.ok else "REFUSED")
70
+ lines = [f"{head}: {self.source} — {self.message}"]
71
+ if self.error is not None:
72
+ lines.append(self.error.render())
73
+ return "\n".join(lines) + "\n"
74
+
75
+
76
+ def _replace_spec_block(text: str, new_block_lines: list[str]) -> str:
77
+ """Replace the graph's ``spec:``/``answers:`` metadata block (the key line at indent 2 + all its
78
+ children, which the emit layout always indents >= 4) with ``new_block_lines``. Block-level
79
+ surgery (not a full reparse) preserves the banner, ``generated`` marker, EDGE comment, nodes and
80
+ edges byte-for-byte; the replaced block is regenerated by the same ``_emit_kv`` ``composer new``
81
+ uses, so the result is byte-identical to a freshly-generated spec block (modulo content_hash)."""
82
+ lines = text.split("\n")
83
+ start = next((i for i, ln in enumerate(lines) if _SPEC_KEY_RE.match(ln)), None)
84
+ if start is None: # defensive — the caller only reaches here with a block present
85
+ raise ValueError("no metadata spec/answers block found to migrate")
86
+ end = start + 1
87
+ while end < len(lines):
88
+ ln = lines[end]
89
+ if ln.strip() == "" or (len(ln) - len(ln.lstrip())) < 4:
90
+ break # first non-child line (blank, the indent-2 EDGE comment, or `nodes:`)
91
+ end += 1
92
+ return "\n".join(lines[:start] + new_block_lines + lines[end:])
93
+
94
+
95
+ def run_materialize(source_text: str, source_name: str) -> MaterializeResult:
96
+ """Plan a ``composer materialize`` (does not write). See the module docstring for the contract."""
97
+ try:
98
+ doc, _ = load_graph(source_text)
99
+ except Exception as exc: # noqa: BLE001 — a parse defect is surfaced here, not as a crash
100
+ return MaterializeResult(False, source_name, message=f"could not parse the graph: {exc}")
101
+ metadata = doc.get("metadata") or {}
102
+
103
+ # both-keys (CMP247): ambiguous — materialize will not guess which block's fields win.
104
+ both_keys = metadata_shape_error(metadata)
105
+ if both_keys is not None:
106
+ return MaterializeResult(
107
+ False, source_name, error=both_keys,
108
+ message="metadata carries BOTH a `spec` and a legacy `answers` block; resolve the "
109
+ "double block by hand (rename `answers` to `spec` wholesale, delete the legacy "
110
+ "key) before materializing.",
111
+ )
112
+
113
+ spec = metadata.get("spec")
114
+ ans = metadata.get("answers")
115
+ has_block = (isinstance(spec, dict) and bool(spec)) or (isinstance(ans, dict) and bool(ans))
116
+ if not has_block:
117
+ return MaterializeResult(
118
+ False, source_name,
119
+ message="no `spec`/`answers` metadata block to migrate (hand-authored minimal "
120
+ "metadata); regenerate with `composer new` to get a materialized graph.",
121
+ )
122
+
123
+ answers = answers_from_metadata(metadata)
124
+ if answers.unmanaged:
125
+ return MaterializeResult(
126
+ False, source_name,
127
+ message="refusing: unmanaged=true — this unit deliberately ships NO exit protection, so "
128
+ "there is nothing to materialize. Set an exit_preset to add protection.",
129
+ )
130
+ if answers.exit_preset is None:
131
+ return MaterializeResult(
132
+ False, source_name,
133
+ message="refusing: no exit_preset is set (this graph is CMP120 RED). Set an exit_preset "
134
+ "(protected_standard | protected_tight | protected_wide) first, then materialize.",
135
+ )
136
+ if answers.protection is not None:
137
+ return MaterializeResult(
138
+ True, source_name, changed=False,
139
+ message="spec.protection is already present — nothing to do (idempotent no-op).",
140
+ )
141
+
142
+ # Materialize: resolve protection (identical to `composer new`) and re-emit the block as `spec`.
143
+ materialized = answers.model_copy(update={"protection": resolve_protection(answers)})
144
+ new_block_lines = _emit_kv("spec", materialized.metadata_block(), 2)
145
+ new_text = _replace_spec_block(source_text, new_block_lines)
146
+ renamed = isinstance(ans, dict) and bool(ans) and not (isinstance(spec, dict) and bool(spec))
147
+ note = " (renamed the legacy `answers:` block to `spec:`)" if renamed else ""
148
+ return MaterializeResult(
149
+ True, source_name, new_text=new_text, changed=True,
150
+ message=f"materialized metadata.spec.protection (seeded_from "
151
+ f"'{materialized.protection.seeded_from}'){note}. The graph is now the editable "
152
+ f"source of truth — tune tiers/floors/guard-rails there, then re-run composer check.",
153
+ )
154
+
155
+
156
+ def materialize_file(path) -> MaterializeResult:
157
+ """Read ``path``, plan the migration, and write it back in place when a change is needed
158
+ (idempotent no-op otherwise). Returns the :class:`MaterializeResult`."""
159
+ p = Path(path)
160
+ result = run_materialize(p.read_text(encoding="utf-8"), p.name)
161
+ if result.ok and result.changed and result.new_text is not None:
162
+ p.write_text(result.new_text, encoding="utf-8")
163
+ return result
@@ -541,11 +541,52 @@ def _protection_shape_error(answers) -> Optional[TeachingError]:
541
541
  "hard_timeout / weak_peak_cut / dead_weight_cut / phase1 / phase2, phase2.tiers a non-empty "
542
542
  "list of { trigger_pct, lock_hw_pct } entries, and guard_rails a mapping. To restart from a "
543
543
  "clean preset, regenerate with `composer new` (which re-materializes it). Tune VALUES in "
544
- "place; do not delete or retype the structure.",
544
+ "place; do not delete or retype the structure. A minimal correct shape:\n"
545
+ " protection:\n"
546
+ " seeded_from: protected_standard\n"
547
+ " interval_seconds: 60\n"
548
+ " dsl_preset:\n"
549
+ " hard_timeout: { enabled: true, interval_in_minutes: 4320 }\n"
550
+ " weak_peak_cut: { enabled: true, interval_in_minutes: 240, min_value: 2.0 }\n"
551
+ " dead_weight_cut: { enabled: false, interval_in_minutes: 480 }\n"
552
+ " phase1: { enabled: true, max_loss_pct: 15.0, retrace_threshold: 8, consecutive_breaches_required: 1 }\n"
553
+ " phase2:\n"
554
+ " tiers:\n"
555
+ " - { trigger_pct: 10, lock_hw_pct: 0 }\n"
556
+ " guard_rails:\n"
557
+ " drawdown_halt_pct: 20",
545
558
  Location(path="metadata.spec.protection"),
546
559
  )
547
560
 
548
561
 
562
+ def metadata_shape_error(metadata: dict) -> Optional[TeachingError]:
563
+ """CMP247 — metadata carries BOTH a ``spec`` block AND a legacy ``answers`` block (F1b).
564
+
565
+ The loader (``answers_from_metadata``) reads ``spec`` and falls back to the legacy ``answers``
566
+ key ONLY when ``spec`` is absent, so a graph carrying both would silently use ``spec`` and
567
+ DISCARD everything under ``answers`` — the field failure where an author appended a ``spec:``
568
+ block holding ONLY ``protection`` next to a legacy ``answers:`` block and watched the archetype
569
+ / universe / scoring fields vanish into a baffling "parsed as an Answers object" error. This is
570
+ now a teaching error, never a silent spec-wins-partial. Back-compat is unchanged for the two
571
+ CLEAN shapes (``spec`` only, or ``answers`` only)."""
572
+ metadata = metadata or {}
573
+ spec = metadata.get("spec")
574
+ ans = metadata.get("answers")
575
+ if isinstance(spec, dict) and spec and isinstance(ans, dict) and ans:
576
+ return TeachingError(
577
+ "CMP247",
578
+ "metadata carries BOTH a `spec` block and a legacy `answers` block — the loader uses "
579
+ "`spec` and SILENTLY DISCARDS the whole `answers` block (archetype, universe, scoring, "
580
+ "risk, ...), which is almost never what you intended.",
581
+ "There is ONE metadata block. Rename `answers:` to `spec:` WHOLESALE — move ALL its "
582
+ "fields into a single `spec:` block and DELETE the legacy `answers:` key. Do NOT keep a "
583
+ "partial `spec:` (e.g. one holding only `protection`) alongside it; merge everything "
584
+ "into the one block. `composer materialize <graph>` performs this rename for you.",
585
+ Location(path="metadata"),
586
+ )
587
+ return None
588
+
589
+
549
590
  def _protection_policy_error(answers) -> Optional[TeachingError]:
550
591
  """CMP120: PROTECTION BY DEFAULT. A unit with no exit and no explicit opt-out is RED.
551
592
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@senpi/runtime",
3
- "version": "3.0.9-dev.feat-strategy-compos.20260719221425",
3
+ "version": "3.0.9-dev.feat-strategy-compos.20260719233135",
4
4
  "description": "Senpi runtime plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",