Commit graph

2062 commits

Author SHA1 Message Date
codex
84dfdc4dc9 chore(consistency): register RAIL-HO-WP-0010 hub ids
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
2026-08-15 20:56:47 +02:00
custodian-sync
a8bed80da8 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Updated by fix-consistency on 2026-08-15:
  - update .custodian-brief.md for railiance-infra
2026-08-15 20:56:02 +02:00
codex
dea6c72d54 workplan: RAIL-HO-WP-0010 new reefs need a grant for 80/443
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Intake from RMASTER-WP-0023. 6443 stays operator-only.
2026-08-15 20:52:04 +02:00
codex
33c95fc83e chore(consistency): mark RAIL-HO-WP-0008 finished in work-records
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-15 19:05:11 +02:00
custodian-sync
7b0b4c311c chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Updated by fix-consistency on 2026-08-15:
  - update .custodian-brief.md for railiance-infra
2026-08-15 19:05:04 +02:00
codex
0a97ce12be Publish railiance01 resource evidence and close RAIL-HO-WP-0008
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Has been cancelled
Non-secret identity, a reproducible capacity observation, and host-ops
labor/exit inputs for resource:hosteurope:railiance01. Booked price and
contract dates stay unknown for their owners.
2026-08-15 19:04:40 +02:00
codex
39070ed292 chore(consistency): mark RAIL-HO-WP-0009 finished in work-records
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-15 17:58:32 +02:00
custodian-sync
423a7c8426 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Updated by fix-consistency on 2026-08-15:
  - update .custodian-brief.md for railiance-infra
2026-08-15 17:57:43 +02:00
codex
d0e8f9f24e Apply Railiance01 firewall-only converge and close RAIL-HO-WP-0009
Some checks are pending
CI Smoke / container-smoke (push) Waiting to run
CI Smoke / host-smoke (push) Successful in 0s
Operator-approved playbooks/firewall.yaml --tags firewall removed the
three public 6443 grants. Live UFW now matches ADR-005 (OpenSSH + Nydus).
2026-08-15 17:57:17 +02:00
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
custodian-sync
434121be99 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Updated by fix-consistency on 2026-08-15:
  - update .custodian-brief.md for railiance-infra
2026-08-15 15:41:32 +02:00
codex
f43c718935 docs: point at RMASTER-WP-0017 after master prefix rename
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-14 14:29:19 +02:00
custodian-sync
6d9be5fa29 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Updated by fix-consistency on 2026-08-12:
  - update .custodian-brief.md for railiance-infra
2026-08-12 03:29:19 +02:00
codex
95e3361598 Tighten the Goss firewall assertion and render it from the declaration
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
The conformance checker existed but had not run since 2026-03-09, and its
firewall assertion matched /6443\/tcp.*ALLOW/ - asserting the port was allowed
but not from whom. It passed identically whether the API was restricted to one
operator address or open to the entire internet, which is precisely the drift
that went undetected.

goss/baseline.yaml is now a template rendered per host from the same inventory
declaration that converges the host, so the assertion cannot drift from what it
checks. It asserts each declared source is present, that no revoked source
retains access, and that 6443 is never ALLOW Anywhere. verify.yaml gained the
vars_files the bootstrap play already had - without it the firewall assertions
rendered empty and silently asserted nothing, which is worse than no check.

Result on Railiance01: 32 assertions, 31 pass. The one failure is a real find
and is recorded as T06 - Flannel VXLAN is declared open to Anywhere with no
source restriction, the same defect pattern as the k3s rule. It is currently
absent from the host, so converging would INTRODUCE the exposure rather than
fix drift. Must be resolved before RAIL-BS-WP-0007 multi-node HA needs working
VXLAN.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 03:28:35 +02:00
codex
3d1bd75b6b Record two further drift findings in T03
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
UFW is entirely inactive on CoulombCore - no firewall on a host running ArgoCD,
the registry and databases - while the declared baseline says UFW active with
default deny. Same defect class as the k3s finding but in the opposite
direction: the declaration is stronger than reality, and equally undetected.
Not an emergency (6443 unreachable from outside, 22/443/80 the expected
surface), but converging that host would enable UFW on a frozen production
system and needs its own decision.

Full convergence of Railiance01 carries 11 changes, most unrelated to the
firewall and none ever applied, including a user-slice memory cap that could OOM
running agent workloads. The base role has no tags, so convergence cannot be
scoped - adding tags folded into this task.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 02:00:17 +02:00
custodian-sync
31f19b8674 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-08-12:
  - update .custodian-brief.md for railiance-infra
2026-08-12 01:46:58 +02:00
codex
3c38b0625a Declare a third operator address; record T02 progress and why full converge was held
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
89.244.90.255 appeared in the live allowlist mid-session. Verified legitimate:
SSH pubkey auth as tegwick from that address on 2026-08-02, and UFW BLOCK
entries on 6443 immediately before it was granted. Now declared.

Both stale grants are deleted from the live host, so the security goal of T02 is
met and the live 6443 allowlist matches the declaration exactly.

Full convergence deliberately held: --check reports 11 changes, mostly unrelated
to the firewall, including MemoryMax=1500M on user-1000.slice which could OOM
running agent workloads, plus an sshd restart. That is a separate decision, and
the base role has no tags so convergence cannot be scoped to UFW alone. Records
both follow-ons.

