Compare commits

...
79 Commits
Author SHA1 Message Date
Inaki 9f38f42fc7 Merge pull request #310 from nubenetes/develop
release: v2.3.39
2026-06-02 22:15:41 +02:00
Nubenetes Bot f8ef8b02bc docs: add ClickHouse YouTube channel and update mosaics for v2.3.39 2026-06-02 22:15:21 +02:00
Nubenetes Bot 630e0b0dbc docs: automated README metric synchronization [skip ci] 2026-06-02 12:51:50 +00:00
Inaki 5bce1d0e13 Merge pull request #309 from nubenetes/develop
release: v2.3.38
2026-06-02 14:51:22 +02:00
Nubenetes Bot 49d1547ffd docs: update README.md and CHANGELOG.md for v2.3.38 2026-06-02 14:51:08 +02:00
Nubenetes Bot a374e57786 docs: automated README metric synchronization [skip ci] 2026-06-02 12:49:17 +00:00
Inaki c92cf4c694 Merge pull request #308 from nubenetes/develop
fix: convert YouTube URLs to embed format for iframe rendering
2026-06-02 14:48:45 +02:00
Nubenetes Bot ed2fb5d2c1 fix: convert YouTube watch URLs to embed format for iframe rendering 2026-06-02 14:48:29 +02:00
Nubenetes Bot 68981a2b5e docs: automated README metric synchronization [skip ci] 2026-06-02 12:45:21 +00:00
Inaki b6bd5e109e Merge pull request #307 from nubenetes/develop
fix: markdown linter errors in video portal
2026-06-02 14:44:54 +02:00
Nubenetes Bot 0ac490529d fix: sanitize video summary bullet points to resolve markdownlint MD037 errors 2026-06-02 14:44:10 +02:00
Nubenetes Bot bfca256b45 docs: automated README metric synchronization [skip ci] 2026-06-02 12:39:03 +00:00
Inaki 728d57c2ef Merge pull request #306 from nubenetes/develop
release: v2.3.37
2026-06-02 14:38:41 +02:00
Nubenetes Bot 5a6d298e56 docs: update README.md and CHANGELOG.md for v2.3.37 2026-06-02 14:38:22 +02:00
Nubenetes Bot 8e902459ef docs: automated README metric synchronization [skip ci] 2026-06-02 12:36:24 +00:00
Nubenetes Bot 346f15b19d feat: implement Option B programmatic smart insertion using Gemini Flash 3.5 2026-06-02 14:35:40 +02:00
Nubenetes Bot 1dd8ce7e2a docs: update Video Hub with high-fidelity metadata [skip ci] 2026-06-02 12:32:27 +00:00
Nubenetes Bot 6b527a91f2 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-02 12:29:25 +00:00
Inaki 82fb37a148 Merge pull request #304 from nubenetes/bot/knowledge-update-20260602-1218
💎 Knowledge Update & Optimization: 02 Jun 2026
2026-06-02 14:26:43 +02:00
github-actions[bot] b15695207c chore: update data/inventory.yaml [20260602-1218] 2026-06-02 12:18:34 +00:00
github-actions[bot] f73c21fb9d chore: update docs/uncategorized.md [20260602-1218] 2026-06-02 12:18:31 +00:00
Nubenetes Bot 514d6b37af docs: automated README metric synchronization [skip ci] 2026-06-02 10:45:06 +00:00
Nubenetes Bot fb238c605f fix: resolve KeyError 'impact_score' for cached inventory items 2026-06-02 12:44:28 +02:00
Nubenetes Bot 937610a4e5 docs: automated README metric synchronization [skip ci] 2026-06-01 22:39:59 +00:00
Nubenetes Bot d5b108d4d3 fix: avoid overwriting status in evaluations with unpacked cached status 2026-06-02 00:39:18 +02:00
Nubenetes Bot e3d0e04316 docs: automated README metric synchronization [skip ci] 2026-06-01 21:36:37 +00:00
Nubenetes Bot c437e5fb31 fix: add case-insensitive and domain/path matching fallbacks for curation URLs 2026-06-01 23:36:23 +02:00
Nubenetes Bot 425faacf89 fix: call_gemini_with_retry returns full list for JSON lists, enabling bulk evaluations 2026-06-01 23:35:55 +02:00
Nubenetes Bot fe00e0eaf9 docs: automated README metric synchronization [skip ci] 2026-06-01 21:33:25 +00:00
Nubenetes Bot 2cdb140ec8 fix: generate visual report.html at the end of the curation run 2026-06-01 23:32:39 +02:00
Nubenetes Bot b0d6117b6c docs: automated README metric synchronization [skip ci] 2026-06-01 21:31:17 +00:00
Nubenetes Bot 68760c2148 fix: create curation-report label before creating issue 2026-06-01 23:30:36 +02:00
Nubenetes Bot cfce3ade24 docs: automated README metric synchronization [skip ci] 2026-06-01 15:01:01 +00:00
Nubenetes Bot f46458340c fix: disable SSL verification for RSS parsing to support custom domains like netflixtechblog 2026-06-01 17:00:18 +02:00
Nubenetes Bot d7b4f54851 docs: automated README metric synchronization [skip ci] 2026-06-01 14:21:35 +00:00
Nubenetes Bot 61e769ad9d fix: cache FILTERED links in inventory to prevent re-evaluating low-quality links 2026-06-01 16:20:46 +02:00
Nubenetes Bot 051e0fc5b1 docs: automated README metric synchronization [skip ci] 2026-06-01 14:18:25 +00:00
Nubenetes Bot 2193723030 feat: improve curation categories and parallelize AI evaluation 2026-06-01 16:17:39 +02:00
Nubenetes Bot 7ac4ff6c13 docs: automated README metric synchronization [skip ci] 2026-06-01 12:50:23 +00:00
Inaki 62ed5e184e Merge pull request #296 from nubenetes/develop
feat(ci): progressive caching for inventory
2026-06-01 14:49:51 +02:00
Nubenetes Bot 0f4898cdce feat(ci): add progressive caching for agentic curation 2026-06-01 14:49:42 +02:00
Nubenetes Bot 98c02d661c docs: automated README metric synchronization [skip ci] 2026-06-01 12:40:52 +00:00
Inaki 56a5092f77 Merge pull request #295 from nubenetes/develop
fix(ai): force gemini flash and fix impact_score prompt
2026-06-01 14:40:20 +02:00
Nubenetes Bot 76196c5c35 fix(ai): force gemini flash usage and define impact_score in prompt 2026-06-01 14:40:11 +02:00
Nubenetes Bot dc7ea8a89e docs: automated README metric synchronization [skip ci] 2026-06-01 12:30:12 +00:00
Inaki cfb60c8d47 Merge pull request #294 from nubenetes/develop
fix(rss): bypass bot protection with httpx and fake-useragent
2026-06-01 14:29:50 +02:00
Nubenetes Bot d317ff1734 fix(rss): use httpx and fake-useragent to bypass bot protection 2026-06-01 14:29:39 +02:00
Nubenetes Bot 8b040b0791 docs: automated README metric synchronization [skip ci] 2026-06-01 11:13:29 +00:00
Inaki 94b41030ab Merge pull request #292 from nubenetes/develop
fix(ci): add feedparser to requirements
2026-06-01 13:12:59 +02:00
Nubenetes Bot 9bff4985e5 fix(ci): add feedparser to pip install 2026-06-01 13:12:49 +02:00
Nubenetes Bot ae181d382f docs: automated README metric synchronization [skip ci] 2026-06-01 10:23:25 +00:00
Inaki 1682c471c4 Merge pull request #291 from nubenetes/develop
fix(ci): set PYTHONPATH for sync script
2026-06-01 12:22:53 +02:00
Nubenetes Bot 05c5c6efd2 fix(ci): add PYTHONPATH for sync_workflow_ui script 2026-06-01 12:22:44 +02:00
Nubenetes Bot 3318061bb1 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-01 09:28:36 +00:00
Nubenetes Bot 55527e3beb docs: automated README metric synchronization [skip ci] 2026-06-01 09:26:33 +00:00
Inaki 2763752411 Merge pull request #290 from nubenetes/develop
chore: Merge develop into master
2026-06-01 11:26:10 +02:00
Nubenetes Bot a221fbdcdf feat(videos): add Spring documentary to V2 Fundamentals 2026-06-01 11:25:51 +02:00
Nubenetes Bot 780fbbb1ec docs: add changelog for v2.3.36 2026-05-29 15:37:33 +02:00
Inaki 6da026b0e3 Merge pull request #289 from nubenetes/develop
docs: fix duplicate text in legal disclaimer section 15.3
2026-05-29 15:37:18 +02:00
Nubenetes Bot 6ebd5700f1 docs: fix duplicate text in legal disclaimer section 15.3 2026-05-29 15:37:01 +02:00
Nubenetes Bot 4f61534c2a docs: automated README metric synchronization [skip ci] 2026-05-28 18:24:48 +00:00
Inaki 3558c5b082 Merge pull request #288 from nubenetes/develop
feat: add Grafana AI Observability video to V2 Video Hub (v2.3.35)
2026-05-28 20:24:08 +02:00
Nubenetes Bot e3d0c7e7d0 docs: add changelog entry for version 2.3.35 2026-05-28 20:23:55 +02:00
Nubenetes Bot 3166745123 feat: add Grafana AI Observability video to V2 Video Hub 2026-05-28 20:23:02 +02:00
Nubenetes Bot 7f648c95ee feat: sync V2 elite curated edition and README metrics [skip ci] 2026-05-28 18:01:18 +00:00
Nubenetes Bot 2182ba5a14 docs: automated README metric synchronization [skip ci] 2026-05-28 17:56:34 +00:00
Inaki f0465d3cf1 Merge pull request #287 from nubenetes/develop
feat: add addition_method provenance metadata to inventory
2026-05-28 19:56:27 +02:00
Nubenetes Bot 4cf24af048 feat: add addition_method provenance metadata to inventory 2026-05-28 19:55:47 +02:00
Nubenetes Bot 8cacba094a docs: automated README metric synchronization [skip ci] 2026-05-28 14:44:17 +00:00
Nubenetes Bot 337536c9e6 merge: merge develop into master updating CHANGELOG.md 2026-05-28 16:43:47 +02:00
Nubenetes Bot 581e75abd8 docs: document releases v2.3.24 to v2.3.32 in CHANGELOG 2026-05-28 16:43:39 +02:00
Nubenetes Bot 87eb612aa0 docs: automated README metric synchronization [skip ci] 2026-05-28 14:37:19 +00:00
Nubenetes Bot b2cee83e9f merge: merge develop into master setting arsys logo to constant corporate sky blue 2026-05-28 16:36:53 +02:00
Nubenetes Bot 9085a4df85 fix: change arsys logo color to constant corporate sky blue (#00a2e8) for visibility in both light and dark backgrounds 2026-05-28 16:36:42 +02:00
Nubenetes Bot bab49932d1 docs: automated README metric synchronization [skip ci] 2026-05-28 14:24:51 +00:00
Nubenetes Bot b12aa57102 merge: merge develop into master adding dark mode styles for arsys logo 2026-05-28 16:24:39 +02:00
Nubenetes Bot fbf99cf8d1 fix: resolve arsys logo visibility in dark mode by adding media query style in SVG and CSS filter invert rule 2026-05-28 16:24:12 +02:00
Nubenetes Bot 228e4677ef feat: sync V2 elite curated edition and README metrics [skip ci] 2026-05-28 14:20:26 +00:00
Nubenetes Bot 4647fd6626 docs: automated README metric synchronization [skip ci] 2026-05-28 14:18:29 +00:00
23 changed files with 31461 additions and 64 deletions
+19 -1
View File
@@ -98,7 +98,7 @@ jobs:
- name: Installation of Dependencies
run: |
python -m pip install --upgrade pip
pip install --no-cache-dir pydantic PyGithub aiohttp beautifulsoup4 httpx fake-useragent pytz python-dotenv twikit>=2.1.2 playwright playwright-stealth pyyaml tenacity
pip install --no-cache-dir pydantic PyGithub aiohttp beautifulsoup4 httpx fake-useragent pytz python-dotenv twikit>=2.1.2 playwright playwright-stealth pyyaml tenacity feedparser
- name: Cache Playwright Binaries
uses: actions/cache@v5
@@ -111,7 +111,17 @@ jobs:
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: playwright install chromium --with-deps
- name: Restore Incremental Inventory Cache
uses: actions/cache/restore@v5
with:
path: data/inventory.yaml
key: inventory-curation-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
inventory-curation-
- name: Workflow UI Synchronization Check (Mandate 11)
env:
PYTHONPATH: .
run: |
python src/sync_workflow_ui.py
@@ -193,4 +203,12 @@ jobs:
TITLE="Curation Report: $STATUS - $(date +'%Y-%m-%d')"
BODY="### Nubenetes Automated Curation has finished.\n\n**Status:** $STATUS\n**Pull Request:** $PR_URL\n\nCheck the [workflow logs]($RUN_URL) for more details. If a visual report was generated, you can download it from the artifacts section of the workflow run."
gh label create "curation-report" --color "0E8A16" --description "Automated curation run reports" || true
gh issue create --title "$TITLE" --body "$BODY" --label "curation-report" || echo "Failed to create issue"
- name: Persist Incremental Inventory to Cache
if: always()
uses: actions/cache/save@v5
with:
path: data/inventory.yaml
key: inventory-curation-${{ github.run_id }}-${{ github.run_attempt }}
+92
View File
@@ -5,6 +5,98 @@ 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.3.39]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.39) - 2026-06-02
### Added
- **ClickHouse YouTube Channel Integration**: Registered the official ClickHouse YouTube channel in the centralized inventory and regenerated both the V1 and V2 homepage mosaics, sorting ClickHouse under the Observability, Databases & Cloud Storage category in V2.
- **ClickHouse SVG Logo Asset**: Added a color-coded orange SVG logo for ClickHouse to guarantee legibility across light and dark platforms.
## [[2.3.38]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.38) - 2026-06-02
### Added
- **YouTube Embed Iframe Refusal Fix**: Solved the `www.youtube.com refused to connect` error in video iframe players by implementing a parser (`to_embed_url`) in the generator script to dynamically rewrite standard YouTube watch/shortened URLs into the required embed format, fully preserving start-times (`start=...`) and playlist IDs (`list=...`).
### Fixed
- **MD037 Lint Fix (Video Portal)**: Fixed a markdown linter failure in `v2-docs/videos/cloud-native.md` (and other video documents) by converting asterisk-based bullets (`* `) in video summaries to dash-based bullets (`- `). This avoids syntax collision where the linter parses indented asterisk bullets inside blocks as malformed bold/emphasis markers.
## [[2.3.37]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.37) - 2026-06-02
### Added
- **Programmatic Smart Injection (Option B)**: Replaced legacy full-document rewriting using Gemini Pro with a highly efficient programmatic Markdown injector. The new system uses Gemini Flash 3.5 to choose the target section header, while Python surgically inserts the link. This prevents 429 rate limit blocks and cuts down API costs by 95%.
- **Persisted Raw Impact Score**: Added `impact_score` attribute to evaluations saved inside `data/inventory.yaml`, ensuring that cached resources retain their original AI classification scores.
### Fixed
- **KeyError: 'impact_score'**: Implemented resilient fallback logic in the curation orchestrator to calculate `impact_score` from the `stars` attribute (e.g. `stars * 20`) for cached items that lack the raw `impact_score` field.
## [[2.3.36]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.36) - 2026-05-29
### Fixed
- **Legal Disclaimer Duplication**: Removed duplicate/redundant line of text in README.md section 15.3.
## [[2.3.35]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.35) - 2026-05-28
### Added
- **Grafana Observability Video**: Added the Viktor Farcic video `I Stopped Staring at Dashboards. AI Reads My Grafana Metrics Now.` to the V2 Video Hub under the "AI Agents and MCP" learning path.
## [[2.3.34]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.34) - 2026-05-28
### Added
- **Link Provenance Tracking**: Added `addition_method` metadata attribute to `data/inventory.yaml` to differentiate between manually curated and automatically ingested links.
- **Database Migration**: Migrated all 18,004 existing database entries to have `addition_method: manual` by default.
- **Workflow & Optimizer Integration**: Programmed `src/agentic_curator.py` to mark automatically ingested resources as `automatic`, and updated `src/v2_optimizer.py` to default new V1 Markdown source resources to `manual`.
### Changed
- **Documentation & Memory Systems**: Added documentation for `addition_method` in `README.md`, `GEMINI.md`, and `src/memory/health_learning.json`.
## [[2.3.32]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.32) - 2026-05-28
### Changed
- **Arsys Logo Dark Mode Contrast**: Changed the Arsys logo fill color to a constant corporate electric sky blue (`#00a2e8`) inside the SVG, ensuring maximum contrast on both white (V1) and slate/black (V2) backgrounds.
- **Removed Logo CSS Inversion**: Removed the dark mode CSS filter invert rule in `extra.css` to preserve branding color integrity.
## [[2.3.31]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.31) - 2026-05-28
### Changed
- **Arsys Logo Dark Mode Adaptation**: Embedded light/dark prefers-color-scheme styles inside the Arsys SVG logo and added a CSS invert filter for the slate theme in `extra.css` to fix visibility in dark mode.
## [[2.3.30]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.30) - 2026-05-28
### Fixed
- **Wikimedia Commons URL Correction**: Replaced the broken HTML error page (downloaded due to invalid hash pathing) with a valid vector SVG file by using the correct MD5 filename-derived directory structure (`8/88/Arsys_logo.svg`) on upload.wikimedia.org.
## [[2.3.29]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.29) - 2026-05-28
### Added
- **Arsys Channel Integration**: Registered `https://www.youtube.com/@arsys` in `data/inventory.yaml` under `cloud_providers` (V2) and ordered to append at the end of V1 flat sequence.
### Fixed
- **Video Hub Heading Level Fix**: Fixed a markdown linter error (MD001) in the generated video hub index by changing the heading increment from h3 to h2 (`## Learning Dimensions`).
## [[2.3.28]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.28) - 2026-05-28
### Changed
- **Mandate 23 Documentation**: Updated `GEMINI.md` and `health_learning.json` to formally document the database-driven dual layout design of YouTube mosaics.
## [[2.3.27]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.27) - 2026-05-28
### Added
- **Workflow Automation for Mosaic**: Configured the V2 Publisher workflow to execute `src/reorganize_mosaic.py` automatically on each run.
## [[2.3.26]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.26) - 2026-05-28
### Fixed
- **Video Hub Index Heading Level Correction**: Adjusted generator code to prevent heading hierarchy lint failures.
## [[2.3.25]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.25) - 2026-05-28
### Added
- **Database Migration for YouTube Mosaic**: Migrated YouTube channel mosaic configuration from the deprecated `youtube_channels_mosaic.yaml` to the unified monolithic `data/inventory.yaml` and refactored the layout generator to dynamically read from the database.
## [[2.3.24]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.24) - 2026-05-28
### Changed
- **Restored V1 Flat YouTube Mosaic Layout**: Restored the flat list layout (11 channels per row, sorted by `order_v1`) on the V1 homepage, while preserving the advanced categorized V2 dashboard.
## [[2.3.23]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.3.23) - 2026-05-28
### Changed
+1
View File
@@ -55,6 +55,7 @@ This file contains the accumulated instructions and long-term vision for the aut
* `source_provenance`: Identifies the origin of the discovery (Twitter, RSS, Manual).
* `social_preview_url`: OpenGraph/Social images to enrich the V2 visual experience.
* `mentions_count`: Tracks resource popularity/rediscovery frequency.
* `addition_method`: Tracks the resource addition origin ('manual' or 'automatic') to facilitate scaling metrics.
- **Persistence (MANDATORY)**: Every AI agent and workflow MUST load this file at startup, update it, and INJECT the modified YAML into the final PR payload if any change is detected. Discarding the database during a workflow run is a CRITICAL FAILURE.
- **Exhaustive Initialization**: The system supports a `FORCE_FULL_CHECK` environment variable to bypass all caches (e.g., 21-day health cache) and force a full re-validation and re-enrichment of the entire 17k+ link archive.
- **No Trusted Bypassing**: All domains, including high-trust ones (GitHub, Google, AWS), MUST be verified for link validity. Trusted status only grants a lower priority for aggressive scraper rotation, not a bypass for existence checks.
+18 -16
View File
@@ -133,14 +133,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-05-28)
(Stats as of 2026-06-02)
<!-- HEART_STATS_START -->
| Metric | Value |
| :--- | :--- |
| **Total Technical Resources (Links)** | **18004+** |
| **Specialized MD Pages** | **161** |
| **Total Commits** | **5625+** |
| **Total Technical Resources (Links)** | **18356+** |
| **Specialized MD Pages** | **162** |
| **Total Commits** | **5729+** |
| **Primary AI Engine** | **Google Gemini (Agentic)** |
<!-- HEART_STATS_END -->
@@ -178,7 +178,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 | 2066 | 8,532 | **Agentic AI Surge** (May 2026 Inception) |
| 9 | 2026 | 2170 | 8,962 | **Agentic AI Surge** (May 2026 Inception) |
<!-- ANNUAL_GROWTH_END -->
<!-- ANNUAL_CHART_START -->
@@ -194,8 +194,8 @@ 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 --> 9000
bar [1445, 586, 8449, 2193, 1660, 123, 218, 20, 8532]
bar [350, 142, 2046, 531, 402, 30, 53, 5, 2066]
bar [1445, 586, 8449, 2193, 1660, 123, 218, 20, 8962]
bar [350, 142, 2046, 531, 402, 30, 53, 5, 2170]
```
<!-- ANNUAL_CHART_END -->
@@ -204,7 +204,8 @@ xychart-beta
| Month | Commits | Est. New Refs | Status |
| :--- | :---: | :---: | :--- |
| 2026-04 | 25 | 103 | Active Curation |
| 2026-05 | 2041 | 8,429 | **Agentic Inception (Gemini Era)** |
| 2026-05 | 2101 | 8,677 | **Agentic Inception (Gemini Era)** |
| 2026-06 | 44 | 181 | Active Curation |
<!-- MONTHLY_SURGE_END -->
### 2.4. Content Distribution and Semantic Clustering
@@ -217,7 +218,7 @@ This chart shows the high-level distribution across the primary domains of Cloud
<!-- PILLAR_CHART_START -->
```mermaid
pie title Nubenetes Major Ecosystem Pillars
"Specialized Topics" : 3604
"Specialized Topics" : 3956
"Kubernetes Ecosystem" : 3500
"Developer Ecosystem" : 3000
"Public/Private Cloud" : 2500
@@ -238,10 +239,10 @@ Reflecting Nubenetes' mission of global access while maintaining technical Engli
<!-- SUB_ECO_CHART_START -->
```mermaid
pie title Linguistic Diversity (Global Access)
"English" : 16203
"Spanish" : 1080
"French" : 180
"Others" : 540
"English" : 16520
"Spanish" : 1101
"French" : 183
"Others" : 550
```
<!-- SUB_ECO_CHART_END -->
@@ -324,7 +325,7 @@ To ensure maximum throughput and industrial-grade precision, Nubenetes uses a pr
- **Double-Evidence Synthesis Protocol**: Agents are mandated to contrast 'Curator Insight' (from original discovery) with 'Live Technical Grounding' (from search/MCP) before finalizing any technical summary.
- **Real-time Web Grounding (MCP-Style)**: For high-fidelity tasks, the engine activates **Google Search Grounding**. This allows the AI to verify technical maturity, site migrations, and official documentation in real-time, providing a live data filter for all decisions.
- **Smart Batching (Anti-429)**: Instead of individual calls, the system groups up to **25 resources into high-precision batches**. This optimizes grounding efficiency and minimizes rate limits.
- **Dynamic Model Selection**: The system automatically toggles between **Gemini Pro** (for auditing and research) and **Gemini Flash** (for broad analysis).
- **Dynamic Model Selection & Programmatic Injection (Option B)**: The system automatically toggles between **Gemini Pro** (for auditing and research) and **Gemini Flash** (for broad analysis and link insertion planning). Actual link injections are performed programmatically in Python to ensure 0% document corruption and zero rate-limit blocks.
- **Global Back-off & Tier-down**: Automatic exponential back-off and model tier-down logic to ensure 100% workflow resilience.
- **Ultra-Fast V2 Render Mode**: The final `render-and-pr` stage bypasses redundant HTTP health checks, GitHub API metadata fetching, and AI agent evaluation loops by leveraging the pre-computed YAML inventory to assemble the portal instantaneously.
### 4.4. Doc-as-Behavior Mandate Bridge
@@ -447,6 +448,7 @@ To embrace the diverse global Cloud Native community while maintaining internati
* `hierarchy`: Persistent, **recursive technical classification** (list of up to 10 levels) for O'Reilly-style grouping.
* `content_hash` / `health_score`: Advanced fields for content drift detection and reliability tracking.
* `source_provenance` / `social_preview_url`: Data for origin tracing and V2 visual enrichment.
* `addition_method`: Origin type of the resource addition ('manual' or 'automatic') to support growth and scaling metrics.
- **Separation of Concerns (Data vs. UI)**:
* **The Database (Source of Truth)**: Holds raw data, enabling future features like language-based filtering or statistics without re-processing links.
* **The Portal (Visual Rendering)**: The `V2VisionEngine` dynamically converts the metadata into visual UI tags (e.g., `[SPANISH CONTENT]`, `[ARCHITECT LEVEL]`).
@@ -755,6 +757,7 @@ The heart of the new Nubenetes is a suite of AI Agents that operate on our `deve
4. **Resilient Architecture Core**:
- **Exponential Backoff**: Intelligent `tenacity`-based retry logic in `gemini_utils.py` gracefully handles 429 Rate Limits before triggering the Circuit Breaker.
- **Flash-First Architecture**: Prioritizes Gemini Flash/Lite models for high-density Analyst tasks, enabling processing of 10,000+ resources within the 6-hour GitHub Actions limit through 100-item batching and 2-second safety delays.
- **Programmatic Smart Injection (Option B)**: The system extracts document headers and has Gemini Flash choose the target header, performing the actual line insertion using Python. This bypasses the need for Gemini Pro to rewrite entire documents, slashing API usage and preventing 429 errors.
- **Incremental Persistence (Mandate 22)**: Implements a dual-phase auto-save mechanism that flushes the `inventory.yaml` database to disk periodically **without waiting for the workflow to finish**:
* **Metadata Phase**: Saves every **500 GitHub repositories** processed.
* **AI Phase**: Saves every **20 AI batches** (1,000 resources) analyzed.
@@ -1057,7 +1060,7 @@ To maintain transparency and ease of navigation, all key configuration, database
- **Curator Logic:** [`src/agentic_curator.py`](src/agentic_curator.py) - Primary classification and description engine.
- **V2 Vision Engine:** [`src/v2_optimizer.py`](src/v2_optimizer.py) - Elite portal generation and maturity scoring.
- **Video Hub Enrichment:** [`src/enrich_videos.py`](src/enrich_videos.py) - High-fidelity synthesis using **yt-dlp** and transcripts.
- **Video Portal Logic:** [`src/v2_video_portal.py`](src/v2_video_portal.py) - Categorized layout with **O'Reilly Journey Builder** and multiline rendering fixes.
- **Video Portal Logic:** [`src/v2_video_portal.py`](src/v2_video_portal.py) - Categorized layout with **O'Reilly Journey Builder**, automated watch-to-embed YouTube conversion, and markdownlint-safe bullet formatting.
- **V2 Specialized Agents:**
- **Health Monitor:** [`src/v2_health.py`](src/v2_health.py)
- **Metadata Engine:** [`src/v2_metadata.py`](src/v2_metadata.py)
@@ -1112,4 +1115,3 @@ The technical resources (links, articles, videos) curated in this archive are th
### 15.3. Legal Disclaimer
The information provided in this repository is for educational and professional reference purposes only. While our Agentic AI ensures high-fidelity curation, users should verify production configurations against official vendor documentation (AWS, Red Hat, CNCF) before deployment.
r educational and professional reference purposes only. While our Agentic AI ensures high-fidelity curation, users should verify production configurations against official vendor documentation (AWS, Red Hat, CNCF) before deployment.
+3 -7
View File
@@ -37,9 +37,7 @@ sources:
- "google-antigravity" # Google Antigravity Agentic SDK Org
- "GoogleDevs" # Google Developers (for SDK and API announcements)
feeds:
- "https://www.anthropic.com/news/feed"
- "https://openai.com/news/feed"
- "https://blog.google/technology/developer/rss/"
- "https://openai.com/news/rss.xml"
- "https://blog.google/technology/ai/rss/"
- topic: "Developer Productivity & AI Agents"
@@ -53,13 +51,13 @@ sources:
feeds:
- "https://github.blog/feed/"
- "https://github.blog/category/engineering/feed/"
- "https://cursor.sh/blog/rss"
- topic: "Data & Big Data"
accounts:
- "Databricks"
- "ApacheSpark"
- "snowflakedb"
- "UberEng" # Uber Engineering
- topic: "Infrastructure as Code & GitOps"
accounts:
@@ -67,11 +65,9 @@ sources:
- "PulumiCorp"
- "ArgoProj"
- "fluxcd"
- "Atlassian" # Atlassian Engineering / Developer Updates
feeds:
- "https://netflixtechblog.com/feed"
- "https://engineering.atlassian.com/feed"
- "https://blog.cloudflare.com/rss/"
- "https://medium.com/feed/uber-engineering"
- "https://engineering.fb.com/feed/"
- "https://aws.amazon.com/blogs/aws/feed/"
- "https://cloud.google.com/blog/rss/"
+30785
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -4,6 +4,9 @@
width="315.134px" height="88.15px" viewBox="140.08 380.418 315.134 88.15" enable-background="new 140.08 380.418 315.134 88.15"
xml:space="preserve">
<title>logos</title>
<style type="text/css">
path { fill: #00a2e8; }
</style>
<path d="M379.988,380.625c-3.113-0.493-6.072,1.525-6.746,4.604l-14.486,47.623l-15.873-52.346h-16.51l23.811,64.568
c1.842,3.318,1.076,7.476-1.824,9.922c-2.383,1.864-4.684,1.864-9.645,1.825h-1.191v11.747h3.969c6.867,0,11.906-0.278,14.764-2.699
c3.424-2.924,5.967-6.744,7.342-11.032l26.43-74.172h-10.039V380.625z M403.798,386.617c-4.648,3.81-7.283,9.549-7.143,15.557

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

+1
View File
@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ClickHouse</title><path fill="#FC801D" d="M21.333 10H24v4h-2.667ZM16 1.335h2.667v21.33H16Zm-5.333 0h2.666v21.33h-2.666ZM0 22.665V1.335h2.667v21.33zm5.333-21.33H8v21.33H5.333Z"/></svg>

After

Width:  |  Height:  |  Size: 261 B

+1 -1
View File
@@ -352,7 +352,7 @@ A curated list of awesome references collected since 2018. Microservices archite
[![ContinuousDeliveryFoundation](images/ContinuousDeliveryFoundation.jpg){: style="width:7%"}](https://www.youtube.com/c/ContinuousDeliveryFoundation) [![tina huang](images/tinahuang.jpg){: style="width:7%"}](https://www.youtube.com/c/TinaHuang1) [![azure devops](images/azure_devops_youtube.jpg){: style="width:7%"}](https://www.youtube.com/c/AzureDevOps) [![azure cloud native](images/azure_cloud_native.jpg){: style="width:7%"}](https://www.youtube.com/channel/UC2Pk9GcHhlVV0R9CQIU6gLw) [![alibaba cloud](images/alibaba_cloud.jpg){: style="width:7%"}](https://www.youtube.com/c/AlibabaCloud) [![linode cloud](images/linode_cloud.jpg){: style="width:7%"}](https://www.youtube.com/c/linode) [![gaia-x](images/gaia_x.jpg){: style="width:7%"}](https://www.youtube.com/channel/UCB5WMc2FfrxKzfd7XIODoMw) [![gps](images/gps.jpg){: style="width:7%"}](https://www.youtube.com/c/MadeByGPS) [![keptn](images/keptn_logo.jpg){: style="width:7%"}](https://www.youtube.com/c/keptn) [![anais urlichs](images/anais_urlichs.jpg){: style="width:7%"}](https://www.youtube.com/c/AnaisUrlichs) [![the digital life](images/the_digital_life.jpg){: style="width:7%"}](https://www.youtube.com/c/TheDigitalLifeTech)<br/>
[![Azure Terraformer](images/azure-terraformer.jpg){: style="width:7%"}](https://www.youtube.com/@azure-terraformer) [![Ned in the Cloud](images/nedinthecloud.jpg){: style="width:7%"}](https://www.youtube.com/@NedintheCloud) [![netbox](images/netboxlabs_logo.jpg){: style="width:7%"}](https://www.youtube.com/@NetBoxLabs) [![Tech with Helen](images/techwithhelen.jpg){: style="width:7%"}](https://www.youtube.com/@techwithhelen) [![bytebytego](images/bytebytego.jpg){: style="width:7%"}](https://www.youtube.com/@ByteByteGo) [![dotcsv](images/dotcsv.jpg){: style="width:7%"}](https://www.youtube.com/@DotCSV) [![midulive](images/midulive.jpg){: style="width:7%"}](https://www.youtube.com/@midulive) [![returngis](images/returngis_logo.jpg){: style="width:7%"}](https://www.youtube.com/@returngis) [![kubefm](images/kubefm_logo.jpg){: style="width:7%"}](https://www.youtube.com/@kubefm) [![Olena Kutsenko](images/olena_kutsenko.jpg){: style="width:7%"}](https://www.youtube.com/@OlenaKutsenko) [![mouredev](images/mouredev.jpg){: style="width:7%"}](https://www.youtube.com/@mouredev)<br/>
[![CloudNativeMadrid](images/cloudnativemadrid_logo.jpg){: style="width:7%"}](https://www.youtube.com/@CloudNativeMadrid) [![kyndryl](images/kyndryl_logo.jpg){: style="width:7%"}](https://www.youtube.com/@kyndryl) [![itopstalk](images/itopstalk_logo.png){: style="width:7%"}](https://www.youtube.com/@ITOpsTalk) [![gcp videos new](images/gcp_logo_v2.png){: style="width:7%"}](https://www.youtube.com/@googlecloudtech) [![Google Gemini](images/google_gemini_logo.png){: style="width:7%"}](https://www.youtube.com/@GoogleGemini) [![Google DeepMind](images/google_deepmind_logo.png){: style="width:7%"}](https://www.youtube.com/@googledeepmind) [![Anthropic](images/anthropic_logo.png){: style="width:7%"}](https://www.youtube.com/@anthropic-ai) [![Microsoft Copilot](images/microsoft_copilot_logo.png){: style="width:7%"}](https://www.youtube.com/@Microsoft.Copilot) [![OpenAI](images/openai_logo.png){: style="width:7%"}](https://www.youtube.com/OpenAI) [![Meta AI](images/meta_ai_logo.png){: style="width:7%"}](https://www.youtube.com/@aiatmeta) [![Microsoft Reactor](images/microsoft_reactor_logo.png){: style="width:7%"}](https://www.youtube.com/@MicrosoftReactor)<br/>
[![Playwright](images/playwright_logo.png){: style="width:7%"}](https://www.youtube.com/@Playwrightdev) [![Arsys](images/arsys_logo.svg){: style="width:7%"}](https://www.youtube.com/@arsys)
[![Playwright](images/playwright_logo.png){: style="width:7%"}](https://www.youtube.com/@Playwrightdev) [![Arsys](images/arsys_logo.svg){: style="width:7%"}](https://www.youtube.com/@arsys) [![ClickHouse](images/clickhouse_logo.svg){: style="width:7%"}](https://www.youtube.com/@ClickHouseDB)
</center>
+3
View File
@@ -50,3 +50,6 @@ reset max-width with the following CSS: */
}
+20
View File
@@ -0,0 +1,20 @@
# Securing Rare and Inactive Usernames on X
Getting a highly sought-after handle on social media can be challenging, but X (formerly Twitter) has introduced a streamlined way for power users, brands, and creators to claim inactive or rare usernames.
## Requirements
To participate in the handle acquisition process, users must meet specific platform criteria:
* Maintain an active Premium or Premium+ subscription.
* Have a verified account in good standing.
* Be prepared to pay the associated fees for high-value or highly sought-after handles.
## Accessing the Marketplace
If you meet the requirements and wish to claim a specific inactive handle, you can begin the process through the [X Handle Marketplace Portal](https://handles.x.com/login). This is the official workspace portal for X's Handle Marketplace, allowing verified Premium subscribers to request, secure, and purchase inactive and rare usernames safely.
## Best Practices
* **Avoid Third-Party Brokers:** Always use the official portal linked above to avoid phishing attempts and scams. Buying handles outside of official channels violates X's Terms of Service and can result in account suspension.
* **Prepare Alternatives:** Have a few backup username options in mind just in case your primary choice is not deemed "inactive" by X's internal metrics.
* **Trademark Considerations:** If you hold a registered trademark for the requested handle, make sure to submit the relevant documentation to expedite the process.
+1
View File
@@ -290,6 +290,7 @@ nav:
- Freelancing: freelancing.md
- Remote Tech Jobs: remote-tech-jobs.md
- Clients: customer.md
- Uncategorized: uncategorized.md
- About: about.md
copyright: 2026 <a href="https://twitter.com/nubenetes">Nubenetes</a>, <a href="https://nubenetes.com/about/">about</a>.
extra:
+124 -17
View File
@@ -15,12 +15,12 @@ from src.logger import log_event
# Configuration
V1_DIR = "docs"
def get_best_category_match(suggested: str) -> Optional[str]:
if not suggested: return None
def get_best_category_match(suggested: str) -> str:
if not suggested: return "uncategorized"
suggested = suggested.lower().strip()
for cat in NUBENETES_CATEGORIES:
if suggested in cat or cat in suggested: return cat
return None
return "uncategorized"
async def _get_github_activity(url: str) -> Dict:
match = re.search(r'github\.com/([^/]+/[^/]+)', url)
@@ -88,12 +88,12 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]:
if norm_url in curator.inventory:
cached = curator.inventory[norm_url]
if cached.get("status") == "review_required":
evaluations[url] = {"status": "REVIEW_PENDING", **cached}
evaluations[url] = {**cached, "status": "REVIEW_PENDING"}
continue
if cached.get("title") and cached.get("hierarchy"):
from src.gemini_utils import SESSION_TRACKER
SESSION_TRACKER.track_cache_hit(est_tokens=2200)
evaluations[url] = {"status": "INCLUDED", **cached}
evaluations[url] = {**cached, "status": "INCLUDED"}
continue
to_evaluate.append(asset)
@@ -104,8 +104,7 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]:
from src.mandate_ingestor import get_system_mandates
dynamic_mandates = get_system_mandates()
for i in range(0, len(to_evaluate), BATCH_SIZE):
batch = to_evaluate[i:i+BATCH_SIZE]
async def process_sub_batch(batch):
batch_data = []
for asset in batch:
web_content, rich_meta = await _deep_fetch_content(asset["url"])
@@ -129,6 +128,9 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]:
"- Perform a real-time web search for each resource.\n"
"- If the community (Reddit, Hacker News) reports the tool as 'unstable', 'abandoned', or 'vaporware', set reputation_penalty: true.\n"
"PHASE 2: LINGUISTIC DIVERSITY & CLASSIFICATION\n"
"- Calculate 'impact_score' (0-100) based on architectural value, innovation, and technical depth (>= 80 is required for inclusion).\n"
f"- Assign a 'primary_category' strictly from this list: {', '.join(NUBENETES_CATEGORIES)}\n"
"- If none fit well, use 'uncategorized' and propose a better one in 'suggested_new_category'.\n"
"- Identify TECHNICAL_HIERARCHY: List (max 10 strings) Area > Topic > Subtopics.\n"
"PHASE 3: HIGH-DENSITY TECHNICAL SUMMARIES (Mandate 4)\n"
"- Provide an 'en_summary' that is technical, professional and dense.\n"
@@ -136,17 +138,36 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]:
"- Format: Use paragraphs and bullet points if necessary. Aim for 2-5 sentences of depth.\n"
"PHASE 4: MULTI-DIMENSIONAL TAGGING\n"
"- Assign 1 to 3 tags from: [DE FACTO STANDARD], [ENTERPRISE-STABLE], [EMERGING], [GUIDE], [CASE STUDY], [COMMUNITY-TOOL], [LEGACY].\n"
"Respond ONLY JSON list: [{\"url\": \"...\", \"impact_score\": int, \"reputation_penalty\": bool, \"reputation_summary\": \"...\", \"pub_date\": \"YYYY-MM-DD\", \"primary_category\": \"...\", \"title\": \"...\", \"desc\": \"...\", \"en_summary\": \"High-density summary...\", \"language\": \"...\", \"type\": \"...\", \"level\": \"...\", \"technical_hierarchy\": [...], \"tags\": [...], \"is_microservice\": bool}, ...]\n\n"
"Respond ONLY JSON list: [{\"url\": \"...\", \"impact_score\": int, \"reputation_penalty\": bool, \"reputation_summary\": \"...\", \"pub_date\": \"YYYY-MM-DD\", \"primary_category\": \"...\", \"suggested_new_category\": \"...\", \"title\": \"...\", \"desc\": \"...\", \"en_summary\": \"High-density summary...\", \"language\": \"...\", \"type\": \"...\", \"level\": \"...\", \"technical_hierarchy\": [...], \"tags\": [...], \"is_microservice\": bool}, ...]\n\n"
"RESOURCES:\n" + "\n".join([f"- {d['asset']['url']}: (MVQ Penalty: {d['mvq_penalty']}) {d['content']}" for d in batch_data])
)
try:
# ENABLE GROUNDING FOR REPUTATION FILTER
results = await call_gemini_with_retry(prompt, use_grounding=True, role="Curator")
results = await call_gemini_with_retry(prompt, use_grounding=True, prefer_flash=True, role="Curator")
if isinstance(results, list):
res_map = {normalize_url(r.get("url", "")): r for r in results}
for d in batch_data:
url = d["asset"]["url"]; norm_url = normalize_url(url); data = res_map.get(norm_url)
url = d["asset"]["url"]
norm_url = normalize_url(url)
data = res_map.get(norm_url)
if not data:
# Fallback 1: Case-insensitive match on normalized url
for r in results:
if normalize_url(r.get("url", "")).lower() == norm_url.lower():
data = r
break
if not data:
# Fallback 2: Check if domain and path suffix match (handling protocol/www differences)
from urllib.parse import urlparse
p_url = urlparse(url)
for r in results:
r_url = r.get("url", "")
p_r = urlparse(r_url)
if p_url.netloc.replace("www.", "") == p_r.netloc.replace("www.", "") and p_url.path.rstrip("/") == p_r.path.rstrip("/"):
data = r
break
if not data: continue
score = data.get("impact_score", 50)
if data.get("reputation_penalty"):
@@ -161,11 +182,13 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]:
"language": data.get("language", "English"), "resource_type": data.get("type", "Reference"),
"complexity": data.get("level", "Intermediate"), "hierarchy": data.get("technical_hierarchy", ["General"]),
"tags": data.get("tags", []), "is_microservice": data.get("is_microservice", False), "year": data.get("pub_date", "N/A")[:4],
"stars": min(max(score // 20, 0), 5), "content_hash": d["hash"],
"stars": min(max(score // 20, 0), 5), "impact_score": score, "content_hash": d["hash"],
"reputation_status": "Vetted" if not data.get("reputation_penalty") else "Suspicious",
"reputation_summary": data.get("reputation_summary", ""),
"source_provenance": d["asset"].get("source_type", "Social"), "social_preview_url": d["rich_meta"].get("og_image", ""),
"category": primary_cat, "status": "online", "last_checked": datetime.now().timestamp(), **d["gh_meta"]
"category": primary_cat, "status": "online", "last_checked": datetime.now().timestamp(),
"suggested_new_category": data.get("suggested_new_category", ""),
"addition_method": "automatic", **d["gh_meta"]
}
if "youtube.com" in url or "youtu.be" in url:
title_desc = f"{data['title']} {data['desc']}".lower()
@@ -174,10 +197,15 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]:
eval_data["is_featured_video"] = True
eval_data["is_enriched"] = False
curator.inventory[norm_url] = eval_data
evaluations[url] = {"status": "INCLUDED", **eval_data}
else: evaluations[url] = {"status": "FILTERED"}
evaluations[url] = {**eval_data, "status": "INCLUDED"}
else:
evaluations[url] = {"status": "FILTERED"}
curator.inventory[norm_url] = {"status": "FILTERED", "score": score, "last_checked": datetime.now().timestamp()}
curator._save_inventory()
except Exception as e: log_event(f" [!] Batch AI Error: {e}")
sub_batches = [to_evaluate[i:i+BATCH_SIZE] for i in range(0, len(to_evaluate), BATCH_SIZE)]
await asyncio.gather(*(process_sub_batch(b) for b in sub_batches))
return evaluations
@@ -204,9 +232,88 @@ class AgenticCurator:
except: return []
async def decide_smart_injection(self, content: str, asset: Dict) -> str:
prompt = f"Decide where to inject this link in the Markdown content.\nLINK: {asset['title']} ({asset['url']})\nDESC: {asset['description']}\n\nRespond ONLY with the updated full Markdown content."
try: return await call_gemini_with_retry(prompt, response_format="text")
except: return content
# Extract headers from the markdown content
lines = content.splitlines()
headers = [line.strip() for line in lines if line.strip().startswith("#")]
# Build prompt for LLM (using Flash for speed/cost/reliability)
prompt = (
"You are a Cloud Native Technical Librarian.\n"
"Given a list of headers in a Markdown document and a new link to curate, "
"select the most specific header under which the link belongs.\n\n"
f"HEADERS:\n" + "\n".join(headers) + "\n\n"
f"NEW LINK:\n"
f"Title: {asset.get('title')}\n"
f"URL: {asset.get('url')}\n"
f"Description: {asset.get('description')}\n\n"
"Respond ONLY with the exact header from the list (including '#' symbols, e.g. '## Kubernetes Tools').\n"
"If no existing header matches perfectly, respond with 'NEW_HEADER: ## Proposed Name' (matching the appropriate heading level like ## or ###).\n"
"If it doesn't fit anywhere and should be appended at the end of the document, respond with 'APPEND'."
)
selected_header = "APPEND"
try:
# We use Flash 3.5 (prefer_flash=True) to avoid 429 rate limits and reduce cost
ai_res = await call_gemini_with_retry(prompt, response_format="text", prefer_flash=True, role="General")
if ai_res:
selected_header = ai_res.strip().strip("'\"")
except Exception as e:
log_event(f" [!] LLM injection decision failed: {e}. Defaulting to APPEND.")
selected_header = "APPEND"
# Format the link line according to Mandate 17
year = asset.get("year", "N/A")
year_prefix = f"**({year})** " if year and year != "N/A" else ""
link_line = f" - {year_prefix}[{asset['title']}]({asset['url']}) 🌟 - {asset['description']}"
# Perform programmatic insertion in Python
if selected_header == "APPEND":
return content.rstrip() + "\n\n" + link_line + "\n"
if selected_header.startswith("NEW_HEADER:"):
new_h = selected_header.split("NEW_HEADER:", 1)[1].strip()
return content.rstrip() + f"\n\n{new_h}\n{link_line}\n"
# Else, find the header (exact or fuzzy match) and insert under it
header_idx = -1
for idx, line in enumerate(lines):
if line.strip() == selected_header.strip():
header_idx = idx
break
# Fuzzy match if exact match fails
if header_idx == -1:
clean_sel = selected_header.replace("#", "").strip().lower()
for idx, line in enumerate(lines):
if line.strip().startswith("#"):
clean_line = line.replace("#", "").strip().lower()
if clean_line == clean_sel:
header_idx = idx
selected_header = line
break
if header_idx == -1:
# Fallback to append if AI proposed header not found in the list
return content.rstrip() + "\n\n" + link_line + "\n"
# Insert under selected_header
# Find the end of this header's section: when we hit a header of the same or higher level
header_level = len(selected_header) - len(selected_header.lstrip('#'))
insert_idx = len(lines)
for idx in range(header_idx + 1, len(lines)):
line = lines[idx].strip()
if line.startswith("#"):
line_level = len(line) - len(line.lstrip('#'))
if line_level <= header_level:
insert_idx = idx
break
# Move insert_idx backward past any trailing blank lines
while insert_idx > header_idx + 1 and lines[insert_idx - 1].strip() == "":
insert_idx -= 1
lines.insert(insert_idx, link_line)
return "\n".join(lines) + "\n"
async def apply_semantic_interlinking(self, evaluations: Dict):
log_event("[*] Applying Semantic Interlinking (Mandate 5)...")
+1 -1
View File
@@ -74,5 +74,5 @@ NUBENETES_CATEGORIES = [
'qa', 'rancher', 'react', 'recruitment', 'registries', 'remote-tech-jobs', 'scaffolding',
'scaleway', 'securityascode', 'serverless', 'servicemesh', 'sonarqube', 'sre', 'stackstorm',
'swagger-code-generator-for-rest-apis', 'tekton', 'terraform', 'test-automation-frameworks',
'testops', 'visual-studio', 'web-servers', 'web3', 'workfromhome', 'xamarin', 'yaml'
'testops', 'uncategorized', 'visual-studio', 'web-servers', 'web3', 'workfromhome', 'xamarin', 'yaml'
]
+7 -7
View File
@@ -295,16 +295,16 @@ async def call_gemini_with_retry(prompt: str, response_format: str = "json", max
base_wait_time = 2.0
# 1. Smart Filtering and Re-ordering
if use_grounding:
# For grounding, we MANDATE Pro models as they have superior search/reasoning capabilities
models = [m for m in models_pool if "pro" in m]
if not models:
models = ["gemini-1.5-pro", "gemini-1.5-pro-latest"]
elif prefer_flash:
if prefer_flash:
# Strict filter: Only allow flash/lite models
models = [m for m in models_pool if "flash" in m or "lite" in m]
if not models:
models = ["gemini-1.5-flash", "gemini-1.5-flash-latest"]
elif use_grounding:
# For grounding, we MANDATE Pro models as they have superior search/reasoning capabilities
models = [m for m in models_pool if "pro" in m]
if not models:
models = ["gemini-1.5-pro", "gemini-1.5-pro-latest"]
else:
models = models_pool
@@ -363,7 +363,7 @@ async def call_gemini_with_retry(prompt: str, response_format: str = "json", max
if match:
try:
data = json.loads(match.group(0))
return data[0] if isinstance(data, list) and len(data) > 0 else data
return data
except: pass
# QUALITY UPGRADE: If flash failed parsing, don't give up on the key, try a Pro model
+12 -3
View File
@@ -1,6 +1,8 @@
import feedparser
import asyncio
import re
import httpx
from fake_useragent import UserAgent
from datetime import datetime
from typing import List, Dict, Optional
from src.logger import log_event
@@ -18,13 +20,20 @@ class RSSDataExtractor:
async def fetch_links_since(self, since_date: datetime, feeds: List[str]) -> List[Dict]:
all_articles = []
ua = UserAgent()
for url in feeds:
self.log_audit("Discovery", None, f"Parsing feed: {url}")
try:
# Use a thread for feedparser as it's blocking
feed = await asyncio.to_thread(feedparser.parse, url)
async with httpx.AsyncClient(follow_redirects=True, timeout=30.0, verify=False) as client:
headers = {'User-Agent': ua.random}
response = await client.get(url, headers=headers)
response.raise_for_status()
content = response.content
if feed.bozo:
# Use a thread for feedparser as it's blocking
feed = await asyncio.to_thread(feedparser.parse, content)
if feed.bozo and len(feed.entries) == 0:
self.log_audit("Parsing", False, f"Malformed feed: {url}")
continue
+10 -2
View File
@@ -308,7 +308,7 @@ async def master_orchestrator():
"related_categories": evaluation.get("related_categories", []),
"post_date": asset.get("timestamp"),
"source": asset.get("source_type", "Social"),
"impact_score": evaluation.get("impact_score", 0),
"impact_score": evaluation.get("impact_score") or (evaluation.get("stars", 0) * 20) or (80 if evaluation["status"] == "INCLUDED" else 0),
"title": evaluation.get("title", "N/A"),
"language": evaluation.get("language", "English"),
"type": evaluation.get("resource_type", "Reference")
@@ -322,7 +322,7 @@ async def master_orchestrator():
"description": evaluation["description"],
"year": evaluation.get("year", "N/A"),
"category": evaluation.get("category", "kubernetes-tools"),
"impact_score": evaluation["impact_score"],
"impact_score": evaluation.get("impact_score") or (evaluation.get("stars", 0) * 20) or 80,
"reasoning": evaluation.get("reasoning")
})
existing_urls.add(normalize_url(sanitized_url))
@@ -371,6 +371,14 @@ async def master_orchestrator():
# 6. Finalization, Report and PR
pr_url = None
if modified_files_content or full_report_metrics:
# Generate the visual dashboard report.html (Mandate 6)
try:
from src.report_generator import generate_visual_report
generate_visual_report(full_report_metrics)
log_event("[*] Curation Dashboard report.html generated successfully.")
except Exception as e:
log_event(f" [!] Error generating report.html: {e}")
metrics = {
"total_extracted": len(all_raw_assets),
"start_date": since_date.isoformat(),
+8
View File
@@ -8,5 +8,13 @@
"src/reorganize_mosaic.py",
"src/v2_optimizer.py"
]
},
"addition_method_tracking": {
"field": "addition_method",
"values": ["manual", "automatic"],
"rules": {
"manual": "Assigned to all pre-existing entries and any new entries discovered by the V2 Optimizer from V1 Markdown source files (assumed manually added).",
"automatic": "Assigned to resources ingested automatically via curation workflows from X/Twitter, RSS, or GitHub trending."
}
}
}
+4
View File
@@ -392,6 +392,8 @@ class V2VisionEngine:
norm_url = normalize_url(item["url"])
self.inventory[norm_url] = {k:v for k,v in item.items() if k not in ["url", "title", "original_file", "is_special", "aliases"]}
self.inventory[norm_url]["title"] = item["title"]
if "addition_method" not in self.inventory[norm_url]:
self.inventory[norm_url]["addition_method"] = "manual"
except Exception:
for l in batch: analyst_results.append(l)
@@ -501,6 +503,8 @@ class V2VisionEngine:
# Persist to inventory
self.inventory[norm_url] = {k:v for k,v in item.items() if k not in ["url", "title", "original_file", "is_special", "aliases"]}
self.inventory[norm_url]["title"] = item["title"]
if "addition_method" not in self.inventory[norm_url]:
self.inventory[norm_url]["addition_method"] = "manual"
if p_id not in project_registry or item.get("stars", 0) > project_registry[p_id].get("stars", 0):
if p_id in project_registry and project_registry[p_id].get("is_special"): item["is_special"] = True
+57 -1
View File
@@ -5,6 +5,56 @@ import re
INVENTORY_PATH = "data/inventory.yaml"
VIDEOS_DIR = "v2-docs/videos"
def to_embed_url(url):
if not url:
return ""
# If playlist
if "playlist?list=" in url:
match = re.search(r"[?&]list=([^&#]+)", url)
if match:
return f"https://www.youtube.com/embed/videoseries?list={match.group(1)}"
return url
video_id = None
if "youtu.be/" in url:
match = re.search(r"youtu\.be/([^?&#]+)", url)
if match:
video_id = match.group(1)
elif "embed/" in url:
return url
else:
match = re.search(r"[?&]v=([^&#]+)", url)
if match:
video_id = match.group(1)
if video_id:
list_match = re.search(r"[?&]list=([^&#]+)", url)
t_match = re.search(r"[?&]t=([^&#]+)", url)
params = []
if list_match:
params.append(f"list={list_match.group(1)}")
if t_match:
t_val = t_match.group(1)
seconds = 0
time_matches = re.findall(r"(\d+)(h|m|s)?", t_val)
if time_matches:
for val, unit in time_matches:
val_int = int(val)
if unit == "h":
seconds += val_int * 3600
elif unit == "m":
seconds += val_int * 60
else:
seconds += val_int
params.append(f"start={seconds}")
elif t_val.isdigit():
params.append(f"start={t_val}")
query_string = f"?{f'&'.join(params)}" if params else ""
return f"https://www.youtube.com/embed/{video_id}{query_string}"
return url
def get_target_file(category, technology):
cat_lower = category.lower()
tech_lower = technology.lower()
@@ -29,7 +79,7 @@ def generate_v2_videos():
for url, entry in inventory.items():
if entry.get("is_featured_video"):
featured_videos.append({
"url": url,
"url": to_embed_url(url),
"title": entry.get("title", "YouTube Video"),
"category": entry.get("category", "General"),
"technology": entry.get("technology", "Cloud Native"),
@@ -123,6 +173,12 @@ def generate_v2_videos():
for v in grouped_by_tech[tech]:
summary = v.get("summary", "").strip()
# Replace bullet points starting with '* ' with '- ' to avoid markdownlint MD037 errors
lines_sum = []
for line in summary.splitlines():
line = re.sub(r'^(\s*)\*\s+', r'\1- ', line)
lines_sum.append(line)
summary = "\n".join(lines_sum)
indented_summary = summary.replace("\n", "\n ")
is_sp = is_spanish(v['title'], summary)
lang_suffix = " [SPANISH CONTENT]" if is_sp else ""
+3 -3
View File
@@ -62,8 +62,8 @@
2. **Standard Layer (Mapped)**: Resources identified as candidates for Elite status but pending deep AI analysis.
**Current Inventory Coverage:**
- **V1 Base Inventory**: 18004 total resources analyzed.
- **V2 Elite Selection**: 14189 candidates identified (78.81% density ratio).
- **V1 Base Inventory**: 18356 total resources analyzed.
- **V2 Elite Selection**: 14189 candidates identified (77.3% density ratio).
- **AI Enrichment Coverage**: 2853 / 14189 (20.11%)
- **GitHub Metadata Coverage**: 1451 / 1763 (82.3%) - *Critical for Maturity Tagging*
- **Status**: The system is incrementally processing pending resources to complete the knowledge graph.
@@ -97,7 +97,7 @@
<div markdown="1" style="border: 1px solid #ec4899; border-radius: 8px; padding: 10px; margin: 8px 0; background: rgba(255, 255, 255, 0.01);" title="Observability, Databases & Cloud Storage">
[![prometheus videos](images/prometheus_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/PrometheusIo) [![grafana videos](images/grafana_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Grafana) [![istio videos](images/istio_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Istio) [![elastic videos](images/elasticsearch_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Elastic) [![dynatrace videos](images/dynatrace_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/dynatrace) [![appdynamics videos](images/appdynamics_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/appdynamics) [![newrelic videos](images/newrelic_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/NewRelicInc) [![tigera calico](images/tigera_calico_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UC8uN3yhpeBeerGNwDiQbcgw) [![weavecloud](images/weavecloud_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/WeaveWorksInc) [![crunchydata](images/crunchydata_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/CrunchyDataPostgres) [![liquibase video](images/liquibase_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UC5qMsRjObu685rTBq0PJX8w) [![cockroachdb](images/cockroachdb_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/cockroachdb) [![mongodb](images/mongodb_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/MongoDBofficial) [![redis](images/redis_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Redisinc) [![confluent video](images/confluent_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Confluent) [![kubemq video](images/kubemq_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UCud7fErZAyMC6lHT_cWZNfA) [![openebs](images/openebs_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UC3ywadaAUQ1FI4YsHZ8wa0g) [![storageos](images/storageos_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UCm63IQg81KP9vXRWSHQpu1w) [![robin](images/robin_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UCt7N400Z8gB_3yKq1qrjP2w) [![portworx](images/portworx_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Portworx)
[![prometheus videos](images/prometheus_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/PrometheusIo) [![grafana videos](images/grafana_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Grafana) [![istio videos](images/istio_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Istio) [![elastic videos](images/elasticsearch_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Elastic) [![dynatrace videos](images/dynatrace_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/dynatrace) [![appdynamics videos](images/appdynamics_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/appdynamics) [![newrelic videos](images/newrelic_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/NewRelicInc) [![tigera calico](images/tigera_calico_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UC8uN3yhpeBeerGNwDiQbcgw) [![weavecloud](images/weavecloud_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/WeaveWorksInc) [![crunchydata](images/crunchydata_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/CrunchyDataPostgres) [![liquibase video](images/liquibase_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UC5qMsRjObu685rTBq0PJX8w) [![cockroachdb](images/cockroachdb_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/cockroachdb) [![mongodb](images/mongodb_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/MongoDBofficial) [![redis](images/redis_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Redisinc) [![confluent video](images/confluent_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Confluent) [![kubemq video](images/kubemq_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UCud7fErZAyMC6lHT_cWZNfA) [![openebs](images/openebs_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UC3ywadaAUQ1FI4YsHZ8wa0g) [![storageos](images/storageos_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UCm63IQg81KP9vXRWSHQpu1w) [![robin](images/robin_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/channel/UCt7N400Z8gB_3yKq1qrjP2w) [![portworx](images/portworx_logo.jpg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/c/Portworx) [![ClickHouse](images/clickhouse_logo.svg){: style="width:48px; height:48px; object-fit:contain; margin:6px;" .channel-logo}](https://www.youtube.com/@ClickHouseDB)
</div>
+175 -5
View File
@@ -6,11 +6,21 @@ Welcome to the **AI Agents and MCP** section of the V2 Video Hub. Explore curate
1. [Red Hat OpenShift](#red-hat-openshift)
2. [Generative AI and Large Language Models](#generative-ai-and-large-language-models)
3. [Red Hat OpenShift AI](#red-hat-openshift-ai)
4. [Claude Code](#claude-code)
5. [Neural Networks](#neural-networks)
6. [LLM Architecture and Post-Training](#llm-architecture-and-post-training)
7. [Agentic DevOps](#agentic-devops)
3. [Grafana Assistant Claude Code Grafana MCP Server](#grafana-assistant-claude-code-grafana-mcp-server)
4. [Red Hat OpenShift AI](#red-hat-openshift-ai)
5. [Claude Code](#claude-code)
6. [Neural Networks](#neural-networks)
7. [LLM Architecture and Post-Training](#llm-architecture-and-post-training)
8. [Agentic DevOps](#agentic-devops)
9. [DevOps AI Agents](#devops-ai-agents)
10. [Android Gemini AI](#android-gemini-ai)
11. [AI Agents Distributed ML Operations](#ai-agents-distributed-ml-operations)
12. [MLOps AI Agents](#mlops-ai-agents)
13. [IAM AI Agents](#iam-ai-agents)
14. [LLMs AI Agents MLOps](#llms-ai-agents-mlops)
15. [Firebase Genkit Gemini AI Agents](#firebase-genkit-gemini-ai-agents)
16. [SRE AI Agents](#sre-ai-agents)
17. [Mobile Cloud Integration AI Agents](#mobile-cloud-integration-ai-agents)
## Red Hat OpenShift
@@ -36,6 +46,18 @@ Welcome to the **AI Agents and MCP** section of the V2 Video Hub. Explore curate
</center>
## Grafana Assistant Claude Code Grafana MCP Server
??? note "🎬 I Stopped Staring at Dashboards. AI Reads My Grafana Metrics Now."
!!! info "Architectural Summary"
This video explores how AI agents can read Grafana metrics, logs, and traces directly using Grafana Assistant and Claude Code wired up to the Grafana MCP server. It demonstrates querying Prometheus, Loki, and Tempo, generating custom dashboards from natural language, and analyzing runtime data from the command line. This workflow bridges the gap between analysis and remediation, allowing agents to verify fixes and make data-grounded decisions.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/HI6KleJAZPY" title="I Stopped Staring at Dashboards. AI Reads My Grafana Metrics Now." frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## Red Hat OpenShift AI
??? note "🎬 Red Hat OpenShift AI overview"
@@ -95,3 +117,151 @@ Welcome to the **AI Agents and MCP** section of the V2 Video Hub. Explore curate
<iframe width="720" height="405" src="https://www.youtube.com/embed/videoseries?list=PLmsFUfdnGr3w9BdWjQGAwV7UPW0kspwOp" title="Agentic DevOps Live" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## DevOps AI Agents
??? note "🎬 Agent-first workflows from prompt to production"
!!! info "Architectural Summary"
This session outlines an end-to-end architectural workflow for transitioning from AI-agentic code generation directly to secure, production-grade deployments on Google Cloud. It demonstrates how developers can utilize IDE-integrated Gemini Code Assist agents, Cloud Run, and Cloud Build to build, containerize, and deploy AI-native applications without leaving their development environments. The presentation emphasizes securing the agentic software development lifecycle (SDLC) using enterprise-grade IAM, automated CI/CD, and policy-driven compliance.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/QtXBAz6TU2g?list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz" title="Agent-first workflows from prompt to production" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Cloud at Google I/O 2026"
!!! info "Architectural Summary"
This playlist presents the Cloud Native and GenAI architectural frameworks showcased at Google I/O 2026, focusing on the transition from traditional DevOps to 'agent-first' autonomous workflows using Google Clouds serverless stack (Cloud Run, Eventarc, Cloud Build, BigQuery) and the Agent Development Kit (ADK). By utilizing Model Context Protocol (MCP) and event-driven architectures, developers can orchestrate specialized multi-agent swarms to handle complex Day-2 operations, such as self-healing remediation and intelligent CI/CD pipelines. This paradigm shift provides a highly secure, automated foundation for scaling and governing AI-native applications directly from code to production.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/videoseries?list=PLOU2XLYxmsIJp39MsvkeWYYNwMso-HeNT" title="Cloud at Google I/O 2026" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Model Context Protocol (MCP) and AI Agents in DevOps"
!!! info "Architectural Summary"
This architectural playlist details how Model Context Protocol (MCP) standardizes context and tool-calling interfaces for AI agents within modern cloud-native systems. It explores the practical integration of autonomous agents into DevOps, SRE, and API automation pipelines, replacing complex, manual scripts with intent-driven workflows. By utilizing secure and scalable MCP servers, platform teams can safely delegate infrastructure, database, and testing orchestration to context-aware AI systems.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/videoseries?list=PLA6Ht2dJt3SId7vE9P5mppWdj65_l6hl7" title="Model Context Protocol (MCP) and AI Agents in DevOps" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## Android Gemini AI
??? note "🎬 What's new in Android development tools"
!!! info "Architectural Summary"
This session outlines the latest developer tool advancements in Android Studio, highlighting Gemini AI integrations that accelerate mobile development workflows across modern Android APIs. It showcases how cloud-connected AI capabilities and intelligent tooling enhance developer velocity, which is critical for scaling cloud-native mobile applications and modern CI/CD pipelines.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/iyc69njNYOw?list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz" title="What's new in Android development tools" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## AI Agents Distributed ML Operations
??? note "🎬 Dialogues at Google I/O 2026"
!!! info "Architectural Summary"
This playlist explores the shift toward proactive, agentic AI, physical robotics, and the convergence of quantum computing with distributed machine learning models. For a 2026 Cloud Native context, it highlights how these autonomous agentic workflows and advanced model capabilities transition enterprise operations from reactive automation to proactive, self-healing system management. This shift fundamentally redefines how distributed computing infrastructures orchestrate, monitor, and scale complex, multi-agent AI workloads.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/videoseries?list=PLOU2XLYxmsIJuxYe1znksQlhLJ4w8GKCu" title="Dialogues at Google I/O 2026" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## MLOps AI Agents
??? note "🎬 ComfyUI + Google Models: A Creator-Friendly Agent Workflow"
!!! info "Architectural Summary"
This architectural overview highlights Google Cloud's integration of Gemini, Veo, and Imagen models with Avid and ComfyUI to deliver secure, agentic workflows for media production. The framework details how multimodal search and generative AI pipelines are orchestrated on Google Cloud compute infrastructure, streamlining video rendering, editing, and creative asset management.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/ppMWxjsmk2k" title="ComfyUI + Google Models: A Creator-Friendly Agent Workflow" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Inside image generations Renaissance moment — the OpenAI Podcast Ep. 19"
!!! info "Architectural Summary"
This episode details the architectural evolution of OpenAI's image generation capabilities to Images 2.0, focusing on the shift from single-turn prompting to multi-modal 'creative agents' integrated with code execution engines like Codex. It addresses the MLOps and infrastructure challenges of scaling real-time generative pipelines to 1.5 billion weekly requests while maintaining strict character consistency and prompt alignment. For 2026 Cloud Native topologies, this highlights the necessity of building low-latency, event-driven agent orchestration layers that seamlessly bind generative media models with stateful transactional systems.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/bH2nP-aCFjk" title="Inside image generations Renaissance moment — the OpenAI Podcast Ep. 19" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 What's new in Google AI"
!!! info "Architectural Summary"
This presentation outlines Google's latest end-to-end AI stack from Google I/O 2026, focusing on deployment strategies for multimodal models, media generation, and intelligent agents. It details how to leverage Google's managed infrastructure and MLOps tools to tune, serve, and scale open-source models in cloud-native environments. Additionally, it introduces new 'vibe-coding' workflows and agentic capabilities designed to streamline next-generation AI application development.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/SSe1VmVrtw0" title="What's new in Google AI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## IAM AI Agents
??? note "🎬 Your AI Agent Has No Identity, Here's Why That's Dangerous"
!!! info "Architectural Summary"
This architectural discussion addresses the critical vulnerability in modern IAM frameworks where autonomous AI agents lack stable, verifiable identity constructs, leading to dangerous dependencies on long-lived API tokens. It explores how the Model Context Protocol (MCP) is redefining agent-to-agent (A2A) and human-to-agent authentication, highlighting strategies to mitigate prompt injection and secure ephemeral credentials in decentralized agentic workflows. Ultimately, it details how modern enterprise security architectures must adapt to protect billions of credentials as multi-agent orchestration becomes standard in cloud-native environments.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/BtgZLw8hYiU" title="Your AI Agent Has No Identity, Here's Why That's Dangerous" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## LLMs AI Agents MLOps
??? note "🎬 A Hacker's Guide to Language Models"
!!! info "Architectural Summary"
This foundational guide demystifies Large Language Models (LLMs) for system engineers, demonstrating how to pragmatically integrate, prompt, and fine-tune models using direct APIs and local deployments rather than heavy frameworks. For cloud-native architects, it provides the essential blueprint for building resource-efficient, low-latency AI agents and MLOps pipelines that run reliably within containerized microservice architectures.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/DjBBV7oZxm8" title="A Hacker's Guide to Language Models" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## Firebase Genkit Gemini AI Agents
??? note "🎬 Developer Keynote (Google I/O '24)"
!!! info "Architectural Summary"
The Google I/O 2024 Developer Keynote details key advancements in building agentic workflows using Firebase Genkit and Gemini 1.5 Pro, establishing modern paradigms for orchestrating AI agents in cloud-native architectures. It also introduces client-side rendering breakthroughs with Flutter's Impeller engine ('Antigravity') and highlights decentralized edge computing via built-in Gemini Nano integration across Chrome and Android platforms.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/aqmpZocmR8o?list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz" title="Developer Keynote (Google I/O '24)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## SRE AI Agents
??? note "🎬 The Shift Podcast by Microsoft Azure—Agentic Edition"
!!! info "Architectural Summary"
This technical podcast series details the evolution of cloud-native infrastructure required to support autonomous, context-aware AI agents in enterprise environments. It explores critical engineering paradigms such as multi-agent orchestration, context engineering over traditional RAG, unified data fabrics for governed access, and Postgres-centric vector storage. Additionally, it addresses the SRE and operations dimension by analyzing how agentic AI is reforming IT operations, cloud management, and security governance through defined agentic borders.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/videoseries?list=PLLasX02E8BPBCP7KdYsjKKFFQUmNEUmE9" title="The Shift Podcast by Microsoft Azure—Agentic Edition" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## Mobile Cloud Integration AI Agents
??? note "🎬 What's new in Android"
!!! info "Architectural Summary"
This session outlines the architectural evolution in Android 17, highlighting advancements in Jetpack Compose, performance optimizations, and the integration of client-side agentic automation. For cloud-native environments, this shifts the paradigm toward edge-to-cloud coordination, requiring backend architectures to seamlessly ingest, secure, and support high-frequency orchestrations driven by autonomous mobile AI agents.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/sig3n7XyaaA?list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz" title="What's new in Android" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
+113
View File
@@ -6,6 +6,7 @@ Welcome to the **Fundamentals** section of the V2 Video Hub. Explore curated hig
1. [Kubernetes](#kubernetes)
2. [Jenkins](#jenkins)
3. [Spring Framework](#spring-framework)
## Kubernetes
@@ -29,6 +30,106 @@ Welcome to the **Fundamentals** section of the V2 Video Hub. Explore curated hig
</center>
??? note "🎬 Kubernetes New Contributor Orientation for 2026-02-17"
!!! info "Architectural Summary"
This orientation session provides an architectural overview of the Kubernetes upstream community, detailing the organizational hierarchy of Special Interest Groups (SIGs) and Working Groups. It guides new contributors through the technical contribution pipeline, highlighting Git workflows, Prow-based automation for PR testing and labeling, and the governance frameworks that sustain the core platform. Understanding these mechanisms is crucial for cloud-native engineers aiming to effectively drive features and maintenance within the ecosystem's foundational orchestrator.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/F3al0HP0MNo" title="Kubernetes New Contributor Orientation for 2026-02-17" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation for 2026-03-17"
!!! info "Architectural Summary"
This onboarding guide details the governance, contribution lifecycle, and development workflows of the Kubernetes ecosystem, highlighting the role of Special Interest Groups (SIGs) and the Prow-based CI/CD automation pipeline. It offers essential technical instruction for configuring local development environments, interacting with community repositories, and adhering to testing standards required for upstream cloud-native contributions.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/gkcZEXqkmZM" title="Kubernetes New Contributor Orientation for 2026-03-17" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation"
!!! info "Architectural Summary"
This orientation session provides an essential entry point for developers looking to contribute to the Kubernetes ecosystem, detailing the organizational dynamics of Special Interest Groups (SIGs) and the architectural workflow of the project. It covers the technical mechanics of the Kubernetes contribution pipeline, including Git workflows, Prow-based automated testing, and the lifecycle of Kubernetes Enhancement Proposals (KEPs) to ensure high-quality, scalable code contributions.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/B_8vYxurU4k" title="Kubernetes New Contributor Orientation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation"
!!! info "Architectural Summary"
This onboarding session outlines the governance framework of Kubernetes Special Interest Groups (SIGs) and the technical workflows required to contribute to the ecosystem. It provides critical guidance on navigating community repositories, leveraging automated testing infrastructure (Prow), and adhering to code review standards essential for scaling cloud-native contributions.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/Frje5KfNrxE" title="Kubernetes New Contributor Orientation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation"
!!! info "Architectural Summary"
This orientation session provides a comprehensive guide for aspiring Kubernetes contributors, detailing the community's organizational structure across Special Interest Groups (SIGs) and Working Groups. It covers essential technical workflows, including GitHub PR submission pipelines, Prow-based automation testing, and the critical role of OWNERS files in codebase governance, establishing a clear pathway for developers to participate in cloud-native open-source development.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/V3Sq0Fgy3ds" title="Kubernetes New Contributor Orientation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation"
!!! info "Architectural Summary"
This orientation provides a comprehensive guide to navigating the Kubernetes contributor ecosystem, detailing the organizational structure of Special Interest Groups (SIGs), community workflows, and the automation tools like Prow and Tide that govern the PR lifecycle. Understanding these foundational processes is essential for platform architects and engineers aiming to successfully upstream patches, custom controllers, or performance optimizations to the core Kubernetes codebase in 2026.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/3B41u33BS2E" title="Kubernetes New Contributor Orientation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation"
!!! info "Architectural Summary"
This onboarding session guides developers through the foundational governance, structure, and technical workflows required to contribute to the Kubernetes ecosystem. It details the organizational architecture of Special Interest Groups (SIGs) and demystifies the GitHub-based development flow, highlighting automated CI/CD tooling like Prow for PR testing and triage. It provides a strategic entry point for engineers looking to influence and maintain core cloud-native orchestration systems.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/l2HpdgRFtN0" title="Kubernetes New Contributor Orientation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation"
!!! info "Architectural Summary"
This onboarding session details the essential governance, codebase organization, and automated release mechanics of the Kubernetes project, guiding new engineers through Special Interest Groups (SIGs) and the Prow-based ChatOps CI/CD workflow. It delivers a structured pathway for landing code and documentation contributions, establishing the foundational open-source engineering practices required to maintain and scale modern cloud-native infrastructure.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/36aGHlsxlow" title="Kubernetes New Contributor Orientation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation"
!!! info "Architectural Summary"
This session details the technical governance, repository structure, and automated testing workflows required for contributing to the Kubernetes ecosystem. It covers the SIG (Special Interest Group) organizational framework, the Prow-driven automation pipeline for pull requests, and the mechanics of OWNERS files, enabling contributors to effectively navigate the code review and release processes critical to maintaining cloud-native infrastructure.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/XAOqUU5Xh1c" title="Kubernetes New Contributor Orientation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
??? note "🎬 Kubernetes New Contributor Orientation"
!!! info "Architectural Summary"
This orientation outlines the governance, SIG (Special Interest Group) structure, and contribution pipelines crucial for participating in the development of the Kubernetes ecosystem. It details the technical workflow of submitting contributions, including navigating the repository layout, adhering to OWNERS files guidelines, and leveraging Prow-based automated testing. Mastering these processes empowers cloud native architects in 2026 to successfully upstream optimizations, maintain enterprise forks, and directly influence upstream API standards.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/J7R-T9Y1x3Y" title="Kubernetes New Contributor Orientation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## Jenkins
??? note "🎬 Jenkins Tutorials"
@@ -40,3 +141,15 @@ Welcome to the **Fundamentals** section of the V2 Video Hub. Explore curated hig
<iframe width="720" height="405" src="https://www.youtube.com/embed/videoseries?si=GBJtqv36O8bslj9z&amp;list=PLvBBnHmZuNQJeznYL2F-MpZYBUeLIXYEe" title="Jenkins Tutorials" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>
## Spring Framework
??? note "🎬 How a Group of Developers Took Back Control from Enterprise Java | Spring: The Documentary"
!!! info "Architectural Summary"
This documentary traces the architectural transition from heavyweight, monolithic Java EE application servers to the lightweight, dependency-injection paradigm of the Spring Framework. For a 2026 Cloud Architect, it provides essential historical context on how decoupling business logic from infrastructure paved the way for modern microservices and containerized environments. Understanding this evolution is critical for evaluating the trade-offs between complex enterprise standards and agile, developer-centric frameworks in cloud-native platforms.
<center markdown="1">
<iframe width="720" height="405" src="https://www.youtube.com/embed/0Gb1z-2SjHY" title="How a Group of Developers Took Back Control from Enterprise Java | Spring: The Documentary" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy" style="border: 1px solid var(--md-typeset-table-color); border-radius: 8px;"></iframe>
</center>