/**
* Сценарий agent:invariants — мост жив, мир стабилен.
* Новая игра -> 300 фиксированных шагов -> движковые/сценические/контентные
* инварианты не содержат ошибок.
* Запуск: node tools/agent.mjs run tools/checks/agent-invariants.mjs
*/
import { withChecks } from '../lib.mjs';
export default async function ({ pretty }) {
return withChecks(
'agent-invariants',
async (t) => {
await t.c.run('новая игра через мост', async () => {
await t.boot();
const s = await t.ctx.agent.snapshot();
t.c.expect(s.scene === 'location', 'сцена не location', { scene: s.scene, err: s.error });
return null;
});
await t.c.run('300 шагов без ошибок инвариантов', async () => {
await t.ctx.agent.step(300);
await t.expectInvariantsClean('после 300 шагов');
return null;
});
await t.c.run('снапшот содержит героя и флаги', async () => {
const s = await t.ctx.agent.snapshot();
t.c.expect(!!s.hero?.tile, 'нет s.hero.tile', s);
t.c.expect(Array.isArray(s.flags), 'нет s.flags');
return null;
});
},
{ pretty }
);
}