Commit Graph

52 Commits

Author SHA1 Message Date
a29a6ec141 Close forge observability task 2026-06-05 16:44:28 +02:00
2001d1571a chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-05:
  - update .custodian-brief.md for railiance-apps
2026-06-05 16:42:54 +02:00
88f84ab33a Close backup handoff task 2026-06-05 16:27:59 +02:00
4eae6abe39 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-05:
  - update .custodian-brief.md for railiance-apps
2026-06-05 16:26:37 +02:00
98782c3b32 Close runner ownership task 2026-06-05 16:16:37 +02:00
e49d6d0db8 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-05:
  - update .custodian-brief.md for railiance-apps
2026-06-05 16:13:32 +02:00
1799f5e43d chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-05:
  - update .custodian-brief.md for railiance-apps
2026-06-05 16:07:34 +02:00
0eb90b1308 Close forge rescope task 2026-06-05 15:43:14 +02:00
27b4f3ca0d chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-05:
  - update .custodian-brief.md for railiance-apps
2026-06-05 15:40:37 +02:00
4c1571bb44 Align app scope headings 2026-06-05 13:23:32 +02:00
a715be6d28 Delegate Gitea operations to forge 2026-06-05 13:19:12 +02:00
421c09e902 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-05:
  - update .custodian-brief.md for railiance-apps
2026-06-05 13:14:50 +02:00
e52eab1791 Link forge move review in workplan 2026-06-05 12:17:10 +02:00
c8e50e6e84 Point app registry docs at railiance-forge 2026-06-05 12:07:26 +02:00
ec22928e24 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-05:
  - update .custodian-brief.md for railiance-apps
2026-06-05 12:02:45 +02:00
d543722991 Start railiance-forge extraction 2026-06-05 01:17:31 +02:00
4b96eb04ac chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-05:
  - update .custodian-brief.md for railiance-apps
2026-06-05 01:16:11 +02:00
e0f9a08b1c Clarify app scope and plan forge extraction 2026-06-05 00:56:33 +02:00
179b87e244 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-04:
  - update .custodian-brief.md for railiance-apps
2026-06-04 12:24:54 +02:00
e9ea34b807 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-04:
  - update .custodian-brief.md for railiance-apps
2026-06-04 10:03:59 +02:00
c7292f02ce chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-04:
  - update .custodian-brief.md for railiance-apps
2026-06-04 09:40:30 +02:00
6bfbabe9c2 workplan update 2026-05-23 06:43:30 +02:00
934770cb68 Implement app deployment improvements 2026-05-22 22:25:40 +02:00
60a9e37a86 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-05-22:
  - update .custodian-brief.md for railiance-apps
2026-05-22 22:24:23 +02:00
21b0035960 Workplan modification 2026-05-20 00:58:22 +02:00
398b0fe211 RAILIANCE-WP-0002 finished: vergabe-teilnahme T07+T08 done
T07 smoke: migrate all apps; /health/ 200, /ausschreibungen/dashboard/ Übersicht, /admin/login/ Anmelden, static assets (Tailwind, Alpine, htmx, Django admin) all 200. Auth-required smoke and createsuperuser deferred to the operator (interactive credentials not safe through this session); seed_dev deliberately skipped (hardcoded dev user). T08 runbook in docs/vergabe-teilnahme.md: identity, secret rotation recipes, day-to-day make targets, image promotion + rollback, troubleshooting, deferred backup posture, cross-refs.

Workplan status: finished. vergabe-teilnahme is the second S5 application on railiance01 (after Gitea).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 20:43:04 +02:00
864bb9d1dc Propose RAILIANCE-WP-0004: app deployment improvements backlog
7 items surfaced during RAILIANCE-WP-0002 (vergabe-teilnahme launch): URL-encoding DB passwords at Secret-build time, Django+kube-probe Host-header pattern, publishing issue-core to a Gitea PyPI registry to remove the BuildKit --build-context dependency, kubectl cnpg plugin + SOPS/age in operator onboarding, CI guard against stale yaml vs live CRD drift, and persistent-pod smoke pattern over kubectl run --rm.

