Commit graph

33 commits

Author SHA1 Message Date
codex
4d9e77c968 Close RAIL-HO-WP-0009 declared-state gaps; leave live 6443 prune gated
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Make the k3s API tunnel-only (ADR-005), stop declaring Flannel VXLAN
open to Anywhere, tag the base role so firewall can be scoped, and
schedule the Goss declared-vs-live check. CoulombCore sets ufw_manage
false so a converge cannot enable UFW there. T02 still needs operator
approval for make converge-firewall HOST=Railiance01.
2026-08-15 15:41:59 +02:00
codex
c84fe7a3de Make the k3s API firewall allowlist declarative
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
The live host restricted 6443/tcp to specific operator addresses, added by hand,
while this role still declared the port open to Anywhere with no source
restriction. The declared config was weaker than reality: running the base role
would have REMOVED the restriction and exposed the Kubernetes API to the
internet. Security was tightened on the host and never fed back into the source
of truth.

Found 2026-08-11 while diagnosing lost cluster access, which turned out to be an
ISP lease rotation (89.244.90.246 -> .236) against a hand-maintained allowlist.

Changes:
- defaults: k3s_api_allowed_sources (empty = 6443 closed to all external
  sources, the safe failure; SSH unaffected so the host stays recoverable) and
  k3s_api_revoked_sources, so rotated addresses are pruned rather than left as
  standing grants to whoever the ISP reassigns them to
- tasks: grant approved sources, then remove any blanket rule, then revoke
  retired ones. Order matters - grants are added before the blanket rule is
  deleted so convergence never opens a window with no API access
- group_vars/all.yaml: the current operator address, plus the two stale grants
  (.246 rotated, 85.132.220.102 historic) marked for revocation
- docs/verification.md: state that 6443 is source-restricted rather than
  listing it as a plainly allowed port

Not yet converged against the live host - the role change is committed but
running it is a production action needing operator approval.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 23:56:28 +02:00
codex
a5f16c79e1 Rename first home reef target to reef-railiance
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 5s
2026-07-26 09:00:32 +02:00
codex
e176738fad Define S1 reef rollout handoff
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
2026-07-25 15:13:41 +02:00
23226b1e8a Add RAIL-HO-WP-0006 registry ref cleanup workplan (finished)
Some checks are pending
CI Smoke / container-smoke (push) Waiting to run
CI Smoke / host-smoke (push) Waiting to run
2026-07-09 11:59:08 +02:00
6ce65d09b6 WP-0005: resolve bootstrap alias, note OCI/npm migration
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 4s
Document railiance-bootstrap → railiance-cluster hub resolution and layer-repo
registry ref migration in workplan and retirement checklist.
2026-07-09 11:38:14 +02:00
1404e56c0e WP-0005 T12: Option A — keep Gitea fallback, 30-day window
Some checks failed
CI Smoke / host-smoke (push) Successful in 2s
CI Smoke / container-smoke (push) Has been cancelled
Operator decision: retain coulombcore Gitea Helm as read-only fallback with a
30-day rollback window (2026-07-08 → 2026-08-07). Mark T12 done; update
rollback runbook and retirement checklist.
2026-07-09 11:32:25 +02:00
040ccccc8e WP-0005: T12 prep checklist, backup gate 4/7, doc refresh
Update workplan with Jul 9 cron success (4/7 gate, ETA Jul 12), add Gitea
retirement dependency scan and operator checklist, and align deploy-stack,
restore-drill evidence, and migration inventory with post-cutover state.
2026-07-09 10:34:44 +02:00
96678c210d Complete RAIL-HO-WP-0005 T11 production cutover
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Gitea org archived (79/79), package push disabled, ArgoCD repointed to Forgejo,
and rollback runbook added. Mark T11 done; T12 remains after stabilization.
2026-07-08 15:36:22 +02:00
b3a065a1c9 Update RAIL-HO-WP-0005: migration ladder complete, backup cron fixed
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Mark T01 and T10 done after paginated forge comparison shows 0 Gitea-only
repos and all State Hub remotes on Forgejo. Advance T11 to progress with
per-repo cutover complete; Gitea read-only marking awaits operator signoff.

