@sharpee/story-loader 3.0.0 → 3.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAY,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAQL,UAAU,EACX,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,uEAAuE;IACvE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5C,8EAA8E;IAC9E,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,qBAAa,SAAS;IAkBlB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAjBtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAE/D;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;gBAG1D,EAAE,EAAE,OAAO,EACM,GAAG,EAAE,gBAAgB,EACtC,IAAI,CAAC,EAAE,MAAM;IAgBf,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO;IAyC3D,OAAO,CAAC,aAAa;IA2ErB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAqC3B,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO;IA0CpD,yDAAyD;IACzD,OAAO,CAAC,cAAc;IAMtB,iFAAiF;IACjF,OAAO,CAAC,SAAS;IAOjB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,EAAE;IAOnD,0DAA0D;IAC1D,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAQrD,OAAO,CAAC,SAAS;IA4BjB,+EAA+E;IAC/E,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,cAAc;IAMtB,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAShB;;;;OAIG;IACH,OAAO,CAAC,UAAU;CAQnB"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAY,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAQL,UAAU,EACX,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,uEAAuE;IACvE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5C,8EAA8E;IAC9E,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,qBAAa,SAAS;IAkBlB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAjBtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAE/D;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;gBAG1D,EAAE,EAAE,OAAO,EACM,GAAG,EAAE,gBAAgB,EACtC,IAAI,CAAC,EAAE,MAAM;IAgBf,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO;IAyC3D,OAAO,CAAC,aAAa;IA2ErB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAuBnB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAqC3B,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO;IA0CpD,yDAAyD;IACzD,OAAO,CAAC,cAAc;IAMtB,iFAAiF;IACjF,OAAO,CAAC,SAAS;IAOjB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,EAAE;IAOnD,0DAA0D;IAC1D,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAQrD,OAAO,CAAC,SAAS;IA4BjB,+EAA+E;IAC/E,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,cAAc;IAMtB,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAShB;;;;OAIG;IACH,OAAO,CAAC,UAAU;CAQnB"}
package/evaluator.js CHANGED
@@ -161,8 +161,9 @@ class Evaluator {
161
161
  const entity = ctx.world.getEntity(subject);
162
162
  if (entity) {
163
163
  if (symbol === 'dark') {
164
- const room = entity.get(world_model_1.TraitType.ROOM);
165
- return room?.isDark === true;
164
+ // Effective darkness is owned by VisibilityBehavior — it also accounts
165
+ // for a carried lit light source — never the raw `requiresLight` field.
166
+ return world_model_1.VisibilityBehavior.isDark(entity, ctx.world);
166
167
  }
167
168
  const irId = this.ids.irIdOf(subject);
168
169
  if (irId !== undefined) {
package/evaluator.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/evaluator.ts"],"names":[],"mappings":"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"}
package/loader.d.ts CHANGED
@@ -25,7 +25,7 @@ import type { Phrase } from '@sharpee/if-domain';
25
25
  import type { ISemanticEvent } from '@sharpee/core';
26
26
  import type { LanguageProvider, PhraseProducer, StoryEndingKind } from '@sharpee/if-domain';
27
27
  import type { CustomVocabulary, Story, StoryConfig } from '@sharpee/engine';
28
- import { CapabilityBehavior, IFEntity, ITrait, WorldModel } from '@sharpee/world-model';
28
+ import { CapabilityBehavior, IFEntity, IParsedCommand, ITrait, WorldModel } from '@sharpee/world-model';
29
29
  import { ChordRuntime } from './runtime';
30
30
  /**
31
31
  * Marker trait for entities carrying loader-compiled `detail` providers
@@ -92,6 +92,25 @@ export declare class ChordStory implements Story {
92
92
  private readonly evaluator;
93
93
  /** IR entity ID → world entity ID (populated by initializeWorld/createPlayer). */
94
94
  private readonly worldIds;
95
+ /**
96
+ * Trait-config entity references awaiting world-id resolution (ADR-230
97
+ * D3c / Phase 9a): `cuttable with tool the knife`, `lockable with key the
98
+ * brass key` may name entities built AFTER their owner, so trait fields
99
+ * are stamped once every entity exists — config values are NEVER left as
100
+ * raw display-name strings.
101
+ */
102
+ private readonly pendingEntityRefs;
103
+ /** Resolve a trait-config entity NAME to an IR entity and queue the
104
+ * world-id application (throws LoadError when nothing matches). */
105
+ private entityRefFor;
106
+ /**
107
+ * Deadly exits (ADR-227): world room id → DIRECTION → derived
108
+ * cause/messageId (both the phrase key). Lowered in `onEngineReady` to ONE
109
+ * pre-validate command transformer redirecting to the platform's generic
110
+ * deadly-death action — a deadly exit need not exist in the room graph, so
111
+ * no destination-resolved interceptor could ever fire.
112
+ */
113
+ private readonly deadlyExits;
95
114
  /** World entity ID → IR entity ID (state lookups in the evaluator). */
96
115
  private readonly irIds;
97
116
  private world;
@@ -135,7 +154,15 @@ export declare class ChordStory implements Story {
135
154
  register(plugin: unknown): void;
136
155
  };
137
156
  registerSlotEntry?(entry: ChordSlotEntry): void;
157
+ registerParsedCommandTransformer?(t: (parsed: IParsedCommand, world: WorldModel) => IParsedCommand): void;
138
158
  }): void;
159
+ /**
160
+ * The deadly-exit command transformer (ADR-227). Redirects `going
161
+ * <deadly-direction>` from a room with declared deadly exits to
162
+ * `DEADLY_ROOM_DEATH_ACTION_ID`, threading the phrase-derived
163
+ * cause/messageId through extras. Pass-through otherwise.
164
+ */
165
+ private buildDeadlyExitTransformer;
139
166
  /**
140
167
  * Z3 `present` channel → ADR-212 slot entries. One `registerSlotEntry`
141
168
  * call per authoring entity: `slotKey: 'here'`, owner = the entity,
@@ -163,6 +190,23 @@ export declare class ChordStory implements Story {
163
190
  */
164
191
  triggerEnding(world: WorldModel, ending: StoryEndingKind, messageId?: string): ISemanticEvent;
165
192
  private buildEntity;
193
+ /**
194
+ * Resolve trait-config entity references (`with tool X`, `with key X`)
195
+ * to world entity ids (ADR-230 D3c / Phase 9a) — runs once, after every
196
+ * entity is built.
197
+ */
198
+ private resolvePendingEntityRefs;
199
+ /**
200
+ * ADR-230 D3c load-time check (PIN 3, dual-surface re-pin, 2026-07-17):
201
+ * every cuttable entity must register exactly ONE cut implementation —
202
+ * an `on cutting it` clause (entity- or trait-level, loads as an
203
+ * ADR-228 interceptor) or an ADR-090 capability behavior for
204
+ * `if.action.cutting` (TS/hatch surface). Zero implementations would
205
+ * silently no-op at runtime; two would double-fire (ADR-228 D6 spirit).
206
+ * Chord surfaces are counted from the IR (precise per entity); the
207
+ * capability surface from the live world.
208
+ */
209
+ private checkCuttableImplementations;
166
210
  private applyTraitAdjectives;
167
211
  /**
168
212
  * Initial values for a `define trait` instance: declared `starts`
package/loader.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/loader.ts"],"names":[],"mappings":"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"}
package/loader.js CHANGED
@@ -84,6 +84,32 @@ class ChordStory {
84
84
  evaluator;
85
85
  /** IR entity ID → world entity ID (populated by initializeWorld/createPlayer). */
86
86
  worldIds = new Map();
87
+ /**
88
+ * Trait-config entity references awaiting world-id resolution (ADR-230
89
+ * D3c / Phase 9a): `cuttable with tool the knife`, `lockable with key the
90
+ * brass key` may name entities built AFTER their owner, so trait fields
91
+ * are stamped once every entity exists — config values are NEVER left as
92
+ * raw display-name strings.
93
+ */
94
+ pendingEntityRefs = [];
95
+ /** Resolve a trait-config entity NAME to an IR entity and queue the
96
+ * world-id application (throws LoadError when nothing matches). */
97
+ entityRefFor(name, configKey, owner, span, apply) {
98
+ const lower = name.toLowerCase();
99
+ const target = this.ir.entities.find((e) => e.name.toLowerCase() === lower || e.aka.includes(lower));
100
+ if (!target) {
101
+ throw new errors_1.LoadError(`\`${name}\` (config \`${configKey}\`) names no entity.`, span);
102
+ }
103
+ return { irRefId: target.id, ownerName: owner.name, span, apply };
104
+ }
105
+ /**
106
+ * Deadly exits (ADR-227): world room id → DIRECTION → derived
107
+ * cause/messageId (both the phrase key). Lowered in `onEngineReady` to ONE
108
+ * pre-validate command transformer redirecting to the platform's generic
109
+ * deadly-death action — a deadly exit need not exist in the room graph, so
110
+ * no destination-resolved interceptor could ever fire.
111
+ */
112
+ deadlyExits = new Map();
87
113
  /** World entity ID → IR entity ID (state lookups in the evaluator). */
88
114
  irIds = new Map();
89
115
  world = null;
@@ -198,6 +224,27 @@ class ChordStory {
198
224
  world_model_1.RoomBehavior.blockExit(entity, toDirection(blocked.direction, irEntity), this.phraseText(blocked.phraseKey));
199
225
  }
200
226
  }
