A modular, declarative Infrastructure as Code (IaC) platform for managing complete infrastructure lifecycles
  • Nickel 76.5%
  • HTML 15.9%
  • NCL 3.8%
  • Jinja 2.3%
  • Nushell 1.4%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
claude-bot 6d89de5e89
biop: what a LoadBalancer asks LB-IPAM for, and whether it got it
Written because answering that question by hand took a cluster sweep, a docs
read and a look at Cilium's source, and produced a WRONG intermediate conclusion
on the way — that `io.cilium/lb-ipam-ips` is ignored. It is not. v1.19.5 keeps it
as LBIPAMIPKeyAlias in pkg/annotation/k8s.go, so both spellings work, which is
precisely why the deprecated one survives unnoticed and why nothing in the
cluster reveals who depends on it.

TWO CLAIMS, and they are different questions:

  spelling   no LoadBalancer asks with the deprecated annotation. This
             workspace does not need the backwards compatibility, so the alias
             is a liability with no upside: the day it is removed, everything
             still using it stops requesting an address and silently takes
             whatever a selector-less pool offers.
  honoured   every service that requests an address HOLDS it. LB-IPAM does not
             fail an unsatisfiable request — it falls back to any eligible pool,
             so the service comes up on the wrong address and nothing reports it.

Both together, because either alone passes in a broken state. The spelling check
alone passes on a service that asks correctly and is given something else. The
honoured check alone passes on a cluster whose pools each hold exactly ONE
address behind a matching selector — which is libre-wuji's state, and the reason
its annotations were never load-bearing and their spelling never mattered until
someone looked.

Watched failing on both branches before being trusted: disabling the spelling
half passes, and pointing the request key at an annotation whose value is not an
IP produces the unhonoured report.

It finds three today: cilium-gateway-libre-wuji, cilium-gateway-registry and
mail/docker-mailserver still carry the deprecated key on the SERVICE. The
Gateway object was corrected; Cilium's controller propagates annotations onto
the derived Service and does not remove stale ones, so the Service keeps both
until it is recreated. The catalog also still writes the old spelling in
stalwart, fleet_daemon and zot.

Claude-Session: https://claude.ai/code/session_0188g33gGhjP3SfnXDoMAYMp
2026-08-20 23:35:20 +01:00
.ontoref biop: what a LoadBalancer asks LB-IPAM for, and whether it got it 2026-08-20 23:35:20 +01:00
assets provisioning: clean-start baseline (constellation materialization) 2026-07-09 22:56:43 +01:00
resources provisioning: clean-start baseline (constellation materialization) 2026-07-09 22:56:43 +01:00
schemas gitignore: anchor the constellation member names, and recover 143 schema files 2026-08-20 18:53:28 +01:00
scripts tools(agent-git): the agent had no way to sign its own work 2026-08-17 23:25:23 +01:00
.gitignore gitignore: anchor the constellation member names, and recover 143 schema files 2026-08-20 18:53:28 +01:00
CHANGELOG.md feat(cell): the loader was never missing — express the first cells, and fix the guards they exposed 2026-08-11 22:58:05 +01:00
justfile tools(agent-git): the agent had no way to sign its own work 2026-08-17 23:25:23 +01:00
README.md provisioning: clean-start baseline (constellation materialization) 2026-07-09 22:56:43 +01:00

Provisioning

Infrastructure Orchestration With Configuration as Code

Declarative infrastructure management with Nickel schemas, Nushell orchestration, and Rust executables. Type-safe configuration, automated validation, and cloud-native deployment across Kubernetes, Docker, and custom platforms.

provisioning/
├── .ontoref/       protocol spine — ontology, ADRs, reflection, positioning
├── assets/         canonical brand assets — logos, SVG marks
├── code/           git repo (implementation, platform, CLI, Nickel schemas)
├── outreach/       web content, architecture diagrams, presentations
└── vault/          private strategy (placeholder)

Quick start

cd code
just build          # build all crates
just check          # cargo check + clippy
just sync-assets    # sync brand assets from ../assets/ into code/assets/
ontoref describe project    # project identity, axioms, FSM state

Sub-repos

Path Remote Purpose
code/ https://rlung.librecloud.online/jesus/provisioning Implementation — Rust platform, Nickel schemas, Nushell orchestration
outreach/ Web content, diagrams, presentations
vault/ Private strategy (SOPS-encrypted)

Full technical docs → code/README.md