Refresh forgejo-migration-inventory.md with 2026-07-08 closure addendum.
Document backup cron PATH fix and 3/7 gate status after manual run.
2026-07-08 15:20:19 +02:00
eda797bd37 WP-0005: promote tier-2 tooling repos and refresh hub drift
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Promote ops-bridge, open-reuse, and artifact-store to Forgejo (wave-2).
Re-patch all Forgejo-hosted registered hub remotes after drift. Update
workplan and inventory: backup gate 2/7, Forgejo org 20 repos, hub 16/46.
2026-07-08 00:29:07 +02:00
ef886f66ea WP-0005: wave-2 queue, promote ihp-railiance-probe, smaller restore chunks
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Document tier-2/3 promotion queue; note ihp-railiance-probe tier-1 promotion;
align restore drill chunk size with backup tooling.
2026-07-08 00:11:12 +02:00
826fd93603 Advance WP-0005 T01/T10: Gitea inventory and hub drift cleared
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 35s
Record partial Gitea org inventory, 40-repo migration gap, and patch
ops-warden hub remote_url so all Forgejo-hosted registrations align.
2026-07-08 00:03:48 +02:00
1da9c3269b Pass Nextcloud backup restore drill for Forgejo (T09)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 9s
Decrypt production forgejo-dump artifact, restore 14 repos in isolated
namespace, and harden restore script for large chunked copy and drill mailer stub.
2026-07-07 22:44:55 +02:00
b06ceb6b82 WP-0005 T04/T09: note forgejo-backup automation in railiance-platform
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 12s
Makefile targets and operator doc landed; cron and 7-day gate remain.
2026-07-07 17:19:19 +02:00
48610117c7 Update RAIL-HO-WP-0005 with Forgejo cutover progress and mark T08 done
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Sync the workplan file with State Hub (fix-consistency backing link), record
2026-07-06 state-hub tier-3 cutover evidence, refresh the Forgejo org
inventory snapshot, and close T08 now that Actions criteria are met.
2026-07-07 01:50:57 +02:00
c664aebd1d RAIL-HO-WP-0005: record tier 2.5 railiance stack Forgejo promotion
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Inventory and workplan updates for enablement templates, tegwick SSH, and
railiance-* repos canonical on forgejo-remote.
2026-07-04 12:51:05 +02:00
092315895f RAIL-HO-WP-0005-T09: Forgejo backup/restore drill assets and evidence
Add isolated-namespace restore drill (CNPG cluster, PVC, orchestration script)
and document successful 2026-07-04 run: production forgejo dump restored with
health 200 and pilot repos visible via API. Scheduled backups remain open.
2026-07-04 11:26:50 +02:00
2d62317ada RAIL-HO-WP-0005-T10: tier-2 key-cape image pilot complete
Records successful key-cape Forgejo migration, image CI workflow, and
railiance01 registry pull; tiers 0-2 of migration ladder now satisfied.
2026-07-04 10:26:28 +02:00
67b259f6dc Adapt RAIL-HO-WP-0005 for production Forgejo and staged repo ladder
Reflects live railiance01 deploy, cancels isolated probe T03 in favor of
in-production pilots, marks T08/T10 progress (forgejo-actions-probe,
glas-harness), and documents tier 0-3 migration sequencing before state-hub.
2026-07-04 01:02:42 +02:00
6b0ededee2 ADR-004: Forgejo in-cluster Actions runner on railiance01
Decides long-lived runner Deployment with DinD sidecar; updates
RAIL-HO-WP-0005 runner model decision.
2026-07-03 22:29:28 +02:00
2ad38b4a1a docs: start Forgejo migration inventory 2026-06-04 01:34:33 +02:00
2d7e0101bc feat(infra): UFW k3s routing + full deploy runbook
- base role: allow UFW routing direction (required for k3s flannel
  pod networking to function across nodes)
- docs/deploy-stack.md: full S1→S5 ordered deploy runbook with
  pre-conditions checklist and layer-by-layer steps

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 02:28:51 +01:00
a680fb51af feat(adr): add ADR-003 (5-repo OAS stack); supersede ADR-002
ADR-003 formalises the 5-repo structure aligned with OAS Stack S1-S5:
railiance-infra, railiance-cluster, railiance-platform,
railiance-enablement, railiance-apps. Defines boundary rule, pre-condition
chain, and content relocation table. ADR-002 marked superseded.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 00:27:18 +01:00
b32dfd4f5a docs: add verification guide, close WP-0002
- docs/verification.md: explains spec/server-baseline.yaml, goss/baseline.yaml,
  make verify workflow, assertion mapping table, and how to add new checks
- docs/convergence.md: replace manual spot-check snippet with make verify reference
- workplans/RAIL-HO-WP-0002: mark completed (all tasks done, workstream closed)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 19:37:10 +01:00
8f5799553e feat: implement WP-0002 — Goss test suite, verify playbook, and ADR-002
- goss/baseline.yaml: assertions for all spec/server-baseline.yaml items
  (packages, services, SSH config, UFW rules, admin user, fail2ban, HISTCONTROL)
- goss/vars/baseline-vars.yaml: parameterised ports and paths
- ansible/roles/goss/: installs Goss binary (v0.4.9), deploys tests,
  runs assertions in TAP format, fetches report to reports/
- ansible/playbooks/verify.yaml: playbook wrapping the goss role
- Makefile: add 'make verify' target; update 'make status' with hint
- docs/adr/ADR-002: formal repo boundary — railiance-hosts vs railiance-bootstrap
- workplans/RAIL-HO-WP-0002: registered workstream 8fed53c2, T03–T06 done

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 12:38:48 +01:00
492f605895 docs: establishing baseline security and tools 2025-09-14 04:10:57 +02:00
26d2854c07 docs: added fast path documentation 2025-09-14 01:08:26 +02:00
389c20478f docs: add documentation for provisioning a server 2025-09-14 00:57:26 +02:00
75af105f6c docs: added documentation about setting up ssh-access 2025-09-14 00:47:41 +02:00
1192a0cece docs: added secrets handling digest 2025-09-13 22:52:18 +02:00
59bc9bbcf4 docs: improved masterkey setup documentation 2025-09-13 22:48:15 +02:00
31f30373a0 docs: add documentation about secret key generation 2025-09-13 20:47:24 +02:00