7.3 KiB
⚠ RETIRED — 2026-04-27
This document describes the original TESSERA 4.0 seed extraction workflow using
tessera.dbon the Dell pipeline node. That infrastructure no longer exists.The current dataset assistant handover is:
docs/handover-dataset.mdThis document is preserved as historical record of the seed extraction session that produced the initial 12,005 H9 rows in
data/otivm.sqlite3. Do not act on any instruction in this document — the Dell, tessera-pipeline CT, and tessera.db are all decommissioned.
Handover — TESSERA 4.0 Seed Extraction
Date: 2026-04-26
Status: RETIRED — see docs/handover-dataset.md
For: Historical reference only
0. Your role
You are the dataset assistant. Your immediate task is to create
otivm.sqlite3 by extracting the five OTIVM launch waypoint hexes
from tessera.db on the Dell SSD. You do not touch game code.
You do not modify the roadmap. You do not run any pipeline stage
without explicit project owner instruction.
The game assistant works in parallel on otium.civicus.us.
You share the OTIVM Gitea repo but work on different files.
1. The RFC — read it first
docs/RFC-TESSERA-4.0-001.md in this repo is the normative schema.
Read it completely before writing a single line of code. It defines:
- All table schemas with exact column names and types
- Row lifecycle states (1=draft, 2=current, 3=superseded, 4=retired)
- Per-field provenance as integer FKs
- H5 coverage completeness tracking
- The pipeline contract
- The staging protocol
The schema is approved. Do not deviate from it.
2. Infrastructure
Dell (root@ai, 10.0.0.41)
tessera.dbat/home/tessera/tessera.db— 158GB SpatiaLite, the seed source- tessera-pipeline LXC: scripts at
/opt/tessera-pipeline/ - Python venv:
/opt/tessera-pipeline/venv/bin/python3 - USB is READ-ONLY — no writes to
/mnt/tessera-*without explicit permission
OTIVM container (otium-dev, 10.0.0.23)
- App user:
otivm - Repo at
/home/otivm/OTIVM - Claude Code runs here as
otivmuser viaworkalias - Python venv:
/home/otivm/venv - This is where
otivm.sqlite3will live:/home/otivm/OTIVM/data/otivm.sqlite3
proliant-dev (srv-a, 10.0.0.11)
- tessera-store CT (1102, 10.0.0.21): empty, infrastructure ready
- Not needed for seed extraction — that runs on the Dell
3. tessera.db schema — what you are extracting from
-- Source table in tessera.db (SpatiaLite)
tessera_cells:
h9_cell TEXT -- H3 res-9 cell ID (string format)
h7_cell TEXT -- H3 res-7 parent
lat REAL
lon REAL
elev_cm INTEGER
terrain INTEGER
hydro INTEGER
geo_dep INTEGER
geo_flag INTEGER
geom BLOB -- not needed, do not extract
tessera_h7:
h7_cell TEXT
fingerprint TEXT
generated_at INTEGER
n_cells INTEGER
occ_flag does not exist in tessera.db — stage 06 was never run.
Set occ_flag = 0 and occ_conf = 4 (no_data) for all seed rows.
4. The five OTIVM launch waypoints
| City | H5 (TEXT) | Notes |
|---|---|---|
| Ostia | 851e805bfffffff |
Mediterranean coast, low terrain |
| Capua | 851e8333fffffff |
Campanian plain |
| Brundisium | 851e8ba3fffffff |
Adriatic coast |
| Carthago | 85386e23fffffff |
North Africa |
| Alexandria | 853f5ba7fffffff |
Nile delta |
Each H5 contains 343 H9 cells (7 H7 children × 49 H9 per H7). Total minimum: 5 × 343 = 1,715 H9 rows.
All five are well within the completed portion of tessera.db — the Mediterranean is fully populated through stage 04. No missing data expected except occ_flag (stage 06 not run) and some geo_dep/geo_flag cells at the edge of MRDS/IGME5000 coverage.
5. Source registry seed values
Register these sources in source_registry before extraction:
| source_key | source_name | version | license |
|---|---|---|---|
| GEBCO_2025 | GEBCO 2025 Grid | 2025 | CC-BY 4.0 |
| ESA_WORLDCOVER_V200 | ESA WorldCover v200 | v2.0.0 | CC-BY 4.0 |
| HYDROSHEDS_V11 | HydroSHEDS v1.1 | 1.1 | CC-BY 4.0 |
| USGS_MRDS | USGS Mineral Resources Data System | 2022-08-23 | public domain |
| BGR_IGME5000 | BGR IGME5000 | 2007 | Geonutz 2013 |
| TESSERA3_SEED | TESSERA 3.0 seed extraction | 2026-04-26 | internal |
Confidence grades for seed rows:
- elev: source=GEBCO_2025, conf=2 (indicated)
- terrain: source=ESA_WORLDCOVER_V200, conf=2 (indicated)
- hydro: source=HYDROSHEDS_V11, conf=2 (indicated)
- geo_dep: source=USGS_MRDS, conf=2 if value != 255, else conf=4
- geo_flag: source=BGR_IGME5000, conf=2 if value != 0, else conf=4
- occ: source=TESSERA3_SEED, conf=4 (no_data), value=0
6. H3 integer conversion
tessera.db stores H3 IDs as TEXT (e.g. 891e805b31bffff).
otivm.sqlite3 stores H3 IDs as INTEGER (64-bit H3 index).
In Python using the h3 library:
import h3
h9_int = h3.str_to_int(h9_text) # TEXT → INTEGER
h9_text = h3.int_to_str(h9_int) # INTEGER → TEXT
The h5 INTEGER value for each waypoint:
h5_int = h3.str_to_int('851e805bfffffff') # Ostia
# etc.
7. Deployment workflow
Claude Code on otium-dev handles all file writes and git commits. Claude chat produces files with instruction headers. Claude Code writes them to disk, commits, pushes.
No manual tarball workflow. No direct server commands from Claude chat.
The extraction script runs on the Dell (tessera-pipeline CT),
not on otium-dev. The output otivm.sqlite3 is then copied to
the OTIVM container.
Copy path (after extraction on Dell):
/tmp/otivm.sqlite3 on tessera-pipeline CT
→ lxc file pull to Dell host /tmp/
→ scp to otium-dev /home/otivm/OTIVM/data/otivm.sqlite3
8. What to produce — in order
-
data/create_otivm_db.sql— SQL to create the schema (all tables per RFC-TESSERA-4.0-001, lookup table inserts) Claude Code writes this. Human runs it on otium-dev to create the emptydata/otivm.sqlite3. -
pipeline/seed_extract.py— extraction script Reads from tessera.db on the Dell (via tessera-pipeline CT), writes tostaging_otivm.sqlite3in /tmp. Follows the pipeline contract from the RFC. Claude Code writes this. Human deploys to tessera-pipeline CT. -
pipeline/seed_promote.py— promotion script Promotes draft rows to current in staging_otivm.sqlite3, verifies row counts, updates h5_coverage. Claude Code writes this. -
Copy staging to production — human runs the copy from staging_otivm.sqlite3 to otivm.sqlite3 after verification.
-
Verify — query otivm.sqlite3 to confirm all five H5 hexes have status=2 in h5_coverage and correct H9 counts.
9. Hard rules
- Do not write to USB (
/mnt/tessera-*) without explicit permission - Do not modify
tessera.db— it is the immutable seed source - Do not touch game code (src/, server/, App.jsx, etc.)
- Do not run any script without explicit project owner instruction
- Always read RFC-TESSERA-4.0-001.md before writing any schema code
- One file. One step. One confirmation. Never batch.
10. Gitea
Repo: https://gitea.barternetwork.us/TheRON/OTIVM
Branch: main (direct push, Claude Code handles this)
MCP: connected via mcp.civicus.us — read any file directly
Handover 2026-04-26 — seed extraction track RFC approved. Schema locked. Extract five waypoints. Verify. Done.