227
+ // ADR-227: `deadly: <phrase>` — the no-escape room marker lowers to
228
+ // DeadlyRoomTrait (safeVerbs default look/examine); the ENGINE
229
+ // auto-registers the deadly-room transformer, so no runtime code here.
230
+ // Cause and messageId both derive from the phrase key.
231
+ if (irEntity.deadly) {
232
+ entity.add(new world_model_1.DeadlyRoomTrait({
233
+ cause: irEntity.deadly.phraseKey,
234
+ messageId: irEntity.deadly.phraseKey,
235
+ }));
236
+ }
237
+ // ADR-227: `<direction> is deadly: <phrase>` — collected here, lowered
238
+ // to one command transformer in onEngineReady.
239
+ for (const deadly of irEntity.deadlyExits) {
240
+ if (deadly.condition !== null) {
241
+ throw new errors_1.LoadError('`is deadly while <condition>` is not wired yet — the conditional deadly exit is post-scope (mirror: role-bound trait clauses). Use an unconditional `is deadly:` or an `on going` clause with `kill the player when <condition>`.', deadly.span);
242
+ }
243
+ const direction = toDirection(deadly.direction, irEntity);
244
+ const byRoom = this.deadlyExits.get(entity.id) ?? new Map();
245
+ byRoom.set(String(direction).toUpperCase(), { cause: deadly.phraseKey, messageId: deadly.phraseKey });
246
+ this.deadlyExits.set(entity.id, byRoom);
247
+ }
201
248
  if (irEntity.states.length > 0) {
202
249
  world.setStateValue(state_keys_1.CHORD_STATE_PREFIX + irEntity.id, irEntity.states[0]);
203
250
  }
