diff --git a/src/constants.js b/src/constants.js index 5be3f76..3e91d7e 100644 --- a/src/constants.js +++ b/src/constants.js @@ -63,6 +63,11 @@ export const ROUTES = [ unlock_den: 0, unlock_aut: 0, desc: 'The coastal road. Safe, slow, reliable.', + // Provenance — stub H3 IDs reference TESSERA cells for origin region. + // These become live TESSERA API queries in OTIVM-V. + origin_h3_r5: '851e805bfffffff', // Ostia hinterland, Tyrrhenian coast + origin_region: 'Latium, Campania', + cultural_note: 'Olive groves established before Rome. Garum production coastal.', }, { id: 'wine', @@ -76,6 +81,9 @@ export const ROUTES = [ unlock_den: 120, unlock_aut: 5, desc: 'Via Appia. Faster in autumn.', + origin_h3_r5: '851e8333fffffff', // Campanian interior, volcanic soils + origin_region: 'Campania', + cultural_note: 'Campanian wine traded north since Etruscan period. Wool from upland flocks.', }, { id: 'grain', @@ -89,6 +97,9 @@ export const ROUTES = [ unlock_den: 350, unlock_aut: 15, desc: 'Open sea crossing. Amber from the northern forests.', + origin_h3_r5: '851e8ba3fffffff', // Apulian plain — grain. Amber: northern H3 stub pending TESSERA OCC_FLAG + origin_region: 'Apulia — grain; Baltic coast — amber', + cultural_note: 'Amber passed through a dozen hands before Brundisium. Origin: Maglemoisian forests.', }, { id: 'linen', @@ -102,6 +113,9 @@ export const ROUTES = [ unlock_den: 800, unlock_aut: 30, desc: 'The great southern route. Fortune awaits the bold.', + origin_h3_r5: '85386e23fffffff', // North African littoral, Carthage hinterland + origin_region: 'North Africa, Arabian peninsula', + cultural_note: 'Linen woven on looms unchanged since Neolithic. Frankincense route predates Rome by millennia.', }, ] @@ -141,17 +155,4 @@ export const JOURNAL = { ], } -export const INITIAL_STATE = { - den: 50, - aut: 0, - dispatches: 0, - chapter: 1, - route_dispatches: {}, - journal_seen: [], - token: null, - created_at: null, -} - -export const OTIUM_DURATION_MS = 8000 -export const OTIUM_BASE_AUT = 1 -export const MAX_CONCURRENT_PLAYERS = 128 +export const INITIAL_STATE = { den: 50, aut: 0, dispatches: 0, chapter: 1, route_dispatches: {}, journal_seen: [], // active_dispatch: records the in-progress dispatch for position tracking and // real-time duration (OTIVM-IV). null when no dispatch is running. active_dispatch: null, // events: append-only record of meaningful game events. // Each entry: { type, route_id, timestamp_utc } // Types: 'dispatch_start', 'dispatch_complete', 'otium', 'chapter_advance', 'journal_unlock' // This is the sequencing substrate for OTIVM-IX attestation. events: [], token: null, created_at: null,}export const OTIUM_DURATION_MS = 8000export const OTIUM_BASE_AUT = 1export const MAX_CONCURRENT_PLAYERS = 128