OTIVM-III complete
This commit is contained in:
@@ -10,6 +10,74 @@ The Gitea repo is always the SSOT for code. Archives cover the OS, stack, and co
|
|||||||
|
|
||||||
## Archive log
|
## 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
|
### vzdump-lxc-1105-2026_05_02-05_37_24.tar.zst
|
||||||
|
|
||||||
| Property | Value |
|
| 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:**
|
**Container state at time of archive:**
|
||||||
|
|
||||||
- Debian 12, unprivileged LXC, 4 cores, 2 GB RAM, 8 GB disk
|
- All of archive 2026-04-25 12:08 plus:
|
||||||
- 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
|
|
||||||
- OTIVM-II complete — fog-of-war map rendering from real TESSERA H7 data
|
- 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
|
- 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` 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`
|
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.
|
Note: `otivm.sqlite3` is gitignored — present in archive but not in repo.
|
||||||
If restoring to a fresh container without this archive, the database must be regenerated
|
If restoring to a fresh container without this archive, regenerate from `data/create_otivm_db.sql` and the pipeline scripts.
|
||||||
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`
|
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.
|
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.
|
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.
|
||||||
Reference in New Issue
Block a user