behavior-contracts 0.7.2 → 0.8.0

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.
Files changed (68) hide show
  1. package/README.md +0 -1
  2. package/dist/authoring.d.ts +215 -3
  3. package/dist/authoring.d.ts.map +1 -1
  4. package/dist/authoring.js +338 -8
  5. package/dist/authoring.js.map +1 -1
  6. package/dist/behavior.d.ts +101 -3
  7. package/dist/behavior.d.ts.map +1 -1
  8. package/dist/behavior.js +126 -4
  9. package/dist/behavior.js.map +1 -1
  10. package/dist/bind.d.ts +64 -0
  11. package/dist/bind.d.ts.map +1 -0
  12. package/dist/bind.js +131 -0
  13. package/dist/bind.js.map +1 -0
  14. package/dist/builder.d.ts +30 -88
  15. package/dist/builder.d.ts.map +1 -1
  16. package/dist/builder.js +114 -59
  17. package/dist/builder.js.map +1 -1
  18. package/dist/expr-operator-types.d.ts +89 -0
  19. package/dist/expr-operator-types.d.ts.map +1 -0
  20. package/dist/expr-operator-types.js +134 -0
  21. package/dist/expr-operator-types.js.map +1 -0
  22. package/dist/generator/async-plan.d.ts.map +1 -1
  23. package/dist/generator/async-plan.js +4 -0
  24. package/dist/generator/async-plan.js.map +1 -1
  25. package/dist/generator/core.d.ts +15 -0
  26. package/dist/generator/core.d.ts.map +1 -1
  27. package/dist/generator/core.js +2 -0
  28. package/dist/generator/core.js.map +1 -1
  29. package/dist/generator/emit-php.d.ts.map +1 -1
  30. package/dist/generator/emit-php.js +1 -0
  31. package/dist/generator/emit-php.js.map +1 -1
  32. package/dist/generator/emit-python.d.ts.map +1 -1
  33. package/dist/generator/emit-python.js +1 -0
  34. package/dist/generator/emit-python.js.map +1 -1
  35. package/dist/generator/emit-straightline-typed-typescript.d.ts.map +1 -1
  36. package/dist/generator/emit-straightline-typed-typescript.js +1 -0
  37. package/dist/generator/emit-straightline-typed-typescript.js.map +1 -1
  38. package/dist/generator/emit-typed-native-go.d.ts.map +1 -1
  39. package/dist/generator/emit-typed-native-go.js +364 -14
  40. package/dist/generator/emit-typed-native-go.js.map +1 -1
  41. package/dist/generator/emit-typed-native-rust.d.ts.map +1 -1
  42. package/dist/generator/emit-typed-native-rust.js +347 -21
  43. package/dist/generator/emit-typed-native-rust.js.map +1 -1
  44. package/dist/generator/emit-typescript.d.ts.map +1 -1
  45. package/dist/generator/emit-typescript.js +24 -8
  46. package/dist/generator/emit-typescript.js.map +1 -1
  47. package/dist/generator/index.d.ts +1 -1
  48. package/dist/generator/index.d.ts.map +1 -1
  49. package/dist/generator/index.js +7 -5
  50. package/dist/generator/index.js.map +1 -1
  51. package/dist/generator/straightline.d.ts.map +1 -1
  52. package/dist/generator/straightline.js +21 -1
  53. package/dist/generator/straightline.js.map +1 -1
  54. package/dist/guard.js +20 -1
  55. package/dist/guard.js.map +1 -1
  56. package/dist/index.d.ts +42 -9
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +28 -7
  59. package/dist/index.js.map +1 -1
  60. package/dist/provenance.d.ts +102 -0
  61. package/dist/provenance.d.ts.map +1 -0
  62. package/dist/provenance.js +128 -0
  63. package/dist/provenance.js.map +1 -0
  64. package/dist/type-gate.d.ts +63 -0
  65. package/dist/type-gate.d.ts.map +1 -0
  66. package/dist/type-gate.js +295 -0
  67. package/dist/type-gate.js.map +1 -0
  68. package/package.json +4 -3
