Commit Graph

6240 Commits

Author SHA1 Message Date
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 Bot
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 v2.9.18 2026-06-20 12:25:06 +02:00
Nubenetes Bot
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 Bot
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 Bot
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 v2.9.17 2026-06-20 12:04:14 +02:00
Nubenetes Bot
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 Bot
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
e21f237fa9 Merge release/v2.9.16 into master v2.9.16 2026-06-20 11:55:15 +02:00
Nubenetes Bot
b22d1748c4 release: v2.9.16 — category-first home with Topic Map & Methodology pages
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 11:55:08 +02:00
Nubenetes Bot
9bbb82b00c docs: automated README metric synchronization [skip ci] 2026-06-20 09:54:44 +00:00
Inaki
c7662a35b4 Merge pull request #398 from nubenetes/feat/v2-home-restructure
feat(v2): restructure home — Topic Map + Methodology pages, mosaic & a11y polish
2026-06-20 11:54:23 +02:00
nubenetes-bot
f983d787b0 style(cleaner): auto-correcting formatting & URL normalization 2026-06-20 09:53:39 +00:00
Nubenetes Bot
c41028e023 feat(v2): restructure home — Topic Map + Methodology pages, mosaic & a11y polish
Declutter the V2 landing page into a curated entry point and move the
full category directory and reference legends to dedicated pages.

Home (index):
- Move "Trending Now / Digest" above the signature YouTube mosaic (fix
  inverted altitude: fresh, dynamic content first).
- Replace the ~130-link "Strategic Dimensions" dump with a "Topic Map"
  badge card + a slim reference footer (Topic Map · Methodology · Videos).
- Frame the mosaic with a "The Cloud Native Universe We Track" heading.

New generated pages:
- topic-map.md — full category directory by dimension in a responsive
  multi-column CSS grid, with per-category resource counts.
- methodology.md — Maturity Taxonomy + Technical Impact legend tables
  (moved out of the home).

Mosaic (kept as brand signature, reinforced):
- Surface the per-group category labels that were hidden in title=.
- loading="lazy" on the ~150 channel logos (LCP/perf win).

about.md videos:
- youtube-nocookie.com + loading="lazy" + responsive aspect-ratio wrapper.

Config & cleanup:
- Disable navigation.expand (169-entry nav stayed fully open); the Topic
  Map page now serves as the full directory.
- Branded 404 page with clear ways back (Home / Topic Map / V1 Archive).
- Hoist repeated inline styles (hero badge row) into CSS classes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 11:52:21 +02:00
Nubenetes Bot
ea5e6e80df docs: automated README metric synchronization [skip ci] 2026-06-19 17:51:09 +00:00
Nubenetes Bot
d60cd4de4a merge: back-merge v2.9.15 into develop 2026-06-19 19:51:02 +02:00
Nubenetes Bot
bd5499a9c6 release: v2.9.15 — category-first Intelligence Digest with navigable TOC v2.9.15 2026-06-19 19:50:52 +02:00
Inaki
bfe743a6cd Merge pull request #397 from nubenetes/feat/digest-toc-sections
feat(v2): category-first digest layout for a navigable right-hand TOC
2026-06-19 19:50:48 +02:00
Nubenetes Bot
2e281e98ea feat(v2): category-first digest layout for a navigable right-hand TOC
The Tech & Cloud and Industry & Geo digest pages rendered period-first (three
time-window tabs, each nesting every category as bold text), so they had zero
real headings and an empty "On this page" TOC. Inverted _generate_digest_pages()
to category-first: each category is a real ## heading with the 3 time-windows as
content tabs inside it. The right TOC now lists all 22 tech categories / 4 geo
regions once each, headings sit at column 0 (no MD023 workaround), tabs preserved.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 19:50:23 +02:00
Inaki
32a2f5925a Merge pull request #396 from nubenetes/develop
🚀 Release: Agentic V2 Portal Update
2026-06-19 19:41:19 +02:00
Nubenetes Bot
49b3405097 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-19 17:39:56 +00:00
Nubenetes Bot
d90763f8bd docs: automated README metric synchronization [skip ci] 2026-06-19 17:33:16 +00:00
Nubenetes Bot
17f438553b merge: back-merge v2.9.14 into develop 2026-06-19 19:33:07 +02:00
Nubenetes Bot
8f6fc3caad release: v2.9.14 — deterministic V2 Publisher push v2.9.14 2026-06-19 19:32:58 +02:00
Inaki
851efb3050 Merge pull request #395 from nubenetes/feat/publisher-deterministic-push
ci: make V2 Publisher push deterministic (04.1)
2026-06-19 19:32:54 +02:00
Nubenetes Bot
a5ff06cafb ci: make V2 Publisher push deterministic (04.1)
Replace the fragile rebase + checkout --ours/--theirs README.md self-healing
(which could hang on a non-README conflict and discard the bot's README
metrics) with the deterministic model already used by 05.1: the render is
authoritative for its generated surface, so each attempt hard-resets to the
freshest origin/develop tip, overlays the generated outputs verbatim
(docs/, v2-docs/, inventory.yaml/.sql, news_digest.json — source configs left
untouched), regenerates README on top, then commits and pushes with a 5x retry.
Never hangs on a conflict, never loses data. Pin PYTHONPATH on the step.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 19:32:25 +02:00
Nubenetes Bot
e1df3938d5 docs: automated README metric synchronization [skip ci] 2026-06-19 17:07:08 +00:00
Nubenetes Bot
f91afaa6d2 merge: back-merge v2.9.13 into develop 2026-06-19 19:07:02 +02:00
Nubenetes Bot
dc8cdac96d release: v2.9.13 — CI race-condition hardening & advisory PR Guardian v2.9.13 2026-06-19 19:06:46 +02:00
Inaki
44b4b81317 Merge pull request #394 from nubenetes/feat/ci-race-hardening
ci: harden develop write-path against races & make PR Guardian advisory
2026-06-19 19:06:42 +02:00
Nubenetes Bot
b52f793ea5 ci: harden develop write-path against races & make PR Guardian advisory
Root cause of the recurring README-sync failure: 05.1 modified README.md in
earlier steps then ran `git pull`, which aborts on a dirty tree whenever a
concurrent bot commit advanced develop first. Rewrote its commit step as a
fetch → reset --hard → regenerate → commit → push retry loop (README is a pure
function of inventory, so a hard reset never loses data and eliminates the
merge-conflict / --ours/--theirs class entirely).

Also:
- 03.1/03.2/03.3: wrap the single-shot pull --rebase && push in a 5x retry loop.
- 07.1 PR Guardian: continue-on-error (advisory; keeps the comment, drops the
  blocking red  on AI false positives) + PR-scoped concurrency.
- 07.2 Markdown Linter: PR/branch-scoped concurrency with cancel-in-progress.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 19:06:10 +02:00
Nubenetes Bot
f60d071e40 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-19 16:55:52 +00:00
Nubenetes Bot
57ebe6cec3 merge: back-merge v2.9.12 into develop 2026-06-19 18:50:04 +02:00
Nubenetes Bot
60abdc60d5 release: v2.9.12 — restore V2 search/tag filter + drop redundant Markdown TOC v2.9.12 2026-06-19 18:49:51 +02:00