behavior-contracts 0.7.2 → 0.7.3

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":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,SAAS,EAIT,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAMnD,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,cAAc,GACd,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,aAAa,GACb,cAAc,CAAC;AAEnB,qBAAa,cAAe,SAAQ,KAAK;IACvC,IAAI,EAAE,kBAAkB,CAAC;gBACb,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;CAKtD;AAOD,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GACzB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,oBAAoB,CAAC;AAEzB,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;AAEhF,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAM/F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,IAAI,EAAE,aAAa,GAClB,IAAI,CAaN;AAwBD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,EAAE,aAAa,GAClB,IAAI,CAYN;AAGD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAgBvG;AAuBD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAiE3C;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC1B,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAuPD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,uBAAuB,EAC7B,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/C,SAAS,CAkFX;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,uBAAuB,EAC7B,OAAO,EAAE,+BAA+B,GACvC,SAAS,CASX"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,SAAS,EAKT,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAMnD,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,cAAc,GACd,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,aAAa,GACb,cAAc,CAAC;AAEnB,qBAAa,cAAe,SAAQ,KAAK;IACvC,IAAI,EAAE,kBAAkB,CAAC;gBACb,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;CAKtD;AAOD,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GACzB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,oBAAoB,CAAC;AAEzB,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;AAEhF,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAM/F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,IAAI,EAAE,aAAa,GAClB,IAAI,CAaN;AAwBD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,EAAE,aAAa,GAClB,IAAI,CAYN;AAGD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAgBvG;AA2BD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAiE3C;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC1B,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAySD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,uBAAuB,EAC7B,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/C,SAAS,CAkFX;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,uBAAuB,EAC7B,OAAO,EAAE,+BAA+B,GACvC,SAAS,CASX"}
package/dist/builder.js CHANGED
@@ -102,7 +102,13 @@ export function collectNodeIdRefs(node, ids, out = []) {
102
102
  /** body ノードの依存 id 集合(ports/over/when/cond 式の ref root + parent。`ids` 内のみ)。 */
103
103
  function bodyNodeDeps(n, ids) {
104
104
  const deps = [];
105
- if ("map" in n) {
105
+ if ("fanout" in n) {
106
+ collectNodeIdRefs(n.fanout.over, ids, deps);
107
+ collectNodeIdRefs(n.fanout.ports, ids, deps);
108
+ if (n.fanout.parent !== undefined && ids.has(n.fanout.parent) && !deps.includes(n.fanout.parent))
109
+ deps.push(n.fanout.parent);
110
+ }
111
+ else if ("map" in n) {
106
112
  collectNodeIdRefs(n.map.over, ids, deps);
107
113
  collectNodeIdRefs(n.map.ports, ids, deps);
108
114
  if (n.map.when !== undefined)
@@ -194,6 +200,8 @@ const MAP_NODE_KEYS = /* @__PURE__ */ new Set(["id", "map"]);
194
200
  const MAP_KEYS = /* @__PURE__ */ new Set(["over", "as", "component", "ports", "when", "into", "batched", "parent", "relationKind", "policy"]);
195
201
  const COND_NODE_KEYS = /* @__PURE__ */ new Set(["id", "cond"]);
196
202
  const COND_KEYS = /* @__PURE__ */ new Set(["if", "then", "else", "parent"]);
203
+ const FANOUT_NODE_KEYS = /* @__PURE__ */ new Set(["id", "fanout"]);
204
+ const FANOUT_KEYS = /* @__PURE__ */ new Set(["over", "as", "component", "ports", "dedupeKey", "drop", "implicitSource", "relationKind", "parent", "policy"]);
197
205
  const SCHEMA_KEYS = /* @__PURE__ */ new Set(["type", "required", "elemType"]);
198
206
  const PLAN_KEYS = /* @__PURE__ */ new Set(["groups", "concurrency"]);
199
207
  const RELATION_KINDS = /* @__PURE__ */ new Set(["single", "connection"]);
@@ -283,6 +291,55 @@ function normalizeNode(raw, ids, at) {
283
291
  node.map.policy = wire.policy;
284
292
  return node;
285
293
  }
294
+ if (rec.fanout !== undefined) {
295
+ checkAllowedKeys(rec, FANOUT_NODE_KEYS, "INVALID_NODE", at);
296
+ if (!isPlainObject(rec.fanout))
297
+ bfail("INVALID_NODE", `${at}: 'fanout' must be a plain object`);
298
+ const fo = rec.fanout;
299
+ checkAllowedKeys(fo, FANOUT_KEYS, "INVALID_NODE", `${at}.fanout`);
300
+ if (fo.over === undefined)
301
+ bfail("INVALID_NODE", `${at}.fanout: 'over' is required`);
302
+ const as = checkScopeKeyName(fo.as, "'as'", `${at}.fanout`);
303
+ if (!as.startsWith("$") || as.length < 2)
304
+ bfail("INVALID_NODE", `${at}.fanout: 'as' must be a "$"-prefixed element binding (e.g. "$ref"), got '${as}'`);
305
+ if (ids.has(as))
306
+ bfail("INVALID_NODE", `${at}.fanout: 'as' binding '${as}' collides with a body node id`);
307
+ if (typeof fo.component !== "string" || fo.component === "")
308
+ bfail("INVALID_NODE", `${at}.fanout: 'component' must be a non-empty catalog name string`);
309
+ const fports = checkPortsShape(fo.ports, `${at}.fanout`);
310
+ const dedupeKey = checkScopeKeyName(fo.dedupeKey, "'dedupeKey'", `${at}.fanout`);
311
+ if (fo.drop !== "dangling" && fo.drop !== "none")
312
+ bfail("INVALID_NODE", `${at}.fanout: 'drop' must be "dangling" or "none"`);
313
+ if (fo.relationKind !== "connection")
314
+ bfail("INVALID_NODE", `${at}.fanout: 'relationKind' must be "connection"`);
315
+ const node = {
316
+ id,
317
+ fanout: {
318
+ over: fo.over,
319
+ as,
320
+ component: fo.component,
321
+ ports: fports,
322
+ dedupeKey,
323
+ drop: fo.drop,
324
+ relationKind: "connection",
325
+ },
326
+ };
327
+ if (fo.implicitSource !== undefined)
328
+ node.fanout.implicitSource = checkScopeKeyName(fo.implicitSource, "'implicitSource'", `${at}.fanout`);
329
+ if (fo.parent !== undefined) {
330
+ if (typeof fo.parent !== "string")
331
+ bfail("INVALID_NODE", `${at}.fanout: 'parent' must be a node id string`);
332
+ if (!ids.has(fo.parent))
333
+ bfail("UNKNOWN_PARENT", `${at}.fanout: parent '${fo.parent}' is not a body node id`);
334
+ node.fanout.parent = fo.parent;
335
+ }
336
+ if (fo.policy !== undefined) {
337
+ if (typeof fo.policy !== "string" || !POLICY_KINDS.has(fo.policy))
338
+ bfail("INVALID_NODE", `${at}.fanout: 'policy' must be "fail", "retry" or "continue"`);
339
+ node.fanout.policy = fo.policy;
340
+ }
341
+ return node;
342
+ }
286
343
  if (rec.cond !== undefined) {
287
344
  checkAllowedKeys(rec, COND_NODE_KEYS, "INVALID_NODE", at);
288
345
  if (!isPlainObject(rec.cond))
@@ -380,7 +437,13 @@ function nodeRefsAndDeps(n, ids, inputs, at) {
380
437
  deps.push(d);
381
438
  },
382
439
  };
383
- if ("map" in n) {
440
+ if ("fanout" in n) {
441
+ walkRefs(n.fanout.over, null, ctx, `${at}.fanout.over`); // over は束縛の外で評価される
442
+ walkRefs(n.fanout.ports, n.fanout.as, ctx, `${at}.fanout.ports`);
443
+ if (n.fanout.parent !== undefined && !deps.includes(n.fanout.parent))
444
+ deps.push(n.fanout.parent);
445
+ }
446
+ else if ("map" in n) {
384
447
  walkRefs(n.map.over, null, ctx, `${at}.map.over`); // over は束縛の外で評価される
385
448
  walkRefs(n.map.ports, n.map.as, ctx, `${at}.map.ports`);
386
449
  if (n.map.when !== undefined)
@@ -502,10 +565,10 @@ export function buildComponentCore(data, opts) {
502
565
  if (opts.catalog !== undefined) {
503
566
  const catalog = opts.catalog;
504
567
  body.forEach((n, i) => {
505
- const cname = "map" in n ? n.map.component : "cond" in n ? null : n.component;
568
+ const cname = "fanout" in n ? n.fanout.component : "map" in n ? n.map.component : "cond" in n ? null : n.component;
506
569
  if (cname === null)
507
570
  return;
508
- const ports = "map" in n ? n.map.ports : n.ports;
571
+ const ports = "fanout" in n ? n.fanout.ports : "map" in n ? n.map.ports : n.ports;
509
572
  if (!Object.hasOwn(catalog, cname))
510
573
  bfail("UNKNOWN_COMPONENT", `body[${i}]: component '${cname}' is not in the catalog (fail-closed)`);
511
574
  const entry = catalog[cname];
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emit-typed-native-go.d.ts","sourceRoot":"","sources":["../../src/generator/emit-typed-native-go.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AA6oE5D;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAqOhF;AAqCD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAMlC,CAAC"}
1
+ {"version":3,"file":"emit-typed-native-go.d.ts","sourceRoot":"","sources":["../../src/generator/emit-typed-native-go.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AAs5E5D;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAwQhF;AAqCD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAMlC,CAAC"}
@@ -322,6 +322,39 @@ function coveredMapNode(n, bodyIds, comp) {
322
322
  return false;
323
323
  return true;
324
324
  }
325
+ /**
326
+ * coveredFanoutNode (v3) — a FANOUT node (first-class `@refs` id-list fan-out) is covered when:
327
+ * - over is a static ref to a PRIOR BODY NODE's typed arr field OR an INPUT array port with elemType,
328
+ * - every element port is static (literal / ref into the $as binding / concat / static arr),
329
+ * - default 'fail' policy, relationKind connection (guard-checked by the guard/builder).
330
+ * The fanout de-boxes to: one deduped batched dispatch → first-seen dedupe (by the elem's dedupeKey
331
+ * field) + dangling drop + implicitSource strip + connection wrap {items, cursor:nil} — NO boxed Value.
332
+ */
333
+ function coveredFanoutNode(n, bodyIds, comp) {
334
+ if (n === null || typeof n !== "object" || !("fanout" in n))
335
+ return false;
336
+ const f = n.fanout;
337
+ if (f.policy !== undefined && f.policy !== "fail")
338
+ return false;
339
+ if (f.relationKind !== "connection")
340
+ return false;
341
+ const overE = classifyExpr(f.over);
342
+ if (overE.kind !== "ref")
343
+ return false;
344
+ const head = overE.path[0];
345
+ if (!bodyIds.has(head)) {
346
+ if (overE.path.length !== 1)
347
+ return false;
348
+ const schema = comp.inputPorts?.[head];
349
+ if (schema === undefined || schema.elemType === undefined)
350
+ return false;
351
+ }
352
+ const ports = f.ports;
353
+ for (const p of Object.keys(ports))
354
+ if (!portIsStatic(ports[p]))
355
+ return false;
356
+ return true;
357
+ }
325
358
  /** A covered read SHAPE (typing-independent) — sequential componentRef reads + covered map...into,
326
359
  * OR a real-concurrency staged plan (bc#87) whose parallel-stage members are plain componentRef point
327
360
  * reads. A real-concurrency plan whose parallel members include a map / bindField-relation child is
@@ -366,6 +399,13 @@ function coverageRejectReason(comp) {
366
399
  return `node '${n.id}' cond has no outType (required to de-box the branch join)`;
367
400
  continue;
368
401
  }
402
+ if ("fanout" in n) {
403
+ // v3: a first-class fanout node (deduped connection list-in fan-out) IS covered when its over is a
404
+ // covered ref (prior-node arr / input array with elemType) and its element ports are static.
405
+ if (!coveredFanoutNode(n, bodyIds, comp))
406
+ return `node '${n.id}' is a non-covered fanout shape (over an input array without elemType, or a dynamic element port)`;
407
+ continue;
408
+ }
369
409
  if ("map" in n) {
370
410
  // #86 pt2 batched map...into / #93 shape 2/3 / #108 guarded map (no into) / map-over-input (with
371
411
  // elemType) ARE covered. A non-covered map shape (guard+into heterogeneous / over-input without
@@ -486,6 +526,15 @@ function emitRawRowStructs(comp, typedNodes, plan) {
486
526
  if ("cond" in n)
487
527
  continue;
488
528
  const ref = typedNodes.get(n.id);
529
+ if ("fanout" in n) {
530
+ // a covered fanout node: RawElem_ is the connection items element (the per-body row the batched
531
+ // handler yields, aligned to the deduped id list); the batch RawRow_ carries the aligned []RawElem_.
532
+ const elemRowRef = fanoutItemsElemRef(n, ref, plan);
533
+ parts.push(emitOneRowStruct(rawElemStructName(comp.name, n.id), elemRowRef, plan));
534
+ parts.push(`// ${rawRowStructName(comp.name, n.id)} — the BATCH row for fanout '${n.id}': the aligned per-body rows.\n` +
535
+ `type ${rawRowStructName(comp.name, n.id)} struct {\n\tIsError bool\n\tErr string\n\tRows []${rawElemStructName(comp.name, n.id)}\n}`);
536
+ continue;
537
+ }
489
538
  if ("map" in n) {
490
539
  // a covered map node: RawElem_<comp>_<node> is the HANDLER'S per-element return shape:
491
540
  // - into: the `into` field's type (the fetched item merged onto every over element);
@@ -583,6 +632,14 @@ function emitHandlerInterface(comp, typedNodes, plan) {
583
632
  continue; // #108: a cond node has no handler method (pure Expression).
584
633
  const method = nodeMethodName(comp.name, n.id);
585
634
  const bt = boundGoType(n, comp, typedNodes, plan);
635
+ if ("fanout" in n) {
636
+ // fanout (v3): one batched dispatch of the deduped id list. Ports = the batch struct; returns the
637
+ // aligned batch row (per-body rows) + resolved. The runner applies dedupe/drop/wrap after.
638
+ const portsT = `${portsStructName(comp.name, n.id)}_batch`;
639
+ const retT = rawRowStructName(comp.name, n.id);
640
+ lines.push(`\t${method}(ports ${portsT}, bound ${bt}) (${retT}, bool)`);
641
+ continue;
642
+ }
586
643
  if ("map" in n) {
587
644
  const m = n.map;
588
645
  const batched = m.batched === true;
@@ -626,6 +683,59 @@ type ${batchStruct} struct {
626
683
  Items []${structName}
627
684
  }`;
628
685
  }
686
+ /** emitFanoutPortsStructs (v3) — the per-body element ports struct + the batch struct for a covered
687
+ * fanout node (identical shape to a batched map's ports). The element ports read the `$as` id binding. */
688
+ function emitFanoutPortsStructs(comp, node, typedNodes, plan) {
689
+ const f = node.fanout;
690
+ const structName = portsStructName(comp.name, node.id);
691
+ const { elemRef } = fanoutOverElemInfo(comp, node, typedNodes, plan);
692
+ const asBinding = { name: f.as, ref: elemRef, plan };
693
+ const elemStruct = emitPortsStruct(comp, { id: node.id, component: f.component, ports: f.ports }, asBinding, plan);
694
+ const batchStruct = `${structName}_batch`;
695
+ return `${elemStruct}
696
+
697
+ // ${batchStruct} — NATIVE batched ports for fanout '${node.id}': Items is a native slice of the concrete
698
+ // per-id ports structs (${structName}). The consumer reads Items[i].<Field> DIRECTLY (bc#90 / runtime-free).
699
+ type ${batchStruct} struct {
700
+ Items []${structName}
701
+ }`;
702
+ }
703
+ /**
704
+ * fanoutItemsElemRef (v3) — the connection items ELEMENT TypeRef for a covered fanout node. The fanout
705
+ * outType is a connection struct `{items:[]Elem, cursor:*string}`; this returns Elem (the per-body row
706
+ * the batched handler yields, aligned to the deduped id list, before dedupe/drop). Fails closed if the
707
+ * outType is not that connection shape (named struct with an `items` arr field).
708
+ */
709
+ function fanoutItemsElemRef(node, connRef, plan) {
710
+ if (connRef.kind !== "named") {
711
+ throw new GeneratorFailure("UNSUPPORTED_NODE_STRAIGHTLINE", `go fanout (v3): node '${node.id}' outType must be a connection struct {items,cursor} (got ${JSON.stringify(connRef.kind)}).`);
712
+ }
713
+ const decl = findDecl(plan, connRef.name);
714
+ const itemsField = decl.fields.find((fd) => fd.name === "items");
715
+ if (!itemsField || itemsField.type.kind !== "arr") {
716
+ throw new GeneratorFailure("UNSUPPORTED_NODE_STRAIGHTLINE", `go fanout (v3): node '${node.id}' connection struct '${connRef.name}' has no 'items' array field.`);
717
+ }
718
+ return itemsField.type.elem;
719
+ }
720
+ /** fanoutOverElemInfo (v3) — the over id-list element TypeRef + the native Go over-slice expression.
721
+ * Mirrors mapOverElemInfo but reads the FanoutNode.fanout spec (prior-node arr OR input array w/ elemType). */
722
+ function fanoutOverElemInfo(comp, node, typedNodes, plan) {
723
+ const f = node.fanout;
724
+ const e = classifyExpr(f.over);
725
+ if (e.kind === "ref" && e.path.length >= 1 && typedNodes.has(e.path[0])) {
726
+ const baseRef = typedNodes.get(e.path[0]);
727
+ const { expr, ref } = goTypedInternals.typedFieldAccess(typedLocal(e.path[0]), baseRef, e.path.slice(1), plan);
728
+ if (ref.kind === "arr")
729
+ return { elemRef: ref.elem, overExpr: expr };
730
+ }
731
+ if (e.kind === "ref" && e.path.length === 1) {
732
+ const schema = comp.inputPorts?.[e.path[0]];
733
+ const et = schema?.elemType;
734
+ if (et !== undefined)
735
+ return { elemRef: deriveTypeRef(et, plan), overExpr: `in.${goFieldName(e.path[0])}` };
736
+ }
737
+ throw new GeneratorFailure("UNSUPPORTED_NODE_STRAIGHTLINE", `go fanout (v3): fanout '${node.id}' 'over' must be a ref to a prior node's typed arr field OR an input array port with a declared elemType (got ${JSON.stringify(f.over)}).`);
738
+ }
629
739
  /** mapElemRowRef — the handler's per-element RETURN shape for a covered map node: the `into` field's
630
740
  * type (into) or the element outType directly (no-into). This is the type of RawElem_<comp>_<node>. */
631
741
  function mapElemRowRef(node, arrRef, plan) {
@@ -1220,6 +1330,12 @@ function emitNativeRawRunner(comp, plan, flags) {
1220
1330
  k += stage.length - 1;
1221
1331
  continue;
1222
1332
  }
1333
+ // v3: a covered fanout node — deduped batched dispatch + first-seen dedupe + dangling drop +
1334
+ // connection wrap (the SAME definition as run_behavior's fanoutDedupDrop).
1335
+ if ("fanout" in comp.body[i]) {
1336
+ lines.push(emitFanoutArm(comp, comp.body[i], k, typedNodes, plan, priorNodeAt, zeroOut));
1337
+ continue;
1338
+ }
1223
1339
  // #86 pt2: a covered batched map...into node — struct-native element collection + into enrichment.
1224
1340
  if ("map" in comp.body[i]) {
1225
1341
  lines.push(emitMapArm(comp, comp.body[i], k, typedNodes, plan, priorNodeAt, zeroOut, flags));
@@ -1536,6 +1652,132 @@ function emitMapArm(comp, node, atPos, typedNodes, plan, priorNodeAt, zeroOut, f
1536
1652
  function elemLocal(s) {
1537
1653
  return `oel_${s}`;
1538
1654
  }
1655
+ /**
1656
+ * emitFanoutArm (v3) — the struct-native exec of a covered FANOUT node. This is the genuinely new
1657
+ * native list-in fan-out handler: build the per-id native ports (all over ids), dispatch the batched
1658
+ * handler ONCE (aligned per-body rows), then apply THE SAME dedupe/drop as run_behavior's
1659
+ * fanoutDedupDrop — first-seen dedupe by the elem's dedupeKey field, drop dangling (a body whose
1660
+ * dedupeKey field is the zero value ≡ the interpreter's null/absent-key body), implicitSource strip
1661
+ * (STRUCTURAL — the connection items elem type already omits the implicitSource field), and wrap into
1662
+ * the connection struct {items, cursor:nil}. NO boxed Value on any plane. Byte-equal to run_behavior.
1663
+ */
1664
+ function emitFanoutArm(comp, node, atPos, typedNodes, plan, priorNodeAt, zeroOut) {
1665
+ const f = node.fanout;
1666
+ const s = sanitize(node.id);
1667
+ const structName = portsStructName(comp.name, node.id);
1668
+ const batchStruct = `${structName}_batch`;
1669
+ const connRef = typedNodes.get(node.id);
1670
+ const elemRef = fanoutItemsElemRef(node, connRef, plan);
1671
+ const elemGo = renderTypeRef(elemRef);
1672
+ const { elemRef: overElemRef, overExpr } = fanoutOverElemInfo(comp, node, typedNodes, plan);
1673
+ const asName = f.as;
1674
+ const priorHere = (head) => priorNodeAt(head, atPos);
1675
+ const portNames = Object.keys(f.ports);
1676
+ // the dedupeKey Go field on the connection items elem (must be a string scalar for the seen-set key).
1677
+ if (elemRef.kind !== "named")
1678
+ throw new GeneratorFailure("UNSUPPORTED_NODE_STRAIGHTLINE", `go fanout (v3): node '${node.id}' connection items element must be a named struct (got ${JSON.stringify(elemRef.kind)}).`);
1679
+ const elemDecl = findDecl(plan, elemRef.name);
1680
+ const dkField = elemDecl.fields.find((fd) => fd.name === f.dedupeKey);
1681
+ if (!dkField || dkField.type.kind !== "scalar" || dkField.type.scalar !== "string")
1682
+ throw new GeneratorFailure("UNSUPPORTED_NODE_STRAIGHTLINE", `go fanout (v3): node '${node.id}' dedupeKey '${f.dedupeKey}' must be a string field of the connection items element type '${elemRef.name}'.`);
1683
+ const dkGo = goFieldName(f.dedupeKey);
1684
+ // per-id native ports build (same as a batched map's per-element ports). $as → the over id value.
1685
+ const buildPorts = (il, elemVar) => {
1686
+ const inits = [];
1687
+ const resolveRef = (head, restPath, opt) => {
1688
+ if (opt)
1689
+ return null;
1690
+ let baseExpr;
1691
+ let baseRef;
1692
+ if (head === asName) {
1693
+ baseExpr = elemVar;
1694
+ baseRef = overElemRef;
1695
+ }
1696
+ else if (priorHere(head)) {
1697
+ baseExpr = typedLocal(head);
1698
+ baseRef = typedNodes.get(head);
1699
+ }
1700
+ else {
1701
+ if (restPath.length !== 0)
1702
+ return null;
1703
+ const scalar = inputScalarKind(comp.inputPorts?.[head]);
1704
+ if (scalar === undefined)
1705
+ return null;
1706
+ return { expr: `in.${goFieldName(head)}`, scalar };
1707
+ }
1708
+ let acc;
1709
+ let expr;
1710
+ try {
1711
+ const r = goTypedInternals.typedFieldAccess(baseExpr, baseRef, restPath, plan);
1712
+ expr = r.expr;
1713
+ acc = r.ref;
1714
+ }
1715
+ catch {
1716
+ return null;
1717
+ }
1718
+ if (acc.kind !== "scalar" || acc.scalar === "null")
1719
+ return null;
1720
+ return { expr, scalar: goScalar(acc.scalar) };
1721
+ };
1722
+ const asBinding = { name: asName, ref: overElemRef, plan };
1723
+ for (const pn of portNames) {
1724
+ const fieldGoType = portFieldGoType(f.ports[pn], comp.inputPorts, `fanout port '${pn}' of node '${node.id}'`, asBinding, plan);
1725
+ inits.push(emitPortInit(pn, f.ports[pn], fieldGoType, resolveRef, comp.inputPorts, plan));
1726
+ }
1727
+ return [`${il}ep_${s} := ${structName}{${inits.join(", ")}}`];
1728
+ };
1729
+ const lines = [];
1730
+ const closers = [];
1731
+ lines.push(`\t// ── fanout '${node.id}' (${f.component}, dedupeKey:${JSON.stringify(f.dedupeKey)}, drop:${JSON.stringify(f.drop)}${f.implicitSource ? ", implicitSource:" + JSON.stringify(f.implicitSource) : ""}${f.parent ? ", parent:" + f.parent : ""}) ──`);
1732
+ let indent = "\t";
1733
+ if (f.parent !== undefined && priorNodeAt(f.parent, atPos)) {
1734
+ lines.push(`${indent}if produced_${sanitize(f.parent)} {`);
1735
+ closers.unshift(`${indent}}`);
1736
+ indent += "\t";
1737
+ }
1738
+ // over id-list (typed field access — no serialize) → per-id ports (all ids; dedupe is on the result).
1739
+ lines.push(`${indent}over_${s} := ${overExpr}`);
1740
+ lines.push(`${indent}var items_${s} []${elemGo}`);
1741
+ lines.push(`${indent}pi_${s} := make([]${structName}, 0, len(over_${s}))`);
1742
+ lines.push(`${indent}for _, ${elemLocal(s)} := range over_${s} {`);
1743
+ for (const l of buildPorts(indent + "\t", elemLocal(s)))
1744
+ lines.push(l);
1745
+ lines.push(`${indent}\tpi_${s} = append(pi_${s}, ep_${s})`);
1746
+ lines.push(`${indent}}`);
1747
+ // empty id-list => empty connection (handler not called), matching run_behavior.
1748
+ lines.push(`${indent}if len(pi_${s}) > 0 {`);
1749
+ lines.push(`${indent}\tbp_${s} := ${batchStruct}{Items: pi_${s}}`);
1750
+ lines.push(`${indent}\tfo_${s}, fo_${s}Resolved := handlers.${nodeMethodName(comp.name, node.id)}(bp_${s}, nil)`);
1751
+ lines.push(`${indent}\tif !fo_${s}Resolved {`, `${indent}\t\treturn ${zeroOut}, ${goErr("UNKNOWN_COMPONENT", `"component '${f.component}' has no handler (fail-closed)"`)}`, `${indent}\t}`);
1752
+ lines.push(`${indent}\tif fo_${s}.IsError {`, `${indent}\t\treturn ${zeroOut}, ${goErr("OP_FAILED", `"operation '${node.id}' failed under 'fail' policy: "+fo_${s}.Err`)}`, `${indent}\t}`);
1753
+ lines.push(`${indent}\tif len(fo_${s}.Rows) != len(pi_${s}) {`, `${indent}\t\treturn ${zeroOut}, ${goErr("FANOUT_BATCH_RESULT_MISMATCH", `fmt.Sprintf("fanout '${node.id}': batched handler must return a list aligned to the deduped id list (want %d)", len(pi_${s}))`)}`, `${indent}\t}`);
1754
+ // ── THE ONE dedupe/drop (mirrors fanoutDedupDrop verbatim): first-seen dedupe by dedupeKey field;
1755
+ // drop dangling (zero dedupeKey ≡ interpreter's null/absent-key body); implicitSource strip is
1756
+ // structural (the elem type already omits it). cursor is always nil (connection wrap).
1757
+ lines.push(`${indent}\tseen_${s} := make(map[string]struct{}, len(fo_${s}.Rows))`);
1758
+ lines.push(`${indent}\titems_${s} = make([]${elemGo}, 0, len(fo_${s}.Rows))`);
1759
+ lines.push(`${indent}\tfor fi_${s} := range fo_${s}.Rows {`);
1760
+ lines.push(`${indent}\t\tbody_${s} := fo_${s}.Rows[fi_${s}]`);
1761
+ lines.push(`${indent}\t\tvar el_${s} ${elemGo}`);
1762
+ lines.push(emitRowCopy(`el_${s}`, `body_${s}`, elemRef, plan, indent.length + 2));
1763
+ lines.push(`${indent}\t\tkey_${s} := el_${s}.${dkGo}`);
1764
+ if (f.drop === "dangling") {
1765
+ // dangling: a body whose dedupeKey is the zero value (empty string) is dropped.
1766
+ lines.push(`${indent}\t\tif key_${s} == "" {`, `${indent}\t\t\tcontinue`, `${indent}\t\t}`);
1767
+ }
1768
+ lines.push(`${indent}\t\tif _, dup_${s} := seen_${s}[key_${s}]; dup_${s} {`, `${indent}\t\t\tcontinue`, `${indent}\t\t}`);
1769
+ lines.push(`${indent}\t\tseen_${s}[key_${s}] = struct{}{}`);
1770
+ lines.push(`${indent}\t\titems_${s} = append(items_${s}, el_${s})`);
1771
+ lines.push(`${indent}\t}`);
1772
+ lines.push(`${indent}}`);
1773
+ // wrap into the connection struct {Items, Cursor:nil}. A nil items slice serializes to [] (the
1774
+ // connection serializer normalizes it) — matching {items:[],cursor:null} for an empty fan-out.
1775
+ lines.push(`${indent}${typedLocal(node.id)} = ${connRef.name}{${goFieldName("items")}: items_${s}}`);
1776
+ lines.push(`${indent}produced_${s} = true`);
1777
+ for (const c of closers)
1778
+ lines.push(c);
1779
+ return lines.join("\n");
1780
+ }
1539
1781
  /** #108: resolve an INPUT port head for a native-expr ref (cond `if` / map `when` / branches). A scalar
1540
1782
  * port → `in.<Field>` of the scalar type; an array port WITH elemType → `in.<Field>` of `[]ElemT` (so
1541
1783
  * `len(in.<Field>)` works); anything else → null (fail-closed). */
@@ -1974,7 +2216,11 @@ function emit(ctx) {
1974
2216
  for (const n of c.body)
1975
2217
  typedNodes.set(n.id, deriveTypeRef(n.outType, plan));
1976
2218
  for (const n of c.body) {
1977
- if ("map" in n) {
2219
+ if ("fanout" in n) {
2220
+ // v3: a fanout node emits a per-id element ports struct + a batch struct (like a batched map).
2221
+ structs.push(emitFanoutPortsStructs(c, n, typedNodes, plan));
2222
+ }
2223
+ else if ("map" in n) {
1978
2224
  // #86 pt2 / #108: a map node emits an element ports struct + a batch struct. The element ports
1979
2225
  // may read the `$as` binding — resolved via the over-element type (prior node / input array).
1980
2226
  structs.push(emitMapPortsStructs(c, n, typedNodes, plan));
@@ -2002,7 +2248,7 @@ function emit(ctx) {
2002
2248
  const needSync = native.some((c) => concurrencyPlan(c) !== null);
2003
2249
  // bc#90: the ONLY std-lib `fmt.Sprintf` site on the covered plane is the batched-map result-count
2004
2250
  // mismatch error — so `fmt` is imported iff a covered component has a batched map node.
2005
- const needFmt = native.some((c) => c.body.some((n) => "map" in n && n.map.batched === true));
2251
+ const needFmt = native.some((c) => c.body.some((n) => ("map" in n && n.map.batched === true) || "fanout" in n));
2006
2252
  // The FULLY-covered module (no non-native components) gets a MINIMAL, RUNTIME-FREE header — NO
2007
2253
  // bc-runtime import at all (bc#90).
2008
2254
  // FAIL CLOSED (bc#86/#89): the --typed-native (native codegen) surface is native-only. If ANY
@@ -2114,6 +2360,39 @@ ${native.map((c) => `\t${handlerIfaceName(c.name)}`).join("\n")}
2114
2360
  if ("cond" in n)
2115
2361
  continue; // #108: cond has no handler method (pure Expression) — no scripted impl.
2116
2362
  const ref = typedNodes.get(n.id);
2363
+ if ("fanout" in n) {
2364
+ // v3: scripted fanout impl — drain one batched outcome and decode the aligned []Value into the
2365
+ // per-body elem rows (a null array element materializes to the zero elem row = dangling).
2366
+ const f = n.fanout;
2367
+ const elemRowRef = fanoutItemsElemRef(n, ref, plan);
2368
+ const elemT = rawElemStructName(c.name, n.id);
2369
+ const batchT = rawRowStructName(c.name, n.id);
2370
+ const elemDecode = emitDecodeRow(c.name, n.id, elemT, elemRowRef, plan, emittedDecode, decodeFns, "Elem");
2371
+ const portsT = `${portsStructName(c.name, n.id)}_batch`;
2372
+ const foBoundT = boundGoType(n, c, typedNodes, plan);
2373
+ methodImpls.push(`func (s *ScriptedNativeRaw) ${nodeMethodName(c.name, n.id)}(_ ${portsT}, _ ${foBoundT}) (${batchT}, bool) {
2374
+ src, ok := s.next(${JSON.stringify(f.component)})
2375
+ if !ok {
2376
+ return ${batchT}{}, false
2377
+ }
2378
+ if src.isErr {
2379
+ return ${batchT}{IsError: true, Err: src.err}, true
2380
+ }
2381
+ arr, _ := src.ok.([]${PKG}.Value)
2382
+ rows := make([]${elemT}, 0, len(arr))
2383
+ for _, ev := range arr {
2384
+ // v3: a null aligned body is a DANGLING id — decode it to the zero elem row (empty dedupeKey
2385
+ // field), so the runner's dangling-drop excludes it (byte-equal to fanoutDedupDrop).
2386
+ if ev == nil {
2387
+ rows = append(rows, ${elemT}{})
2388
+ continue
2389
+ }
2390
+ rows = append(rows, ${elemDecode}(ev))
2391
+ }
2392
+ return ${batchT}{Rows: rows}, true
2393
+ }`);
2394
+ continue;
2395
+ }
2117
2396
  if ("map" in n) {
2118
2397
  const m = n.map;
2119
2398
  const batched = m.batched === true;