Yusti server: http://localhost:3010/ {"ts":"2026-09-17T02:47:37.888Z","level":"warn","trace_id":"ppbwylxx","msg":"레거시 의상 텍스트 폴백(plot_base): 서리아","ctx":{"at":"wardrobe.legacy_outfit_fallback","site":"plot_base","who":"서리아","stats":{"plot_base":1}},"err":{"name":"Error","message":"레거시 의상 텍스트 폴백(plot_base): 서리아","stack":"Error: 레거시 의상 텍스트 폴백(plot_base): 서리아\n at noteLegacyOutfitFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1291:12)\n at seedItemsForCharacter (/Users/inhohur/work/yusti-review/lib/wardrobe.js:775:8)\n at seedWardrobeForScene (/Users/inhohur/work/yusti-review/lib/wardrobe.js:810:19)\n at Object.ensureSceneWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:852:10)\n at buildIntroSceneState (/Users/inhohur/work/yusti-review/lib/intro-snapshot.js:45:12)\n at Object.imprintIntroSnapshot (/Users/inhohur/work/yusti-review/lib/intro-snapshot.js:57:16)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async seedPlotIntro (/Users/inhohur/work/yusti-review/lib/db-client.js:6047:17)\n at async runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:415:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)"}} {"ts":"2026-09-17T02:47:37.891Z","level":"warn","trace_id":"ppbwylxx","msg":"레거시 의상 텍스트 폴백(legacy_scene): 5c5003c1-4b5e-4662-9353-e4da426877d8","ctx":{"at":"wardrobe.legacy_outfit_fallback","site":"legacy_scene","who":"5c5003c1-4b5e-4662-9353-e4da426877d8","stats":{"plot_base":1,"legacy_scene":1}},"err":{"name":"Error","message":"레거시 의상 텍스트 폴백(legacy_scene): 5c5003c1-4b5e-4662-9353-e4da426877d8","stack":"Error: 레거시 의상 텍스트 폴백(legacy_scene): 5c5003c1-4b5e-4662-9353-e4da426877d8\n at noteLegacyOutfitFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1291:12)\n at seedItemsForCharacter (/Users/inhohur/work/yusti-review/lib/wardrobe.js:779:52)\n at seedWardrobeForScene (/Users/inhohur/work/yusti-review/lib/wardrobe.js:810:19)\n at Object.ensureSceneWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:852:10)\n at buildIntroSceneState (/Users/inhohur/work/yusti-review/lib/intro-snapshot.js:45:12)\n at Object.imprintIntroSnapshot (/Users/inhohur/work/yusti-review/lib/intro-snapshot.js:57:16)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async seedPlotIntro (/Users/inhohur/work/yusti-review/lib/db-client.js:6047:17)\n at async runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:415:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)"}} {"ts":"2026-09-17T02:47:37.891Z","level":"warn","trace_id":"ppbwylxx","msg":"레거시 의상 텍스트 폴백(plot_base): 한가을","ctx":{"at":"wardrobe.legacy_outfit_fallback","site":"plot_base","who":"한가을","stats":{"plot_base":2,"legacy_scene":1}},"err":{"name":"Error","message":"레거시 의상 텍스트 폴백(plot_base): 한가을","stack":"Error: 레거시 의상 텍스트 폴백(plot_base): 한가을\n at noteLegacyOutfitFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1291:12)\n at seedItemsForCharacter (/Users/inhohur/work/yusti-review/lib/wardrobe.js:775:8)\n at seedWardrobeForScene (/Users/inhohur/work/yusti-review/lib/wardrobe.js:810:19)\n at Object.ensureSceneWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:852:10)\n at buildIntroSceneState (/Users/inhohur/work/yusti-review/lib/intro-snapshot.js:45:12)\n at Object.imprintIntroSnapshot (/Users/inhohur/work/yusti-review/lib/intro-snapshot.js:57:16)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async seedPlotIntro (/Users/inhohur/work/yusti-review/lib/db-client.js:6047:17)\n at async runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:415:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)"}} {"ts":"2026-09-17T02:47:37.892Z","level":"info","trace_id":"ppbwylxx","msg":"outfit 어휘 미인식 조각","ctx":{"at":"wardrobe.split_lost","lost":["베이지 슬링백"],"kept":2,"source":"plot_base","where":"outfit_text"}} {"ts":"2026-09-17T02:47:37.892Z","level":"warn","trace_id":"ppbwylxx","msg":"레거시 의상 텍스트 폴백(plot_base): 유나","ctx":{"at":"wardrobe.legacy_outfit_fallback","site":"plot_base","who":"유나","stats":{"plot_base":3,"legacy_scene":1}},"err":{"name":"Error","message":"레거시 의상 텍스트 폴백(plot_base): 유나","stack":"Error: 레거시 의상 텍스트 폴백(plot_base): 유나\n at noteLegacyOutfitFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1291:12)\n at seedItemsForCharacter (/Users/inhohur/work/yusti-review/lib/wardrobe.js:775:8)\n at seedWardrobeForScene (/Users/inhohur/work/yusti-review/lib/wardrobe.js:810:19)\n at Object.ensureSceneWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:852:10)\n at buildIntroSceneState (/Users/inhohur/work/yusti-review/lib/intro-snapshot.js:45:12)\n at Object.imprintIntroSnapshot (/Users/inhohur/work/yusti-review/lib/intro-snapshot.js:57:16)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async seedPlotIntro (/Users/inhohur/work/yusti-review/lib/db-client.js:6047:17)\n at async runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:415:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)"}} {"ts":"2026-09-17T02:47:37.904Z","level":"warn","trace_id":"ppbwylxx","msg":"레거시 의상 텍스트 폴백(lead_seed): 서리아","ctx":{"at":"wardrobe.legacy_outfit_fallback","site":"lead_seed","who":"서리아","stats":{"plot_base":3,"legacy_scene":1,"lead_seed":1}},"err":{"name":"Error","message":"레거시 의상 텍스트 폴백(lead_seed): 서리아","stack":"Error: 레거시 의상 텍스트 폴백(lead_seed): 서리아\n at noteLegacyOutfitFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1291:12)\n at seedWardrobeForScene (/Users/inhohur/work/yusti-review/lib/wardrobe.js:829:7)\n at ensureSceneWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:852:10)\n at renderWardrobePrompt (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1578:13)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:576:47)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:47:37.905Z","level":"info","trace_id":"ppbwylxx","msg":"prepass","ctx":{"at":"turn.prepass","user":"cea55030-1ac0-4248-9c64-9c14ffb12d29","plot":"e7981bcd-6d6c-4c9b-8e5d-3b67c02af108","ok":false,"reason":"no_narration","model":"deepseek-flash","ms":0,"changed":false}} {"ts":"2026-09-17T02:47:42.900Z","level":"warn","trace_id":"ppbwylxx","msg":"각인 부재 폴백(§9): __user","ctx":{"at":"wardrobe.consume_fallback","key":"__user","reason":"no_garments","stats":{"imprinted":3,"fallback":1}},"err":{"name":"Error","message":"각인 부재 폴백(§9): __user","stack":"Error: 각인 부재 폴백(§9): __user\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1418:22)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:13.356Z","level":"info","trace_id":"16ocwfgq","msg":"prepass","ctx":{"at":"turn.prepass","user":"cea55030-1ac0-4248-9c64-9c14ffb12d29","plot":"e7981bcd-6d6c-4c9b-8e5d-3b67c02af108","ok":false,"reason":"no_narration","model":"deepseek-flash","ms":0,"changed":false}} {"ts":"2026-09-17T02:48:19.005Z","level":"warn","trace_id":"16ocwfgq","msg":"각인 부재 폴백(§9): 5c5003c1-4b5e-4662-9353-e4da426877d8","ctx":{"at":"wardrobe.consume_fallback","key":"5c5003c1-4b5e-4662-9353-e4da426877d8","reason":"no_garments","stats":{"imprinted":3,"fallback":2}},"err":{"name":"Error","message":"각인 부재 폴백(§9): 5c5003c1-4b5e-4662-9353-e4da426877d8","stack":"Error: 각인 부재 폴백(§9): 5c5003c1-4b5e-4662-9353-e4da426877d8\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at /Users/inhohur/work/yusti-review/lib/wardrobe.js:1392:22\n at Array.map ()\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1363:79)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:19.005Z","level":"warn","trace_id":"16ocwfgq","msg":"각인 부재 폴백(§9): 8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23","ctx":{"at":"wardrobe.consume_fallback","key":"8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23","reason":"no_garments","stats":{"imprinted":3,"fallback":3}},"err":{"name":"Error","message":"각인 부재 폴백(§9): 8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23","stack":"Error: 각인 부재 폴백(§9): 8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at /Users/inhohur/work/yusti-review/lib/wardrobe.js:1392:22\n at Array.map ()\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1363:79)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:19.005Z","level":"warn","trace_id":"16ocwfgq","msg":"각인 부재 폴백(§9): ef6a623e-67ee-4619-9c75-b48eef587681","ctx":{"at":"wardrobe.consume_fallback","key":"ef6a623e-67ee-4619-9c75-b48eef587681","reason":"no_garments","stats":{"imprinted":3,"fallback":4}},"err":{"name":"Error","message":"각인 부재 폴백(§9): ef6a623e-67ee-4619-9c75-b48eef587681","stack":"Error: 각인 부재 폴백(§9): ef6a623e-67ee-4619-9c75-b48eef587681\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at /Users/inhohur/work/yusti-review/lib/wardrobe.js:1392:22\n at Array.map ()\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1363:79)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:19.006Z","level":"warn","trace_id":"16ocwfgq","msg":"각인 부재 폴백(§9): __user","ctx":{"at":"wardrobe.consume_fallback","key":"__user","reason":"no_garments","stats":{"imprinted":3,"fallback":5}},"err":{"name":"Error","message":"각인 부재 폴백(§9): __user","stack":"Error: 각인 부재 폴백(§9): __user\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1418:22)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:20.737Z","level":"warn","trace_id":"fxbfg1kl","msg":"videoize actor canon not approved: pending","ctx":{"at":"videoize.brief.canon","plot":"e7981bcd-6d6c-4c9b-8e5d-3b67c02af108","character":"5c5003c1-4b5e-4662-9353-e4da426877d8","status":"pending"},"err":{"name":"Error","message":"videoize actor canon not approved: pending","stack":"Error: videoize actor canon not approved: pending\n at /Users/inhohur/work/yusti-review/lib/videoize.js:1073:16\n at Array.map ()\n at Object.gatherVideoizeBrief (/Users/inhohur/work/yusti-review/lib/videoize.js:1067:24)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async _runVideoizeClipEntry (/Users/inhohur/work/yusti-review/lib/videoize-run.js:903:17)\n at async Object.runVideoizeClip (/Users/inhohur/work/yusti-review/lib/videoize-run.js:882:12)\n at async /Users/inhohur/work/yusti-review/server.js:2810:20"}} {"ts":"2026-09-17T02:48:20.739Z","level":"warn","trace_id":"fxbfg1kl","msg":"videoize actor canon not approved: pending","ctx":{"at":"videoize.brief.canon","plot":"e7981bcd-6d6c-4c9b-8e5d-3b67c02af108","character":"ef6a623e-67ee-4619-9c75-b48eef587681","status":"pending"},"err":{"name":"Error","message":"videoize actor canon not approved: pending","stack":"Error: videoize actor canon not approved: pending\n at /Users/inhohur/work/yusti-review/lib/videoize.js:1073:16\n at Array.map ()\n at Object.gatherVideoizeBrief (/Users/inhohur/work/yusti-review/lib/videoize.js:1067:24)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async _runVideoizeClipEntry (/Users/inhohur/work/yusti-review/lib/videoize-run.js:903:17)\n at async Object.runVideoizeClip (/Users/inhohur/work/yusti-review/lib/videoize-run.js:882:12)\n at async /Users/inhohur/work/yusti-review/server.js:2810:20"}} {"ts":"2026-09-17T02:48:20.739Z","level":"warn","trace_id":"fxbfg1kl","msg":"videoize actor canon not approved: pending","ctx":{"at":"videoize.brief.canon","plot":"e7981bcd-6d6c-4c9b-8e5d-3b67c02af108","character":"8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23","status":"pending"},"err":{"name":"Error","message":"videoize actor canon not approved: pending","stack":"Error: videoize actor canon not approved: pending\n at /Users/inhohur/work/yusti-review/lib/videoize.js:1073:16\n at Array.map ()\n at Object.gatherVideoizeBrief (/Users/inhohur/work/yusti-review/lib/videoize.js:1067:24)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async _runVideoizeClipEntry (/Users/inhohur/work/yusti-review/lib/videoize-run.js:903:17)\n at async Object.runVideoizeClip (/Users/inhohur/work/yusti-review/lib/videoize-run.js:882:12)\n at async /Users/inhohur/work/yusti-review/server.js:2810:20"}} {"ts":"2026-09-17T02:48:24.537Z","level":"warn","trace_id":"16ocwfgq","msg":"scripter fail: truncated(length)","ctx":{"at":"turn.scripter","user":"cea55030-1ac0-4248-9c64-9c14ffb12d29","plot":"e7981bcd-6d6c-4c9b-8e5d-3b67c02af108"},"err":{"name":"Error","message":"scripter fail: truncated(length)","stack":"Error: scripter fail: truncated(length)\n at onFail (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1744:39)\n at runScripter (/Users/inhohur/work/yusti-review/lib/scripter.js:520:45)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1741:17)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:46.556Z","level":"info","trace_id":"xqbwh456","msg":"prepass","ctx":{"at":"turn.prepass","user":"cea55030-1ac0-4248-9c64-9c14ffb12d29","plot":"e7981bcd-6d6c-4c9b-8e5d-3b67c02af108","ok":false,"reason":"no_narration","model":"deepseek-flash","ms":0,"changed":false}} {"ts":"2026-09-17T02:48:52.830Z","level":"warn","trace_id":"xqbwh456","msg":"각인 부재 폴백(§9): 5c5003c1-4b5e-4662-9353-e4da426877d8","ctx":{"at":"wardrobe.consume_fallback","key":"5c5003c1-4b5e-4662-9353-e4da426877d8","reason":"no_garments","stats":{"imprinted":3,"fallback":6}},"err":{"name":"Error","message":"각인 부재 폴백(§9): 5c5003c1-4b5e-4662-9353-e4da426877d8","stack":"Error: 각인 부재 폴백(§9): 5c5003c1-4b5e-4662-9353-e4da426877d8\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at /Users/inhohur/work/yusti-review/lib/wardrobe.js:1392:22\n at Array.map ()\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1363:79)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:52.830Z","level":"warn","trace_id":"xqbwh456","msg":"각인 부재 폴백(§9): 8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23","ctx":{"at":"wardrobe.consume_fallback","key":"8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23","reason":"no_garments","stats":{"imprinted":3,"fallback":7}},"err":{"name":"Error","message":"각인 부재 폴백(§9): 8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23","stack":"Error: 각인 부재 폴백(§9): 8c7e6deb-07f0-4c6d-82f4-1c0e43d05e23\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at /Users/inhohur/work/yusti-review/lib/wardrobe.js:1392:22\n at Array.map ()\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1363:79)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:52.830Z","level":"warn","trace_id":"xqbwh456","msg":"각인 부재 폴백(§9): ef6a623e-67ee-4619-9c75-b48eef587681","ctx":{"at":"wardrobe.consume_fallback","key":"ef6a623e-67ee-4619-9c75-b48eef587681","reason":"no_garments","stats":{"imprinted":3,"fallback":8}},"err":{"name":"Error","message":"각인 부재 폴백(§9): ef6a623e-67ee-4619-9c75-b48eef587681","stack":"Error: 각인 부재 폴백(§9): ef6a623e-67ee-4619-9c75-b48eef587681\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at /Users/inhohur/work/yusti-review/lib/wardrobe.js:1392:22\n at Array.map ()\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1363:79)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:52.830Z","level":"warn","trace_id":"xqbwh456","msg":"각인 부재 폴백(§9): __user","ctx":{"at":"wardrobe.consume_fallback","key":"__user","reason":"no_garments","stats":{"imprinted":3,"fallback":9}},"err":{"name":"Error","message":"각인 부재 폴백(§9): __user","stack":"Error: 각인 부재 폴백(§9): __user\n at noteConsumeFallback (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1308:12)\n at syncSceneCharactersToWardrobe (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1418:22)\n at applyWardrobeGuard (/Users/inhohur/work/yusti-review/lib/wardrobe.js:1174:10)\n at runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1681:22)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:48:58.686Z","level":"warn","trace_id":"xqbwh456","msg":"scripter fail: truncated(length)","ctx":{"at":"turn.scripter","user":"cea55030-1ac0-4248-9c64-9c14ffb12d29","plot":"e7981bcd-6d6c-4c9b-8e5d-3b67c02af108"},"err":{"name":"Error","message":"scripter fail: truncated(length)","stack":"Error: scripter fail: truncated(length)\n at onFail (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1744:39)\n at runScripter (/Users/inhohur/work/yusti-review/lib/scripter.js:520:45)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async runPlotTurnInner (/Users/inhohur/work/yusti-review/lib/chat-turn.js:1741:17)\n at async runPlotTurn (/Users/inhohur/work/yusti-review/lib/chat-turn.js:332:12)\n at async /Users/inhohur/work/yusti-review/server.js:1262:22"}} {"ts":"2026-09-17T02:58:09.323Z","level":"info","trace_id":null,"msg":"SIGTERM 수신 — graceful drain 시작","ctx":{"at":"process.SIGTERM","inFlight":0}} {"ts":"2026-09-17T02:58:09.324Z","level":"info","trace_id":null,"msg":"drain 완료 — 종료","ctx":{"at":"process.SIGTERM","remaining":0}}