holonovel 2026.9.30 → 2026.10.9

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.
@@ -269,6 +269,15 @@ export function computeDerived(build, rules) {
269
269
  for (const [dk, dv] of Object.entries(cd.defenseBonuses || {})) {
270
270
  classBonus[dk] = (classBonus[dk] ?? 0) + dv;
271
271
  }
272
+ // REQ-399b — expose the first class's creation data so the model can
273
+ // express class-based derived statistics (hit points, damage threshold,
274
+ // metacurrency) without the host hard-coding a ruleset's formula. Only
275
+ // the first class that declares each value contributes; a later class
276
+ // in the build order must not overwrite `starting_hp`/`hit_die`.
277
+ if (classBonus.starting_hp === undefined && typeof cd.startingHp === "number")
278
+ classBonus.starting_hp = cd.startingHp;
279
+ if (classBonus.hit_die === undefined && typeof cd.hitDie === "number")
280
+ classBonus.hit_die = cd.hitDie;
272
281
  granted.add(key);
273
282
  }
274
283
  }
@@ -1 +1 @@
1
- {"version":3,"file":"character-creation.js","sourceRoot":"","sources":["../../src/core/character-creation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"character-creation.js","sourceRoot":"","sources":["../../src/core/character-creation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,15 @@
1
1
  import { WorldModel } from "../world/model.js";
2
+ export interface BuildFingerprint {
3
+ specVersion: string;
4
+ specRepoUrl: string;
5
+ specHash: string;
6
+ sourceHash: string;
7
+ rulesetHash: string;
8
+ holonovelVersion: string;
9
+ buildTimestamp: string;
10
+ lastSpecReview?: string;
11
+ lastPatternBuffer?: string;
12
+ }
2
13
  export type Badge = "player" | "game_master" | "observer" | "none";
3
14
  export declare function normalizeBadge(raw: unknown): Badge;
4
15
  export declare function migrateNovelData(data: any): any;
@@ -247,7 +258,6 @@ export interface GMContext {
247
258
  export interface CodexEntry {
248
259
  id: string;
249
260
  kind: string;
250
- visibility: "library" | "shared" | "private";
251
261
  name: string;
252
262
  content: Record<string, any>;
253
263
  description?: string;
@@ -533,22 +543,18 @@ export interface RosterEntity extends NovelEntity {
533
543
  identity: import("./identity.js").IdentityState;
534
544
  }
535
545
  export declare function worldToJSON(world: WorldModel): any;
546
+ export declare function synthesisStaleCutoff(): number;
547
+ export declare function isStaleItem(item: any, manifest: any, cutoff: number): boolean;
536
548
  export declare class StateManager {
537
549
  novels: Map<string, NovelState>;
538
550
  roster: Map<string, RosterEntity>;
539
551
  semanticIndex: import("./semantic.js").SemanticIndex | null;
540
552
  knowledgeGraph: import("./graph.js").KnowledgeGraph | null;
541
553
  activeNovelId: string | null;
542
- buildFingerprint: {
543
- specVersion: string;
544
- specRepoUrl: string;
545
- specHash: string;
546
- sourceHash: string;
547
- rulesetHash: string;
548
- buildTimestamp: string;
549
- lastSpecReview?: string;
550
- lastPatternBuffer?: string;
551
- };
554
+ buildFingerprint: BuildFingerprint;
555
+ storedFingerprint: BuildFingerprint | null;
556
+ buildDrift: string[];
557
+ specHashCurrent: boolean;
552
558
  enriched: boolean;
553
559
  wisdomManifest: any;
554
560
  maxLoreTokens: number | null;
@@ -557,14 +563,14 @@ export declare class StateManager {
557
563
  narrative_tag?: string;
558
564
  }>;
559
565
  codex: Map<string, CodexEntry>;
560
- readonly dataFormat = "6748f915c39be3f51f0e175e69ec3b5bfedd7fe4ba38a0471e0c4f09d5a407de";
566
+ readonly dataFormat = "5ebb09459dde7b0b337e21900ac0c1a0b606a552494fe345663ae794420bafa8";
561
567
  staleData: Map<string, string>;
562
568
  corruptData: Map<string, string>;
563
569
  compressionMismatch: Map<string, string>;
564
570
  private restoredThisSession;
565
- private npcCounter;
566
571
  private stateDir;
567
572
  constructor(stateDir: string);
573
+ loadBuildFingerprint(current: BuildFingerprint): void;
568
574
  get activeNovel(): NovelState | undefined;
569
575
  requireGM(badge: Badge): void;
570
576
  requirePlayer(badge: Badge): void;
@@ -229,6 +229,18 @@ function worldFromJSON(data) {
229
229
  }
230
230
  return world;
231
231
  }
232
+ // ── Synthesis staleness (REQ-160) ──────────────────────────────────
233
+ // Single source for the stale cutoff and per-item predicate, shared by
234
+ // `getWisdomHealth` (the spec_health count) and the `manage_synthesis list`
235
+ // flag so the two cannot drift.
236
+ export function synthesisStaleCutoff() {
237
+ const days = parseInt(process.env.TTRPG_SYNTHESIS_STALE_DAYS ?? "90", 10);
238
+ return Date.now() - days * 86400_000;
239
+ }
240
+ export function isStaleItem(item, manifest, cutoff) {
241
+ const collected = item?.collected_at ?? manifest?.collected_at;
242
+ return !!(collected && new Date(collected).getTime() < cutoff);
243
+ }
232
244
  // ── State Manager ──────────────────────────────────────────────────
233
245
  export class StateManager {
234
246
  novels = new Map();
@@ -239,6 +251,11 @@ export class StateManager {
239
251
  knowledgeGraph = null;
240
252
  activeNovelId = null;
241
253
  buildFingerprint;
254
+ // REQ-065a — the fingerprint persisted at first start, retained for startup
255
+ // drift comparison; REQ-187a — the stored spec hash read at runtime.
256
+ storedFingerprint = null;
257
+ buildDrift = [];
258
+ specHashCurrent = true;
242
259
  enriched = false;
243
260
  wisdomManifest = null;
244
261
  maxLoreTokens = null;
@@ -260,7 +277,6 @@ export class StateManager {
260
277
  // `.bak.1`, so a good backup is never overwritten and corruption is never
261
278
  // propagated into the rotated chain.
262
279
  restoredThisSession = new Set();
263
- npcCounter = 0;
264
280
  stateDir;
265
281
  constructor(stateDir) {
266
282
  this.stateDir = stateDir;
@@ -272,6 +288,7 @@ export class StateManager {
272
288
  specHash: "unknown",
273
289
  sourceHash: computeSourceHash(),
274
290
  rulesetHash: "ruleset-free",
291
+ holonovelVersion: SPEC_VERSION,
275
292
  buildTimestamp: new Date().toISOString(),
276
293
  };
277
294
  const budgetRaw = process.env.TTRPG_MAX_LORE_TOKENS;
@@ -281,6 +298,45 @@ export class StateManager {
281
298
  this.maxLoreTokens = budget;
282
299
  }
283
300
  }
301
+ // REQ-065a/REQ-187a — persist the build fingerprint at first start, then
302
+ // reload it on subsequent starts and compare field-by-field (REQ-065b). A
303
+ // fresh state directory writes the fingerprint and reports no drift; the
304
+ // stored file is never overwritten, so an edited embedded spec surfaces as
305
+ // [spec-drift] on the next start.
306
+ loadBuildFingerprint(current) {
307
+ const p = path.join(this.stateDir, "build-fingerprint.json");
308
+ if (!fs.existsSync(p)) {
309
+ try {
310
+ fs.writeFileSync(p, JSON.stringify(current, null, 2) + "\n", "utf-8");
311
+ }
312
+ catch { /* state dir may be read-only; drift detection is diagnostic */ }
313
+ this.storedFingerprint = current;
314
+ this.specHashCurrent = true;
315
+ return;
316
+ }
317
+ let stored;
318
+ try {
319
+ stored = JSON.parse(fs.readFileSync(p, "utf-8"));
320
+ }
321
+ catch {
322
+ // Unreadable fingerprint: treat as a fresh baseline rather than fail startup.
323
+ this.storedFingerprint = current;
324
+ this.specHashCurrent = true;
325
+ return;
326
+ }
327
+ this.storedFingerprint = stored;
328
+ this.specHashCurrent = stored.specHash === current.specHash;
329
+ const drift = [];
330
+ if (stored.specVersion !== current.specVersion)
331
+ drift.push(`[spec-version-drift] stored=${stored.specVersion} current=${current.specVersion}`);
332
+ if (stored.specHash !== current.specHash)
333
+ drift.push(`[spec-drift] stored=${stored.specHash} current=${current.specHash}`);
334
+ if (stored.rulesetHash !== current.rulesetHash)
335
+ drift.push(`[ruleset-drift] stored=${stored.rulesetHash} current=${current.rulesetHash}`);
336
+ if (stored.holonovelVersion !== current.holonovelVersion)
337
+ drift.push(`[holonovel-drift] stored=${stored.holonovelVersion} current=${current.holonovelVersion}`);
338
+ this.buildDrift = drift;
339
+ }
284
340
  get activeNovel() {
285
341
  return this.activeNovelId ? this.novels.get(this.activeNovelId) : undefined;
286
342
  }
@@ -650,6 +706,9 @@ export class StateManager {
650
706
  if (fileSlug === key)
651
707
  canonicalKeys.add(key);
652
708
  }
709
+ // REQ-238 / TTRPG_NOVEL_RETENTION_DAYS — purge expired .trash entries at
710
+ // startup. A retention of 0 (the default) disables purging.
711
+ this.cleanupExpiredTrash();
653
712
  }
654
713
  loadNovelFromData(data) {
655
714
  // REQ-423 — a Novel written under a prior (or absent) data-format
@@ -1251,17 +1310,30 @@ export class StateManager {
1251
1310
  activated_count: 0,
1252
1311
  fingerprint: null,
1253
1312
  };
1254
- const staleDays = parseInt(process.env.TTRPG_SYNTHESIS_STALE_DAYS ?? "90", 10);
1255
- const cutoff = Date.now() - staleDays * 86400_000;
1313
+ const cutoff = synthesisStaleCutoff();
1256
1314
  let staleCount = 0;
1257
1315
  let activatedCount = 0;
1258
1316
  const moduleCounts = {};
1259
1317
  const modules = ["voice_examples", "briefing_order", "lore_templates", "action_patterns", "supplementary_guidance", "adventure_advice", "narrative_voices"];
1260
1318
  for (const mod of modules) {
1261
- const items = (manifest[mod] ?? []);
1319
+ // `briefing_order` is a single object and `adventure_advice` nests three
1320
+ // arrays; the remaining modules are arrays.
1321
+ let items;
1322
+ if (mod === "briefing_order")
1323
+ items = manifest.briefing_order ? [manifest.briefing_order] : [];
1324
+ else if (mod === "adventure_advice") {
1325
+ const adv = manifest.adventure_advice ?? {};
1326
+ items = [...(adv.templates ?? []), ...(adv.scenario_starters ?? []), ...(adv.table_expansions ?? [])];
1327
+ }
1328
+ else {
1329
+ const raw = manifest[mod];
1330
+ items = Array.isArray(raw) ? raw : [];
1331
+ }
1262
1332
  moduleCounts[mod] = items.length;
1263
1333
  for (const item of items) {
1264
- if (item.collected_at && new Date(item.collected_at).getTime() < cutoff)
1334
+ // REQ-160 — an item past TTRPG_SYNTHESIS_STALE_DAYS is stale. Items
1335
+ // without their own timestamp inherit the manifest's collected_at.
1336
+ if (isStaleItem(item, manifest, cutoff))
1265
1337
  staleCount++;
1266
1338
  if (item.activated)
1267
1339
  activatedCount++;