OTIVM-III complete

This commit is contained in:
2026-05-03 05:47:10 -04:00
parent 260db3f492
commit 1ee725b269

View File

@@ -10,6 +10,74 @@ The Gitea repo is always the SSOT for code. Archives cover the OS, stack, and co
## Archive log
### vzdump-lxc-1105-2026_05_03-04_36_55.tar.zst
| Property | Value |
| --- | --- |
| File | vzdump-lxc-1105-2026_05_03-04_36_55.tar.zst |
| Date | 2026-05-03 04:36:55 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 — d1e1b98 iv: fix drift log trigger type — dispatch_cost vs venture_complete |
**Container state at time of archive:**
- OTIVM-I, OTIVM-II, OTIVM-III complete and live
- `server/index.js` — OTIVM-III complete. Per-player SQLite live. Ventures, venture_legs,
and parameter_drift_log all wired and recording. Drift log trigger types correct:
`dispatch_cost` (den decreases), `venture_complete` (den increases), `interval_complete`
(auctoritas band change after otium)
- `data/create_player_db.sql` — schema version 5. `UNIQUE(actor_id)` on `actor_profile`.
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.
- `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
- 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.
**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.
**Restore command (run on srv-a as root):**
```bash
pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_05_03-04_36_55.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_02-05_37_24.tar.zst
| Property | Value |
@@ -124,17 +192,7 @@ If restoring to a fresh container without this archive, regenerate from `data/cr
**Container state at time of archive:**
- Debian 12, unprivileged LXC, 4 cores, 2 GB RAM, 8 GB disk
- LAN IP: 10.0.0.23, WireGuard: 10.110.0.18
- Node.js v22 (system), Python venv at /home/otivm/venv
- PM2 running, startup configured via systemd pm2-otivm.service
- Nginx on wg-pk proxying otium.civicus.us → 10.110.0.18:3000, SSL active
- `/opt/data/TESSERA_APR26` and `/opt/data/TESSERA_WORLD` are bind mounts — excluded from backup, not restored
- pipeline-venv at /home/otivm/pipeline-venv with full dataset pipeline packages
**OTIVM game state:**
- OTIVM-I complete — five trade routes, journal, otium/negotium, per-player saves
- 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
@@ -175,9 +233,8 @@ 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 — it is present in the archive but not in the repo.
If restoring to a fresh container without this archive, the database must be regenerated
from `data/create_otivm_db.sql` and the pipeline scripts.
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.
---
@@ -301,4 +358,4 @@ pct restore 1105 /var/lib/vz/dump/vzdump-lxc-1105-2026_04_25-04_10_53.tar.zst --
Archive filenames follow Proxmox default: `vzdump-lxc-{CTID}-{YYYY_MM_DD-HH_MM_SS}.tar.zst`
Add a new entry to this file every time an archive is created and copied to cold storage.
Always note exactly what is and is not present in the container at time of archive.
Most recent archive listed first.
Most recent archive listed first.