Status backlog; pick up individually before the second S5 app onboards.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 20:38:13 +02:00
962c5a1b36 RAILIANCE-WP-0002 T05+T06 done: vergabe-teilnahme is live at https://vergabe-teilnahme.whywhynot.de
Thin Helm chart in charts/vergabe-teilnahme (Deployment + Service), plain values overlay in helm/vergabe-teilnahme-values.yaml, ingress + cert-manager TLS in manifests/vergabe-teilnahme-ingress.yaml. Makefile targets vergabe-dry-run|deploy|ingress-deploy|status|migrate|seed|superuser|logs. Secrets stay in K8s (vergabe-app-credentials + vergabe-teilnahme-env) — no SOPS needed.

Live: pod Running 1/1, /health/ 200 ok, /ausschreibungen/dashboard/ renders Übersicht, /admin/login/ renders Django admin (German). cert-manager issued vergabe-teilnahme-tls in ~35s.

Workplan T07 (migrate+seed+smoke) marked in_progress; migrate completed inline (10+ apps migrated) so the dashboard would render.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 19:46:49 +02:00
6658d0c7e1 RAILIANCE-WP-0002 T04 done: vergabe role + vergabe_db on apps-pg
Platform (railiance-platform 017934d) added managed role 'vergabe' and Database CR vergabe-db owning vergabe_db. Apps side: created vergabe-teilnahme namespace, labeled it railiance.io/postgres-client=apps-pg, mirrored the credential Secret so T05 can wire DSN postgresql://vergabe:.../apps-pg-rw.databases:5432/vergabe_db into Helm values. End-to-end psql confirmed PostgreSQL 16.13.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 15:48:08 +02:00
ceb383e702 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-05-19:
  - update .custodian-brief.md for railiance-apps
2026-05-19 01:51:39 +02:00
8d7f77ac2a Finish Gitea container registry workplan 2026-05-19 01:50:22 +02:00
84271973ae RAILIANCE-WP-0002 T04: link to platform RAILIANCE-WP-0003
apps-pg cluster now has a draft workplan in railiance-platform
(RAILIANCE-WP-0003, workstream 665b3b9b). Adds the consumer recipe
inline so this workplan is self-contained once the platform cluster
goes healthy.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 00:51:06 +02:00
94c02f9608 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-05-19:
  - update .custodian-brief.md for railiance-apps
2026-05-19 00:35:46 +02:00
36c373cc62 RAIL-AP-WP-0001 T04 done: state-hub image pushed and cluster-pullable
Used the GITEA_API_TOKEN env (token owner: tegwick) to log in to
gitea.coulomb.social and push state-hub:local as
gitea.coulomb.social/coulomb/state-hub:{6186a99,latest}.

Image digest:
  sha256:039d29654ccb3754c6ecdbe497c6364bbd8452edcdcb7fa937dd9debf5b734ff

Verified cluster-side pull via kubectl run; pod reached Running in
~5s with no imagePullSecret. The Gitea container registry is now
proven end-to-end for State Hub deployment.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 00:35:15 +02:00
dfe332e965 RAILIANCE-WP-0002 T03 done: image pushed to Gitea registry
Pushed gitea.coulomb.social/coulomb/vergabe-teilnahme:{483a4df,latest}
using the GITEA_API_TOKEN env (token owner: tegwick).

Image digest:
  sha256:e9bbceb35b0239c835d339295a0ae1d2d8b6d08c02a7b4e992c0ecd37de86d7a

Cluster-side pull verified — pod reached Running in ~7s with no
imagePullSecret; the package is public by default, so T05's Helm
release will not need pull credentials wiring.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 00:27:02 +02:00
45cfd7fd66 RAILIANCE-WP-0002 T06 partial: DNS live for vergabe-teilnahme.whywhynot.de
A record now resolves to 92.205.130.254 (Traefik LB). HTTP probe
reaches Traefik and returns 404 as expected (no Ingress rule yet).
Ingress + cert-manager TLS will be created together with the backing
Service from T05 to avoid wasting a Let's Encrypt issuance attempt.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 00:02:00 +02:00
692c1fbfc5 RAILIANCE-WP-0002 T02 done: Dockerfile shipped in vergabe-teilnahme
issue-facade was renamed to issue-core upstream; vergabe-teilnahme
was rewired (commit 17f511f). Multi-stage Dockerfile shipped in
vergabe-teilnahme commit 483a4df. Smoke test passed: container
healthy, /health/ returns 200.

