The operator hand-pushed .env and .env.ove tracked while this task ran,
both with DATABASE_URL="file:./db/custom.db" — the relative form that
Prisma resolves against prisma/schema.prisma's directory, i.e. to
<repo>/prisma/db/custom.db, breaking the CLI (db push would silently
create a fresh empty database there) and the runtime (cannot open);
verified empirically. The merge keeps .env tracked per the operator's
explicit action (gitignore: !.env) and corrects DATABASE_URL in both
files to the portable file:../db/custom.db. The committed .env is held
byte-identical to .env.ove so dev.sh's self-heal copy never leaves a
dirty tree.
Operator-authorized for the strictly private self-hosted Forgejo repo:
the env template (.env.ove), a baseline database snapshot
(db/custom.db.seed) and secrets/ now ride with the repo so sandbox
reprovisions can never wipe them. dev.sh self-heals at the very top
(before bun install): .env is restored from .env.ove whenever it lacks
OVE_DIRECTORY_API_KEY, and db/custom.db from the seed whenever it is
missing — verified end-to-end against a faithful reset simulation
(both [SELF-HEAL] restores fire, 106-preset library serves, directory
proxy authenticated, browser clean).
One evidence-driven deviation from the requested values: DATABASE_URL
is file:../db/custom.db, not file:./db/custom.db — Prisma resolves
relative SQLite paths against prisma/schema.prisma's directory, so the
./ form provably breaks both the CLI (would create a fresh empty db at
prisma/db/custom.db on every boot) and the runtime (cannot open); the
../ form is the portable equivalent and is documented in .env.ove's
header. secrets/ ships with a README documenting the house-cookie file
slots (the actual cookie exports are re-added by the operator).