The allowlist drifting again by hand during the session that was fixing
allowlist drift is now recorded as the strongest argument for T04, removing the
API from the public internet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 01:46:36 +02:00
codex
35ddfa5f78 Refresh Current State: four-axis model, hosts supersession, open security work
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Corrects the '5-repo stack architecture' phrasing, which predates the four-axis
repo-family model. Records that railiance-hosts is superseded by this repo with
retirement pending in railiance-master, and surfaces RAIL-HO-WP-0009 with the
honest status that the declarative allowlist is committed but not yet converged,
so the live host still carries two stale grants.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 00:05:13 +02:00
custodian-sync
dffd6c561e chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Updated by fix-consistency on 2026-08-12:
  - update .custodian-brief.md for railiance-infra
2026-08-12 00:02:14 +02:00
codex
f4a7805cca Open RAIL-HO-WP-0009: firewall declared-state integrity and k3s API exposure
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Records the security defect found 2026-08-11: this repo declared 6443/tcp open
to Anywhere while the live host was source-restricted by hand, so converging the
base role would have exposed the Kubernetes API to the internet. A hardening run
that de-hardens, undetected because nothing compares declared UFW state to live
UFW state.

T01 (declarative allowlist) is done. T02 converges it - production action,
approval required, and until it runs the host still carries two stale grants to
addresses the ISP may have reassigned. T03 audits the role for the same class of
defect and asks about the undeclared 2224/tcp open to Anywhere. T04 proposes
removing the API from the public internet via the ops-bridge tunnel pattern
already documented for CoulombCore. T05 routes a declared-vs-live conformance
check to the unowned Q7 loop.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 00:01:39 +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
custodian-sync
88e71f7bd1 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-08-11:
  - update .custodian-brief.md for railiance-infra
2026-08-11 14:45:48 +02:00
codex
6508a853e4 Adopt Target Revenue Source License V1C1 (org-wide preliminary rollout)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Maintainer decision, 2026-07-29: adopts TRSL V1C1 as this repo's
preliminary governing license, per target-revenue's
workplans/TREV-WP-0008-governance-and-pilot-rollout.md T05. Full
specialist legal review is deferred until out of beta (target-revenue
SCOPE.md §1). No Phase is yet declared for this repo.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 00:53:42 +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
custodian-sync
992e42a232 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 5s
Updated by fix-consistency on 2026-07-25:
  - update .custodian-brief.md for railiance-infra
2026-07-25 15:01:04 +02:00
custodian-sync
1d8c0c65fb chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 5s
Updated by fix-consistency on 2026-07-25:
  - update .custodian-brief.md for railiance-infra
2026-07-25 15:00:40 +02:00
codex
fba5485bbd Add first reef rollout workplan
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
2026-07-25 10:54:29 +02:00
custodian-sync
ae660d275f chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 4s
Updated by fix-consistency on 2026-07-25:
  - update .custodian-brief.md for railiance-infra
2026-07-25 10:19:35 +02:00
c23bea897e chore: archive finished RAIL-HO-WP-0005 (Forgejo production migration)
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 15s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 00:33:10 +02:00
custodian-sync
1f1a3bcab4 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-07-14:
  - update .custodian-brief.md for railiance-infra
2026-07-14 00:32:39 +02:00
5d5cac8bad RAIL-HO-WP-0005: finished (descoped) — Forgejo migration complete
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
T04/T09 closed on descope: encrypted off-cluster backup + passed restore drill
(RAILIANCE-WP-0013) meet migration safety bar; residual CNPG barman ScheduledBackup
hardening handed to a backup followup. Migration re-verified 2026-07-14.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 00:31:49 +02:00
custodian-sync
6042f75eda chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Updated by fix-consistency on 2026-07-10:
  - update .custodian-brief.md for railiance-infra
2026-07-10 15:23:35 +02:00
ebd572e63c Sync RAIL-HO-WP-0006 State Hub IDs from fix-consistency
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 4s
2026-07-09 12:00:52 +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
custodian-sync
810a6de51f chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 7s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for railiance-infra
2026-07-09 11:32:44 +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
0c3968a108 CUST-WP-0055 T07: add archive workplan terminology grandfather note
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-08 20:26:37 +02:00
c6f7fe865f docs: workplan-first agent guidance prose (CUST-WP-0055 T04 batch 3)
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 3s
2026-07-08 17:15:30 +02:00
custodian-sync
336862ba0a chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Updated by fix-consistency on 2026-07-08:
  - update .custodian-brief.md for railiance-infra
2026-07-08 15:36:54 +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
custodian-sync
36fcfd4d85 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Updated by fix-consistency on 2026-07-08:
  - update .custodian-brief.md for railiance-infra
2026-07-08 15:20:04 +02:00
c90d697db0 Regenerate agent instructions from state-hub templates (CUST-WP-0055 T01)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Sync AGENTS.md, CLAUDE.md, and .claude/rules from updated project_rules
templates: workplan-first session protocol, legacy terminology footnote,
and GET /workplans/ examples.
2026-07-08 14:50:35 +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