@@ -223,9 +270,15 @@ class ChordStory {
223
270
  // Z3b: gated `detail` blocks — shipped trait fields where the condition
224
271
  // matches them, a loader-owned state-clause provider for everything else.
225
272
  this.compileDetailChannels(world);
273
+ // ADR-230 D3c / Phase 9a: stamp trait-config entity references (tools,
274
+ // keys) now that every entity exists (forward references resolve here).
275
+ this.resolvePendingEntityRefs();
226
276
  // Bind the turn-by-turn runtime: rules, on-clause interceptors,
227
277
  // derived-property chains (all per-world, keyed — ADR-207/208).
228
278
  this.runtime.bind(world);
279
+ // ADR-230 D3c (PIN 3, dual-surface re-pin): an unimplemented cuttable
280
+ // is an authoring error at load, never a silent runtime no-op.
281
+ this.checkCuttableImplementations(world);
229
282
  this.worldBuilt = true;
230
283
  // Engine order (GameEngine.setStory): createPlayer ran before world
231
284
  // content existed — the player can be placed and equipped only now.
@@ -276,6 +329,10 @@ class ChordStory {
276
329
  if (startIr) {
277
330
  world.moveEntity(player.id, this.requireWorldId(startIr, irPlayer ?? undefined));
278
331
  }
332
+ // Carried items: into inventory (ADR-230 Phase 6 — `carries the X`).
333
+ for (const carriedIrId of irPlayer?.carries ?? []) {
334
+ world.moveEntity(this.requireWorldId(carriedIrId, irPlayer ?? undefined), player.id);
335
+ }
279
336
  // Worn items: into inventory, marked worn.
280
337
  for (const wornIrId of irPlayer?.wears ?? []) {
281
338
  const wornId = this.requireWorldId(wornIrId, irPlayer ?? undefined);
@@ -330,11 +387,62 @@ class ChordStory {
330
387
  for (const daemon of daemons)
331
388
  scheduler.registerDaemon(daemon);
332
389
  }
390
+ // ADR-227: `<direction> is deadly:` — one pre-validate transformer over
391
+ // the collected deadly-exit map, redirecting a matching going command to
392
+ // the platform's generic extras-driven deadly-death action (the same
393
+ // seam stdlib's own deadly-room transformer uses).
394
+ if (this.deadlyExits.size > 0 && engine.registerParsedCommandTransformer) {
395
+ engine.registerParsedCommandTransformer(this.buildDeadlyExitTransformer());
396
+ }
333
397
  // Z3 (ADR-212 §5): every `phrase present:` block compiles to ONE
334
398
  // declarative slot entry — no synthesized closures; the platform's
335
399
  // built-in contributor evaluates them.
336
400
  this.registerPresentEntries(engine);
337
401
  }
402
+ /**
403
+ * The deadly-exit command transformer (ADR-227). Redirects `going
404
+ * <deadly-direction>` from a room with declared deadly exits to
405
+ * `DEADLY_ROOM_DEATH_ACTION_ID`, threading the phrase-derived
406
+ * cause/messageId through extras. Pass-through otherwise.
407
+ */
408
+ buildDeadlyExitTransformer() {
409
+ const deadlyExits = this.deadlyExits;
410
+ // Single-letter direction abbreviations some parsers surface in extras.
411
+ const ABBREV = {
412
+ N: 'NORTH', S: 'SOUTH', E: 'EAST', W: 'WEST',
413
+ NE: 'NORTHEAST', NW: 'NORTHWEST', SE: 'SOUTHEAST', SW: 'SOUTHWEST',
414
+ U: 'UP', D: 'DOWN',
415
+ };
416
+ return (parsed, world) => {
417
+ const actionId = parsed.action?.toLowerCase() ?? '';
418
+ if (actionId !== 'if.action.going' && actionId !== 'going')
419
+ return parsed;
420
+ const player = world.getPlayer();
421
+ if (!player)
422
+ return parsed;
423
+ const roomId = world.getLocation(player.id);
424
+ if (!roomId)
425
+ return parsed;
426
+ const byRoom = deadlyExits.get(roomId);
427
+ if (!byRoom)
428
+ return parsed;
429
+ const raw = String(parsed.extras?.direction ?? '').toUpperCase();
430
+ const direction = ABBREV[raw] ?? raw;
431
+ const hit = byRoom.get(direction);
432
+ if (!hit)
433
+ return parsed;
434
+ return {
435
+ ...parsed,
436
+ action: stdlib_1.DEADLY_ROOM_DEATH_ACTION_ID,
437
+ extras: {
438
+ ...parsed.extras,
439
+ [stdlib_1.DEADLY_ROOM_CAUSE_KEY]: hit.cause,
440
+ [stdlib_1.DEADLY_ROOM_MESSAGE_KEY]: hit.messageId,
441
+ originalAction: parsed.action,
442
+ },
443
+ };
444
+ };
445
+ }
338
446
  /**
339
447
  * Z3 `present` channel → ADR-212 slot entries. One `registerSlotEntry`
340
448
  * call per authoring entity: `slotKey: 'here'`, owner = the entity,
@@ -469,8 +577,9 @@ class ChordStory {
469
577
  builder.aliases(...irEntity.aka);
470
578
  if (irEntity.traits.some((t) => t.name === 'openable'))
471
579
  builder.openable();
472
- if (irEntity.traits.some((t) => t.name === 'lockable'))
473
- builder.lockable();
580
+ // NOTE: no `builder.lockable()` pre-add applyTraitAdjectives owns
581
+ // the lockable composition so `with key X` config is never dropped
582
+ // (ADR-230 Phase 9a: the keyless pre-add made the keyed re-add skip).
474
583
  entity = builder.build();
475
584
  this.applyContainerConfig(entity, irEntity.kinds[0]);
476
585
  break;
@@ -513,6 +622,70 @@ class ChordStory {
513
622
  this.irIds.set(entity.id, irEntity.id);
514
623
  return entity;
515
624
  }
625
+ /**
626
+ * Resolve trait-config entity references (`with tool X`, `with key X`)
627
+ * to world entity ids (ADR-230 D3c / Phase 9a) — runs once, after every
628
+ * entity is built.
629
+ */
630
+ resolvePendingEntityRefs() {
631
+ for (const pending of this.pendingEntityRefs) {
632
+ const worldId = this.worldIds.get(pending.irRefId);
633
+ if (!worldId) {
634
+ throw new errors_1.LoadError(`\`${pending.ownerName}\`: a trait-config entity reference was never built.`, pending.span);
635
+ }
636
+ pending.apply(worldId);
637
+ }
638
+ this.pendingEntityRefs.length = 0;
639
+ }
640
+ /**
641
+ * ADR-230 D3c load-time check (PIN 3, dual-surface re-pin, 2026-07-17):
642
+ * every cuttable entity must register exactly ONE cut implementation —
643
+ * an `on cutting it` clause (entity- or trait-level, loads as an
644
+ * ADR-228 interceptor) or an ADR-090 capability behavior for
645
+ * `if.action.cutting` (TS/hatch surface). Zero implementations would
646
+ * silently no-op at runtime; two would double-fire (ADR-228 D6 spirit).
647
+ * Chord surfaces are counted from the IR (precise per entity); the
648
+ * capability surface from the live world.
649
+ */
650
+ checkCuttableImplementations(world) {
651
+ const toolGatedGerunds = [
652
+ { adjective: 'cuttable', gerund: 'cutting', actionId: 'if.action.cutting' },
653
+ { adjective: 'diggable', gerund: 'digging', actionId: 'if.action.digging' }, // ADR-230 Phase 6
654
+ ];
655
+ for (const { adjective, gerund, actionId } of toolGatedGerunds) {
656
+ for (const irEntity of this.ir.entities) {
657
+ if (!irEntity.traits.some((t) => t.name === adjective))
658
+ continue;
659
+ const worldId = this.worldIds.get(irEntity.id);
660
+ const entity = worldId ? world.getEntity(worldId) : undefined;
661
+ if (!entity)
662
+ continue;
663
+ let surfaces = 0;
664
+ // Entity-level `on <gerund> it` clause.
665
+ if (irEntity.onClauses.some((c) => c.clauseKind === 'on' && c.action === gerund && c.binding !== 'every-turn')) {
666
+ surfaces++;
667
+ }
668
+ // Composed `define trait` with an `on <gerund> it` clause.
669
+ for (const comp of irEntity.traits) {
670
+ const def = this.ir.traits.find((t) => t.name === comp.name);
671
+ if (def?.onClauses.some((c) => c.clauseKind === 'on' && c.action === gerund && c.binding !== 'every-turn')) {
672
+ surfaces++;
673
+ }
674
+ }
675
+ // ADR-090 capability behavior (TS/hatch surface).
676
+ const capabilityTrait = (0, world_model_1.findTraitWithCapability)(entity, actionId);
677
+ if (capabilityTrait && world.getBehaviorForCapability(capabilityTrait, actionId)) {
678
+ surfaces++;
679
+ }
680
+ if (surfaces === 0) {
681
+ throw new errors_1.LoadError(`\`${irEntity.name}\` is ${adjective} but registers no ${gerund} implementation — add \`on ${gerund} it:\` (or compose a trait that has one).`, irEntity.span);
682
+ }
683
+ if (surfaces > 1) {
684
+ throw new errors_1.LoadError(`\`${irEntity.name}\` has ${surfaces} ${gerund} implementations — a ${adjective} entity registers exactly one (one \`on ${gerund} it\` clause or one capability behavior).`, irEntity.span);
685
+ }
686
+ }
687
+ }
688
+ }
516
689
  applyTraitAdjectives(entity, irEntity, kind) {
517
690
  for (const trait of irEntity.traits) {
518
691
  if (trait.condition !== null) {
@@ -545,16 +718,54 @@ class ChordStory {
545
718
  if (!entity.has(world_model_1.TraitType.OPENABLE))
546
719
  entity.add(new world_model_1.OpenableTrait());
547
720
  break;
548
- case 'lockable':
549
- if (!entity.has(world_model_1.TraitType.LOCKABLE))
550
- entity.add(new world_model_1.LockableTrait({ keyId: configValue(trait, 'key') }));
721
+ case 'lockable': {
722
+ // ADR-230 Phase 9a: `with key X` resolves name → world id through
723
+ // the shared pending mechanism (forward refs legal) — the raw
724
+ // display-name string never reaches LockableTrait.keyId.
725
+ if (entity.has(world_model_1.TraitType.LOCKABLE))
726
+ break;
727
+ const lockable = new world_model_1.LockableTrait({});
728
+ const keyName = configValue(trait, 'key');
729
+ if (keyName !== undefined) {
730
+ this.pendingEntityRefs.push(this.entityRefFor(keyName, 'key', irEntity, trait.span, (worldId) => {
731
+ lockable.keyId = worldId;
732
+ }));
733
+ }
734
+ entity.add(lockable);
735
+ break;
736
+ }
737
+ case 'cuttable':
738
+ case 'diggable': {
739
+ // ADR-230 D3c / Phase 6. Tool names resolve name → IR entity here
740
+ // and IR → world id after every entity is built (forward refs are
741
+ // legal) — do NOT copy the lockable raw-string config bug.
742
+ const traitType = trait.name === 'cuttable' ? world_model_1.TraitType.CUTTABLE : world_model_1.TraitType.DIGGABLE;
743
+ if (entity.has(traitType))
744
+ break;
745
+ const toolGated = trait.name === 'cuttable' ? new world_model_1.CuttableTrait() : new world_model_1.DiggableTrait();
746
+ const toolName = configValue(trait, 'tool');
747
+ if (toolName !== undefined) {
748
+ this.pendingEntityRefs.push(this.entityRefFor(toolName, 'tool', irEntity, trait.span, (worldId) => {
749
+ toolGated.toolId = worldId;
750
+ }));
751
+ }
752
+ entity.add(toolGated);
551
753
  break;
754
+ }
552
755
  case 'switchable':
553
756
  entity.add(new world_model_1.SwitchableTrait());
554
757
  break;
555
758
  case 'edible':
556
759
  entity.add(new world_model_1.EdibleTrait());
557
760
  break;
761
+ case 'enterable': // ADR-218 §1a (ratchet F1) — default config, preposition `in`
762
+ if (!entity.has(world_model_1.TraitType.ENTERABLE))
763
+ entity.add(new world_model_1.EnterableTrait());
764
+ break;
765
+ case 'climbable': // ADR-218 §1a (ratchet F2) — default config
766
+ if (!entity.has(world_model_1.TraitType.CLIMBABLE))
767
+ entity.add(new world_model_1.ClimbableTrait());
768
+ break;
558
769
  case 'light-source':
559
770
  entity.add(new world_model_1.LightSourceTrait());
560
771
  break;