T03 next, but still blocked on the Gitea package-capable PAT
(same blocker as RAIL-AP-WP-0001-T04).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 23:33:44 +02:00
6a63e9d59e RAILIANCE-WP-0002 T02 blocked: vergabe-teilnahme missing issue-facade
uv sync in /home/worsch/vergabe-teilnahme fails because
universal-issue-tracker @ file:///home/worsch/issue-facade points at
an empty directory (only .claude/ remains). The container build
cannot proceed until the upstream dep resolves cleanly.

Documented three resolution options in the workplan; pausing T02
pending an upstream fix.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 22:10:52 +02:00
5895a1b67c RAILIANCE-WP-0002 T01 done; D-01 resolved (option D: apps-pg)
T01 inventory:
- No shared cnpg cluster exists; gitea-db (PG18) and net-kingdom-pg (PG16)
  are app-dedicated in namespace 'databases'.
- Gitea OCI registry reachable at gitea.coulomb.social/v2 (HEAD → 405,
  TLS valid; cert default/gitea-tls ready 3d).
- Traefik LB IP = 92.205.130.254.
- whywhynot.de zone hosted at IONOS (ui-dns.*); A record currently
  217.160.0.212. DNS change is a manual step in the IONOS console.
- cert-manager letsencrypt-prod ClusterIssuer healthy.

D-01 resolved: Option D — railiance-platform will provision a new
shared cnpg cluster 'apps-pg' (PG 16). T04 (vergabe role+db) is now
blocked on that cluster reaching healthy state. Coordination message
sent to railiance-platform.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 20:38:54 +02:00
52efcaa0b2 Propose RAILIANCE-WP-0002: vergabe-teilnahme on railiance01
8-task plan to deploy vergabe-teilnahme as a Helm release at
vergabe-teilnahme.whywhynot.de with image from gitea.coulomb.social
and a dedicated role on the shared cnpg cluster.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 18:21:28 +02:00
2537ca17b8 Refresh agent instruction files 2026-05-18 16:55:48 +02:00
e24568cb40 Gitea container repo activation 2026-05-15 23:02:21 +02:00
d892cbfb13 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-05-15:
  - update .custodian-brief.md for railiance-apps
2026-05-15 16:35:19 +02:00
2967d1db74 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-05-15:
  - update .custodian-brief.md for railiance-apps
2026-05-15 15:39:33 +02:00
2bb0800072 Scope update from repo-scoping refactor 2026-05-01 12:28:45 +02:00
065d1b02f1 feat(gitea): update Helm values with external DB/cache config and add SOPS policy
Restores the newer local gitea-values.sops.yaml (2026-03-27) over the
upstream scaffold (2026-03-10). Adds database, cache, session, and queue
sections pointing to external PostgreSQL/Valkey (S3 platform services),
and disables bundled postgresql/redis/valkey sub-charts.

Also adds .sops.yaml encryption policy for railiance-apps.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 11:52:54 +00:00
49f594ac4d chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-apps
2026-03-27 13:23:56 +01:00
89b777bf6c feat(gitea): take ownership of Gitea Helm values (T06)
Receive gitea-values.sops.yaml from railiance-cluster — S5 now
owns the Gitea deployment lifecycle per ADR-003 boundary rules.

Add gitea-deploy and gitea-status Makefile targets. Update
SCOPE.md to reflect boundary violation resolved.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 13:23:53 +01:00
aa83fb5563 feat(gitea): add Helm values with right-sized PGPool CPU request
PGPool default 250m CPU request was causing scheduling failures on the
single-node COULOMBCORE cluster (2 vCPU, 98% allocated). Reduced to
100m request / 200m limit — safe for a lightweight connection pooler.
See INC-001: the-custodian/ops/incidents/2026-03-25-gitea-pgpool-crashloop.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 11:30:54 +01:00
e8de05b9ab Updated scope 2026-03-20 23:42:20 +01:00