From bcb2bf56292d4d29df43f5631b1192a1f85d9390 Mon Sep 17 00:00:00 2001 From: TheRON Date: Sun, 3 May 2026 15:21:52 -0400 Subject: [PATCH] OTIVM-IV complete --- docs/archives.md | 215 ++++++++++++++++++++--------------------------- 1 file changed, 89 insertions(+), 126 deletions(-) diff --git a/docs/archives.md b/docs/archives.md index ad2c548..843704f 100644 --- a/docs/archives.md +++ b/docs/archives.md @@ -10,6 +10,83 @@ The Gitea repo is always the SSOT for code. Archives cover the OS, stack, and co ## Archive log +### vzdump-lxc-1105-2026_05_03-14_08_13.tar.zst + +| Property | Value | +| --- | --- | +| File | vzdump-lxc-1105-2026_05_03-14_08_13.tar.zst | +| Date | 2026-05-03 14:08:13 UTC | +| Size | 1.21 GB | +| Container | LXC 1105 — otivm-dev | +| Host | srv-a (10.0.0.11) | +| Storage | /var/lib/vz/dump/ + offsite cold storage | +| Gitea HEAD | main — 3700f5a iv: retire Prologue.jsx and Ledger.jsx | + +**Container state at time of archive:** + +- OTIVM-I, OTIVM-II, OTIVM-III, OTIVM-IV complete and live +- Server startup message: `OTIVM server running on port 3000 — OTIVM-IV` +- Bootstrap 5.3.3 and Bootstrap Icons 1.11.3 vendored and pinned in `package.json` +- `src/App.css` — reduced to project overrides. Roman palette as CSS custom properties. + All classes prefixed `otivm-`. Bootstrap handles all layout. +- Shell architecture live — `src/components/Shell.jsx` and `src/components/Section.jsx` + built once. Sidebar with context dropdown replaces tab navigation. Four layout types. + Nine panel types in Section.jsx. +- Context JSON files — `src/config/contexts.json`, `context-actor.json`, + `context-forum.json`, `context-map.json`. Dropdown-driven, extensible. +- Sub-components — `src/components/ParameterRow.jsx`, `CostRow.jsx`, `DriftEntry.jsx` +- `src/screens/Actor.jsx` — background selection (when `background_id = null`) or + full parameter instrument view (three-col layout). +- `src/screens/Forum.jsx` — dispatch/otium decisions. Full cost breakdown visible + on route cards. Periodic expenditures panel. Journal collapsible. +- `src/App.jsx` — Shell wired. Three contexts: ACTOR, FORUM, MAP. +- `server/index.js` — three named otium expenditure trigger types per otium cycle: + `otium_access_fee` (2 dn), `personal_maintenance` (4 dn), `officia_obligation` (2 dn). + Each writes a separate `parameter_drift_log` entry with academic source note. +- `src/screens/Prologue.jsx` and `src/screens/Ledger.jsx` — deleted. Replaced by + Actor.jsx and Forum.jsx. +- `docs/economy/cost-calibration-model.md` — ceramic cup baseline, reference wages, + periodic cost calibration. Committed. +- `docs/economy/cost-calibration-additional-goods.md` — garum, grain, amber, marble + capital. Five good patterns established. Committed. +- `docs/Roadmap-OTIVM-IV.md` — approved roadmap document. Committed. +- PM2 log clean — no errors. +- Live player databases verified: + - Token `1fa3f5fc` (Freedman Trader) — 2 ventures, drift log correct + - Token `3b1546e8` (Noble Younger Son) — extensive play, auctoritas progressed + through four band transitions (low→medium→high→distinguished), drift log + recording all three otium expenditure types correctly per cycle + +**Known deferred items:** + +- Real cost model — 60/25/15 split (vectura/portoria/other) is a placeholder +- Transformation routes (grain→bread) and barter — architecture defined, not built +- Market reader — deferred, architectural constraints documented and must not be violated +- H7 cells rendered as circles — hex geometry deferred pending client-side h3-js +- Map coastline — five isolated H5 clusters, route corridor deferred +- Terrain — modern WorldCover, restoration layer (HYDE 3.3 + KK10) not yet built +- OTIVM-V scope — not yet defined, project owner decides + +**What this archive is good for:** + +First complete OTIVM-IV baseline. Situation instrument live. Shell architecture +established. Economic sub-trace recording correctly with named, citable trigger types. +Safe restore point before any OTIVM-V development begins. + +**Restore command (run on srv-a as root):** +```bash +pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_05_03-14_08_13.tar.zst --force +``` + +After restore: `cd ~/OTIVM && git pull && npm install && npm run build && pm2 restart otivm` + +Note: `otivm.sqlite3` and `data/saves/*.sqlite3` are gitignored — present in archive +but not in repo. If restoring to a fresh container without this archive, regenerate +world database from `data/create_otivm_db.sql` and pipeline scripts. Player databases +will be absent — players start fresh. + +--- + ### vzdump-lxc-1105-2026_05_03-04_36_55.tar.zst | Property | Value | @@ -33,36 +110,23 @@ The Gitea repo is always the SSOT for code. Archives cover the OS, stack, and co FK references from all child tables valid. 72 seed rows confirmed clean. - `data/repair_player_db_fk.sql` — repair script for pre-v5 player databases. Applied successfully to `78cec864.sqlite3` during this session. -- `src/screens/Prologue.jsx` — background selection screen, six cards, read-only summary - after selection. Prologue tab added to navigation alongside Ledger and Map. -- `src/App.jsx`, `src/App.css` — three-tab navigation wired. `onSelectBackground()` seeds - `background_id` and `den` from `BACKGROUNDS` constant. New game resets to Prologue tab. -- `src/constants.js` — `BACKGROUNDS` array (six entries), `MS_PER_SIM_DAY = 3_000`, - `INITIAL_STATE.background_id = null`, route `duration_ms` values corrected to integer - multiples of `MS_PER_SIM_DAY`, `OTIUM_DURATION_MS = 9_000`. -- `data/saves/` — contains live player `.sqlite3` files (gitignored). Token `78cec864` - repaired. Token `3164b142` — Former Legionary, two complete Olive route ventures, - parameter_drift_log populated with correct trigger types. -- PM2 log flushed — no stale error lines present. +- Background selection wired end-to-end. PM2 log flushed. - `docs/handover-game-dev.md` — updated to reflect OTIVM-III complete state. **Known deferred items:** -- Cost model: 60/25/15 split (vectura/portoria/other) is a placeholder — real model - pending before OTIVM-IV touches economics +- Cost model: 60/25/15 split is a placeholder - Journal local state does not reset on new game (React state issue, low priority) - H7 cells rendered as circles — hex geometry deferred pending client-side h3-js -- Map coastline is five isolated H5 clusters — route corridor coverage deferred -- Terrain in `data/otivm.sqlite3` is modern WorldCover — restoration layer - (HYDE 3.3 + KK10) not yet built. No release may present terrain as historically accurate. -- OTIVM-IV scope: roadmap defines "The Seasons" (real dispatch durations, DWD weather). - Project owner decides whether to proceed as defined or redefine before development begins. +- Map coastline — five isolated H5 clusters +- Terrain — modern WorldCover, restoration layer not yet built +- OTIVM-IV scope: defined in `docs/Roadmap-OTIVM-IV.md` **What this archive is good for:** First complete OTIVM-III baseline with sub-trace live. Ventures, legs, and drift log all recording correctly. Background selection wired end-to-end. Safe restore point -before any OTIVM-IV development begins. +before OTIVM-IV development. **Restore command (run on srv-a as root):** ```bash @@ -71,11 +135,6 @@ pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_05_03-04_36_55.tar.zst -- After restore: `cd ~/OTIVM && git pull && npm install && npm run build && pm2 restart otivm` -Note: `otivm.sqlite3` and `data/saves/*.sqlite3` are gitignored — present in archive -but not in repo. If restoring to a fresh container without this archive, regenerate world -database from `data/create_otivm_db.sql` and pipeline scripts. Player databases will be -absent — players start fresh. - --- ### vzdump-lxc-1105-2026_05_02-05_37_24.tar.zst @@ -102,18 +161,6 @@ absent — players start fresh. - Parameter registry additions committed — 44 new tokens - Law and commerce corpus complete — 37 dialogues reviewed and cleared -**Known deferred items:** - -- Terrain in `data/otivm.sqlite3` is modern WorldCover — restoration layer not yet built -- Map coastline is five isolated H5 clusters — route corridor H5 hexes not in database -- `occ_flag` is placeholder (0x00) everywhere -- OTIVM-IV scope not yet defined — next discussion - -**What this archive is good for:** - -First complete OTIVM-III baseline. Per-player SQLite is live. Safe restore -point before any OTIVM-IV development begins. - **Restore command (run on srv-a as root):** ```bash pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_05_02-05_37_24.tar.zst --force @@ -121,11 +168,6 @@ pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_05_02-05_37_24.tar.zst -- After restore: `cd ~/OTIVM && git pull && npm install && npm run build && pm2 restart otivm` -Note: `otivm.sqlite3` and `data/saves/*.sqlite3` are gitignored — present in -archive but not in repo. If restoring to a fresh container, regenerate world -database from `data/create_otivm_db.sql` and pipeline scripts. Player -databases will be absent — players start fresh. - --- ### vzdump-lxc-1105-2026_05_02-03_15_12.tar.zst @@ -144,27 +186,10 @@ databases will be absent — players start fresh. - All of archive 2026-04-28 plus: - OTIVM-II confirmed live — fog-of-war working, routes expanding during gameplay -- Parameter registry additions committed — 44 new tokens across actor, city, scenario, and relation scopes -- `/law` and `/commerce` doc folders reviewed, sanitized, and cleared -- `docs/parameter-registry-additions.md` committed — derived from full corpus review -- `OTIVM-CANON-0001.md` and `LAW-PHASE-0001.md` committed as canonical doctrine -- Commerce and law dialogue corpus complete — 37 files reviewed and clean +- Parameter registry additions committed — 44 new tokens +- Law and commerce corpus complete — 37 files reviewed and clean - Training corpus at 20 Layer 0 primitives, 5 Layer 1 worked examples, 1 sketch - `commerce_chunks.jsonl` — 230 chunks, 5 layers, evaluated and approved -- Per-player SQLite schema design not yet started — next development task -- Game development assistant role transferred from prior session - -**Known deferred items:** - -- Per-player SQLite schema (OTIVM-III) — next blocking task -- Layer 2/3/4 corpus markdown source files not yet written (exist in JSONL only) -- Law domain corpus entries not yet authored -- `SKETCH-0001` not yet promoted to Layer 1 - -**What this archive is good for:** - -Full working OTIVM-II baseline with complete doctrine and parameter registry. -Correct restore point before OTIVM-III per-player database development begins. **Restore command (run on srv-a as root):** ```bash @@ -173,9 +198,6 @@ pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_05_02-03_15_12.tar.zst -- After restore: `cd ~/OTIVM && git pull && npm install && npm run build && pm2 restart otivm` -Note: `otivm.sqlite3` is gitignored — present in archive but not in repo. -If restoring to a fresh container without this archive, regenerate from `data/create_otivm_db.sql`. - --- ### vzdump-lxc-1105-2026_04_28-00_39_03.tar.zst @@ -192,40 +214,15 @@ If restoring to a fresh container without this archive, regenerate from `data/cr **Container state at time of archive:** -- All of archive 2026-04-25 12:08 plus: - OTIVM-II complete — fog-of-war map rendering from real TESSERA H7 data - Fastify backend on port 3000 — static serving, save API, TESSERA map endpoint - `data/otivm.sqlite3` present — 12,005 H9 rows across five H5 waypoints, status=2 - `data/otivm.sqlite3` has `paleo_epochs` table — 9 epochs, FK integrity clean - `better-sqlite3` installed in node_modules -- `/api/map/:h5/:epoch` endpoint live — returns H7 land/sea classification with real lat/lon centroids +- `/api/map/:h5/:epoch` endpoint live - Map renders H7 land cells at real geographic positions, fog-of-war reveal by chapter -- Sea level parameterised by epoch — default `roman_14bce` (sl_offset_cm = -10) -- `data/saves/` contains live player save files (gitignored) - `staging_otivm.sqlite3` present and in sync with production database -**Architecture decisions present in this build:** - -- `active_dispatch` and `events[]` in save state — sequencing substrate for future releases -- `galleyProgress()` utility in gameState.js -- Provenance fields on all routes (`origin_h3_r5`, `origin_region`, `cultural_note`) -- `session_abandoned` event written to old save on new game — save files never deleted -- `paleo_epochs` table follows RFC-TESSERA-3.0-PALEO-001 - -**Known deferred items:** - -- Journal local state does not reset on new game (React state issue, low priority) -- H7 cell rendering uses circles — hex geometry deferred until h3-js available client-side -- Map coastline is five isolated H5 clusters — route corridor H5 hexes not yet in database -- Tree primitive 180° spread bug (inherited from CIVICVS, not applicable here) - -**What this archive is good for:** - -Full working OTIVM-II baseline. Game is live and playable. TESSERA SQLite integration -complete. Fog-of-war map rendering from real elevation data working. This is the correct -restore point if any subsequent OTIVM-III development breaks the database integration -or map rendering pipeline. - **Restore command (run on srv-a as root):** ```bash pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_04_28-00_39_03.tar.zst --force @@ -233,9 +230,6 @@ pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_04_28-00_39_03.tar.zst -- After restore: `cd ~/OTIVM && git pull && npm install && npm run build && pm2 restart otivm` -Note: `otivm.sqlite3` is gitignored — present in archive but not in repo. -If restoring to a fresh container without this archive, regenerate from `data/create_otivm_db.sql` and the pipeline scripts. - --- ### vzdump-lxc-1105-2026_04_25-12_08_28.tar.zst @@ -251,25 +245,12 @@ If restoring to a fresh container without this archive, regenerate from `data/cr **Container state at time of archive:** -- All of archive 2 plus: - OTIVM-I complete and playable at otium.civicus.us - Fastify backend running — static serving + save API on port 3000 -- Save files per player in data/saves/ (gitignored) -- React frontend: App.jsx, Game.jsx, constants.js, gameState.js, api.js -- H3 IDs assigned to all five waypoints — permanent, TESSERA-compatible - All five trade routes working — Ostia → Capua → Brundisium → Carthago → Alexandria -- Journal entries firing correctly on dispatch milestones -- Otium/negotium mechanic working +- Journal entries, otium/negotium mechanic working - 128 concurrent players supported -- Gitea repo at commit 9ef837d (Game.jsx) + subsequent commits -- docs/roadmap.md committed — public, permanent - -**What this archive is good for:** - -Restoring OTIVM-I in its complete, playable state. This is the baseline before -OTIVM-II map work begins. If OTIVM-II development breaks something fundamental, -restore this archive and start OTIVM-II again from the Gitea repo at the commit -before the rename/navigation scaffold. +- H3 IDs assigned to all five waypoints — permanent, TESSERA-compatible **Restore command (run on srv-a as root):** ```bash @@ -291,21 +272,11 @@ pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_04_25-12_08_28.tar.zst -- **Container state at time of archive:** -- All of archive 1 plus: - Vite + React scaffold present at /home/otivm/OTIVM - `npm run build` completed — dist/ present -- `serve` installed globally at /home/otivm/.npm-global/bin/serve - PM2 configured via ecosystem.config.cjs, running, saved -- PM2 startup configured via systemd unit pm2-otivm.service - App serving on port 3000, responding HTTP 200 - otium.civicus.us live and serving Vite welcome page over HTTPS -- Gitea repo at commit 6725f11 (scaffold) + subsequent config commits - -**What this archive is good for:** - -Restoring a fully working serving stack. After restore the app will come up -automatically via PM2 on boot. The game code is not yet present — pull from -Gitea and run `npm run build` to get the latest game. **Restore command (run on srv-a as root):** ```bash @@ -328,11 +299,9 @@ pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_04_25-07_16_04.tar.zst -- **Container state at time of archive:** - Debian 12, unprivileged LXC -- 2 cores, 512 MB RAM, 8 GB disk (upgraded to 4 cores, 2 GB RAM on 2026-04-25 after archive) -- LAN IP: 10.0.0.23, WireGuard: 10.110.0.18 +- 2 cores, 512 MB RAM, 8 GB disk - Node.js v22 installed (system) - Python venv at /home/otivm/venv -- `serve` installed globally at /home/otivm/.npm-global/bin/serve - Nginx on wg-pk configured and proxying otium.civicus.us → 10.110.0.18:3000 - SSL active on otium.civicus.us - otivm user created, bashrc configured, `work` alias present @@ -340,12 +309,6 @@ pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_04_25-07_16_04.tar.zst -- - PM2 NOT yet configured at time of this archive - Vite + React scaffold NOT yet present at time of this archive -**What this archive is good for:** - -Restoring the base OS and software stack if the container is lost or corrupted. -After restore, you must: clone the repo, run `npm install`, run `npm run build`, -install serve globally, and start PM2 manually. - **Restore command (run on srv-a as root):** ```bash pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_04_25-04_10_53.tar.zst --force