Data model (operational): 001-development-environment
This is not an application domain model. It records host/Git/service
entities for planning clarity. No ORM, no API schemas.
Entities
Host (rom-dev01)
| Field |
Notes |
| OS |
Ubuntu 24.04 LTS (precondition) |
| Capacity |
~6 vCPU / 52 GB / 2 TB / 32 GB swap |
| Network |
Public IPv4 NIC; no required internal NIC |
| Management |
External Salt saltenv=base + project config |
Account android-build
| Field |
Notes |
| Type |
Unprivileged login user |
| Owns |
/srv/rom/{src,references,tooling,ccache,artifacts,logs} (as documented) |
| Must not |
Need root to compile; own Gitea/Semaphore system dirs |
Meta working tree
| Path |
Purpose |
/home/android-build/sunfish-a16-rom |
Spec Kit + specs + docs (Cursor Remote SSH) |
Path root /srv/rom
| Child |
Purpose |
Populated in 001? |
src/ |
Future Android trees |
Empty (no sync) |
references/ |
Future AXP/reference |
Empty |
tooling/ |
Project tooling helpers (not Spec Kit checkout) |
Partial OK |
ccache/ |
CCACHE_DIR |
Yes (dir + env) |
artifacts/ |
Laptop handoff |
Dummy file for smoke |
logs/ |
Bootstrap/preflight logs |
Yes |
secrets/ |
Restricted placeholder |
Empty; no keygen |
GiteaInstance
| Field |
Notes |
| Bind |
Loopback / non-public |
| Repos |
sunfish-a16-rom, sunfish-rom-manifest, sunfish-rom-build, sunfish-rom-patches |
| Canonical |
Yes after first successful push of meta repo |
GitMirror (off-VM)
| Field |
Notes |
| Location |
Laptop bare mirrors (initial) |
| Direction |
Laptop pulls (clone --mirror / remote update); no VM→laptop SSH |
| Scope |
All four project repos |
| Success |
At least one verified mirror cycle |
AnsibleController / SemaphoreInstance
| Field |
Notes |
| Host |
rom-dev01 |
| First job |
Environment smoke playbook |
| Exposure |
Same private access model as Gitea |
Relationships
State transitions (meta Git)
laptop-staging-only
copied-to-host (pre-Gitea)
gitea-canonical (push complete)
mirrored-off-vm (SC-007)
Do not destroy state (1) until (3) and (4) succeed.