Compare commits

...
149 Commits
Author SHA1 Message Date
Nubenetes Bot 2d6c1f16ab Merge release/v2.9.35 into master 2026-06-20 16:47:33 +02:00
Nubenetes BotandClaude Opus 4.8 e5c5b94d46 release: v2.9.35 — Kubernetes provider hub
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:47:31 +02:00
Inaki 8719fec736 Merge pull request #428 from nubenetes/feat/kubernetes-hub
feat(v2/gen): add Kubernetes provider hub (sub-page index)
2026-06-20 16:47:05 +02:00
Nubenetes BotandClaude Opus 4.8 ce82aa07ec feat(v2/gen): add Kubernetes provider hub (sub-page index)
Audit of fragmentation found only two prefix clusters: aws (fixed in v2.9.34)
and kubernetes. Unlike AWS, kubernetes is well-classified — a rich parent (157
links) with substantial, distinct children (tools 144, networking 64, security
52, monitoring 24, storage 14, autoscaling 13, ...), not 1-3 link stubs. So
NOTHING is merged for kubernetes; this only adds a 'Deep-Dive Topic Pages' hub
to kubernetes.md indexing its 14 substantial sub-pages (Tools · Networking ·
Security · Monitoring · Storage · Autoscaling · Operators · Alternatives ·
Big Data · Tutorials · Backup & Migrations · Client Libraries · Local Dev ·
On-Premise) — purely additive navigation, no merging, no pruning.

Other small pages (pulumi, kustomize, registries, angular, ...) are legitimate
distinct topics, not fragments of a parent, so they are intentionally left
alone. Verified with --render-only; generator-only, CI republishes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:46:58 +02:00
Nubenetes Bot 0f57980748 docs: automated README metric synchronization [skip ci] 2026-06-20 14:43:18 +00:00
Nubenetes Bot 9bc0ee991d merge: back-merge v2.9.34 into develop 2026-06-20 16:42:52 +02:00
Nubenetes Bot 0da202d00d Merge release/v2.9.34 into master 2026-06-20 16:42:38 +02:00
Nubenetes BotandClaude Opus 4.8 42c0006340 release: v2.9.34 — AWS de-fragmentation + provider hub
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:42:36 +02:00
Nubenetes Bot ddbf3bdd3b docs: automated README metric synchronization [skip ci] 2026-06-20 14:42:30 +00:00
Inaki 3fb5fd8606 Merge pull request #427 from nubenetes/feat/aws-defragment-hub
feat(v2/gen): de-fragment AWS pages — consolidate stubs + provider hub
2026-06-20 16:42:10 +02:00
Nubenetes BotandClaude Opus 4.8 c271c69b1f feat(v2/gen): de-fragment AWS pages — consolidate stubs + provider hub
The AWS landing page rendered with only ~3 links because AWS content was split
across ~20 granular pages (Azure/GCP use a single rich page each), and many AWS
sub-pages had just 1-5 links. Two generator changes fix this:

A. Provider hub: aws.md now renders a 'Deep-Dive Topic Pages' index linking to
   the substantial AWS sub-pages that remain (Serverless · Storage · Networking
   · Security · IaC · Backup · New Features), via a new self.subpage_hubs map.
   So the landing is a navigable index instead of a stub.

B. Stub consolidation: the near-empty / junk-drawer AWS sub-pages (<=7 links,
   plus 'miscellaneous') merge into aws.md via the existing merge_map mechanism
   (aws-miscellaneous, aws-databases, aws-devops, aws-containers, aws-monitoring,
   aws-architecture, aws-tools-scripts, aws-messaging, aws-data, aws-training,
   aws-pricing). Those slugs are also removed from self.dimensions so the full
   pipeline prunes the orphaned pages and auto-syncs the nav.

Verified locally with --render-only: aws.md goes from 3 to 44 links plus the
7-child hub block; V1 (docs/) is untouched by design — it stays the exhaustive
archive and is still read as the merge source. No regenerated v2-docs or
inventory committed (CI republishes per the generator→republish pattern).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:41:50 +02:00
Nubenetes Bot 8bda35ffb2 docs: automated README metric synchronization [skip ci] 2026-06-20 14:32:22 +00:00
Nubenetes Bot bf300df560 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 14:31:58 +00:00
Nubenetes Bot 2963b905e5 merge: back-merge v2.9.33 into develop 2026-06-20 16:29:09 +02:00
Nubenetes Bot 8e6845a5cf Merge release/v2.9.33 into master 2026-06-20 16:28:55 +02:00
Nubenetes BotandClaude Opus 4.8 72c80a0156 release: v2.9.33 — quick-nav menu expansion (38 destinations)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:28:52 +02:00
Nubenetes Bot b394ee2b75 docs: automated README metric synchronization [skip ci] 2026-06-20 14:28:46 +00:00
Inaki 0e80915be8 Merge pull request #426 from nubenetes/feat/v2-quicknav-expand-menus
feat(v2/nav): expand quick-nav menus with 13 high-value pages (38 total)
2026-06-20 16:28:25 +02:00
Nubenetes BotandClaude Opus 4.8 79a13bd9ac feat(v2/nav): expand quick-nav menus with 13 high-value pages (38 total)
Data-driven expansion (ranked by per-page link count + relevance):
- New 📊 Digest menu: Tech & Cloud Digest + Industry & Geo Digest (was a single
  pill; now pairs both editions).
- New 🧰 K8s menu: Kubernetes Tools (144 links) · Helm · Managed K8s · OpenShift
  · Tutorials — the Kubernetes ecosystem, which the portal is centered on.
- ☁️ Cloud += Serverless · FinOps.
- 🌐 Network += Service Mesh (the category alongside Istio; Istio emoji → ).
- ⚙️ Ops += IaC · Developer Portals.
- ⋯ More += Technical Tags (1355 links) · Demos (102).

38 destinations total across 6 direct pills + 7 Popover menus. Added explicit
anchor pairs for the two new menus. Chip font trimmed to 0.62rem + tighter
gap/padding so all 13 bar chips still fit one row down to ~1280px. Verified in
Chrome 148 via Playwright: all 7 menus open below their button, stay on-screen
(right-edge flip), and close on Esc. Cache-bust ?v=2.9.33. V2-only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:28:07 +02:00
Nubenetes Bot c3149c3d25 docs: automated README metric synchronization [skip ci] 2026-06-20 14:18:17 +00:00
Nubenetes Bot 76ff2c572d feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 14:17:33 +00:00
Nubenetes Bot d36e33b3d0 merge: back-merge v2.9.32 into develop 2026-06-20 16:14:33 +02:00
Nubenetes Bot 8906200734 Merge release/v2.9.32 into master 2026-06-20 16:14:19 +02:00
Nubenetes BotandClaude Opus 4.8 193560981c release: v2.9.32 — fix quick-nav popover menus + single-row fit
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:14:11 +02:00
Nubenetes Bot b0d1e9d5f8 docs: automated README metric synchronization [skip ci] 2026-06-20 14:13:59 +00:00
Inaki a5b9841142 Merge pull request #425 from nubenetes/feat/v2-quicknav-popover-fix
fix(v2/nav): quick-nav menus open below their button + fit one row
2026-06-20 16:13:36 +02:00
Nubenetes BotandClaude Opus 4.8 c737d4b52f fix(v2/nav): quick-nav menus now open below their button + fit one row
Two fixes to the hybrid quick-nav shipped in v2.9.31:

1. Popover menus did not visibly open on click. Root cause: the menus used
   `position-area: bottom span-inline-end`, which mixes a physical keyword
   (bottom) with a logical one (span-inline-end) — invalid, so it computed to
   `none` and the menu fell back to its static position on top of the button.
   Additionally the popover's implicit anchor was not resolving. Fixed by using
   a valid all-physical `position-area: bottom span-right` and declaring explicit
   anchor-name / position-anchor pairs per button↔menu, so each menu reliably
   drops below its trigger and auto-flips (span-left) near the right edge.
   Verified in Chrome 148 via Playwright: all five menus open on real click,
   render below the button, stay within the viewport, and close on Escape.

2. The bar wrapped to a second row at common widths. Reduced the chip font
   ~1pt (0.7rem → 0.64rem) and trimmed the column-gap/padding so all 7 pills +
   5 menus fit a single row down to 1280px viewports.

Bumps v2_elite.css cache-bust to ?v=2.9.32. V2-only, template/CSS only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:13:13 +02:00
Nubenetes Bot 8c44e3f665 docs: automated README metric synchronization [skip ci] 2026-06-20 14:00:38 +00:00
Nubenetes Bot 84e5bd4d47 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 14:00:11 +00:00
Nubenetes Bot 96e0c77d16 merge: back-merge v2.9.31 into develop 2026-06-20 15:57:53 +02:00
Nubenetes Bot 1c82f00594 Merge release/v2.9.31 into master 2026-06-20 15:57:35 +02:00
Nubenetes BotandClaude Opus 4.8 c1ed9ce150 release: v2.9.31 — hybrid quick-nav (direct pills + Popover category menus)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 15:57:27 +02:00
Inaki 27be15380d Merge pull request #423 from nubenetes/feat/v2-quicknav-megamenu
feat(v2/nav): hybrid quick-nav — direct pills + Popover category menus
2026-06-20 15:56:45 +02:00
Nubenetes BotandClaude Opus 4.8 8b39d2ae8e feat(v2/nav): hybrid quick-nav — direct pills + Popover category menus
Collapses the 25-destination quick-nav from 3 wrapped rows to a single slim row
that stays one row regardless of how many destinations are added.

Structure:
- 7 direct one-click pills for the most-used flagships: Topic Map, Digest,
  Kubernetes, Docker, GitOps, Terraform, AI & MCP.
- 5 category menus for the long tail, built with the native HTML Popover API +
  CSS Anchor Positioning (Baseline 2026), zero JS:
    ☁️ Cloud (AWS · Azure · GCP) · 🌐 Network (Networking · Istio · K8s Net)
    · 🔐 Security (K8s Security · DevSecOps)
    · ⚙️ Ops (CI/CD · Observability · SRE · DevOps)
    · ⋯ More (Videos · Ansible · Messaging · MLOps · Methodology · V1 Archive)

Why this design: keeps the hot paths at one click (the project's whole value),
while the rarely-used clusters fold away — so the bar never grows past one row.
Popover API gives free Esc / click-outside dismissal and focus management and
works identically on touch and desktop; menus drop below their button via
position-area with flip fallbacks, animate in via @starting-style, and rotate
their caret using :has(). prefers-reduced-motion honored. All 25 destinations
preserved. Bumps v2_elite.css cache-bust to ?v=2.9.31. V2-only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 15:55:25 +02:00
Nubenetes Bot 1cb2254877 docs: automated README metric synchronization [skip ci] 2026-06-20 13:42:02 +00:00
Nubenetes Bot ab53012f35 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 13:41:38 +00:00
Nubenetes Bot 710ab6b536 merge: back-merge v2.9.30 into develop 2026-06-20 15:39:12 +02:00
Nubenetes Bot 9fdf528665 Merge release/v2.9.30 into master 2026-06-20 15:38:57 +02:00
Nubenetes BotandClaude Opus 4.8 655166b83a release: v2.9.30 — quick-nav networking cluster + DevSecOps (25 tabs)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 15:38:50 +02:00
Inaki fb6680e83e Merge pull request #421 from nubenetes/feat/v2-quicknav-networking
feat(v2/nav): add networking cluster + DevSecOps to quick-nav
2026-06-20 15:38:25 +02:00
Nubenetes BotandClaude Opus 4.8 af4e2a2849 feat(v2/nav): add networking cluster + DevSecOps to quick-nav
Grows the quick-nav bar to 25 destinations:
  - New networking cluster (after cloud): 🌐 Networking · 🕸️ Istio · 🔗 K8s Net
  - DevSecOps joins the security cluster: 🔐 Security · 🛡️ DevSecOps

Short labels as usual (K8s Net for Kubernetes Networking). Template-only change
to docs/overrides/main.html; reuses the existing .nb-quicknav pill styling, no
CSS change, no page regeneration, V2-only. All target pages verified and
mkdocs build -f v2-mkdocs.yml passes with all 25 links rendering.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 15:38:04 +02:00
Nubenetes Bot 23508a4c1b docs: automated README metric synchronization [skip ci] 2026-06-20 13:34:06 +00:00
Nubenetes Bot cd81458560 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 13:33:40 +00:00
Nubenetes Bot 4ff7402207 merge: back-merge v2.9.29 into develop 2026-06-20 15:30:39 +02:00
Nubenetes Bot 59b5508fe3 Merge release/v2.9.29 into master 2026-06-20 15:30:21 +02:00
Nubenetes BotandClaude Opus 4.8 eb3efa310d release: v2.9.29 — quick-nav redesign (21 pill chips, category-grouped)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 15:30:12 +02:00
Nubenetes Bot 56b0f539eb docs: automated README metric synchronization [skip ci] 2026-06-20 13:30:05 +00:00
Inaki 9f7d457819 Merge pull request #420 from nubenetes/feat/v2-quicknav-redesign
feat(v2/nav): redesign quick-nav as centered category-grouped pill chips
2026-06-20 15:29:43 +02:00
Nubenetes BotandClaude Opus 4.8 27716bbb4c feat(v2/nav): redesign quick-nav as centered category-grouped pill chips
Expands the quick-nav bar to 21 destinations and restyles it as a modern,
centered chip bar. Adds CI/CD, Terraform-adjacent Ansible, and the three
hyperscalers (AWS, Azure, GCP), and reorders every tab into related category
clusters with short labels (even where the page title is long):

  discovery (Topic Map · Digest · Videos) → platform (Kubernetes · Docker)
  → delivery (GitOps · CI/CD) → IaC (Terraform · Ansible)
  → cloud (AWS · Azure · GCP) → security → ops (Observability · SRE · DevOps)
  → data (Messaging) → AI/ML (AI & MCP · MLOps) → Methodology → V1 Archive (muted)

Visual upgrade (CSS, modern Chrome):
- Pill chips instead of plain text links — more scannable.
- Chip background/border/glow derived from the theme accent via color-mix()
  (in srgb), so the bar restyles automatically with the palette.
- Centered wrapping rows (justify-content: center) — balanced across 2-3 rows
  at 21 items vs a ragged last row when left-aligned; the repeated ☁️ visually
  groups the three cloud providers.
- Hover lift (translateY) + accent glow; :focus-visible outline for a11y;
  prefers-reduced-motion honored.
- Logical properties (margin-inline / padding-inline); mobile collapses to a
  single horizontal-scroll row with the scrollbar hidden.

Bumps v2_elite.css cache-bust to ?v=2.9.29. V2-only; no page regeneration.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 15:28:52 +02:00
Nubenetes Bot 8ad4455049 docs: automated README metric synchronization [skip ci] 2026-06-20 13:13:55 +00:00
Nubenetes Bot 59089c4918 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 13:13:28 +00:00
Nubenetes Bot 2697f49e2c merge: back-merge v2.9.28 into develop 2026-06-20 15:11:31 +02:00
Nubenetes Bot d5f71a6f84 Merge release/v2.9.28 into master 2026-06-20 15:11:19 +02:00
Nubenetes BotandClaude Opus 4.8 d8fead1146 release: v2.9.28 — expanded quick-nav bar (16 destinations)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 15:11:12 +02:00
Inaki 3edd424fd3 Merge pull request #418 from nubenetes/feat/v2-quicknav-expand
feat(v2/nav): expand quick-nav with ten principal topic flagships
2026-06-20 15:10:16 +02:00
Nubenetes BotandClaude Opus 4.8 c80e1fd4b4 feat(v2/nav): expand quick-nav with ten principal topic flagships
Adds the principal topic flagships to the slim quick-nav bar so the most
relevant destinations across all of Nubenetes are reachable in one click from
any page:

  - Cloud-native pillars: Kubernetes, Docker, GitOps, Terraform,
    K8s Security, Observability
  - Ops disciplines: SRE, DevOps
  - Data/messaging: Message Queue
  - AI/ML: MLOps (next to the existing AI & MCP hub)

Layout groups discovery/meta hubs (Topic Map, Intelligence Digest, Video Hub),
then the pillar + ops + messaging topics, then the AI hubs (AI & MCP, MLOps) and
Methodology, with V1 Archive muted at the far right — 16 curated destinations
total, still under the 18-tab overflow line the bar was designed to avoid.
Reuses the existing .nb-quicknav__link styling (flex-wrap handles density on
narrow viewports); template-only, no CSS change, no page regeneration, V2-only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 15:09:21 +02:00
Nubenetes Bot bba344afa8 docs: automated README metric synchronization [skip ci] 2026-06-20 12:51:37 +00:00
Nubenetes Bot ca83d27a3d feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 12:51:11 +00:00
Nubenetes Bot 7d28bd4e9c merge: back-merge v2.9.27 into develop 2026-06-20 14:48:09 +02:00
Nubenetes Bot b015cec250 Merge release/v2.9.27 into master 2026-06-20 14:48:02 +02:00
Nubenetes BotandClaude Opus 4.8 6637f3956b release: v2.9.27 — slim quick-nav bar with persistent destinations
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 14:48:00 +02:00
Nubenetes Bot b111189475 docs: automated README metric synchronization [skip ci] 2026-06-20 12:47:54 +00:00
Inaki 049b994180 Merge pull request from nubenetes/feat/v2-quicknav-bar
feat(v2/nav): slim quick-nav bar with persistent key destinations
2026-06-20 14:47:32 +02:00
Nubenetes BotandClaude Opus 4.8 85e47f12af feat(v2/nav): slim quick-nav bar with persistent key destinations
Adds a thin horizontal bar below the header (on every page) with 6 curated
one-click destinations: Topic Map, Intelligence Digest, Video Hub, AI & MCP,
Methodology, V1 Archive. Implemented by overriding Material's 
H        H        H        H        H        H        H        H        H        H       
 block
(empty since navigation.tabs is disabled) + .nb-quicknav CSS — so it gives the
persistent cross-page shortcuts that previously only existed as badge cards on
the home, WITHOUT the 18-tab overflow and WITHOUT collapsing the full left
navigation tree. Template/CSS only (no page regeneration); V2-only (V1 uses the
stock theme). Cache-bust v2_elite.css?v=2.9.27.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 14:47:12 +02:00
Nubenetes Bot 294b10dca5 docs: automated README metric synchronization [skip ci] 2026-06-20 12:34:55 +00:00
Nubenetes Bot ac1f6be919 merge: back-merge v2.9.26 into develop 2026-06-20 14:34:32 +02:00
Nubenetes Bot c9bf1e46c7 Merge release/v2.9.26 into master 2026-06-20 14:34:25 +02:00
Nubenetes BotandClaude Opus 4.8 84bb583cf6 release: v2.9.26 — collapsible nested nav + home section headings
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 14:34:23 +02:00
Nubenetes Bot 466a315151 docs: automated README metric synchronization [skip ci] 2026-06-20 12:34:11 +00:00
Inaki 624e2ab543 Merge pull request from nubenetes/feat/v2-nav-nesting-home-headings
feat(v2): collapsible nested left nav + home section headings
2026-06-20 14:33:50 +02:00
Nubenetes BotandClaude Opus 4.8 40275974c0 feat(v2): collapsible nested left nav + 3 home section headings
Two fixes following the tabs removal:

1) Nav was a FLAT list of 18 section labels with no expand/indent, because
   navigation.sections rendered them as non-collapsible group labels and
   navigation.prune stripped inactive children. Disabled both → the left
   sidebar is now a proper COLLAPSIBLE, nested, indented tree (14 toggles,
   chevrons, collapsed by default). No size penalty (88213 vs 88516 bytes).

