Commit Graph

8 Commits

Author SHA1 Message Date
hatiyildiz
f5daac52af refactor(platform): remove k8gb — replaced by PowerDNS lua-records (#171)
PowerDNS lua-records (`ifurlup`, `pickclosest`, `ifportup`) cover everything
k8gb was doing — geo-aware response selection, health-checked failover,
weighted round-robin — at the authoritative DNS layer. Eliminates a
separate K8s controller, CRD set, and CoreDNS plugin from every Sovereign.

Changes:
- platform/k8gb/ deleted (Chart.yaml, values.yaml, blueprint.yaml never
  authored — only README existed)
- products/catalyst/bootstrap/ui/public/component-logos/k8gb.svg deleted
- componentGroups.ts: remove k8gb component (PowerDNS already there)
- componentLogos.tsx: drop logo_k8gb + k8gb map entry
- model.ts DEFAULT_COMPONENT_GROUPS spine: replace k8gb with powerdns
- StepInfrastructure.tsx: copy refers to PowerDNS lua-records, not k8gb
- provision.html: replace k8gb tile and edges with powerdns
- catalog.generated.ts regenerated (now includes bp-powerdns)
- docs sweep — every k8gb reference in PLATFORM-TECH-STACK, NAMING-
  CONVENTION, SOVEREIGN-PROVISIONING, SRE, ARCHITECTURE, GLOSSARY,
  COMPONENT-LOGOS, IMPLEMENTATION-STATUS, BUSINESS-STRATEGY,
  TECHNOLOGY-FORECAST, README, infra/hetzner/README, platform READMEs
  (cilium, external-dns, failover-controller, litmus, flux, opentofu)
  rewritten to point at PowerDNS lua-records / MULTI-REGION-DNS.md.
  Historical entries in VALIDATION-LOG.md preserved as audit trail.
- New docs/MULTI-REGION-DNS.md — canonical reference for the lua-record
  patterns (ifurlup all/pickclosest/pickfirst, ifportup, pickwhashed),
  Application Placement → lua-record selector mapping, when to add a
  second Sovereign region, operational checks.

Closes #171.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 08:51:09 +02:00
hatiyildiz
224d81e7fe docs(component-count): update 53 → 56 anchors after Pass 105 (spire + nats-jetstream + sealed-secrets)
Closes #137 (and partially #138, #139): platform/ now contains 56 folders
(verified: ls -d platform/*/ | wc -l). Pass 104 set the anchor at 53;
Pass 105 added platform/spire/, platform/nats-jetstream/, and
platform/sealed-secrets/ as G2 wrapper charts for the bootstrap kit
(commit 8c0f766). This brings the count anchor up to date.

Files updated:
- CLAUDE.md L46: '53 folders total' → '56 folders total'
- docs/TECHNOLOGY-FORECAST-2027-2030.md L11: 'all 53 platform components'
  → 'all 56 platform components'
- docs/TECHNOLOGY-FORECAST-2027-2030.md §Mandatory: header (26) → (29);
  added rows for spire, nats-jetstream, sealed-secrets with 2026/2027/2030
  scores + Catalyst-specific notes
- docs/BUSINESS-STRATEGY.md: 26 'bare-53' references → 56 (executive
  summary, principles, comparison tables, expert network, GTM)
- docs/AUDIT-PROCEDURE.md grep #9: anchor expectation 53 → 56; banned-list
  pattern shifted from '52 components' → '53 components' (the now-stale
  count). Deep-read rotation note updated 53 → 56.
- docs/PROVISIONING-PLAN.md: Group K execution-status row reflects the
  refresh; §5 'what doesn't change' clarified that anchor moved 53 → 56.

Verified post-update: grep -rE '\b53 components\b|\b53 platform components\b|\b53 curated\b|\b53-component\b' docs/ README.md CLAUDE.md → empty (excluding VALIDATION-LOG history).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 13:48:24 +02:00
hatiyildiz
7cafa3c894 docs(seaweedfs+guacamole): replace MinIO with SeaweedFS as unified S3 encapsulation; add Guacamole to bp-relay
Component-level architectural correction (two changes):

1. MinIO → SeaweedFS as unified S3 encapsulation layer

The old design used MinIO for in-cluster S3 plus separate cold-tier configuration scattered across consumers. The new design positions SeaweedFS as the single S3 encapsulation layer: every Catalyst component talks to one endpoint (seaweedfs.storage.svc:8333). SeaweedFS internally handles hot tier (in-cluster NVMe), warm tier (in-cluster bulk), and cold tier (transparent passthrough to cloud archival storage — Cloudflare R2 / AWS S3 / Hetzner Object Storage / etc., chosen at Sovereign provisioning). One audit/lifecycle/encryption boundary instead of N. No Catalyst component talks to cloud S3 directly anymore — Velero, CNPG WAL archive, OpenSearch snapshots, Loki/Mimir/Tempo, Iceberg, Harbor blob store, Application buckets all share one S3 surface.

2. Apache Guacamole added as Application Blueprint §4.5 Communication

Clientless browser-based RDP/VNC/SSH/kubectl-exec gateway. Keycloak SSO, full session recording to SeaweedFS for compliance evidence (PSD2/DORA/SOX). Composed into bp-relay. Replaces VPN+native-client distribution for auditable remote access.

Component changes:
- DELETED: platform/minio/
- CREATED: platform/seaweedfs/README.md (unified S3 + cold-tier encapsulation; bucket layout; multi-region replication via shared cold backend; migration-from-MinIO section)
- CREATED: platform/guacamole/README.md (clientless remote-desktop gateway; GuacamoleConnection CRD; compliance integration via session recordings)

Doc updates: PLATFORM-TECH-STACK §1+§3.5+§4.5+§5+§7.4; TECHNOLOGY-FORECAST L11+mandatory+a-la-carte counts (52 → 53); ARCHITECTURE §3 topology; SECURITY §4 DB engines; SOVEREIGN-PROVISIONING §1 inputs; SRE §2.5+§7; IMPLEMENTATION-STATUS §3; BLUEPRINT-AUTHORING stateful examples; BUSINESS-STRATEGY 13 component-count anchors + Relay product line; README.md backup row; CLAUDE.md folder count.

Component README updates (S3 endpoint + dependency renames): cnpg, clickhouse, flink, gitea, iceberg, harbor, grafana, livekit, kserve, milvus, opensearch, flux, stalwart, velero (substantive rewrite of velero — now writes exclusively to SeaweedFS with cold-tier auto-routing). Products: relay, fabric.

UI scaffold: products/catalyst/bootstrap/ui/src/shared/constants/components.ts — minio entry replaced with seaweedfs; velero+harbor deps updated; new guacamole entry added.

VALIDATION-LOG entry "Pass 104 — MinIO → SeaweedFS swap + Guacamole add" captures the encapsulation principle and adds Lesson #22: storage tier policy belongs at the encapsulation boundary, not inside every consumer.

Verification: zero remaining MinIO references in canonical docs (one intentional retention in TECHNOLOGY-FORECAST L37 explaining the swap); 53 platform/ folders matching all "53 components" anchors; bp-relay composition includes guacamole.
2026-04-28 10:23:46 +02:00
hatiyildiz
4277254577 docs(pass-52): bundled date-sweep + cross-component namespace clean; knative clean
Pass 47 carry-over: 4 docs had stale "Updated: 2026-02-26" markers
despite Pass 27/34/45 architectural edits. Updated all to 2026-04-28:
- products/fabric/README.md (Pass 34 TENANT rename)
- products/cortex/README.md (Pass 34 TENANT + DNS fixes)
- products/fingate/README.md (Pass 34 TENANT + 6 URL templates)
- docs/TECHNOLOGY-FORECAST-2027-2030.md (Pass 27 + Pass 45)

products/relay/README.md left at 2026-02-26 — no architectural edits
since (verified via git log --follow).

Cross-component namespace sweep (Pass 51 lesson #16): all shared
dependencies use canonical namespaces consistently across components:
- minio.storage.svc: 10 instances ✓
- kafka-kafka-bootstrap.databases.svc: 4 instances ✓
- strimzi-kafka-bootstrap.databases.svc: 3 instances ✓
- opensearch.search.svc: 3 instances ✓

First pass where cross-component namespace sweep returned fully clean
— significant convergence signal. The drift category that Pass 41 +
Pass 51 hunted is now closed.

platform/knative/README.md: clean. Banner correct (§4.6 AI/ML).
Pass 32 image registry fix intact.
2026-04-28 00:37:21 +02:00
hatiyildiz
e4771c2172 docs(pass-45): TECHNOLOGY-FORECAST A La Carte header count drift; syft-grype clean
§"A La Carte Components (26)" header was stale. Pass 27 added
anthropic-adapter to the table body but didn't update the header count.
Pass 40 confirmed canonical count is 27 in PLATFORM-TECH-STACK §1.

Verified by counting:
- Mandatory: 25 platform/-folder components + OpenTelemetry note = 26 ✓
- A La Carte: 27 platform/-folder components ✓
- Total platform/ folders: 52 (matches Overview L11 "all 52 platform
  components" and the 52 directories in platform/)

Fixed header (26) → (27). 25 + 27 = 52 = Overview claim. Internally
consistent.

Lesson: union-equality checks must verify both body count AND header
count. Adding an item to a body without updating the header creates
off-by-one drift.

§"Removed Components" Dapr/RabbitMQ "Kafka covers..." entries reviewed:
defensible context (app-level use cases; NATS is control-plane only,
Kafka via Strimzi is the Application Blueprint).

§"Product Impact Analysis / Fabric" L110 "Merging Titan + Fuse into
Fabric" — historical product-rename narrative (Pass 26 documented).
Capital-F "Fuse" missed by case-sensitive \bfuse\b grep — extending
Pass 38 case-insensitivity lesson to this category as well.

platform/syft-grype/README.md: clean. Banner correct (per-host-cluster
§3.3). Catalyst integration accurate.
2026-04-27 23:49:20 +02:00
hatiyildiz
ec6e68a360 docs(pass-27): TECHNOLOGY-FORECAST mandatory/à-la-carte vs PLATFORM-TECH-STACK
opensearch was listed under "Mandatory Components" but per PLATFORM-TECH-STACK
§4.4 + §10 it is an Application Blueprint — customers install it (alongside
ClickHouse + bp-specter) only when they want the SIEM pipeline. Conversely
keycloak was under "A La Carte Components" but §2.1 places it inside the
Catalyst control plane (per-Org realms in SME, per-Sovereign realm in
corporate — present on every Sovereign).

Swapped the two entries and added a classification-basis banner above the
Mandatory section explicitly pointing at PLATFORM-TECH-STACK §2/§3/§4 so the
forecast's Mandatory/A-la-carte axis lines up with the architectural
categorization in canonical docs.

platform/milvus/README.md: clean.

Validation log Pass 27 entry added.
2026-04-27 22:27:09 +02:00
hatiyildiz
b857f46706 docs(strategy,forecast): terminology pass — Catalyst as platform, console not IDP
Targeted updates to BUSINESS-STRATEGY.md §5.1 and §9.2 plus
TECHNOLOGY-FORECAST §removed-components.

- BUSINESS-STRATEGY.md §5.1: OpenOva Catalyst row repositioned. It is
  the platform itself (the self-sufficient Kubernetes-native control
  plane that turns any cluster into a Sovereign), not a sub-product
  bundling bootstrap+IDP+lifecycle manager. Other OpenOva products
  (Cortex, Fingate, Fabric, Relay, Specter, Axon) run ON Catalyst as
  composite Blueprints.

- BUSINESS-STRATEGY.md §9.2: capability matrix "Developer portal" cell
  updated from "Catalyst IDP" to "Catalyst console" — IDP function is
  one of the console's responsibilities, not a separate product.

- TECHNOLOGY-FORECAST.md §removed-components: Backstage row updated to
  describe replacement as "Catalyst console (the platform's own
  developer-facing UI)" rather than the now-retired "Catalyst IDP"
  sub-product.

Strategy narrative, market segmentation, pricing model, and migration
playbook are unchanged — they stand on their own.

Refs #37
2026-04-27 20:06:31 +02:00
talent-mesh
435f49738d feat: restructure platform to 52 components and 9 products
Technology forecast and strategic review restructure:
- Remove 13 components (backstage, mongodb, activemq, vitess, airflow, camel, dapr, superset, searxng, langserve, trino, lago, rabbitmq)
- Add 10 components (sigstore, syft-grype, nemo-guardrails, langfuse, reloader, matrix, ferretdb, litmus, livekit, coraza)
- Rename product: Synapse → Axon (SaaS LLM Gateway)
- Merge products: Titan + Fuse → Fabric (Data & Integration)
- New product: Relay (Communication)
- Replace Backstage with Catalyst IDP
- Replace MongoDB with FerretDB (MongoDB wire protocol on CNPG)
- Add supply chain security (Sigstore/Cosign, Syft+Grype)
- Add AI safety and observability (NeMo Guardrails, LangFuse)
- Add technology forecast 2027-2030 document
- Full verification pass: zero stale references across all docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 21:00:19 +00:00