package/dist/authoring.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { SPEC_VERSIONS } from "./index.js";
2
- import { assertPortableComponentGraph } from "./guard.js";
2
+ import { mintCompiled } from "./provenance.js";
3
+ import { assertAllNodeTypesDetermined, canonicalizeType } from "./type-gate.js";
4
+ import { assertPortableComponentGraph, assertPortableTypeNotation, PortabilityError } from "./guard.js";
3
5
  import { buildComponentCore, checkPortableEntry, checkPortNames, checkDeclaredPortTypes, collectNodeIdRefs, DEFAULT_PLAN_CONCURRENCY, } from "./builder.js";
4
6
  export class AuthoringFailure extends Error {
5
7
  code;
@@ -45,6 +47,24 @@ function exprMetaOf(v) {
45
47
  return undefined;
46
48
  return v[EXPR_META];
47
49
  }
50
+ /**
51
+ * `.map` の opts キーの閉集合(**runtime-enumerable SoT**)。{@link MapOptions} の型はここから
52
+ * 導出し(`Record<...> `)、新 opts キーを足すときはここに 1 語追加するのが正。matrix の網羅ゲート
53
+ * (#132)はこの配列から導出するので、SoT にキーを足して matrix にケースが無ければ CI が RED になる。
54
+ * 注: 要素ごと skip の `when` は opts キーではなく callback 内 `when(...)` guard 由来(`map.when` へ
55
+ * lower)なので、ここには含めない(authoring 手段が別。matrix 側で別途カバーする)。
56
+ */
57
+ export const MAP_OPTION_KEYS = ["into", "batched"];
58
+ /**
59
+ * `refsConnection`(v3 fanout)の opts キーの閉集合(**runtime-enumerable SoT**)。graphddb の
60
+ * `@refs` 読みが宣言する dedupe/drop 契約。{@link FanoutOptions} の型はここから導出。新 opts キーは
61
+ * ここに追加するのが正で、matrix 網羅ゲート(#132)がこの配列から導出する(未カバー → CI RED)。
62
+ */
63
+ export const FANOUT_OPTION_KEYS = ["dedupeKey", "drop", "implicitSource"];
64
+ const _mapOptsSync = true;
65
+ const _fanoutOptsSync = true;
66
+ void _mapOptsSync;
67
+ void _fanoutOptsSync;
48
68
  function makeExpr(meta) {
49
69
  return new Proxy({}, {
50
70
  get(_t, prop) {
@@ -62,6 +82,10 @@ function makeExpr(meta) {
62
82
  return () => notRecordable(`'${prop}' on a recorded value (implicit coercion is not statically interpretable)`);
63
83
  if (prop === "map")
64
84
  return (cb, opts) => recordMap(meta, cb, opts);
85
+ if (prop === "refsConnection")
86
+ return (cb, opts) => recordFanout(meta, cb, opts);
87
+ if (prop === "as")
88
+ return (t) => recordAs(meta, t);
65
89
  if (meta.refPath === null)
66
90
  afail("COMPUTED_ACCESS", `property '.${prop}' on a computed expression cannot be lowered (bind the value through a component result or restructure the wiring)`);
67
91
  if (meta.isInput && meta.refPath.length === 0)
@@ -255,8 +279,157 @@ export function catalogComponents(catalog) {
255
279
  }
256
280
  return out;
257
281
  }
258
- function recordComponentCall(name, entry, portsIn) {
282
+ export function defineLeaf(name, meta,
283
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
284
+ fn) {
285
+ if (typeof name !== "string" || name === "")
286
+ afail("BAD_LEAF_META", `defineLeaf: name must be a non-empty string`);
287
+ if (!meta || typeof meta !== "object")
288
+ afail("BAD_LEAF_META", `defineLeaf '${name}': meta must be an object with cardinality/ports/output`);
289
+ if (meta.cardinality !== "one" && meta.cardinality !== "many")
290
+ afail("BAD_LEAF_META", `defineLeaf '${name}': cardinality must be "one" or "many"`);
291
+ if (!meta.ports || typeof meta.ports !== "object" || Array.isArray(meta.ports))
292
+ afail("BAD_LEAF_META", `defineLeaf '${name}': ports must be a record of PortableType`);
293
+ if (typeof fn !== "function")
294
+ afail("BAD_LEAF_META", `defineLeaf '${name}': fn (the impl body) must be a function`);
295
+ // runtime PortableType 注記の閉集合検査(guard と同一強度・fail-closed。core が読む唯一の型源)。
296
+ for (const [k, pt] of Object.entries(meta.ports))
297
+ checkPortableTypeMeta(name, `ports.${k}`, pt);
298
+ checkPortableTypeMeta(name, "output", meta.output);
299
+ return { name, meta, fn };
300
+ }
301
+ /** defineLeaf / behaviorComponents の PortableType 注記を fail-closed で検査する。 */
302
+ function checkPortableTypeMeta(leaf, at, t) {
303
+ try {
304
+ assertPortableTypeNotation(t, at);
305
+ }
306
+ catch (e) {
307
+ if (e instanceof PortabilityError)
308
+ afail("BAD_TYPE_NOTATION", `defineLeaf '${leaf}': ${e.message}`);
309
+ throw e;
310
+ }
311
+ }
312
+ /**
313
+ * `PortableType` → `PortSchema.type` 文字列(hand-written catalog と同一の語彙)+
314
+ * elemType の導出。既存 catalog(authoring.test.ts の `kv` / codegen-corpus の inputPorts)は
315
+ * スカラを `"string"`/`"int"`/`"float"`/`"bool"` の TS 風文字列で、配列を
316
+ * `{ type:"array", elemType: <PortableType> }` で書く。この導出はその shape を再現する:
317
+ *
318
+ * - スカラ → `{ type: <scalar> }`
319
+ * - `{opt: T}` → 内側 T の schema に `required:false` を上書き(nullable Port)
320
+ * - `{arr: T}` → `{ type:"array", elemType: T }`(map-over-input の $as 要素型解決源 — bc#101)
321
+ * - `{obj: …}` → `{ type:"object" }`(object Port — 内部 field 型は catalog schema では持たない)
322
+ */
323
+ function portSchemaFromPortable(pt, required) {
324
+ if (typeof pt === "string") {
325
+ const s = { type: pt };
326
+ if (required)
327
+ s.required = true;
328
+ return s;
329
+ }
330
+ if ("opt" in pt) {
331
+ // opt は「省略可 = required:false」。内側の base 型で type を決める。
332
+ const inner = portSchemaFromPortable(pt.opt, false);
333
+ return { ...inner, required: false };
334
+ }
335
+ if ("arr" in pt) {
336
+ const s = { type: "array", elemType: pt.arr };
337
+ if (required)
338
+ s.required = true;
339
+ return s;
340
+ }
341
+ // obj
342
+ const s = { type: "object" };
343
+ if (required)
344
+ s.required = true;
345
+ return s;
346
+ }
347
+ /** cardinality → CatalogOutput.shape(one → "item" / many → "items"。既存語彙と一致)。 */
348
+ function outputShapeFromCardinality(cardinality) {
349
+ return { shape: cardinality === "one" ? "item" : "items" };
350
+ }
351
+ /**
352
+ * catalogEntryFromLeaf — defineLeaf の runtime 注記から `CatalogEntry` を **導出**する
353
+ * (consumer は catalog を手書きしない — §4.1)。
354
+ * - `inputPorts` = 各 Port の PortableType を PortSchema へ射影(scalar/opt/arr/obj)。
355
+ * - `output.shape` = cardinality(one→item / many→items)。
356
+ * - `elemType` = `output`(その leaf が返す要素の確定型。typed codegen / map 要素型の SSoT)。
357
+ * - `portableToIR` / `additionalPorts` は meta から(既定 true / false)。
358
+ */
359
+ export function catalogEntryFromLeaf(def) {
360
+ const inputPorts = {};
361
+ for (const [k, pt] of Object.entries(def.meta.ports)) {
362
+ // opt でラップされた Port は省略可(required:false)、それ以外は required。
363
+ const required = !(typeof pt === "object" && pt !== null && "opt" in pt);
364
+ inputPorts[k] = portSchemaFromPortable(pt, required);
365
+ }
366
+ const entry = {
367
+ name: def.name,
368
+ inputPorts,
369
+ output: outputShapeFromCardinality(def.meta.cardinality),
370
+ portableToIR: def.meta.portableToIR ?? true,
371
+ elemType: def.meta.output,
372
+ };
373
+ if (def.meta.additionalPorts === true)
374
+ entry.additionalPorts = true;
375
+ return entry;
376
+ }
377
+ /**
378
+ * behaviorComponents — `defineLeaf` 結果のレコードから **portable catalog を導出**し、
379
+ * authoring 本体で呼べる leaf コンポーネント関数群を返す(`catalogComponents(catalog)` と
380
+ * **同一の call-shape** `{ [name]: (ports) => Recorded }`・同一の {@link recordComponentCall}
381
+ * 機構)。consumer は catalog も handlers も手書きしない(§4.1 / SA4)。
382
+ *
383
+ * catalog は `defineLeaf` の型付きシグネチャ由来の runtime 注記から機械導出されるため、
384
+ * 手書き catalog と**構造的に同一**(AC1)。派生後の record は既存 catalog 経路と完全に同じ
385
+ * port 検証・lowering を通る。
386
+ */
387
+ export function behaviorComponents(leaves) {
388
+ const out = {};
389
+ for (const key of Object.keys(leaves)) {
390
+ const def = leaves[key];
391
+ const entry = catalogEntryFromLeaf(def);
392
+ // SA8: leaf impl(型付き静的関数の本体)を record 時にフレームのレジストリへ登録する。
393
+ // handlers 手注入を廃し、bind 時にこの registry から name→impl を自動 dispatch する(bind.ts)。
394
+ out[key] = (ports) => recordComponentCall(entry.name, entry, ports, def.fn);
395
+ }
396
+ return out;
397
+ }
398
+ /**
399
+ * deriveCatalog — `defineLeaf` レコードから `Catalog`(name → CatalogEntry)を導出する
400
+ * (guard / typed codegen / fingerprint の SSoT を得たい consumer 向け。`behaviorComponents`
401
+ * が内部で使うのと同一の {@link catalogEntryFromLeaf} 射影)。
402
+ */
403
+ export function deriveCatalog(leaves) {
404
+ const catalog = {};
405
+ for (const def of Object.values(leaves))
406
+ catalog[def.name] = catalogEntryFromLeaf(def);
407
+ return catalog;
408
+ }
409
+ /**
410
+ * baseOutTypeFromEntry — catalog エントリの base ノード結果型を導出する。`elemType` は leaf の
411
+ * **要素型**なので、ノード結果の確定型は `output.shape` で包む:
412
+ * - `item`(既定)→ 要素型そのもの。
413
+ * - `items` → `{arr: 要素型}`(リスト結果)。
414
+ * - `connection` → `{obj:{items:{arr:要素型}, cursor:{opt:"string"}}}`(connection 結果)。
415
+ * `elemType` が無いエントリ(手書き catalog 等)は undefined(=未確定 → ゲートが UNTYPED_NODE)。
416
+ */
417
+ function baseOutTypeFromEntry(entry) {
418
+ if (entry.elemType === undefined)
419
+ return undefined;
420
+ const shape = entry.output?.shape ?? "item";
421
+ if (shape === "items")
422
+ return { arr: entry.elemType };
423
+ if (shape === "connection")
424
+ return { obj: { items: { arr: entry.elemType }, cursor: { opt: "string" } } };
425
+ return entry.elemType; // item(単一)
426
+ }
427
+ function recordComponentCall(name, entry, portsIn, impl) {
259
428
  const f = requireFrame(`component '${name}'`);
429
+ // SA8: behaviorComponents 由来の leaf 呼びは impl を持つ → フレームのレジストリへ登録(自動 bind の出所)。
430
+ // catalogComponents(生 Catalog・impl 無し)由来は impl=undefined = 登録しない(bind は不可)。
431
+ if (impl !== undefined)
432
+ f.registry[name] = impl;
260
433
  checkPortableEntry(name, entry, afail);
261
434
  if (!portsIn || typeof portsIn !== "object" || Array.isArray(portsIn) || exprMetaOf(portsIn))
262
435
  afail("BAD_PORT_VALUE", `component '${name}': ports must be a plain object literal`);
@@ -274,8 +447,12 @@ function recordComponentCall(name, entry, portsIn) {
274
447
  afail("MAP_MULTI_COMPONENT", `method '${f.method}': a .map callback must invoke exactly one component (got a second call: '${name}')`);
275
448
  f.pendingMap.component = name;
276
449
  f.pendingMap.ports = ports;
277
- // callback 内でこの要素結果へさらに配線することはできない(record は構造のみ)。
278
- return opExpr(null);
450
+ // callback leaf の base 要素型を捕捉(`.as` 未指定時の確定型 — recordMap/recordFanout が使う)。
451
+ f.pendingMap.baseElemType = entry.elemType;
452
+ // callback 内でこの要素結果へさらに配線することはできない(record は構造のみ)が、
453
+ // `.as<T>(t)` による要素の確定型注記だけは受ける(mapResult recorder — recordAs が
454
+ // pendingMap.outType へ回す)。
455
+ return makeExpr({ node: null, refPath: null, refOp: "ref", isInput: false, mapResult: true });
279
456
  }
280
457
  const bf = ensureGate(f);
281
458
  const deps = collectNodeIdRefs(ports, f.nodeIds);
@@ -286,9 +463,64 @@ function recordComponentCall(name, entry, portsIn) {
286
463
  node.parent = wire.parent;
287
464
  if (wire.bindField !== undefined)
288
465
  node.bindField = wire.bindField;
466
+ // base 出力型を leaf の catalog `elemType`(A1 の defineLeaf 由来)からノードへ焼く(SA5 の
467
+ // 「leaf の base 型は signature 由来」= 確定)。elemType は**要素型**なので、ノード結果の型は
468
+ // leaf の output.shape で包む(item=要素そのもの / items=`{arr:要素}` / connection=`{obj:{items,cursor}}`)。
469
+ // projection 等で型が変わる点は後段の `.as<T>()` が recordAs で上書きする(配列/要素の別も consumer が
470
+ // 確定させる)。catalog に elemType が無い(手書き catalog 等)ノードは outType 未確定のまま残り、
471
+ // 全ノード型確定ゲート(type-gate.ts)が `UNTYPED_NODE` で名指して落とす。
472
+ const baseOut = baseOutTypeFromEntry(entry);
473
+ if (baseOut !== undefined)
474
+ node.outType = baseOut;
289
475
  f.nodes.push(node);
290
476
  return nodeHandle(id);
291
477
  }
478
+ // ── `.as<T>(t)`(inline 確定型注記 — SA5 / scp-only-authoring-contract §4.4)──────────
479
+ /**
480
+ * recordAs — node 結果 recorder の `.as<T>(t)` を lower する。projection / 合成で base 型
481
+ * (leaf signature 由来)から**確定型が変わる点**を consumer が inline で確定させる surface。
482
+ *
483
+ * TS の型は実行時に消去されるため(consumer-interface.md C3・不変)、BC core は**推論しない**:
484
+ * `.as` は引数の runtime `PortableType`(可搬型記法の閉集合)だけを読み、それを対象 body
485
+ * ノードの `outType` に書き込む。TS の generic `<T>` は呼び出し側で `t` に束縛され(型が
486
+ * 矛盾すれば tsc エラー)、runtime へは `t`(= SSoT)だけが渡る。注記は「推論結果」ではなく
487
+ * 「consumer が静的に確定した型」であり、後段(A3 の UNTYPED_NODE gate / typed codegen)が読む。
488
+ *
489
+ * `.as` は **node 結果 recorder(componentRef / map / fanout の結果)** にのみ適用できる。
490
+ * `$` 入力参照・演算結果(`concat(...)` 等)は body ノードを持たず注記先が無いため
491
+ * `BAD_AS_TARGET` で fail-closed(型未確定の穴を作らない = SA5)。map/fanout コールバック内の
492
+ * leaf 結果への `.as` は、要素の確定型として pendingMap に記録し、畳まれた MapNode/FanoutNode の
493
+ * `outType` に載せる。
494
+ */
495
+ function recordAs(meta, t) {
496
+ const f = requireFrame(".as");
497
+ // runtime PortableType の閉集合検査(guard と同一強度・fail-closed)。TS の型消去後に
498
+ // core が読むのはこの runtime 注記だけ(推論しない)。
499
+ try {
500
+ assertPortableTypeNotation(t, `.as`);
501
+ }
502
+ catch (e) {
503
+ if (e instanceof PortabilityError)
504
+ afail("BAD_TYPE_NOTATION", `method '${f.method}': .as<T>(t) — ${e.message}`);
505
+ throw e;
506
+ }
507
+ // map/fanout コールバック内の component 結果: 要素の確定型を pendingMap へ記録する
508
+ // (要素は単一 Map/Fanout ノードに畳まれるため、body ノードは未生成 — outType は畳み時に載る)。
509
+ if (meta.mapResult && f.pendingMap) {
510
+ f.pendingMap.outType = t;
511
+ return makeExpr(meta); // 同じ map 結果 recorder(callback 内でさらに配線はしない)。
512
+ }
513
+ // node 結果 recorder は refPath[0] が現フレームの body ノード id(nodeHandle で作られる)。
514
+ const id = meta.refPath !== null && meta.refPath.length === 1 ? meta.refPath[0] : null;
515
+ const node = id !== null ? f.nodes.find((n) => n.id === id) : undefined;
516
+ if (!node)
517
+ afail("BAD_AS_TARGET", `method '${f.method}': .as<T>(t) can only annotate a component/map/fanout result node (not a '$' input reference, a projected field, or a computed expression)`);
518
+ // 対象ノード種に応じて outType を書き込む(ComponentRefNode / MapNode / FanoutNode いずれも
519
+ // outType を持つ。CondNode は Φ 合流で `.as` の対象になり得るため同様に outType を持つ)。
520
+ node.outType = t;
521
+ // 注記後も同じ node 結果 recorder を返す(後続配線・Output 参照に使える)。
522
+ return makeExpr(meta);
523
+ }
292
524
  // ── structured control: Map(ネイティブ `.map` を lower)───────────────────────────
293
525
  function recordMap(overMeta, cb, opts) {
294
526
  const f = requireFrame(".map");
@@ -312,7 +544,7 @@ function recordMap(overMeta, cb, opts) {
312
544
  }
313
545
  const as = `$e${f.mapSeq++}`;
314
546
  const binding = makeExpr({ node: { ref: [as] }, refPath: [as], refOp: "ref", isInput: false });
315
- f.pendingMap = { as, component: null, ports: null, when: undefined };
547
+ f.pendingMap = { as, component: null, ports: null, when: undefined, outType: undefined, baseElemType: undefined };
316
548
  let pm;
317
549
  try {
318
550
  cb(binding);
@@ -341,6 +573,87 @@ function recordMap(overMeta, cb, opts) {
341
573
  node.map.batched = true;
342
574
  if (deps.length > 0)
343
575
  node.map.parent = deps[0];
576
+ // callback 内 `.as<T>(t)` で確定した要素型を map ノードの outType に載せる(§4.4。
577
+ // `into` 指定時は augment 済みリストの要素型 — consumer が確定させた形をそのまま採る)。
578
+ // `.as` 未指定時は leaf の base 要素型(catalog elemType)にフォールバック(SA5 の base 型確定)。
579
+ // map ノードの outType は**要素型**(配列ラップ前)で持つ既存規約に従う(native emitter は
580
+ // 配列型をここから合成する)。`into` 指定時は要素型注記が必須(base では augment 後の型を導けない)。
581
+ const mapElem = pm.outType !== undefined ? pm.outType : opts?.into !== undefined ? undefined : pm.baseElemType;
582
+ if (mapElem !== undefined)
583
+ node.outType = mapElem;
584
+ f.nodes.push(node);
585
+ return nodeHandle(id);
586
+ }
587
+ // ── structured control: Fanout(`refsConnection` を FanoutNode へ lower — v3)─────────
588
+ /**
589
+ * recordFanout — `list.refsConnection(el => C.Get({...}), { dedupeKey, drop, implicitSource })` の
590
+ * record 形。graphddb の `@refs` id-list 読みが宣言する first-class fanout ノード(behaviorVersion 3)。
591
+ * `.map` と同じ single-component callback capture を使うが、lower 先は {@link FanoutNode}:
592
+ * dedup 済み 1 回の batched dispatch → dedupe(first-seen by dedupeKey)/drop(dangling)/strip →
593
+ * connection `{items,cursor:null}`。map の無条件行整列(batched)では表現できない意味を owns する。
594
+ */
595
+ function recordFanout(overMeta, cb, opts) {
596
+ const f = requireFrame("refsConnection");
597
+ if (f.pendingMap)
598
+ afail("FANOUT_IN_BRANCH", `method '${f.method}': refsConnection inside a .map callback is not expressible (chain over the connection items instead)`);
599
+ if (f.branchStack.length > 0)
600
+ afail("FANOUT_IN_BRANCH", `method '${f.method}': refsConnection inside a when(...) branch is not expressible in the IR (guard the 'over' expression instead)`);
601
+ if (typeof cb !== "function")
602
+ afail("FANOUT_NOT_LOWERABLE", `method '${f.method}': refsConnection expects an inline arrow callback`);
603
+ if (cb.length > 1)
604
+ afail("FANOUT_NOT_LOWERABLE", `method '${f.method}': refsConnection callback takes exactly one element binding`);
605
+ if (overMeta.refPath !== null && overMeta.refPath.length === 0)
606
+ afail("WHOLE_INPUT", `method '${f.method}': the whole '$' input cannot be fanned out; reference an id-list field`);
607
+ if (opts === null || typeof opts !== "object")
608
+ afail("FANOUT_NOT_LOWERABLE", `method '${f.method}': refsConnection requires an options object with a 'dedupeKey'`);
609
+ if (typeof opts.dedupeKey !== "string" || opts.dedupeKey === "")
610
+ afail("FANOUT_NOT_LOWERABLE", `method '${f.method}': refsConnection 'dedupeKey' must be a non-empty string`);
611
+ const drop = opts.drop ?? "dangling";
612
+ if (drop !== "dangling" && drop !== "none")
613
+ afail("FANOUT_NOT_LOWERABLE", `method '${f.method}': refsConnection 'drop' must be "dangling" or "none"`);
614
+ if (opts.implicitSource !== undefined && (typeof opts.implicitSource !== "string" || opts.implicitSource === ""))
615
+ afail("FANOUT_NOT_LOWERABLE", `method '${f.method}': refsConnection 'implicitSource' must be a non-empty string when present`);
616
+ const as = `$e${f.mapSeq++}`;
617
+ const binding = makeExpr({ node: { ref: [as] }, refPath: [as], refOp: "ref", isInput: false });
618
+ f.pendingMap = { as, component: null, ports: null, when: undefined, outType: undefined, baseElemType: undefined };
619
+ let pm;
620
+ try {
621
+ cb(binding);
622
+ }
623
+ finally {
624
+ pm = f.pendingMap;
625
+ f.pendingMap = null;
626
+ }
627
+ if (pm.component === null)
628
+ afail("FANOUT_NOT_LOWERABLE", `method '${f.method}': a refsConnection callback must invoke exactly one catalog component`);
629
+ if (pm.when !== undefined)
630
+ afail("FANOUT_NOT_LOWERABLE", `method '${f.method}': refsConnection callback cannot carry a when(...) guard (dedupe/drop is the fanout's own definition)`);
631
+ const over = overMeta.node;
632
+ const deps = collectNodeIdRefs(over, f.nodeIds);
633
+ collectNodeIdRefs(pm.ports, f.nodeIds, deps);
634
+ const id = nextId(f);
635
+ const node = {
636
+ id,
637
+ fanout: {
638
+ over,
639
+ as,
640
+ component: pm.component,
641
+ ports: pm.ports,
642
+ dedupeKey: opts.dedupeKey,
643
+ drop,
644
+ relationKind: "connection",
645
+ },
646
+ };
647
+ if (opts.implicitSource !== undefined)
648
+ node.fanout.implicitSource = opts.implicitSource;
649
+ if (deps.length > 0)
650
+ node.fanout.parent = deps[0];
651
+ // callback 内 `.as<T>(t)` で確定した**要素型**を connection outType へ包む
652
+ // (fanout は常に connection: `{obj:{items:{arr:<elem>}, cursor:{opt:"string"}}}` — behavior.ts §5.2)。
653
+ // `.as` 未指定時は leaf の base 要素型(catalog elemType)にフォールバック(SA5 の base 型確定)。
654
+ const fanElem = pm.outType !== undefined ? pm.outType : pm.baseElemType;
655
+ if (fanElem !== undefined)
656
+ node.outType = { obj: { items: { arr: fanElem }, cursor: { opt: "string" } } };
344
657
  f.nodes.push(node);
345
658
  return nodeHandle(id);
346
659
  }
@@ -717,6 +1030,11 @@ export function compileBehaviors(cls, opts = {}) {
717
1030
  }
718
1031
  const instance = new cls();
719
1032
  const components = [];
1033
+ // SA8: 1 クラス = 1 レジストリ(全メソッドの leaf 呼びで共有)。record 時に behaviorComponents 由来の
1034
+ // impl が name→fn で溜まり、compile 末尾で IR handle の side-channel へ退避する(IR 本体には載らない)。
1035
+ // null-proto: leaf 名が 'toString'/'constructor' 等でも prototype 継承キーと混ざらない(bind ゲートの
1036
+ // 完全性検査・dispatch lookup の健全性)。
1037
+ const registry = Object.create(null);
720
1038
  for (const method of methodNames) {
721
1039
  const frame = {
722
1040
  method,
@@ -727,6 +1045,7 @@ export function compileBehaviors(cls, opts = {}) {
727
1045
  mapSeq: 0,
728
1046
  branchStack: [],
729
1047
  pendingMap: null,
1048
+ registry,
730
1049
  };
731
1050
  const dollar = makeExpr({ node: { ref: [] }, refPath: [], refOp: "ref", isInput: true });
732
1051
  currentFrame = frame;
@@ -753,11 +1072,22 @@ export function compileBehaviors(cls, opts = {}) {
753
1072
  //(Kahn levels)・決定的正規化(キーソート)・Guard 自己検査は recorder 経路と
754
1073
  // データ登録経路(buildComponentDefinition)の単一実装。catalog port 照合は
755
1074
  // record 時(recordComponentCall)に同じ共有関数で済ませているため catalog は渡さない。
756
- components.push(buildComponentCore({ name: method, inputPorts, body: frame.nodes, output }, { concurrency: opts.concurrency ?? DEFAULT_PLAN_CONCURRENCY }));
1075
+ const component = buildComponentCore({ name: method, inputPorts, body: frame.nodes, output }, { concurrency: opts.concurrency ?? DEFAULT_PLAN_CONCURRENCY });
1076
+ // SA5 全ノード型確定ゲート(#125): 全 body ノードの outType と output(Φ 合成)の全フィールド型が
1077
+ // 一意に確定していることを網羅検査し(未確定は UNTYPED_NODE で fail-closed)、確定済みノード型から
1078
+ // outputType を構造伝播で導出する(推論ではない)。導出型を canonical 化して component に載せることで、
1079
+ // compile 産 IR が「全ノード + component が型付き」= native codegen が端まで型付きフラット化できる状態
1080
+ // (consumer-interface.md §2.3 / bc#77 isFullyTyped)になる。
1081
+ component.outputType = canonicalizeType(assertAllNodeTypesDetermined(component));
1082
+ components.push(component);
757
1083
  }
758
1084
  const ir = { irVersion: 1, exprVersion: opts.exprVersion ?? SPEC_VERSIONS.expression, components };
759
1085
  assertPortableComponentGraph(ir); // fail-closed 自己検査(P0-2 Guard を必ず通す)
760
- return ir;
1086
+ // SA1/SA2: compile seam だけが token を刻んで opaque handle に封じる(consumer は forge 不能)。
1087
+ // 実行時 token(provenance.ts)+ 型 brand(index.ts)の二重の門で手組み IR を排除する。
1088
+ // SA8: 捕捉した name→leaf impl レジストリを handle の side-channel に退避する(IR 本体・fingerprint・
1089
+ // JSON には載らない = C4)。bindBehaviors が完全性ゲート後にここから自動 dispatch する。
1090
+ return mintCompiled(ir, registry);
761
1091
  }
762
1092
  // ── effect 導出(consumer の CQRS 層のための共有ヘルパ — authoring は effect 非依存)────
763
1093
  /**
@@ -767,7 +1097,7 @@ export function compileBehaviors(cls, opts = {}) {
767
1097
  export function referencedComponents(component) {
768
1098
  const out = [];
769
1099
  for (const n of component.body) {
770
- const name = "map" in n ? n.map.component : "cond" in n ? null : n.component;
1100
+ const name = "fanout" in n ? n.fanout.component : "map" in n ? n.map.component : "cond" in n ? null : n.component;
771
1101
  if (name !== null && !out.includes(name))
772
1102
  out.push(name);
773
1103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"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"}