@@ -381,7 +381,7 @@ <h1>PARACOSM</h1>
381381}</ div >
382382 </ div >
383383 < div class ="code-block ">
384- < div class ="code-header "> < span > 3. Compile the world , define two leaders, run them in parallel </ span > < button class ="code-copy " onclick ="copyCode(this, document.getElementById('api-code').textContent) "> Copy</ button > </ div >
384+ < div class ="code-header "> < span > 3. Compile, define leaders, run</ span > < button class ="code-copy " onclick ="copyCode(this, document.getElementById('api-code').textContent) "> Copy</ button > </ div >
385385 < div class ="code-body " id ="api-code "> < span class ="kw "> import</ span > { compileScenario } < span class ="kw "> from</ span > < span class ="str "> 'paracosm/compiler'</ span > ;
386386< span class ="kw "> import</ span > { runSimulation } < span class ="kw "> from</ span > < span class ="str "> 'paracosm/runtime'</ span > ;
387387< span class ="kw "> import</ span > worldJson < span class ="kw "> from</ span > < span class ="str "> './my-world.json'</ span > ;
@@ -392,37 +392,42 @@ <h1>PARACOSM</h1>
392392 model: < span class ="str "> 'claude-sonnet-4-6'</ span > ,
393393});
394394
395- < span class ="cm "> // 2. Define two commanders with different HEXACO personalities</ span >
396- < span class ="cm "> // Same world, same crises — different decisions</ span >
397- < span class ="kw "> const</ span > leaderA = {
398- name: < span class ="str "> 'Captain Reyes'</ span > ,
399- archetype: < span class ="str "> 'The Pragmatist'</ span > ,
400- colony: < span class ="str "> 'Station Alpha'</ span > ,
401- hexaco: { openness: < span class ="num "> 0.4</ span > , conscientiousness: < span class ="num "> 0.9</ span > ,
402- extraversion: < span class ="num "> 0.3</ span > , agreeableness: < span class ="num "> 0.6</ span > ,
403- emotionality: < span class ="num "> 0.5</ span > , honestyHumility: < span class ="num "> 0.8</ span > },
404- instructions: < span class ="str "> 'You lead by protocol. Safety margins first.'</ span > ,
405- };
406-
407- < span class ="kw "> const</ span > leaderB = {
408- name: < span class ="str "> 'Captain Okafor'</ span > ,
409- archetype: < span class ="str "> 'The Innovator'</ span > ,
410- colony: < span class ="str "> 'Station Beta'</ span > ,
411- hexaco: { openness: < span class ="num "> 0.9</ span > , conscientiousness: < span class ="num "> 0.4</ span > ,
412- extraversion: < span class ="num "> 0.8</ span > , agreeableness: < span class ="num "> 0.5</ span > ,
413- emotionality: < span class ="num "> 0.3</ span > , honestyHumility: < span class ="num "> 0.6</ span > },
414- instructions: < span class ="str "> 'You lead by experimentation. Push boundaries.'</ span > ,
415- };
416-
417- < span class ="cm "> // 3. Run both in parallel — same seed, same crises, different outcomes</ span >
418- < span class ="kw "> const</ span > [resultA, resultB] = < span class ="kw "> await</ span > Promise.< span class ="fn "> all</ span > ([
419- < span class ="fn "> runSimulation</ span > (leaderA, [], { scenario, maxTurns: < span class ="num "> 8</ span > , seed: < span class ="num "> 42</ span > ,
420- < span class ="fn "> onEvent</ span > (e) { console.< span class ="fn "> log</ span > (< span class ="str "> 'A:'</ span > , e.type, e.data?.title); } }),
421- < span class ="fn "> runSimulation</ span > (leaderB, [], { scenario, maxTurns: < span class ="num "> 8</ span > , seed: < span class ="num "> 42</ span > ,
422- < span class ="fn "> onEvent</ span > (e) { console.< span class ="fn "> log</ span > (< span class ="str "> 'B:'</ span > , e.type, e.data?.title); } }),
423- ]);
424-
425- < span class ="cm "> // resultA.finalState vs resultB.finalState — the divergence</ span > </ div >
395+ < span class ="cm "> // 2. Define leaders with HEXACO personality profiles</ span >
396+ < span class ="cm "> // Each leader is one simulation run. Run one, two, or many.</ span >
397+ < span class ="cm "> // The dashboard runs two side-by-side for comparison,</ span >
398+ < span class ="cm "> // but the API has no limit.</ span >
399+ < span class ="kw "> const</ span > leaders = [
400+ {
401+ name: < span class ="str "> 'Captain Reyes'</ span > ,
402+ archetype: < span class ="str "> 'The Pragmatist'</ span > ,
403+ colony: < span class ="str "> 'Station Alpha'</ span > ,
404+ hexaco: { openness: < span class ="num "> 0.4</ span > , conscientiousness: < span class ="num "> 0.9</ span > ,
405+ extraversion: < span class ="num "> 0.3</ span > , agreeableness: < span class ="num "> 0.6</ span > ,
406+ emotionality: < span class ="num "> 0.5</ span > , honestyHumility: < span class ="num "> 0.8</ span > },
407+ instructions: < span class ="str "> 'You lead by protocol. Safety margins first.'</ span > ,
408+ },
409+ {
410+ name: < span class ="str "> 'Captain Okafor'</ span > ,
411+ archetype: < span class ="str "> 'The Innovator'</ span > ,
412+ colony: < span class ="str "> 'Station Beta'</ span > ,
413+ hexaco: { openness: < span class ="num "> 0.9</ span > , conscientiousness: < span class ="num "> 0.4</ span > ,
414+ extraversion: < span class ="num "> 0.8</ span > , agreeableness: < span class ="num "> 0.5</ span > ,
415+ emotionality: < span class ="num "> 0.3</ span > , honestyHumility: < span class ="num "> 0.6</ span > },
416+ instructions: < span class ="str "> 'You lead by experimentation. Push boundaries.'</ span > ,
417+ },
418+ ];
419+
420+ < span class ="cm "> // 3. Run in parallel: same seed, same crises, different outcomes</ span >
421+ < span class ="kw "> const</ span > results = < span class ="kw "> await</ span > Promise.< span class ="fn "> all</ span > (
422+ leaders.< span class ="fn "> map</ span > (leader =>
423+ < span class ="fn "> runSimulation</ span > (leader, [], {
424+ scenario,
425+ maxTurns: < span class ="num "> 8</ span > ,
426+ seed: < span class ="num "> 42</ span > ,
427+ < span class ="fn "> onEvent</ span > (e) { console.< span class ="fn "> log</ span > (leader.name, e.type, e.data?.title); },
428+ })
429+ )
430+ );</ div >
426431 </ div >
427432 < div class ="code-block ">
428433 < div class ="code-header "> < span > Or: quick start with the dashboard</ span > < button class ="code-copy " onclick ="copyCode(this, document.getElementById('dash-code').textContent) "> Copy</ button > </ div >
0 commit comments