generated from coulomb/repo-seed
4.5 KiB
4.5 KiB
Initial Forge Operating Contracts
Last reviewed: 2026-06-05
These contracts are the first explicit boundary for the Railiance forge layer. They are intentionally operational enough to guide the next file moves, while leaving live deploy and secret custody changes behind separate review gates.
Status
- Contract maturity: draft v1.
- Live impact: none; this document does not authorize a deploy or cutover.
- Current forge runtime: Gitea at
gitea.coulomb.social. - Future migration target: Forgejo, under a separate cutover workplan.
Artifact Lifecycle And Provenance
- Source repositories own build definitions, package metadata, and release versioning.
railiance-forgeowns the registry endpoints, registry operating docs, retention posture, and artifact evidence model.railiance-appsconsumes already-published artifacts in S5 release values and runbooks.- Container images should publish immutable commit-SHA tags for release
evidence. Mutable tags such as
latestare allowed only as convenience pointers and must not be the sole production reference. - Python packages should use versioned releases. Internal consumers should pin compatible ranges in source repos and regenerate locks after the package is published.
- Release evidence should capture source repo, commit SHA, artifact name, version/tag, smoke result, and consuming deployment value change.
Retention And Cleanup
- Smoke-test image tags can be pruned after a newer validated smoke tag exists and no rollback or diagnosis still references them.
- Production image tags and Python package versions should be retained for at least the active rollback window of every consuming deployment.
- Deleting a package or image is an operator action, not an automated default, until package restore has been drilled.
- The current Gitea package data lives under
/data/packageson thedefault/gitea-shared-storagePVC. On 2026-05-19 it was about 798.5 MiB of a 10 GiBlocal-pathvolume. - Growth inspection belongs in forge operations; durable backup implementation belongs with the platform storage/database layer.
Runner Substrate Ownership
railiance-forgeowns Gitea/Forgejo Actions runner deployment, runner labels, runner placement, runner credentials, and runner health evidence.railiance-enablementowns reusable workflow templates, paved paths, and developer-facing automation conventions.- Application repos own app-specific workflows and build scripts.
railiance-appsowns S5 release checks for app manifests and deployment values, but not the runner substrate those checks execute on.- Runner secret access must be explicit by label, repository, and workflow purpose. Broad package or cluster credentials should not be shared across unrelated jobs.
- The detailed runner, Actions, and GitOps boundary contract lives in
docs/ci-runner-actions-gitops-ownership.md.
Backup And Restore Handoff
railiance-forgedefines what must be restorable: Git repositories, package blobs, registry metadata, runner configuration, and source-forge application state.railiance-platformowns the reusable database, object-storage, backup, and restore mechanisms used by forge workloads.- Forge data should not become production-critical without a recorded restore drill for the relevant storage path.
- S5 app releases may consume forge artifacts, but they should cite forge evidence rather than owning package blob backup procedures themselves.
- The detailed backup, restore, and secret custody handoff contract lives in
docs/backup-restore-secret-handoff.md.
Secret Custody
- This repo may reference secret names, SOPS file paths, OpenBao paths, and operator procedures.
- This repo must not commit decrypted secret values, package tokens, runner tokens, tokenized package index URLs, or generated credential material.
- Deploy-capable files that reference encrypted values move only after review of the SOPS/OpenBao handoff and compatibility pointers.
- Allowed and forbidden secret references are defined in
docs/backup-restore-secret-handoff.md.
Observability And Evidence
make gitea-statusis the first read-only operator check in this repo.- Forge health should cover web, Git SSH, container registry, Python package registry, database, package storage, and runner status.
- Downstream app release evidence should cite forge artifact evidence rather than repeating registry implementation details.
- Future monitoring should turn the manual status checks into durable signals once the Railiance observability layer is ready.