2) Home had a single H2, so its right-hand 'On this page' TOC was empty. Added
   '## Explore the Ecosystem' (badge cards) and '## Trending Now' (digest) to
   join the existing '## The Cloud Native Universe We Track' — the home's right
   TOC now lists three real sections.

Net effect: both side columns are now useful on every page, incl. the home —
left = full collapsible directory, right = per-page section map.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 14:33:27 +02:00
Nubenetes Bot 0c5e17f874 docs: automated README metric synchronization [skip ci] 2026-06-20 12:22:44 +00:00
Nubenetes Bot ec8e38a1c2 merge: back-merge v2.9.25 into develop 2026-06-20 14:22:22 +02:00
Nubenetes Bot f35c348ff1 Merge release/v2.9.25 into master 2026-06-20 14:22:14 +02:00
Nubenetes BotandClaude Opus 4.8 9ba26201b5 release: v2.9.25 — V2 nav tabs to left sidebar (fix tab overflow)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 14:22:12 +02:00
Nubenetes Bot a52bd87e00 docs: automated README metric synchronization [skip ci] 2026-06-20 12:22:03 +00:00
Inaki 16ed0cc9e1 Merge pull request from nubenetes/feat/v2-nav-disable-tabs
feat(v2/nav): disable navigation.tabs — full section list in left sidebar
2026-06-20 14:21:40 +02:00
Nubenetes BotandClaude Opus 4.8 98041bb7b4 feat(v2/nav): disable navigation.tabs — full section list in the left sidebar
18 top-level sections overflowed the horizontal tab bar on a laptop (~3300px of
labels vs ~1400px viewport), forcing horizontal scroll to reach the right-side
dimensions, and left the sidebar nearly empty on top-level pages like the home.

Disabling navigation.tabs (+ .sticky) moves the sections into the standard
vertical left sidebar: it handles 18 collapsed sections via normal vertical
scroll, stays populated on every page (incl. the home), and nothing clips.
Verified: the home nav goes from 23 rendered links (mostly the tab bar) to the
full 178-link tree, with 0 tab elements. Theme-only change (the optimizer's nav
sync only rewrites the nav: block, so this is preserved).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 14:20:26 +02:00
Nubenetes Bot 2081c96b39 docs: automated README metric synchronization [skip ci] 2026-06-20 11:55:56 +00:00
Nubenetes Bot 2d9d1cef09 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 11:55:26 +00:00
Nubenetes Bot d56192d7db merge: back-merge v2.9.24 into develop 2026-06-20 13:52:35 +02:00
Nubenetes Bot 088e35feac Merge release/v2.9.24 into master 2026-06-20 13:52:29 +02:00
Nubenetes BotandClaude Opus 4.8 794734ad1c release: v2.9.24 — per-page CollectionPage JSON-LD with dates
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:52:27 +02:00
Inaki 68b7029975 Merge pull request from nubenetes/feat/v2-seo-perpage-jsonld
feat(v2/seo): per-page CollectionPage JSON-LD with dates
2026-06-20 13:51:59 +02:00
Nubenetes BotandClaude Opus 4.8 bfdec79f41 feat(v2/seo): per-page CollectionPage JSON-LD with datePublished/dateModified
Adds a second JSON-LD block per page (a schema.org CollectionPage tied to the
existing WebSite/Organization @graph) carrying the page name, description, URL,
and datePublished / dateModified fed by the git-revision-date plugin's raw ISO
dates. Enables richer search results (article/collection rich snippets) with
real freshness dates. Template-only change (docs/overrides/main.html), applied
at build time; the homepage is skipped (it is already the WebSite entity).

Verified: every content page emits a valid CollectionPage with both dates
(e.g. Kubernetes datePublished=2026-05-18 dateModified=2026-06-20); the home
carries only the WebSite+Organization graph.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:51:37 +02:00
Nubenetes Bot 1e6c7bbd9a docs: automated README metric synchronization [skip ci] 2026-06-20 11:45:45 +00:00
Nubenetes Bot 06f93282e2 merge: back-merge v2.9.23 into develop 2026-06-20 13:45:22 +02:00
Nubenetes Bot 8ee10a16ea Merge release/v2.9.23 into master 2026-06-20 13:45:15 +02:00
Nubenetes BotandClaude Opus 4.8 0b3fe9c9c6 release: v2.9.23 — richer per-page SEO descriptions + creation dates
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:45:13 +02:00
Nubenetes Bot 9971945e9f feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 11:44:11 +00:00
Nubenetes Bot f721c5714b docs: automated README metric synchronization [skip ci] 2026-06-20 11:40:54 +00:00
Inaki 4e9d839f2e Merge pull request from nubenetes/feat/v2-seo-rich-desc-dates
feat(v2/seo): richer per-page descriptions + creation dates
2026-06-20 13:40:32 +02:00
Nubenetes BotandClaude Opus 4.8 c377b4e4d9 feat(v2/seo): richer per-page descriptions from top resources + creation dates
- Enrich each page's meta description with its top-ranked resource names
  (long-tail keywords) instead of a pure template — e.g. 'Top Kubernetes
  resources for 2026, AI-ranked: Helm, kube-prometheus and more — curated Cloud
  Native tools, guides and references.' URL/path-like and emoji-laden titles are
  filtered out; pages whose top links are all URL-like fall back to the clean
  template. Capped at ~160 chars on a word boundary.
- Enable git-revision creation dates (enable_creation_date: true) so every page
  footer shows both 'Created' and 'Last update' — an age/freshness signal.

Verified locally: descriptions are clean, tool-named, 126-151 chars; the footer
renders both dates. Pages pick up the new front-matter on the next Publisher run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:39:44 +02:00
Nubenetes Bot bcbb3a2466 docs: automated README metric synchronization [skip ci] 2026-06-20 11:29:04 +00:00
Nubenetes Bot 21a63a1992 merge: back-merge v2.9.22 into develop 2026-06-20 13:28:36 +02:00
Nubenetes Bot 6ef1580b43 Merge release/v2.9.22 into master 2026-06-20 13:28:29 +02:00
Nubenetes BotandClaude Opus 4.8 1711eb594e release: v2.9.22 — unique per-page SEO meta descriptions + robots.txt
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:28:27 +02:00
Nubenetes Bot 680d5f83f5 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 11:27:10 +00:00
Nubenetes Bot b5f1a3d4a4 docs: automated README metric synchronization [skip ci] 2026-06-20 11:22:36 +00:00
Inaki cedd14e128 Merge pull request from nubenetes/feat/v2-seo-meta-robots
feat(v2/seo): unique per-page meta descriptions + robots.txt
2026-06-20 13:22:15 +02:00
Nubenetes BotandClaude Opus 4.8 6fb3808850 feat(v2/seo): unique per-page meta descriptions + robots.txt
Every V2 page previously fell back to the identical global site_description
(duplicate meta descriptions = SEO penalty across ~140 pages). The generator now
emits a unique description: front-matter per page — derived from the page title
and its strategic dimension — which Material renders as <meta name=description>
and og:description. Topic Map and Methodology get tailored descriptions too.

Also add v2-docs/robots.txt (deployed at the site root) allowing full crawl and
referencing both the V2 (root) and V1 (/v1/) sitemaps.

Verified locally: each built page now carries a distinct meta description, and
robots.txt lands in the build output. The ~140 generated pages pick up their
front-matter on the next V2 Publisher run.

Note: the 12 redirect-stub pages (chef->ansible, react->javascript, ...) were
left as-is — they already 0s meta-refresh redirect with canonical pointing at
the target, which is better SEO than noindex (and the redirects plugin would
overwrite any front-matter anyway).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:21:57 +02:00
Nubenetes Bot 1698351fb9 docs: automated README metric synchronization [skip ci] 2026-06-20 11:07:20 +00:00
Nubenetes Bot 48b1c80a80 merge: back-merge v2.9.21 into develop 2026-06-20 13:06:58 +02:00
Nubenetes Bot b73d8315e5 Merge release/v2.9.21 into master 2026-06-20 13:06:51 +02:00
Nubenetes BotandClaude Opus 4.8 d1e1ba5fb3 release: v2.9.21 — README DB/lifecycle diagrams & grouped Tags Index TOC
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:06:49 +02:00
Nubenetes Bot 07ac1df305 docs: automated README metric synchronization [skip ci] 2026-06-20 11:06:39 +00:00
Inaki e01f720655 Merge pull request #407 from nubenetes/feat/readme-db-lifecycle-diagrams
docs: DB architecture + lifecycle diagrams, mermaid cutoff fixes, grouped Tags Index TOC
2026-06-20 13:06:17 +02:00
Nubenetes BotandClaude Opus 4.8 8e065c5406 feat(v2/tags): grouped, compact Technical Tags Index TOC + unique anchors
The Technical Tags Index TOC was a flat 80-entry numbered list that buried the
8 meaningful maturity tags under a long tail of one-resource 'X Content'
language tags, with colliding anchors (C / C# / C++ all -> #c-content) and a
'1 resources' grammar bug.

- Group the TOC: 'Maturity and Quality' as a clean numbered list; 'Technical
  Domains' and 'Language and Format' as compact, count-sorted inline pill rows.
- Precompute unique, explicit heading anchors ({#slug}) shared by the TOC and
  the section headers (c-sharp-content, c-plus-plus-content, dedup counter),
  fixing the collisions.
- Correct singular/plural ('1 resource').
- Filter non-language language values (En, Not Applicable, Multi-Language,
  Polyglot, ...) so they no longer create meaningless tag buckets.

Validated: 0 markdownlint errors on the regenerated tags.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:05:48 +02:00
Nubenetes BotandClaude Opus 4.8 6b311deed5 docs(readme): DB architecture + full lifecycle mermaid diagrams, fix label cutoffs, refresh V2 features
- Add a Database Architecture diagram (YAML + SQLite coexistence: inventory.sql
  source-of-truth, in-memory SQLite, inventory.yaml mirror, schema) in 6.1.3,
  inside a collapsible <details>.
- Add a full Data Lifecycle diagram (discovery -> ingestion -> maintenance/
  enrichment -> render -> deploy + GC) in 6.3, inside a collapsible <details>.
- Fix mermaid text overflow in the Division-of-Labor, Agentic Data Flow, Debate
  Protocol and Deployment Lifecycle diagrams by wrapping long node labels with
  <br/>; remove a duplicate Z-->B edge.
- Add a 'V2 Home Restructure and SEO (v2.9.16-v2.9.20)' section documenting the
  Topic Map & Methodology pages, per-page last-updated dates, JSON-LD, branded
  404, privacy-friendly embeds and deterministic generated artifacts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:05:40 +02:00
Nubenetes Bot 2a90ce60ea docs: automated README metric synchronization [skip ci] 2026-06-20 10:48:35 +00:00
Nubenetes Bot f588a7254b merge: back-merge v2.9.20 into develop 2026-06-20 12:48:10 +02:00
Nubenetes Bot a86f8f5c0a Merge release/v2.9.20 into master 2026-06-20 12:48:03 +02:00
Nubenetes BotandClaude Opus 4.8 15aae43489 release: v2.9.20 — fully eliminate RSS feed develop/master drift
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:48:00 +02:00
Nubenetes Bot 123d53848c docs: automated README metric synchronization [skip ci] 2026-06-20 10:47:45 +00:00
Inaki 7bf22fbe43 Merge pull request from nubenetes/fix/rss-builddate-from-items
fix(rss): derive feed lastBuildDate from item content dates (fully kills feed drift)
2026-06-20 12:47:19 +02:00
Nubenetes BotandClaude Opus 4.8 01c514b07b fix(rss): derive feed lastBuildDate from item content dates, not _meta
Follow-up to v2.9.19: deriving lastBuildDate from _meta.last_updated only moved
the drift one level — that analysis timestamp is itself bumped on every publish
even when the ranked content is unchanged, so feed.xml kept differing between
develop and master. Use the freshest item's content date instead (the items only
change when the ranking actually changes). Verified: deterministic across reruns,
and the develop and master digests both yield 2026-06-18, so feed.xml is now
byte-identical across branches — the drift is fully eliminated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:46:52 +02:00
Nubenetes Bot 4d25baee03 docs: automated README metric synchronization [skip ci] 2026-06-20 10:43:38 +00:00
Nubenetes Bot 3fa1370e30 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 10:43:13 +00:00
Nubenetes Bot a083fb2af4 merge: back-merge v2.9.19 into develop 2026-06-20 12:40:13 +02:00
Nubenetes Bot f16a1ae9c0 Merge release/v2.9.19 into master 2026-06-20 12:39:57 +02:00
Nubenetes BotandClaude Opus 4.8 a6e166661f release: v2.9.19 — deterministic RSS feed date & Topic Map filter skip
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:39:55 +02:00
Nubenetes Bot f51d4094a1 docs: automated README metric synchronization [skip ci] 2026-06-20 10:39:52 +00:00
Inaki fcdc4d0ec1 Merge pull request #405 from nubenetes/fix/topic-map-filter-skip
fix(v2): don't inject resource/tag filter on Topic Map & Methodology
2026-06-20 12:39:24 +02:00
Nubenetes BotandClaude Opus 4.8 fcf47473da fix(v2): don't inject the resource/tag filter on Topic Map & Methodology
The in-page filter widget (v2_filter.js) auto-injects wherever the page has
<ul><li> items. Topic Map lists category links (with counts) and Methodology
lists legend rows — neither carries .md-tag maturity tags, so the tag pills
filtered to zero and the 'X of Y resources' counter mis-counted categories as
resources. Added both pages to the widget's h1-based skip-list. Bumped
v2_filter.js?v=2.9.19.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:39:02 +02:00
Nubenetes Bot dcc323ead3 docs: automated README metric synchronization [skip ci] 2026-06-20 10:38:56 +00:00
Inaki 16784ce925 Merge pull request #404 from nubenetes/fix/rss-deterministic-builddate
fix(rss): deterministic feed lastBuildDate (kills residual develop↔master drift)
2026-06-20 12:38:33 +02:00
Nubenetes BotandClaude Opus 4.8 09d7a68ef8 fix(rss): derive feed lastBuildDate from content, not wall-clock now()
rss_generator set <lastBuildDate> to datetime.utcnow(), so every republish
rewrote it even when the digest was unchanged — leaving a 1-line develop<->master
drift in v2-docs/feed.xml (the residual after the PR Guardian drift fix). Derive
it from the digest's _meta.last_updated (the actual analysis date), falling back
to the most recent item date, so the feed is a pure function of its input:
regenerating unchanged content now yields byte-identical output. Verified
deterministic across repeated runs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:37:11 +02:00
Nubenetes Bot a96919d3ad docs: automated README metric synchronization [skip ci] 2026-06-20 10:29:38 +00:00
Nubenetes Bot fdb93ccc16 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 10:29:10 +00:00
Nubenetes Bot e14e78c6e9 merge: back-merge v2.9.18 into develop 2026-06-20 12:25:26 +02:00
Nubenetes Bot a07267dd2b Merge release/v2.9.18 into master 2026-06-20 12:25:06 +02:00
Nubenetes BotandClaude Opus 4.8 58d1be6522 release: v2.9.18 — SEO (revision dates + JSON-LD) & PR Guardian drift fix
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:25:03 +02:00
Inaki bff5d72a89 Merge pull request #402 from nubenetes/feat/v2-seo-revision-jsonld
feat(v2/seo): per-page last-updated dates + JSON-LD structured data
2026-06-20 12:24:34 +02:00
Nubenetes BotandClaude Opus 4.8 266499ac2f feat(v2/seo): per-page last-updated dates + JSON-LD structured data
C — git-revision-date-localized plugin: adds a 'Last update' date to every V2
page (freshness signal for SEO and reader trust). Added the dependency to
requirements.txt, enabled it in v2-mkdocs.yml (type: date,
fallback_to_build_date so the build never fails), and set fetch-depth: 0 on the
06 deploy checkout so the plugin sees full git history (otherwise every page
would show the build date).

D — JSON-LD schema.org structured data: WebSite (with a sitelinks SearchAction)
+ publishing Organization, injected via an extrahead block in docs/overrides/
main.html (shared V1/V2). Enables richer search results / knowledge-panel
eligibility. Validated: build exits 0, JSON-LD parses, 'Last update' renders.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:23:49 +02:00
Nubenetes Bot a6cf0d97ef docs: automated README metric synchronization [skip ci] 2026-06-20 10:16:22 +00:00
Inaki 41e4fc9502 Merge pull request #401 from nubenetes/fix/guardian-skip-generated-v2docs
fix(ci): PR Guardian must not auto-format the generated v2-docs/ tree
2026-06-20 12:15:59 +02:00
Nubenetes BotandClaude Opus 4.8 15ffc91ec2 fix(ci): PR Guardian must not auto-format the generated v2-docs/ tree
The Guardian's auto_format_file ("&"->"and" in headings, URL trailing-slash
normalization) ran on every changed .md including the generated v2-docs/, then
committed the result back to the PR branch. Because PRs land on develop while
release branches merge to master via plain git merge (no Guardian run), develop
ended up with the normalized form and master with the generator's raw form —
a perpetual cosmetic develop<->master drift that spawned recurring no-op
'Release: Agentic V2 Portal Update' PRs (e.g. #399).

v2_optimizer.py is the single source of truth for v2-docs/ formatting, so the
Guardian now skips that tree in the auto-format loop and drops it from the
auto-commit 'git add'. Hand-authored docs/ and README/inventory are unaffected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:14:49 +02:00
Nubenetes Bot 385c7f03da docs: automated README metric synchronization [skip ci] 2026-06-20 10:09:32 +00:00
Nubenetes Bot 088dc12a8e feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 10:09:02 +00:00
Nubenetes Bot a477989bc1 merge: back-merge v2.9.17 into develop 2026-06-20 12:04:40 +02:00
Nubenetes Bot e7d9c0eccc Merge release/v2.9.17 into master 2026-06-20 12:04:14 +02:00
Nubenetes BotandClaude Opus 4.8 7c8f36addd release: v2.9.17 — fix Topic Map MD001 heading-increment lint failure
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:04:12 +02:00
nubenetes-bot 8643517e2e style(cleaner): auto-correcting formatting & URL normalization 2026-06-20 10:04:03 +00:00
Inaki 4ef377d62d Merge pull request #400 from nubenetes/fix/topic-map-heading-md001
fix(v2): Topic Map dimensions must be h2 not h3 (MD001 lint failure)
2026-06-20 12:03:31 +02:00
Nubenetes BotandClaude Opus 4.8 ae0af172dc fix(v2): Topic Map dimensions must be h2 not h3 (MD001 lint failure)
The Topic Map page H1 is 'Topic Map', so dimension headings jumped h1->h3
and tripped markdownlint MD001/heading-increment, failing 07.2 Markdown
Linter on develop and master after v2.9.16. Emit dimensions as h2 in the
generator, the committed page, and update the CSS selector
(.topic-map-dim h2). Verified 0 errors with the CI markdownlint config.
Bumped v2_elite.css?v=2.9.17.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:03:02 +02:00
Nubenetes Bot 70f64d37b0 docs: automated README metric synchronization [skip ci] 2026-06-20 10:01:04 +00:00
Nubenetes Bot 4d0be41548 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 10:00:32 +00:00
Nubenetes Bot b79209ab5e merge: back-merge v2.9.16 into develop 2026-06-20 11:55:29 +02:00
Nubenetes Bot 9bbb82b00c docs: automated README metric synchronization [skip ci] 2026-06-20 09:54:44 +00:00
150 changed files with 3991 additions and 876 deletions
+3
View File
@@ -25,6 +25,9 @@ jobs:
uses: actions/checkout@v6
with:
submodules: true
# Full history so mkdocs-git-revision-date-localized can compute the
# real per-page "last updated" date (shallow clone => all build-date).
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v6
+4 -1
View File
@@ -59,7 +59,10 @@ jobs:
run: |
git config --global user.name "nubenetes-bot"
git config --global user.email "bot@nubenetes.com"
git add docs/ v2-docs/ README.md data/inventory.yaml data/inventory.sql src/memory/
# NOTE: v2-docs/ is deliberately excluded. It is generated by
# src/v2_optimizer.py (single source of truth); re-formatting it here
# caused a perpetual cosmetic develop<->master drift (see pr_guardian.py).
git add docs/ README.md data/inventory.yaml data/inventory.sql src/memory/
if ! git diff --cached --quiet; then
git commit -m "style(cleaner): auto-correcting formatting & URL normalization"
git push origin HEAD:${{ github.event.pull_request.head.ref }} || echo "⚠️ Push failed (likely fork permission limit)."
+113
View File
@@ -5,6 +5,119 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[2.9.35]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.35) - 2026-06-20
### Added
- **Kubernetes provider hub**: A fragmentation audit found only two prefix clusters — `aws` (fixed in v2.9.34) and `kubernetes`. Unlike AWS, Kubernetes is well-classified (rich parent at 157 links + substantial distinct children: tools 144, networking 64, security 52, monitoring 24, …), so nothing is merged. This adds a "Deep-Dive Topic Pages" hub to `kubernetes.md` indexing its 14 substantial sub-pages (Tools · Networking · Security · Monitoring · Storage · Autoscaling · Operators · Alternatives · Big Data · Tutorials · Backup & Migrations · Client Libraries · Local Dev · On-Premise) — purely additive navigation, no merging or pruning. Other small pages (pulumi, kustomize, registries, …) are legitimate distinct topics and were intentionally left alone. Generator-only (`src/v2_optimizer.py`); republished on the next curation run.
## [[2.9.34]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.34) - 2026-06-20
### Changed
- **AWS page de-fragmentation + provider hub**: The AWS landing page rendered with only ~3 links because AWS content was split across ~20 granular pages (Azure/GCP use a single rich page each), many with just 1-5 links. Two generator changes in `src/v2_optimizer.py` fix this: (A) `aws.md` now renders a "Deep-Dive Topic Pages" hub linking to the substantial sub-pages that remain (Serverless · Storage · Networking · Security · IaC · Backup · New Features) via a new `subpage_hubs` map; (B) the near-empty / junk-drawer AWS sub-pages (≤7 links + "miscellaneous": aws-pricing, aws-training, aws-data, aws-messaging, aws-tools-scripts, aws-monitoring, aws-architecture, aws-containers, aws-devops, aws-databases, aws-miscellaneous) merge into `aws.md` via the existing `merge_map`, with their slugs removed from `dimensions` so the pipeline prunes the orphans and auto-syncs the nav. Verified with `--render-only`: aws.md goes from 3 to 44 links plus the 7-child hub. V1 (`docs/`) is untouched by design (exhaustive archive + merge source). Generator-only; the AWS pages are republished on the next curation run.
## [[2.9.33]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.33) - 2026-06-20
### Added
- **Quick-nav menu expansion — 38 destinations**: Data-driven expansion of the hybrid quick-nav (ranked by per-page link count + relevance). New 📊 Digest menu pairs both editions (Tech & Cloud Digest + Industry & Geo Digest); new 🧰 K8s menu surfaces the Kubernetes ecosystem (Kubernetes Tools · Helm · Managed K8s · OpenShift · Tutorials). Existing menus grew: ☁️ Cloud += Serverless · FinOps; 🌐 Network += Service Mesh (Istio emoji → ⛵); ⚙️ Ops += IaC · Developer Portals; ⋯ More += Technical Tags · Demos. 38 destinations total across 6 direct pills + 7 Popover menus; chip font trimmed to 0.62rem with tighter gap/padding so all 13 bar chips fit one row down to ~1280px. Verified in Chrome 148 (Playwright): every menu opens below its button, flips near the right edge, and closes on Esc. Cache-bust `?v=2.9.33`; V2-only.
## [[2.9.32]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.32) - 2026-06-20
### Fixed
- **Quick-nav menus open below their button + fit one row**: Fixed two issues in the v2.9.31 hybrid quick-nav (verified in Chrome 148 via Playwright). (1) The Popover category menus did not visibly open on click — they used `position-area: bottom span-inline-end`, which mixes a physical keyword (`bottom`) with a logical one (`span-inline-end`); that is invalid CSS and silently computed to `none`, leaving the menu in its static position on top of the button. Fixed with a valid all-physical `position-area: bottom span-right` plus explicit `anchor-name` / `position-anchor` pairs per button↔menu, so each menu reliably drops below its trigger and auto-flips near the right edge. (2) The bar wrapped to a second row on common displays — reduced the chip font ~1pt (`0.7rem → 0.64rem`) and trimmed the column-gap/padding so all 7 pills + 5 menus fit a single row down to 1280px viewports. Cache-bust `?v=2.9.32`; V2-only, CSS-only.
## [[2.9.31]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.31) - 2026-06-20
### Changed
- **Hybrid quick-nav — direct pills + Popover category menus**: Collapsed the 25-destination quick-nav from 3 wrapped rows to a single slim row that stays one row regardless of how many destinations are added. The most-used flagships remain direct one-click pills (Topic Map · Digest · Kubernetes · Docker · GitOps · Terraform · AI & MCP); the long-tail clusters fold into five category menus — ☁️ Cloud, 🌐 Network, 🔐 Security, ⚙️ Ops, ⋯ More — built with the native HTML Popover API + CSS Anchor Positioning (Baseline 2026), zero JS. Menus drop below their button via `position-area` with flip fallbacks, animate in with `@starting-style`, rotate their caret via `:has()`, and inherit the Popover API's built-in Esc / click-outside dismissal and focus management (identical on touch and desktop); `prefers-reduced-motion` honored. All 25 destinations preserved. Touches `docs/overrides/main.html` + `docs/static/v2_elite.css` (cache-bust `?v=2.9.31`); V2-only, no page regeneration.
## [[2.9.30]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.30) - 2026-06-20
### Changed
- **Quick-nav — networking cluster + DevSecOps**: Grew the quick-nav bar to 25 destinations. Added a new networking cluster after the cloud providers (🌐 Networking · 🕸️ Istio · 🔗 K8s Net) and DevSecOps alongside Security (🔐 Security · 🛡️ DevSecOps), keeping short labels and category grouping. Template-only change to `docs/overrides/main.html` reusing the existing `.nb-quicknav` pill styling — no CSS change, no page regeneration. V2-only.
## [[2.9.29]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.29) - 2026-06-20
### Changed
- **Quick-nav redesign — centered category-grouped pill chips**: Grew the quick-nav bar to 21 destinations and restyled it as a modern, centered chip bar. Added CI/CD, Ansible, and the three hyperscalers (AWS, Azure, GCP), and reordered every tab into related category clusters with short labels: discovery (Topic Map · Digest · Videos) → platform (Kubernetes · Docker) → delivery (GitOps · CI/CD) → IaC (Terraform · Ansible) → cloud (AWS · Azure · GCP) → security → ops (Observability · SRE · DevOps) → data (Messaging) → AI/ML (AI & MCP · MLOps) → Methodology → V1 Archive (muted). Chip background/border/glow are derived from the theme accent via `color-mix(in srgb, …)` (Chrome 111+) so the bar restyles automatically with the palette; rows are centered (`justify-content: center`) for a balanced multi-row layout, with hover lift, `:focus-visible` outline, `prefers-reduced-motion` support, and a mobile single-row horizontal scroll. Touches `docs/overrides/main.html` + `docs/static/v2_elite.css` (cache-bust `?v=2.9.29`); V2-only, no page regeneration.
## [[2.9.28]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.28) - 2026-06-20
### Changed
- **Expanded quick-nav bar**: Grew the slim quick-nav bar from 6 to 16 curated one-click destinations, surfacing the principal topics across all of Nubenetes from any page. Added the cloud-native pillars (Kubernetes · Docker · GitOps · Terraform · K8s Security · Observability), the ops disciplines (SRE · DevOps), data/messaging (Message Queue), and MLOps alongside the existing AI & MCP hub. Template-only change to `docs/overrides/main.html` (no CSS change, no page regeneration); reuses the existing `.nb-quicknav__link` styling with `flex-wrap` handling density on narrow viewports. Still under the 18-tab overflow line the bar was designed to avoid. V2-only.
## [[2.9.27]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.27) - 2026-06-20
### Added
- **Slim quick-nav bar**: A thin horizontal bar below the header on every V2 page with six curated one-click destinations (Topic Map · Intelligence Digest · Video Hub · AI & MCP · Methodology · V1 Archive). These cross-cutting destinations previously only existed as badge cards on the home; the bar makes them persistently reachable from any depth. Implemented by overriding Material's `tabs` block (empty since `navigation.tabs` is disabled) plus `.nb-quicknav` CSS — so it adds persistent shortcuts WITHOUT reintroducing the 18-tab overflow and WITHOUT collapsing the full collapsible left navigation tree. Template/CSS-only (no page regeneration); V2-only.
## [[2.9.26]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.26) - 2026-06-20
### Changed
- **Collapsible, nested left navigation**: After moving the sections to the left sidebar in 2.9.25, they rendered as a *flat* list of 18 labels with no expand/indent — `navigation.sections` made them non-collapsible group labels and `navigation.prune` stripped the inactive children. Disabled both so the sidebar is now a proper collapsible, nested, indented tree (14 toggles / chevrons, collapsed by default, click to expand). No size penalty (88,213 vs 88,516 bytes per page).
### Added
- **Home section headings**: The V2 home had a single H2, leaving its right-hand "On this page" TOC empty. Added `## Explore the Ecosystem` (badge cards) and `## Trending Now` (Intelligence Digest) alongside the existing `## The Cloud Native Universe We Track`, so the home's right TOC now lists three real sections. Net effect: both side columns are now useful on every page — left = full collapsible directory, right = per-page section map.
## [[2.9.25]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.25) - 2026-06-20
### Changed
- **V2 navigation: tabs → left sidebar**: The 18 top-level sections were rendered as a horizontal tab bar (`navigation.tabs`), whose labels total ~3300px and overflowed a typical ~1400px laptop viewport — forcing horizontal scroll to reach the right-side dimensions and leaving the left sidebar nearly empty on top-level pages like the home. Disabled `navigation.tabs` (+ `.sticky`) so the sections render in the standard vertical left sidebar: it handles all 18 collapsed sections via normal scroll, stays populated on every page (the home's rendered nav goes from 23 links to the full 178-link tree), and nothing clips. Theme-only change preserved across publishes (the optimizer's nav-sync only rewrites the `nav:` block).
## [[2.9.24]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.24) - 2026-06-20
### Added
- **Per-page JSON-LD structured data**: Each V2 content page now emits a second JSON-LD block — a schema.org `CollectionPage` tied to the existing `WebSite`/`Organization` `@graph` — carrying the page name, description, URL, and `datePublished` / `dateModified` fed by the `git-revision-date-localized` plugin's raw ISO dates (the creation/last-update dates from 2.9.23). This enables article/collection rich snippets in search results with real freshness dates. Template-only change (`docs/overrides/main.html`), applied at build time; the homepage is skipped (it is already the `WebSite` entity), and JSON is built with `| tojson` for safe escaping.
## [[2.9.23]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.23) - 2026-06-20
### Changed
- **Richer per-page SEO meta descriptions**: The unique-but-templated descriptions from 2.9.22 now lead with each page's **top-ranked resource names** (long-tail keywords) — e.g. *"Top Kubernetes resources for 2026, AI-ranked: Helm, kube-prometheus and more — curated Cloud Native tools, guides and references."* URL/path-like and emoji-laden titles are filtered out, pages whose top links are all URL-like fall back to the clean template, and the text is capped at ~160 chars on a word boundary. (There is no per-page AI intro to mine, so the page's own top resources are the cleanest source.)
### Added
- **Per-page creation dates**: Enabled `enable_creation_date` on the `git-revision-date-localized` plugin, so every V2 page footer now shows both **Created** and **Last update** — an additional age/freshness signal alongside the last-modified date introduced in 2.9.18.
## [[2.9.22]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.22) - 2026-06-20
### Added
- **robots.txt**: Added `v2-docs/robots.txt` (deployed at the site root) that allows full crawl and references both the V2 (root) and V1 (`/v1/`) sitemaps — previously the site shipped a `sitemap.xml` with no `robots.txt` pointing at it.
### Changed
- **Unique per-page SEO meta descriptions**: Every V2 page previously fell back to the identical global `site_description`, so ~140 pages shared one `<meta name="description">` (a duplicate-content SEO penalty). `v2_optimizer.py` now emits a unique `description:` front-matter per page — derived from the page title and its strategic dimension — which Material renders as `<meta name="description">` and `og:description`. The Topic Map and Methodology pages get tailored descriptions. The 12 redirect-stub pages were intentionally left untouched (they already 0s meta-refresh redirect with `canonical` pointing at the target, which passes authority better than `noindex`).
## [[2.9.21]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.21) - 2026-06-20
### Added
- **README database & lifecycle diagrams**: Added two new collapsible Mermaid diagrams — a **Database Architecture** diagram (§6.1.3) detailing the YAML + SQLite coexistence engine (`inventory.sql` Git source-of-truth → in-memory SQLite → `inventory.yaml` mirror, plus the per-resource schema), and a **full Data Lifecycle** diagram (§6.3) tracing a resource from discovery and ingestion through cached maintenance/enrichment to render and deploy, with background garbage collection.
### Changed
- **Grouped, compact Technical Tags Index TOC**: The `tags.md` table of contents was a flat 80-entry numbered list that buried the 8 maturity tags under a long tail of one-resource "X Content" language tags. It is now grouped into *Maturity and Quality* (numbered) plus *Technical Domains* / *Language and Format* (compact, count-sorted inline rows). Generator (`v2_optimizer.py`) now emits unique explicit heading anchors (`{#slug}`) shared by the TOC and section headers — fixing collisions where `C` / `C#` / `C++` all resolved to `#c-content` — corrects the `1 resource` grammar, and filters non-language values (`En`, `Not Applicable`, `Multi-Language`, `Polyglot`, …) that previously created meaningless tag buckets.
- **README mermaid legibility & accuracy**: Fixed text overflow in four diagrams (Division of Labor, Agentic Data Flow, Debate Protocol, Deployment Lifecycle) by wrapping long node labels, removed a duplicate edge, and refreshed the V2 feature documentation with the v2.9.16v2.9.20 work (Topic Map & Methodology pages, per-page last-updated dates, JSON-LD, branded 404, deterministic generated artifacts).
## [[2.9.20]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.20) - 2026-06-20
### Fixed
- **RSS feed drift fully eliminated**: The 2.9.19 fix derived the feed's `<lastBuildDate>` from `_meta.last_updated`, but that analysis timestamp is bumped on every publish even when the ranked content is unchanged, so `v2-docs/feed.xml` still drifted between `develop` and `master`. `src/rss_generator.py` now derives `lastBuildDate` from the **freshest item's content date** (the items only change when the ranking actually changes), with `_meta.last_updated`/a constant as fallbacks. Verified deterministic across reruns, and the `develop` and `master` digests both yield `2026-06-18` — so `feed.xml` is now byte-identical across branches and no longer spawns no-op promotion diffs.
## [[2.9.19]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.19) - 2026-06-20
### Fixed
- **Deterministic RSS `lastBuildDate` (residual develop↔master drift)**: `src/rss_generator.py` set the feed's `<lastBuildDate>` to `datetime.utcnow()`, so every republish rewrote it even when the digest was unchanged — leaving a perpetual 1-line diff in `v2-docs/feed.xml` (the last residual after the PR Guardian drift fix in 2.9.18). It now derives the date from the digest's `_meta.last_updated` (the actual analysis timestamp), falling back to the most recent item date then a fixed constant, making the feed a pure function of its input. Verified byte-identical output across repeated runs; the feed now changes only when the digest content actually changes.
- **In-page filter no longer injected on Topic Map & Methodology**: The resource search / maturity-tag widget (`static/v2_filter.js`) auto-injects wherever a page has `<ul><li>` items. Topic Map lists category links (with counts) and Methodology lists legend rows — neither carries `.md-tag` maturity tags, so the pills always filtered to zero and the "Showing X of Y resources" counter mis-counted categories/rows as resources. Added both pages to the widget's existing `<h1>`-based skip-list (alongside the home, Video Hub, Tags and Digest pages). Cache-bust `v2_filter.js?v=2.9.19`.
## [[2.9.18]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.18) - 2026-06-20
### Added
- **Per-page "Last update" dates (SEO freshness)**: Enabled the `git-revision-date-localized` MkDocs plugin on the V2 portal, surfacing a real last-modified date on every page. Added the dependency to `requirements.txt`, configured it in `v2-mkdocs.yml` (`type: date`, `fallback_to_build_date: true` so a missing git history never fails the build), and set `fetch-depth: 0` on the `06.deploy_final.yml` checkout so the plugin reads full history instead of collapsing every page to the build date.
- **JSON-LD structured data**: Injected schema.org `WebSite` (with a sitelinks `SearchAction`) + publishing `Organization` markup via an `extrahead` block in `docs/overrides/main.html`, making the canonical `nubenetes.com` root eligible for richer search results and knowledge-panel association. Validated: build exits 0 and the emitted JSON-LD parses to `[WebSite, Organization]`.
### Fixed
- **`develop ↔ master` cosmetic drift loop (recurring no-op release PRs)**: The PR Guardian (`07.1.pr_guardian.yml``src/pr_guardian.py`) ran its auto-formatter ("&"→"and" in headings, URL trailing-slash/tracking-param stripping) on every changed `.md` — including the **generated** `v2-docs/` tree — and committed the result back to the PR branch. Because feature PRs land on `develop` (Guardian runs) but release branches merge to `master` via plain `git merge` (Guardian does not run), `develop` accumulated the normalized form while `master` kept the generator's raw form, producing a perpetual cosmetic diff that spawned recurring no-op "🚀 Release: Agentic V2 Portal Update" PRs (e.g. #399). Since `v2_optimizer.py` is the single source of truth for `v2-docs/` formatting, the Guardian now skips that tree in its auto-format loop and drops it from the auto-commit `git add`; hand-authored `docs/` and `README`/`inventory` are unaffected.
## [[2.9.17]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.17) - 2026-06-20
### Fixed
- **Topic Map heading increment (MD001 lint failure)**: The new `topic-map.md` page emitted its per-dimension headings as `###` (h3) directly under the page `#` (h1) title, skipping h2. This tripped `markdownlint` **MD001/heading-increment**, turning the `07.2. Markdown Linter` workflow red on both `develop` and `master` right after the v2.9.16 release. Fixed the generator (`v2_optimizer.py`) and the committed page to emit dimensions as `##` (h2), and updated the CSS selector to `.topic-map-dim h2`. As a bonus, the h2 dimensions now populate the right-hand "On this page" TOC with a clean per-dimension index. Verified with the exact CI `markdownlint` config (0 errors); cache-bust bumped to `?v=2.9.17`.
## [[2.9.16]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.16) - 2026-06-20
### Added
+113 -29
View File
@@ -135,14 +135,14 @@ Additionally, as of May 2026, Nubenetes has reached the **Platinum Operational T
## 2. Repository Metrics and Evolution
### 2.1. The "Heart" of Nubenetes
(Stats as of 2026-06-19)
(Stats as of 2026-06-20)
<!-- HEART_STATS_START -->
| Metric | Value |
| :--- | :--- |
| **Total Technical Resources (Links)** | **18647+** |
| **Specialized MD Pages** | **162** |
| **Total Commits** | **6209+** |
| **Total Commits** | **6359+** |
| **Primary AI Engine** | **Google Gemini (Agentic)** |
<!-- HEART_STATS_END -->
@@ -180,7 +180,7 @@ The growth of Nubenetes reflects the acceleration of the Cloud Native ecosystem.
| 6 | 2023 | 30 | 123 | Maintenance & Refinement |
| 7 | 2024 | 53 | 218 | Curation Strategy Pivot |
| 8 | 2025 | 5 | 20 | Stability & Research Phase |
| 9 | 2026 | 2650 | 10,944 | **Agentic AI Surge** (May 2026 Inception) |
| 9 | 2026 | 2800 | 11,564 | **Agentic AI Surge** (May 2026 Inception) |
<!-- ANNUAL_GROWTH_END -->
<!-- ANNUAL_CHART_START -->
@@ -195,9 +195,9 @@ config:
xychart-beta
title "Nubenetes Annual Growth Metrics (20182026)"
x-axis ["2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026"]
y-axis "Volume (Commits / Estimated New Refs)" 0 --> 11000
bar [1445, 586, 8449, 2193, 1660, 123, 218, 20, 10944]
bar [350, 142, 2046, 531, 402, 30, 53, 5, 2650]
y-axis "Volume (Commits / Estimated New Refs)" 0 --> 12000
bar [1445, 586, 8449, 2193, 1660, 123, 218, 20, 11564]
bar [350, 142, 2046, 531, 402, 30, 53, 5, 2800]
```
<!-- ANNUAL_CHART_END -->
@@ -207,7 +207,7 @@ xychart-beta
| :--- | :---: | :---: | :--- |
| 2026-04 | 25 | 103 | Active Curation |
| 2026-05 | 2101 | 8,677 | **Agentic Inception (Gemini Era)** |
| 2026-06 | 524 | 2,164 | Active Curation |
| 2026-06 | 674 | 2,783 | Active Curation |
<!-- MONTHLY_SURGE_END -->
### 2.4. Content Distribution and Semantic Clustering
@@ -350,9 +350,9 @@ Nubenetes partitions AI Agent tasks between the automated cloud pipeline and loc
```mermaid
graph TD
A["awesome-kubernetes Repository"] --> B["GEMINI.md<br>(Curation & Data Mandates)"]
A --> C[".gemini/skills/awesome-kubernetes-ops/SKILL.md<br>(Local Dev Operations Guide)"]
A["awesome-kubernetes Repository"] --> B["GEMINI.md<br>(Curation and Data Mandates)"]
A --> C[".gemini/skills/<br>awesome-kubernetes-ops/SKILL.md<br>(Local Dev Operations Guide)"]
B --> D["Cloud Automation<br>(GitHub Actions runner)"]
B --> E["Local Workspace<br>(Antigravity Coding Session)"]
@@ -443,6 +443,15 @@ The V2 portal includes an **AI-powered Intelligence Digest** system that surface
- **Clean URLs enforced**: Both V1 and V2 use `use_directory_urls: true` producing SEO-friendly URLs (e.g., `/kubernetes/` not `/kubernetes.html`).
- **Offline plugin permanently removed**: The MkDocs `offline` plugin forces `.html` suffixes on all URLs, breaking thousands of existing deep-links and SEO authority. It is explicitly forbidden in both `CLAUDE.md` and `GEMINI.md` mandates.
#### V2 Home Restructure and SEO (v2.9.16v2.9.20)
- **Category-first landing page**: The home leads with the dynamic **Trending Now / Intelligence Digest**, followed by the signature YouTube mosaic (now framed under a *"The Cloud Native Universe We Track"* heading with **visible per-group category labels** and `loading="lazy"` on its ~150 logos).
- **Topic Map page** ([`topic-map.md`](v2-docs/topic-map.md)): The complete category directory grouped by strategic dimension in a **responsive multi-column CSS grid**, with a **per-category resource count** derived from a recursive walk of each category's link tree. Replaces the long flat "Strategic Dimensions" list that previously bloated the home.
- **Methodology page** ([`methodology.md`](v2-docs/methodology.md)): The Maturity Taxonomy and Technical Impact (star-score) legend tables, moved off the home into a dedicated reference page.
- **Per-page "Last update" dates**: The `git-revision-date-localized` plugin surfaces a real last-modified date on every page (freshness signal for SEO and readers); the deploy checkout uses `fetch-depth: 0` for full history.
- **JSON-LD structured data**: schema.org `WebSite` (with a sitelinks `SearchAction`) + publishing `Organization` markup injected via `docs/overrides/main.html` for richer search results.
- **Branded 404 page** and **privacy-friendly video embeds** (`youtube-nocookie.com` + lazy-loading + responsive `aspect-ratio` wrapper).
- **Deterministic generated artifacts**: the RSS feed's `lastBuildDate` derives from item content dates (not wall-clock), and the PR Guardian no longer auto-formats the generated `v2-docs/` tree — both eliminating spurious `develop ↔ master` churn.
### 5.3. Architecture Comparison Matrix: V1 vs. V2
To better understand the dual-nature of the project, the following matrix details the technical and philosophical differences between the two editions:
@@ -550,6 +559,41 @@ To guarantee backward compatibility and Git efficiency, the system operates on a
* **Structural Intelligence**: `hierarchy` (Recursive JSON list), `tags` (JSON list), `v1_locations`, `v2_locations`, `youtube_mosaic` (JSON dict).
* **Platinum Lifecycle**: `content_hash` (SHA256 fingerprint), `health_score` (0-100), `source_provenance`, `social_preview_url`, `mentions_count`, `addition_method`.
#### 6.1.3. Database Architecture Diagram (YAML + SQLite Coexistence)
The following diagram details the dual-format storage engine: the flat `inventory.sql` text file is the Git source of truth, compiled into an in-memory SQLite database at runtime for relational queries, then decompiled back on save and mirrored to `inventory.yaml` for backward-compatible, high-speed parsing.
<details><summary>🗺️ <b>View Database Architecture Diagram</b></summary>
```mermaid
graph TD
subgraph GIT["Git Source of Truth (versioned · 1 line per resource)"]
SQL["data/inventory.sql<br/>flat SQL text"]
YAML["data/inventory.yaml<br/>backward-compatible mirror"]
end
SQL -->|"compile on load"| MEM[("In-memory SQLite<br/>relational schema + SQL queries")]
MEM -->|"iterdump() on save"| SQL
MEM -->|"dual-save sync"| YAML
YAML -->|"CSafeLoader / CSafeDumper<br/>native C speed (10-20x)"| PARSE["Python consumers<br/>v2_optimizer · reorganize_mosaic<br/>safety_guard"]
AI["Gemini AI agents"] -->|"JSON messages in / out"| MEM
subgraph SCHEMA["Per-resource record — url = Primary Key"]
CORE["Core<br/>title · year · stars 0-5<br/>description V1 · ai_summary V2 · category"]
STRUCT["Structural<br/>hierarchy JSON · tags JSON<br/>v1/v2_locations · youtube_mosaic JSON"]
PLAT["Platinum lifecycle<br/>content_hash SHA256 · health_score<br/>discovered_at · last_ai_eval · addition_method"]
end
MEM -.->|"defines"| CORE
MEM -.->|"defines"| STRUCT
MEM -.->|"defines"| PLAT
style SQL fill:#bbf,stroke:#333,stroke-width:2px
style MEM fill:#f96,stroke:#333,stroke-width:2px
style YAML fill:#86efac,stroke:#333,stroke-width:2px
```
</details>
### 6.2. The 'Database-First' Reasoning Protocol (Zero-Redundancy)
To maximize economic efficiency and maintain the **30-minute execution standard**, all AI agents follow a **Database-First** and **Zero-Redundancy** protocol:
1. **Local Lookup**: Before initiating any Gemini call, the agent queries the compiled SQLite/SQL database to see if the URL is already indexed.
@@ -561,7 +605,48 @@ To maximize economic efficiency and maintain the **30-minute execution standard*
7. **Mandatory Persistence**: Modified databases are automatically injected into Pull Requests, ensuring that "System Memory" is version-controlled and shared across all workflows.
### 6.3. Database Lifecycle and Hygiene
To maintain a high-performance "Single Source of Truth", Nubenetes implements automated hygiene protocols:
To maintain a high-performance "Single Source of Truth", Nubenetes implements automated hygiene protocols. The diagram below traces a resource's full lifecycle — from autonomous discovery and ingestion, through incremental (cached) maintenance and enrichment, to rendering and deployment — with continuous background garbage collection.
<details><summary>🗺️ <b>View Full Data Lifecycle Diagram</b></summary>
```mermaid
graph TD
subgraph S1["1 · Discovery and Ingestion"]
SRC["X.com · RSS · GitHub Trending<br/>autonomous source discovery"] --> CUR["Agentic Curator<br/>dedup · vaporware filter · scoring"]
end
CUR -->|"new resources"| DB[("Unified DB<br/>inventory.sql + inventory.yaml")]
subgraph S2["2 · Maintenance and Enrichment (incremental + cached)"]
HEALTH["Health Monitor<br/>200 OK · rescue 404s"]
META["Metadata Engine<br/>GitHub stars · license · CNCF status"]
AIEVAL["AI Curator<br/>summary · hierarchy · tags · debate"]
DRIFT["Drift and Staleness<br/>SHA256 · re-eval after 6 months"]
end
DB <--> HEALTH
DB <--> META
DB <--> AIEVAL
DB <--> DRIFT
subgraph S3["3 · Render"]
DB -->|"surgical line edits"| V1["V1 Archive<br/>docs/"]
DB -->|"elite selection + rebuild"| V2["V2 Portal<br/>v2-docs/"]
DB --> AUX["RSS feed · digest<br/>README metrics"]
end
subgraph S4["4 · Publish and Deploy"]
V1 --> REL["develop → master<br/>tag + GitHub Release"]
V2 --> REL
REL --> PAGES["Native GH Pages<br/>nubenetes.com"]
end
GC["Bi-monthly GC<br/>orphan pruning · audit log"] -.->|"hygiene"| DB
style DB fill:#f96,stroke:#333,stroke-width:2px
style PAGES fill:#86efac,stroke:#333,stroke-width:2px
```
</details>
- **Universal Rescue Protocol (The Resurrection Rule)**: For ALL technical resources, the engine refuses to delete a link immediately upon a 404 or generic redirect. Instead, it triggers a "Technical Resurrection" cycle using **Real-time Web Grounding** to identify specific paths on destination domains. This is essential for preserving legendary content during massive corporate site migrations (e.g., **Nginx** to **F5**, or the **Ansible Blog** move to personal domains).
- **High-Value Preservation (The 'Review Required' Rule)**: Resources identified as **High-Value** (marked with 🌟 or bold formatting) are exempt from automatic deletion. If rescue fails, they are marked as `status: review_required` for manual verification, ensuring no significant technical assets are lost during autonomous cleaning.
@@ -761,10 +846,10 @@ graph TD
end
subgraph "Agentic Tiering and Debate (Multi-Agent)"
AA["Analyst Agent (Flash)"]
AV["Auditor Agent (Pro)"]
MCP[["MCP Grounding (Search)"]]
DBT["Consensus and Debate (Flash and Pro)"]
AA["Analyst Agent<br/>(Flash)"]
AV["Auditor Agent<br/>(Pro)"]
MCP[["MCP Grounding<br/>(Search)"]]
DBT["Consensus and Debate<br/>(Flash and Pro)"]
end
AC -->|"Raw Discovery"| AA
@@ -876,19 +961,19 @@ To eliminate individual LLM rating bias, resolve borderline cases, and prevent a
```mermaid
graph TD
A["New Resource Found"] --> FP["Fast-Pass Evaluator (Flash)"]
FP -->|Confident Score Outside 60-75| G["Accept / Reject Directly"]
FP -->|Borderline Score 60-75| B["Persona 1: Security Architect"]
FP -->|Borderline Score 60-75| C["Persona 2: Cloud Native SRE"]
FP -->|Borderline Score 60-75| D["Persona 3: AI Platform Engineer"]
B --> E["Independent expert Evaluations"]
A["New Resource Found"] --> FP["Fast-Pass Evaluator<br/>(Flash)"]
FP -->|Confident Score Outside 60-75| G["Accept /<br/>Reject Directly"]
FP -->|Borderline Score 60-75| B["Persona 1:<br/>Security Architect"]
FP -->|Borderline Score 60-75| C["Persona 2:<br/>Cloud Native SRE"]
FP -->|Borderline Score 60-75| D["Persona 3:<br/>AI Platform Engineer"]
B --> E["Independent Expert<br/>Evaluations"]
C --> E
D --> E
E -->|Expert Scores Diverge >= 15 points| F["Trigger Debate Round"]
E -->|Expert Scores Diverge >= 15 points| F["Trigger<br/>Debate Round"]
E -->|Expert Scores Converge| G
F --> H["Round-Robin Discussion: Argue Pros and Cons"]
H --> I["Consensus Reached and Final Score Assigned"]
I --> J["Save Decision to Persistent Memory JSON"]
F --> H["Round-Robin Discussion:<br/>Argue Pros and Cons"]
H --> I["Consensus Reached and<br/>Final Score Assigned"]
I --> J["Save Decision to<br/>Persistent Memory JSON"]
G --> J
```
@@ -1079,11 +1164,10 @@ graph LR
B --> D["V2 Vision Engine"]
B --> Z["README Sync"]
D --> E["V2 Update (develop)"]
M["Sync to 'master'"] --> C["Pip Cache & CI/CD Build"]
M["Sync to 'master'"] --> C["Pip Cache and<br/>CI/CD Build"]
C --> F["Upload Pages Artifact"]
F --> G["Native Deploy: V1 (Root/SEO), V2 (/v2/), V1 Fallback (/v1/)"]
G --> H["Inject Root Redirect to /v2/"]
Z --> B
F --> G["Native Deploy:<br/>V1 (Root/SEO) · V2 (/v2/)<br/>· V1 Fallback (/v1/)"]
G --> H["Inject Root<br/>Redirect to /v2/"]
Z --> B
```
+516 -516
View File
File diff suppressed because it is too large Load Diff
+2064
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -7440,6 +7440,6 @@
"method": "fallback_small"
}
},
"last_updated": "2026-06-19T19:39:37.292712+02:00"
"last_updated": "2026-06-20T16:31:41.476968+02:00"
}
}
+181
View File
@@ -3,3 +3,184 @@
{% block announce %}
<strong>New:</strong> <a href="./tech-digest/">Intelligence Digest</a> — AI-curated trending resources across 26 categories
{% endblock %}
{#-
Quick-nav bar rendered below the header on every page (via the `tabs` block,
which is empty here since navigation.tabs is disabled). Single slim row that
stays one row no matter how many destinations are added: the most-used
flagships are direct one-click pills, and the long-tail clusters collapse into
category menus built with the native HTML Popover API + CSS Anchor Positioning
(Baseline 2026) — zero JS, with free Esc/click-outside dismissal and focus
management. Adding a leaf grows a menu, never the bar.
Direct pills: Topic Map · Kubernetes · Docker · GitOps · Terraform · AI & MCP
Menus: Digest (Tech · Industry) · K8s (Tools · Helm · Managed · OpenShift · Tutorials)
· Cloud (AWS · Azure · GCP · Serverless · FinOps)
· Network (Networking · Istio · Service Mesh · K8s Net)
· Security (K8s Security · DevSecOps)
· Ops (CI/CD · IaC · Observability · SRE · DevOps · Dev Portals)
· More (Tags · Demos · Videos · Ansible · Messaging · MLOps · Methodology · V1)
-#}
{% block tabs %}
<nav class="nb-quicknav" aria-label="Quick navigation">
<div class="nb-quicknav__inner">
<a class="nb-quicknav__link" href="/topic-map/">🗺️ Topic Map</a>
<a class="nb-quicknav__link" href="/kubernetes/">☸️ Kubernetes</a>
<a class="nb-quicknav__link" href="/docker/">🐳 Docker</a>
<a class="nb-quicknav__link" href="/gitops/">🔄 GitOps</a>
<a class="nb-quicknav__link" href="/terraform/">🏗️ Terraform</a>
<a class="nb-quicknav__link" href="/ai-agents-mcp/">🤖 AI &amp; MCP</a>
<span class="nb-quicknav__group">
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-digest" type="button">📊 Digest <span class="nb-quicknav__caret" aria-hidden="true"></span></button>
<div class="nb-quicknav__menu" id="nb-pop-digest" popover>
<a href="/tech-digest/">📊 Tech &amp; Cloud Digest</a>
<a href="/industry-digest/">🌍 Industry &amp; Geo Digest</a>
</div>
</span>
<span class="nb-quicknav__group">
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-k8s" type="button">🧰 K8s <span class="nb-quicknav__caret" aria-hidden="true"></span></button>
<div class="nb-quicknav__menu" id="nb-pop-k8s" popover>
<a href="/kubernetes-tools/">🧰 Kubernetes Tools</a>
<a href="/helm/">📦 Helm</a>
<a href="/managed-kubernetes-in-public-cloud/">☁️ Managed K8s</a>
<a href="/openshift/">🎩 OpenShift</a>
<a href="/kubernetes-tutorials/">🎓 Tutorials</a>
</div>
</span>
<span class="nb-quicknav__group">
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-cloud" type="button">☁️ Cloud <span class="nb-quicknav__caret" aria-hidden="true"></span></button>
<div class="nb-quicknav__menu" id="nb-pop-cloud" popover>
<a href="/aws/">☁️ AWS</a>
<a href="/azure/">☁️ Azure</a>
<a href="/GoogleCloudPlatform/">☁️ GCP</a>
<a href="/serverless/">⚡ Serverless</a>
<a href="/finops/">💰 FinOps</a>
</div>
</span>
<span class="nb-quicknav__group">
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-net" type="button">🌐 Network <span class="nb-quicknav__caret" aria-hidden="true"></span></button>
<div class="nb-quicknav__menu" id="nb-pop-net" popover>
<a href="/networking/">🌐 Networking</a>
<a href="/istio/">⛵ Istio</a>
<a href="/servicemesh/">🕸️ Service Mesh</a>
<a href="/kubernetes-networking/">🔗 K8s Net</a>
</div>
</span>
<span class="nb-quicknav__group">
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-sec" type="button">🔐 Security <span class="nb-quicknav__caret" aria-hidden="true"></span></button>
<div class="nb-quicknav__menu" id="nb-pop-sec" popover>
<a href="/kubernetes-security/">🔐 K8s Security</a>
<a href="/devsecops/">🛡️ DevSecOps</a>
</div>
</span>
<span class="nb-quicknav__group">
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-ops" type="button">⚙️ Ops <span class="nb-quicknav__caret" aria-hidden="true"></span></button>
<div class="nb-quicknav__menu" id="nb-pop-ops" popover>
<a href="/cicd/">🚀 CI/CD</a>
<a href="/iac/">📜 IaC</a>
<a href="/monitoring/">📈 Observability</a>
<a href="/sre/">🛠️ SRE</a>
<a href="/devops/">♾️ DevOps</a>
<a href="/developerportals/">🏛️ Developer Portals</a>
</div>
</span>
<span class="nb-quicknav__group">
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-more" type="button">⋯ More <span class="nb-quicknav__caret" aria-hidden="true"></span></button>
<div class="nb-quicknav__menu" id="nb-pop-more" popover>
<a href="/tags/">🏷️ Technical Tags</a>
<a href="/demos/">🧪 Demos</a>
<a href="/videos/">🎥 Videos</a>
<a href="/ansible/">📋 Ansible</a>
<a href="/message-queue/">📨 Messaging</a>
<a href="/mlops/">🧠 MLOps</a>
<a href="/methodology/">📐 Methodology</a>
<a class="nb-quicknav__menu-muted" href="/v1/">📚 V1 Archive</a>
</div>
</span>
</div>
</nav>
{% endblock %}
{#-
JSON-LD structured data (schema.org) for richer search results: declares the
WebSite (with a sitelinks SearchAction) and the publishing Organization.
Only the V2 portal uses this overrides dir (custom_dir: docs/overrides), so
this injects on the canonical nubenetes.com root; V1 uses the stock theme.
-#}
{% block extrahead %}
{{ super() }}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://nubenetes.com/#website",
"url": "https://nubenetes.com/",
"name": "Nubenetes",
"description": "AI-curated portal for the modern Cloud Native ecosystem: high-density, ranked selection of top-tier Kubernetes, DevOps and Cloud resources.",
"publisher": { "@id": "https://nubenetes.com/#organization" },
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://nubenetes.com/?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
},
{
"@type": "Organization",
"@id": "https://nubenetes.com/#organization",
"name": "Nubenetes",
"url": "https://nubenetes.com/",
"logo": {
"@type": "ImageObject",
"url": "https://nubenetes.com/images/favicon-ultra.png"
},
"sameAs": [
"https://github.com/nubenetes/awesome-kubernetes",
"https://twitter.com/nubenetes",
"https://www.linkedin.com/groups/1937212/"
]
}
]
}
</script>
{#-
Per-page structured data: a CollectionPage (each V2 page is a curated
collection of resources) tied to the WebSite/Organization above, with
datePublished / dateModified fed by the git-revision-date plugin. Enables
richer search results. Skipped on the homepage (already the WebSite entity).
-#}
{% if page and not page.is_homepage and page.canonical_url %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"@id": {{ (page.canonical_url ~ "#webpage") | tojson }},
"url": {{ page.canonical_url | tojson }},
"name": {{ (page.title or config.site_name) | tojson }},
"isPartOf": { "@id": "https://nubenetes.com/#website" },
"publisher": { "@id": "https://nubenetes.com/#organization" },
"inLanguage": "en"
{%- if page.meta and page.meta.description %},
"description": {{ page.meta.description | tojson }}
{%- endif %}
{%- if page.meta and page.meta.git_creation_date_localized_raw_iso_date %},
"datePublished": {{ page.meta.git_creation_date_localized_raw_iso_date | tojson }}
{%- endif %}
{%- if page.meta and page.meta.git_revision_date_localized_raw_iso_date %},
"dateModified": {{ page.meta.git_revision_date_localized_raw_iso_date | tojson }}
{%- endif %}
}
</script>
{% endif %}
{% endblock %}
+176 -1
View File
@@ -1226,8 +1226,183 @@ input[type="text"] {
width: 100%;
margin: 0 0 1.4rem;
}
.topic-map-dim h3 {
.topic-map-dim h2 {
margin-top: 0;
font-size: 1.05rem;
}
/* ===================================================================
Slim quick-nav bar (rendered in the theme `tabs` block, below header)
Persistent one-click access to key destinations on every page.
=================================================================== */
.nb-quicknav {
background: var(--md-header-bg-color);
border-bottom: 1px solid color-mix(in srgb, var(--md-accent-fg-color) 22%, transparent);
}
.nb-quicknav__inner {
max-width: 1600px;
margin-inline: auto;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center; /* centered rows read as a balanced command bar */
gap: 0.4rem 0.32rem;
padding-block: 0.5rem;
padding-inline: 0.7rem;
}
.nb-quicknav__link {
/* chip colors derived from the theme accent via color-mix (Chrome 111+) */
--nb-chip-bg: color-mix(in srgb, var(--md-accent-fg-color) 8%, transparent);
--nb-chip-bd: color-mix(in srgb, var(--md-accent-fg-color) 18%, transparent);
display: inline-flex;
align-items: center;
gap: 0.3em;
color: rgba(255, 255, 255, 0.82) !important;
text-decoration: none;
font-size: 0.62rem; /* sized so all pills + menus fit one row down to ~1280px */
font-weight: 600;
letter-spacing: 0.01em;
white-space: nowrap;
padding: 0.22rem 0.55rem;
border-radius: 999px;
background: var(--nb-chip-bg);
border: 1px solid var(--nb-chip-bd);
transition: background 0.18s ease, border-color 0.18s ease,
color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
}
.nb-quicknav__link:hover {
color: #fff !important;
background: color-mix(in srgb, var(--md-accent-fg-color) 32%, transparent);
border-color: var(--md-accent-fg-color);
transform: translateY(-1px);
box-shadow: 0 2px 10px color-mix(in srgb, var(--md-accent-fg-color) 40%, transparent);
}
.nb-quicknav__link:focus-visible {
outline: 2px solid var(--md-accent-fg-color);
outline-offset: 2px;
}
.nb-quicknav__link--muted {
opacity: 0.6;
}
.nb-quicknav__link--muted:hover {
opacity: 1;
}
/* Category menus: native Popover API + CSS Anchor Positioning (Baseline 2026)
The long-tail clusters collapse behind category buttons so the bar stays one
row. Opening is click-driven via the Popover API (free Esc / click-outside
dismissal + focus management); zero JS. */
.nb-quicknav__group {
display: inline-flex;
}
/* thin divider between the direct pills and the category menus */
.nb-quicknav__group:first-of-type {
margin-inline-start: 0.3rem;
padding-inline-start: 0.55rem;
border-inline-start: 1px solid color-mix(in srgb, var(--md-accent-fg-color) 18%, transparent);
}
.nb-quicknav__btn {
font-family: inherit;
cursor: pointer;
}
.nb-quicknav__caret {
font-size: 0.85em;
opacity: 0.75;
transition: transform 0.18s ease;
}
.nb-quicknav__group:has(.nb-quicknav__menu:popover-open) .nb-quicknav__caret {
transform: rotate(180deg);
}
/* Explicit anchor pairing per buttonmenu do NOT rely on the popover's
implicit anchor (it isn't established reliably, leaving the menu in its
static position over the button). */
[popovertarget="nb-pop-digest"] { anchor-name: --nb-a-digest; }
#nb-pop-digest { position-anchor: --nb-a-digest; }
[popovertarget="nb-pop-k8s"] { anchor-name: --nb-a-k8s; }
#nb-pop-k8s { position-anchor: --nb-a-k8s; }
[popovertarget="nb-pop-cloud"] { anchor-name: --nb-a-cloud; }
#nb-pop-cloud { position-anchor: --nb-a-cloud; }
[popovertarget="nb-pop-net"] { anchor-name: --nb-a-net; }
#nb-pop-net { position-anchor: --nb-a-net; }
[popovertarget="nb-pop-sec"] { anchor-name: --nb-a-sec; }
#nb-pop-sec { position-anchor: --nb-a-sec; }
[popovertarget="nb-pop-ops"] { anchor-name: --nb-a-ops; }
#nb-pop-ops { position-anchor: --nb-a-ops; }
[popovertarget="nb-pop-more"] { anchor-name: --nb-a-more; }
#nb-pop-more { position-anchor: --nb-a-more; }
.nb-quicknav__menu {
inset: auto; /* reset the UA-centered popover defaults */
margin: 0;
/* drop below the invoking button, left-aligned. NB: position-area values must
be all-physical or all-logical mixing (e.g. `bottom span-inline-end`) is
invalid and silently computes to `none`, leaving the menu over the button. */
position-area: bottom span-right;
position-try-fallbacks: flip-block, flip-inline; /* auto-flip near edges */
margin-block-start: 0.45rem;
min-width: 9.5rem;
padding: 0.35rem;
display: flex;
flex-direction: column;
gap: 0.1rem;
border: 1px solid color-mix(in srgb, var(--md-accent-fg-color) 30%, transparent);
border-radius: 0.6rem;
background: color-mix(in srgb, var(--md-header-bg-color) 86%, #000);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
/* entry/exit animation across the display toggle */
opacity: 0;
transform: translateY(-4px);
transition: opacity 0.16s ease, transform 0.16s ease,
overlay 0.16s allow-discrete, display 0.16s allow-discrete;
}
.nb-quicknav__menu:popover-open {
opacity: 1;
transform: translateY(0);
}
@starting-style {
.nb-quicknav__menu:popover-open {
opacity: 0;
transform: translateY(-4px);
}
}
.nb-quicknav__menu a {
display: block;
padding: 0.34rem 0.6rem;
border-radius: 0.4rem;
color: rgba(255, 255, 255, 0.86);
text-decoration: none;
font-size: 0.72rem;
font-weight: 600;
white-space: nowrap;
transition: background 0.14s ease, color 0.14s ease;
}
.nb-quicknav__menu a:hover,
.nb-quicknav__menu a:focus-visible {
background: color-mix(in srgb, var(--md-accent-fg-color) 30%, transparent);
color: #fff;
outline: none;
}
.nb-quicknav__menu-muted {
opacity: 0.62;
margin-block-start: 0.15rem;
padding-block-start: 0.42rem !important;
border-block-start: 1px solid rgba(255, 255, 255, 0.1);
}
@media (prefers-reduced-motion: reduce) {
.nb-quicknav__link,
.nb-quicknav__caret,
.nb-quicknav__menu { transition: none; }
.nb-quicknav__link:hover { transform: none; }
}
/* On phones the left drawer already exposes navigation; one scrollable row. */
@media screen and (max-width: 44.9375em) {
.nb-quicknav__inner {
flex-wrap: nowrap;
justify-content: flex-start;
overflow-x: auto;
scrollbar-width: none; /* Firefox */
}
.nb-quicknav__inner::-webkit-scrollbar { display: none; } /* WebKit/Blink */
}
.topic-map-dim ul {
margin-top: 0.3rem;
+7 -1
View File
@@ -27,7 +27,13 @@
h1.textContent.includes("Nubenetes Elite Portal (V2)") ||
h1.textContent.includes("Agentic Video Hub") ||
h1.textContent.includes("Technical Tags Index") ||
h1.textContent.includes("Intelligence Digest")
h1.textContent.includes("Intelligence Digest") ||
// Topic Map / Methodology list categories and legend rows, not
// tagged resources: their <li> items carry no .md-tag, so the
// maturity pills would always filter to zero and the "X of Y
// resources" count is misleading. Skip them.
h1.textContent.includes("Topic Map") ||
h1.textContent.includes("Methodology")
)) {
return;
}
+1
View File
@@ -5,3 +5,4 @@ youtube-transcript-api
mkdocs-redirects>=1.2.3
mkdocs-minify-plugin>=0.8.0
mkdocs-rss-plugin>=1.15.0
mkdocs-git-revision-date-localized-plugin>=1.3.0
+7 -1
View File
@@ -95,7 +95,13 @@ def main():
files = pr.get_files()
modified_files = [f.filename for f in files if f.status in ["modified", "added"]]
for filepath in modified_files:
if filepath.endswith(".md"):
# The v2-docs/ tree is generated by src/v2_optimizer.py, which is its
# single source of truth for formatting. Auto-formatting it here
# ("&"->"and" in headings, URL trailing-slash stripping) only fights
# the generator: the rewrite lands on develop via the PR while master
# gets the generator's raw form via release merges, producing a
# perpetual cosmetic develop<->master drift. Skip the generated tree.
if filepath.endswith(".md") and not filepath.startswith("v2-docs/"):
auto_format_file(filepath)
except Exception as e:
print(f"Warning: Failed to fetch files for auto-formatting: {e}")
+22 -1
View File
@@ -61,7 +61,28 @@ def generate_rss() -> None:
)
items = items[:ITEMS_PER_FEED]
build_date = _rfc822(datetime.utcnow())
# Deterministic build date = the freshest item's content date, so the feed
# is a pure function of its items. (This used wall-clock now() — rewritten on
# every republish — then _meta.last_updated, but that analysis timestamp is
# itself bumped on each publish even when the ranked content is unchanged, so
# the feed still drifted between develop and master. The item dates only move
# when the content actually changes.) Falls back to _meta.last_updated, then
# a fixed constant, only when no item carries a parseable date.
item_dates = []
for _it in items:
try:
item_dates.append(datetime.strptime(_it.get("date", ""), "%Y-%m-%d"))
except Exception:
pass
if item_dates:
build_dt = max(item_dates)
else:
meta_updated = digest.get("_meta", {}).get("last_updated", "")
try:
build_dt = datetime.fromisoformat(meta_updated) if meta_updated else datetime(2026, 1, 1)
except Exception:
build_dt = datetime(2026, 1, 1)
build_date = _rfc822(build_dt)
lines = [
'<?xml version="1.0" encoding="UTF-8"?>',
+206 -22
View File
@@ -42,7 +42,7 @@ class V2VisionEngine:
"Architectural Foundations": ["introduction", "faq", "kubernetes", "linux", "git", "cloud-arch-diagrams", "matrix-table", "other-awesome-lists", "about"],
"Platform & Site Reliability": ["sre", "devops", "developerportals", "scaffolding", "finops", "chaos-engineering", "performance-testing-with-jenkins-and-jmeter", "project-management-methodology", "project-management-tools", "qa", "test-automation-frameworks", "testops"],
"Hardened Infrastructure": ["iac", "terraform", "pulumi", "crossplane", "ansible", "securityascode", "kubernetes-security", "aws-security", "devsecops", "kustomize", "liquibase"],
"Cloud Providers (Hyperscalers)": ["aws", "azure", "GoogleCloudPlatform", "ibm_cloud", "oraclecloud", "digitalocean", "cloudflare", "managed-kubernetes-in-public-cloud", "public-cloud-solutions", "edge-computing", "aws-architecture", "aws-security", "aws-networking", "aws-databases", "aws-storage", "aws-monitoring", "aws-iac", "aws-tools-scripts", "aws-messaging", "aws-data", "aws-devops", "aws-serverless", "aws-containers", "aws-backup", "aws-training", "aws-newfeatures", "aws-miscellaneous", "aws-pricing"],
"Cloud Providers (Hyperscalers)": ["aws", "azure", "GoogleCloudPlatform", "ibm_cloud", "oraclecloud", "digitalocean", "cloudflare", "managed-kubernetes-in-public-cloud", "public-cloud-solutions", "edge-computing", "aws-security", "aws-networking", "aws-storage", "aws-iac", "aws-serverless", "aws-backup", "aws-newfeatures"],
"Networking & Service Mesh": ["networking", "kubernetes-networking", "servicemesh", "istio", "caching", "web-servers", "cloudflare"],
"The Container Stack": ["docker", "container-managers", "serverless", "kubernetes-autoscaling", "kubernetes-operators-controllers", "kubernetes-storage", "kubernetes-monitoring", "kubernetes-troubleshooting", "kubernetes-backup-migrations", "kubernetes-on-premise", "kubernetes-bigdata", "kubernetes-client-libraries", "kubernetes-releases", "kubernetes-based-devel", "kubernetes-alternatives", "kubectl-commands", "rancher", "openshift", "ocp3", "ocp4", "noops"],
"Data & Advanced Analytics": ["databases", "nosql", "message-queue", "crunchydata", "yaml", "bigdata"],
@@ -65,6 +65,57 @@ class V2VisionEngine:
"oauth": "securityascode",
"digital-money": "finops",
"aws-spain": "aws",
# AWS de-fragmentation: the near-empty / junk-drawer AWS sub-pages
# (<=7 links, plus "miscellaneous") merge into the main aws page so
# it stops being a 3-link stub. The substantial AWS topics
# (serverless, storage, networking, security, iac, backup,
# newfeatures) stay as their own pages and are surfaced via the
# provider hub block (self.subpage_hubs) on aws.md.
"aws-miscellaneous": "aws",
"aws-databases": "aws",
"aws-devops": "aws",
"aws-containers": "aws",
"aws-monitoring": "aws",
"aws-architecture": "aws",
"aws-tools-scripts": "aws",
"aws-messaging": "aws",
"aws-data": "aws",
"aws-training": "aws",
"aws-pricing": "aws",
}
# Provider hub: pages that should render a "deep-dive topic pages" index
# linking to the substantial sub-pages that remain after consolidation.
# (slug, display label) — labels kept short and human-readable.
self.subpage_hubs = {
"aws": [
("aws-serverless", "Serverless"),
("aws-storage", "Storage"),
("aws-networking", "Networking"),
("aws-security", "Security"),
("aws-iac", "IaC"),
("aws-backup", "Backup"),
("aws-newfeatures", "New Features"),
],
# Kubernetes is well-classified (rich parent + substantial distinct
# children), so nothing is merged here — the hub is purely an index
# so the flagship landing surfaces its deep-dive topic pages.
"kubernetes": [
("kubernetes-tools", "Tools"),
("kubernetes-networking", "Networking"),
("kubernetes-security", "Security"),
("kubernetes-monitoring", "Monitoring"),
("kubernetes-storage", "Storage"),
("kubernetes-autoscaling", "Autoscaling"),
("kubernetes-operators-controllers", "Operators"),
("kubernetes-alternatives", "Alternatives"),
("kubernetes-bigdata", "Big Data"),
("kubernetes-tutorials", "Tutorials"),
("kubernetes-backup-migrations", "Backup & Migrations"),
("kubernetes-client-libraries", "Client Libraries"),
("kubernetes-based-devel", "Local Dev"),
("kubernetes-on-premise", "On-Premise"),
],
}
self.library_criteria = (
@@ -1113,6 +1164,7 @@ class V2VisionEngine:
" </div>\n"
" </a>\n"
"</div>\n\n"
"## Explore the Ecosystem\n\n"
"<div class=\"hero-badge-row\">\n"
" <a href=\"./kubernetes/\" style=\"text-decoration: none; color: inherit; display: block;\">\n"
" <div class=\"hero-badge-card hero-badge-card--cyan\">\n"
@@ -1163,6 +1215,7 @@ class V2VisionEngine:
f"{coverage_info}\n\n"
# Altitude fix: surface the fresh, dynamic Trending/Digest BEFORE the
# signature YouTube mosaic (which now closes the page as a brand showcase).
"## Trending Now\n\n"
f"{pulse_md}\n\n"
"## The Cloud Native Universe We Track\n\n"
f"<center markdown=\"1\">\n{mosaic_html}\n</center>\n\n"
@@ -1189,6 +1242,10 @@ class V2VisionEngine:
return total
topic_md = (
"---\n"
"description: \"The complete Nubenetes V2 directory: every curated Kubernetes, "
"Cloud Native and DevOps category by strategic dimension, with resource counts.\"\n"
"---\n"
"# Topic Map\n\n"
"!!! tip \"The complete Nubenetes V2 directory\"\n"
" Every curated category across all strategic dimensions, with the number of "
@@ -1199,7 +1256,10 @@ class V2VisionEngine:
for dim in self.dimensions.keys():
if dim in dim_groups:
topic_md += "<section class=\"topic-map-dim\" markdown=\"1\">\n\n"
topic_md += f"### {dim}\n\n"
# h2 (not h3): the page H1 is "Topic Map", so dimensions must
# increment by one level (markdownlint MD001). Also gives the
# right-hand TOC a clean per-dimension index.
topic_md += f"## {dim}\n\n"
for f in sorted(dim_groups[dim]):
count = _count_links(data[f]["content"])
topic_md += f"- **[{data[f]['title']}](./{f})** <span class=\"topic-count\">{count}</span>\n"
@@ -1210,6 +1270,10 @@ class V2VisionEngine:
# --- Methodology: maturity taxonomy + technical impact reference ---------
methodology_md = (
"---\n"
"description: \"How Nubenetes V2 classifies and ranks resources: the maturity "
"taxonomy and technical impact (star) scoring used across the Elite portal.\"\n"
"---\n"
"# Methodology\n\n"
"!!! abstract \"How Nubenetes V2 classifies and ranks resources\"\n"
" The reference legends below explain the maturity tags and the technical "
@@ -1282,14 +1346,77 @@ class V2VisionEngine:
used_headers = {info['long_title']} # Mandate 30: MD024 - Pre-populate with H1 to avoid duplicates
# Formulate V1 counterpart link dynamically
v1_link = f"/v1/{f_name.replace('.md', '/')}"
# Unique per-page SEO meta description (front-matter) so each page no
# longer falls back to the identical global site_description. Material
# emits it as <meta name="description"> + og:description. Enrich it with
# the page's top resource names (long-tail keywords), filtering out
# URL/path-like titles for readability; fall back to a clean template.
def _collect_links(node, acc):
if "__links__" in node:
acc.extend(node["__links__"])
for _k, _v in node.items():
if _k != "__links__" and isinstance(_v, dict):
_collect_links(_v, acc)
return acc
_page_links = _collect_links(info["content"], [])
_page_links.sort(key=lambda x: (-(x.get("stars") or 0), -(int(x["year"]) if str(x.get("year", "")).isdigit() else 0)))
_names, _seen_names = [], set()
for _l in _page_links:
_nm = nuclear_strip(str(_l.get("title", "")))
# Drop emojis/stars and edge punctuation that leak into titles.
_nm = re.sub(r'[\U0001F000-\U0001FAFF☀-➿⭐⭕️]', '', _nm)
_nm = re.sub(r'\s+', ' ', _nm).strip(" -–—·:|")
_low = _nm.lower()
if not (3 <= len(_nm) <= 26):
continue
if "/" in _nm or "http" in _low or any(d in _low for d in (".com", ".io", ".org", ".net", ".dev", ".sh", ".ai", ".xyz")):
continue
if _low in _seen_names:
continue
_seen_names.add(_low)
_names.append(_nm)
if len(_names) >= 2:
break
_seo_title = str(info.get('title') or info['long_title'])[:60].strip()
if len(_names) >= 2:
_seo_desc = (
f"Top {_seo_title} resources for 2026, AI-ranked: {', '.join(_names)} and more "
f"— curated Cloud Native tools, guides and references."
)
else:
_seo_desc = (
f"Curated, AI-ranked {_seo_title} resources for the 2026 Cloud Native "
f"architect: top-tier tools, guides and references ({info['dim']})."
)
_seo_desc = _seo_desc.replace("\\", " ").replace('"', "'").replace("\n", " ").strip()
if len(_seo_desc) > 165:
_seo_desc = _seo_desc[:162].rsplit(" ", 1)[0].rstrip(" ,;:—-") + "."
md = (
f"---\n"
f"description: \"{_seo_desc}\"\n"
f"---\n"
f"# {info['long_title']}\n\n"
f"!!! tip \"Nubenetes V2 Elite Portal\"\n"
f" You are browsing the AI-Curated V2 Elite Edition. Looking for the exhaustive list of references? Check out the [**V1 Historical Archive**]({v1_link}).\n\n"
f"!!! info \"Architectural Context\"\n"
f" Detailed reference for {info['long_title']} in the context of {info['dim']}.\n\n"
)
# Provider hub: surface the substantial sub-pages that remain after
# consolidation so the landing page is a navigable index, not a stub.
_hub_slug = f_name.replace(".md", "")
if _hub_slug in self.subpage_hubs:
_children = [
(c, lbl) for (c, lbl) in self.subpage_hubs[_hub_slug]
if (f"{c}.md" in data) or os.path.exists(os.path.join(V2_DIR, f"{c}.md"))
]
if _children:
_child_links = " · ".join(f"[{lbl}](./{c}/)" for (c, lbl) in _children)
md += (
f"!!! abstract \"Deep-Dive Topic Pages\"\n"
f" {_child_links}\n\n"
)
# In-page Markdown Table of Contents intentionally omitted.
# The MkDocs Material theme renders a native, sticky "On this page" TOC
# (right sidebar) from the headings below, so a duplicated Markdown TOC
@@ -1426,9 +1553,15 @@ class V2VisionEngine:
tags_to_process = list(l.get("tags", []))
# Include language indexing for non-English resources (Mandate 10)
lang = l.get("language", "English")
# Skip non-language values the AI sometimes emits, so the tag index
# is not polluted with meaningless "X Content" buckets.
_lang_junk = {
"english", "en", "n/a", "na", "none", "null", "unknown", "",
"not applicable", "multiple", "multi-language", "polyglot", "various",
}
if lang.lower() in ["spanish", "es", "english/spanish"]:
tags_to_process.append("[SPANISH CONTENT]")
elif lang.lower() != "english" and lang.lower() != "n/a" and lang.lower() != "none":
elif lang.lower() not in _lang_junk:
tags_to_process.append(f"[{lang.upper()} CONTENT]")
for t in tags_to_process:
@@ -1462,27 +1595,78 @@ class V2VisionEngine:
" Browse all V2 resources grouped by maturity levels and technical domains.\n\n"
)
# Build TOC
toc_lines = []
for tag in sorted_tags:
tag_display = tag.replace("[", "").replace("]", "").replace("&", "and").title()
if tag_display.upper() in ["EBPF", "WASM", "GITOPS", "IAC", "SRE", "AI", "MCP", "DB", "MLOPS"]:
tag_display = tag_display.upper()
slug = tag_display.lower().replace(" ", "-")
slug = re.sub(r'[^a-z0-9-]', '', slug)
slug = re.sub(r'-+', '-', slug).strip('-')
toc_lines.append(f"1. [{tag_display}](#{slug}) ({len(by_tag[tag])} resources)")
md += "## Table of Contents\n\n" + "\n".join(toc_lines) + "\n\n"
# Precompute display name + UNIQUE slug for every tag, shared by both the
# grouped TOC and the section headers so anchors always match. This fixes
# collisions where C / C# / C++ all slugged to "c-content" (broken links).
def _tag_display(tag):
d = tag.replace("[", "").replace("]", "").replace("&", "and").title()
if d.upper() in ["EBPF", "WASM", "GITOPS", "IAC", "SRE", "AI", "MCP", "DB", "MLOPS"]:
d = d.upper()
return d
_seen_slugs = set()
def _tag_slug(tag):
s = tag.replace("[", "").replace("]", "").lower()
s = s.replace("#", "-sharp").replace("++", "-plus-plus").replace("&", "-and-").replace("/", "-")
s = re.sub(r'[^a-z0-9-]', '-', s)
s = re.sub(r'-+', '-', s).strip('-')
base, n = s, 1
while s in _seen_slugs:
n += 1
s = f"{base}-{n}"
_seen_slugs.add(s)
return s
tag_meta = {
tag: {"display": _tag_display(tag), "slug": _tag_slug(tag), "count": len(by_tag[tag])}
for tag in sorted_tags
}
def _count_label(n):
return f"{n} resource" + ("" if n == 1 else "s")
# Partition custom tags: language/format ("X CONTENT") vs technical domains,
# so the long, low-signal language tail does not bury the maturity tags.
maturity_tags = [t for t in sorted_tags if t in standard_order]
lang_tags = sorted(
[t for t in sorted_tags if t not in standard_order and t.endswith("CONTENT]")],
key=lambda t: -tag_meta[t]["count"],
)
other_tags = sorted(
[t for t in sorted_tags if t not in standard_order and not t.endswith("CONTENT]")],
key=lambda t: -tag_meta[t]["count"],
)
# Build a grouped TOC: maturity as a clean numbered list; domains and the
# language/format tail as compact, count-sorted inline pill rows.
md += "## Table of Contents\n\n"
if maturity_tags:
md += "### Maturity and Quality\n\n"
for t in maturity_tags:
m = tag_meta[t]
md += f"1. [{m['display']}](#{m['slug']}) ({_count_label(m['count'])})\n"
md += "\n"
if other_tags:
md += "### Technical Domains\n\n"
md += " · ".join(
f"[{tag_meta[t]['display']}](#{tag_meta[t]['slug']}) ({tag_meta[t]['count']})"
for t in other_tags
) + "\n\n"
if lang_tags:
md += "### Language and Format\n\n"
md += "Resources indexed by their primary source language or document format.\n\n"
md += " · ".join(
f"[{tag_meta[t]['display'].replace(' Content', '')}](#{tag_meta[t]['slug']}) ({tag_meta[t]['count']})"
for t in lang_tags
) + "\n\n"
for tag in sorted_tags:
tag_display = tag.replace("[", "").replace("]", "").replace("&", "and").title()
if tag_display.upper() in ["EBPF", "WASM", "GITOPS", "IAC", "SRE", "AI", "MCP", "DB", "MLOPS"]:
tag_display = tag_display.upper()
# Wrap section inside a .v2-tag-section div and details block for performance
m = tag_meta[tag]
tag_display = m["display"]
# Wrap section inside a .v2-tag-section div and details block for performance.
# Explicit {#slug} keeps the heading anchor unique and TOC-matching.
md += f"<div class=\"v2-tag-section\" markdown=\"1\">\n\n"
md += f"## {tag_display}\n\n"
md += f"## {tag_display} {{#{m['slug']}}}\n\n"
total_count = len(by_tag[tag])
if total_count > 100:
summary_text = f"Click to view top 100 of {total_count} resources under {tag_display}"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Googlecloudplatform resources for 2026, AI-ranked: Google Cloud Buildpacks, Google Agents CLI and more — curated Cloud Native tools, guides and references."
---
# Google Cloud Platform
!!! tip "Nubenetes V2 Elite Portal"
+5 -2
View File
@@ -1,3 +1,6 @@
---
description: "Top About resources for 2026, AI-ranked: Postman, AWX and more — curated Cloud Native tools, guides and references."
---
# About Nubenetes
!!! tip "Nubenetes V2 Elite Portal"
@@ -34,7 +37,7 @@ We prioritize established frameworks and enterprise standards over ad-hoc, unmai
#### 2.4. Avoiding Engineering Anti-Patterns
We combat the culture of **Promotion-Based Development (PBD)**, where complexity is manufactured for personal career visibility rather than business value.
- [Promotion-Based Development: A Fast Track to Mediocrity](https://vadimkravcenko.com/shorts/promotion-based-development) <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Dissects how rewarding "shiny new things" over battle-tested stability leads to fragile architectures.
- [Promotion-Based Development: A Fast Track to Mediocrity](https://vadimkravcenko.com/shorts/promotion-based-development/) <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Dissects how rewarding "shiny new things" over battle-tested stability leads to fragile architectures.
- [Reddit: The Reality of Promotion-Driven Development](https://www.reddit.com/r/ExperiencedDevs/comments/pw6vuv/promotion_driven_development) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — A raw, evidence-based discussion from senior engineers on the industry's most common misaligned incentives.
### 3. The Architectural North Star
@@ -136,7 +139,7 @@ While certifications like CKA are prominent on CVs, they are frequently utilized
#### Terraform Boilerplates
??? note "Terraform Kubernetes Boilerplates 🌟"
**[Access Resource](https://nubenetes.com/terraform)** 🌟🌟🌟🌟🌟 | Level: Advanced
**[Access Resource](https://nubenetes.com/terraform/)** 🌟🌟🌟🌟🌟 | Level: Advanced
A library of enterprise-stable Terraform templates configured specifically for modern Kubernetes environments (EKS, GKE, AKS). Includes pre-tested infrastructure specifications for VPC topologies, private nodes, and dynamic ingress setups.
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top AI Agents MCP resources for 2026, AI-ranked: vLLM on Kubernetes, LocalAI and more — curated Cloud Native tools, guides and references."
---
# AI Agents and Model Context Protocol (MCP) for Kubernetes
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top AI resources for 2026, AI-ranked: Claude Code Templates, Skills for Real Engineers and more — curated Cloud Native tools, guides and references."
---
# Artificial Intelligence
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Angular resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Developer Ecosystem)."
---
# Angular framework
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Ansible resources for 2026, AI-ranked: AWX, AWX Operator and more — curated Cloud Native tools, guides and references."
---
# Configuration Management. Ansible
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top API resources for 2026, AI-ranked: gRPC, GraphQL and more — curated Cloud Native tools, guides and references."
---
# APIs with SOAP, REST and gRPC
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Appointment Scheduling resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Career & Industry)."
---
# Appointment Scheduling Software
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Argo resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Engineering Pipeline)."
---
# Argo Declarative GitOps for Kubernetes
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Architecture resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Architecture and Best Practices
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Containers resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Containers
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Data resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Big Data
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Databases resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS RDS Databases
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS DevOps resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS DevOps. AWS CodePipeline
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Messaging resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Messaging Services
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Miscellaneous resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Miscellaneous
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Monitoring resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Monitoring and Logging
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Networking resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Networking
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Newfeatures resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS New Features
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Pricing resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Pricing and Cost Optimization
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Security resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Security
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Serverless resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Serverless
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Tools Scripts resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Tools and Scripts
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS Training resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# AWS Training and Certification
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked AWS resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# Public Cloud Provider. Amazon Web Services
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Azure resources for 2026, AI-ranked: Bicep, Microsoft - DICOM Service and more — curated Cloud Native tools, guides and references."
---
# Microsoft Azure
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Caching resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Networking & Service Mesh)."
---
# Caching Solutions
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Chaos Engineering resources for 2026, AI-ranked: chaosblade, Chaos Mesh and more — curated Cloud Native tools, guides and references."
---
# Chaos Engineering
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked ChatGPT resources for the 2026 Cloud Native architect: top-tier tools, guides and references (AI)."
---
# ChatGPT
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Cheatsheets resources for 2026, AI-ranked: github: K8s in 30 mins, Quarkus Cheat-Sheet and more — curated Cloud Native tools, guides and references."
---
# Cheat Sheets
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked CI/CD Kubernetes Plugins resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Engineering Pipeline)."
---
# CI/CD Kubernetes Plugins
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked CI/CD resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Engineering Pipeline)."
---
# Software Delivery Pipeline. CI/CD
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Cloud Arch Diagrams resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
---
# Cloud Architecture Diagram Tools
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Cloudflare resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Networking & Service Mesh)."
---
# Cloudflare Public Cloud
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Container Managers resources for the 2026 Cloud Native architect: top-tier tools, guides and references (The Container Stack)."
---
# Container Runtimes/Managers, Base Images and Container Tools. Podman, Buildah and Skopeo
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Crunchydata resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Data & Advanced Analytics)."
---
# Crunchy Data PostgreSQL Operator
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Customer resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
---
# Customer Success Stories. Cloud Native Projects
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Databases resources for 2026, AI-ranked: Zalando Postgres Operator, Patroni and more — curated Cloud Native tools, guides and references."
---
# Databases on Kubernetes. Database DevOps
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Demos resources for 2026, AI-ranked: OpenShift AI Examples, knative-tutorial and more — curated Cloud Native tools, guides and references."
---
# DevOps Demos. Boilerplates/Samples, Tutorials and Screencasts
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Devel Sites resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Developer Ecosystem)."
---
# Development and Frameworks. Websites for web developers
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Developerportals resources for 2026, AI-ranked: Backstage Developer Portal, apisix and more — curated Cloud Native tools, guides and references."
---
# API Marketplaces. API Management with API Gateways and Developer Portals
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top DevOps Tools resources for 2026, AI-ranked: Claude Code Templates, Devtron and more — curated Cloud Native tools, guides and references."
---
# DevOps Tools aka Toolchain
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top DevOps resources for 2026, AI-ranked: Skills for Real Engineers, NoOps and more — curated Cloud Native tools, guides and references."
---
# DevOps
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Devsecops resources for 2026, AI-ranked: Clair, trivy and more — curated Cloud Native tools, guides and references."
---
# DevSecOps and Security. Container
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Digitalocean resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# Digital Ocean
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Docker resources for 2026, AI-ranked: Awesome Compose, jib and more — curated Cloud Native tools, guides and references."
---
# Docker
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Dotnet resources for 2026, AI-ranked: Lamar, Paradigm framework and more — curated Cloud Native tools, guides and references."
---
# Microsoft .NET
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Edge Computing resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# Edge Computing
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Elearning resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Career & Industry)."
---
# E-learning
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Embedded Servlet Containers resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Developer Ecosystem)."
---
# Embedded Servlet Containers in SpringBoot: Jetty, Tomcat, Undertow and more
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Faq resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
---
# Microservices FAQ
!!! tip "Nubenetes V2 Elite Portal"
+1 -1
View File
@@ -5,7 +5,7 @@
<link>https://nubenetes.com/</link>
<description>AI-curated top picks from the Cloud Native &amp; Kubernetes ecosystem</description>
<language>en</language>
<lastBuildDate>Fri, 19 Jun 2026 17:39:37 -0000</lastBuildDate>
<lastBuildDate>Thu, 18 Jun 2026 00:00:00 -0000</lastBuildDate>
<atom:link href="https://nubenetes.com/feed.xml" rel="self" type="application/rss+xml"/>
<item>
<title>Kubecost 🌟</title>
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Flux resources for 2026, AI-ranked: github: Flux Version 2, github: Flux and more — curated Cloud Native tools, guides and references."
---
# Flux. The GitOps operator for Kubernetes
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Git resources for 2026, AI-ranked: Jenkins-X UpdateBOT, github-merge-bot and more — curated Cloud Native tools, guides and references."
---
# Git and Patterns for Managing Source Code Branches. Merge BOTs
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Gitops resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Engineering Pipeline)."
---
# GitOps
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Golang resources for 2026, AI-ranked: Awesome Go, Dapr and more — curated Cloud Native tools, guides and references."
---
# Golang - Go
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Grafana resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
---
# Grafana
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Helm resources for 2026, AI-ranked: Jmeter, Codecentric Jenkins and more — curated Cloud Native tools, guides and references."
---
# Helm Kubernetes Tool
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Ibm_Cloud resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
---
# IBM
!!! tip "Nubenetes V2 Elite Portal"
+6 -2
View File
@@ -1,4 +1,4 @@
# Nubenetes Elite Portal (V2) | Awesome Kubernetes and Cloud [![Awesome](https://cdn.jsdelivr.net/gh/sindresorhus/awesome@d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
# Nubenetes Elite Portal (V2) | Awesome Kubernetes & Cloud [![Awesome](https://cdn.jsdelivr.net/gh/sindresorhus/awesome@d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
!!! tip "Nubenetes V2 Elite Portal: AI-Curated & High-Density"
You are browsing the AI-Curated V2 Elite Edition of Nubenetes. Looking for the complete historical archive? Explore the [**V1 Historical Archive**](/v1/).
@@ -24,6 +24,8 @@
</a>
</div>
## Explore the Ecosystem
<div class="hero-badge-row">
<a href="./kubernetes/" style="text-decoration: none; color: inherit; display: block;">
<div class="hero-badge-card hero-badge-card--cyan">
@@ -86,8 +88,10 @@
- **Status**: The system is incrementally processing pending resources to complete the knowledge graph.
## Trending Now
<div class="trending-section">
<div class="trending-section__title">🔥 Trending Now — Cloud Native Intelligence <span class="trending-section__updated">Updated Jun 19, 2026</span></div>
<div class="trending-section__title">🔥 Trending Now — Cloud Native Intelligence <span class="trending-section__updated">Updated Jun 20, 2026</span></div>
<div class="trending-grid">
<div class="trending-card">
<div class="trending-card__impact trending-card__impact--critical">🔴 CRITICAL</div>
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Interview Questions resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Career & Industry)."
---
# Interview Questions
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Introduction resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
---
# Introduction. Microservice Architecture. From Java EE To Cloud Native. Openshift VS Kubernetes
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Istio resources for 2026, AI-ranked: Envoy Gateway, Jaeger and more — curated Cloud Native tools, guides and references."
---
# Istio - Service Mesh
!!! tip "Nubenetes V2 Elite Portal"
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Java And Java Performance Optimization resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Developer Ecosystem)."
---
# Java and Memory Management
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Java_App_Servers resources for 2026, AI-ranked: Payara Micro, WildFly and more — curated Cloud Native tools, guides and references."
---
# Server Vendors Providing Java EE/Jakarta EE and MicroProfile Runtimes
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Java_Frameworks resources for 2026, AI-ranked: Spring Cloud, logbook and more — curated Cloud Native tools, guides and references."
---
# Java and Java Programming Models. Open Source Microservices Frameworks
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Javascript resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Developer Ecosystem)."
---
# JavaScript
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Jenkins Alternatives resources for 2026, AI-ranked: Prow, Screwdriver API and more — curated Cloud Native tools, guides and references."
---
# Jenkins Alternatives for Continuous Integration and Continuous Deployment
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Jenkins resources for 2026, AI-ranked: Jenkinsfile Runner, Example of JCasC and more — curated Cloud Native tools, guides and references."
---
# Jenkins and CloudBees
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Keptn resources for 2026, AI-ranked: Keptn, Quick Start and more — curated Cloud Native tools, guides and references."
---
# Keptn. Data Driven DevOps Automation with Ketpn. Automating Service Level Indicators/Service Level Objectives based build validation with Keptn and Jenkins
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Kubectl Commands resources for 2026, AI-ranked: Gradle Cheat Sheets, Helm and more — curated Cloud Native tools, guides and references."
---
# Kubectl commands
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Kubernetes Alternatives resources for 2026, AI-ranked: dreamland, llama.cpp plugin and more — curated Cloud Native tools, guides and references."
---
# Kubernetes Alternatives
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Kubernetes Autoscaling resources for the 2026 Cloud Native architect: top-tier tools, guides and references (The Container Stack)."
---
# Autoscaling
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Kubernetes Backup Migrations resources for 2026, AI-ranked: Stash, konveyor and more — curated Cloud Native tools, guides and references."
---
# Kubernetes Backup and Migrations
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Kubernetes Based Devel resources for the 2026 Cloud Native architect: top-tier tools, guides and references (The Container Stack)."
---
# Kubernetes Based Development. Kubernetes Distributions for local environments. Kubernetes Development Tools and Dashboards
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Kubernetes Client Libraries resources for 2026, AI-ranked: GitHub: Eclipse JKube, Fabric8 and more — curated Cloud Native tools, guides and references."
---
# Client Libraries for Kubernetes
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Kubernetes Monitoring resources for the 2026 Cloud Native architect: top-tier tools, guides and references (The Container Stack)."
---
# Kubernetes Monitoring and Logging
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Kubernetes Networking resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Networking & Service Mesh)."
---
# Kubernetes Networking
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Kubernetes On Premise resources for 2026, AI-ranked: **Microk8s**, k0s and more — curated Cloud Native tools, guides and references."
---
# On-Premise Production Kubernetes Cluster Installers
!!! tip "Nubenetes V2 Elite Portal"
@@ -1,3 +1,6 @@
---
description: "Top Kubernetes Operators Controllers resources for 2026, AI-ranked: Kueue Release v0.14.0, Kubernetes Gateway API and more — curated Cloud Native tools, guides."
---
# Kubernetes Operators and Controllers
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Kubernetes Releases resources for the 2026 Cloud Native architect: top-tier tools, guides and references (The Container Stack)."
---
# Kubernetes Releases
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Kubernetes Security resources for 2026, AI-ranked: Tetragon (Cilium), Kubernetes Goat and more — curated Cloud Native tools, guides and references."
---
# Kubernetes Security
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Kubernetes Storage resources for 2026, AI-ranked: Longhorn, Kadalu and more — curated Cloud Native tools, guides and references."
---
# Kubernetes Storage. Cloud Native Storage
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Top Kubernetes Tools resources for 2026, AI-ranked: Teleport, Kadalu and more — curated Cloud Native tools, guides and references."
---
# Kubernetes Plugins, Tools, Extensions and Projects
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Kubernetes Troubleshooting resources for the 2026 Cloud Native architect: top-tier tools, guides and references (The Container Stack)."
---
# Kubernetes Troubleshooting
!!! tip "Nubenetes V2 Elite Portal"
+3
View File
@@ -1,3 +1,6 @@
---
description: "Curated, AI-ranked Kubernetes Tutorials resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
---
# Kubernetes Tutorials
!!! tip "Nubenetes V2 Elite Portal"

Some files were not shown because too many files have changed in this diff Show More