Skip to content

Commit dc56167

Browse files
committed
Update LLM index
1 parent 5f232d3 commit dc56167

File tree

2 files changed

+53
-25
lines changed

2 files changed

+53
-25
lines changed

release-notes/llms.json

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"required_pre_read": "https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/skills/dotnet-releases/SKILL.md",
66
"latest": "10.0",
77
"latest_lts": "10.0",
8-
"latest_year": "2025",
98
"supported_releases": [
109
"10.0",
1110
"9.0",
@@ -46,16 +45,12 @@
4645
"version": "10.0.1",
4746
"release": "10.0",
4847
"release_type": "lts",
49-
"date": "2025-12-09T00:00:00+00:00",
50-
"year": "2025",
51-
"month": "12",
5248
"security": false,
53-
"cve_count": 0,
5449
"support_phase": "active",
5550
"supported": true,
56-
"eol_date": "2028-11-14",
5751
"sdk_version": "10.0.101",
5852
"latest_security": "10.0.0-rc.2",
53+
"latest_security_date": "2025-10-14",
5954
"_links": {
6055
"self": {
6156
"href": "https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/10.0/10.0.1/index.json"
@@ -78,16 +73,12 @@
7873
"version": "9.0.11",
7974
"release": "9.0",
8075
"release_type": "sts",
81-
"date": "2025-11-19T00:00:00+00:00",
82-
"year": "2025",
83-
"month": "11",
8476
"security": false,
85-
"cve_count": 0,
8677
"support_phase": "active",
8778
"supported": true,
88-
"eol_date": "2026-11-10",
8979
"sdk_version": "9.0.308",
9080
"latest_security": "9.0.10",
81+
"latest_security_date": "2025-10-14",
9182
"_links": {
9283
"self": {
9384
"href": "https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/9.0/9.0.11/index.json"
@@ -110,16 +101,12 @@
110101
"version": "8.0.22",
111102
"release": "8.0",
112103
"release_type": "lts",
113-
"date": "2025-11-11T00:00:00+00:00",
114-
"year": "2025",
115-
"month": "11",
116104
"security": false,
117-
"cve_count": 0,
118105
"support_phase": "active",
119106
"supported": true,
120-
"eol_date": "2026-11-10",
121107
"sdk_version": "8.0.416",
122108
"latest_security": "8.0.21",
109+
"latest_security_date": "2025-10-14",
123110
"_links": {
124111
"self": {
125112
"href": "https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/8.0/8.0.22/index.json"

release-notes/queries/metrics.md

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,18 @@ curl -s "$ROOT" | jq -r '.["releases-index"][] | select(.["support-phase"] == "a
4545
# 8.0
4646
```
4747

48+
**Winner:** hal-index
49+
50+
- 17% smaller than releases-index
51+
- equivalent to llms-index (direct array, no filtering)
52+
4853
**Analysis:**
4954

5055
- **Completeness:** ✅ Equal—both return the same list of supported versions.
5156
- **Boolean vs enum:** The hal-index uses `supported: true`, a simple boolean. The releases-index only exposes `support-phase: "active"` (which hal-index also has), requiring knowledge of the enum vocabulary (active, maintenance, eol, preview, go-live).
5257
- **Property naming:** The hal-index uses `select(.supported)` with dot notation. The releases-index requires `select(.["support-phase"] == "active")` with bracket notation and string comparison.
5358
- **Query complexity:** The hal-index query is 30% shorter and more intuitive for someone unfamiliar with the schema.
5459

55-
**Winner:** hal-index (**17% smaller**); llms-index equivalent (direct array, no filtering)
56-
57-
**Note on URL length:** The hal-index currently uses long GitHub raw URLs (91 chars per URL). With equivalent short CDN URLs, the hal-index would be **4.4 KB**—31% smaller than releases-index.
58-
5960
### Target Framework Queries
6061

6162
#### Query: "What Android platform version does each supported .NET version target?"
@@ -78,6 +79,18 @@ curl -s "$ROOT" | jq -r '._embedded.releases[] | select(.supported) | ._links.se
7879
done
7980
```
8081

82+
**llms-index:** Uses `release-major` link to reach the version index:
83+
84+
```bash
85+
LLMS="https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/llms.json"
86+
87+
# Get target-frameworks.json for each supported version via release-major link
88+
curl -s "$LLMS" | jq -r '._embedded.latest_patches[] | select(.supported) | ._links["release-major"].href' | while read VERSION_HREF; do
89+
TFM_HREF=$(curl -s "$VERSION_HREF" | jq -r '._links["target-frameworks-json"].href')
90+
curl -s "$TFM_HREF" | jq -r '.frameworks[] | select(.platform == "android") | "\(.tfm) (Android \(.platform_version))"'
91+
done
92+
```
93+
8194
**Output:**
8295

8396
```text
@@ -88,14 +101,17 @@ net8.0-android (Android 34.0)
88101

89102
**releases-index:** Not available.
90103

104+
**Winner:** hal-index
105+
106+
- not available in releases-index
107+
- equivalent to llms-index
108+
91109
**Analysis:**
92110

93111
- **Platform versioning:** Each .NET version targets a specific Android API level. This query reveals the progression: .NET 8 → Android 34, .NET 9 → Android 35, .NET 10 → Android 36.
94112
- **Upgrade planning:** Knowing the platform version helps teams plan SDK requirements when upgrading .NET versions.
95113
- **Discoverability:** The `target-frameworks-json` link makes this data accessible through HAL navigation.
96114

97-
**Winner:** hal-index only; llms-index equivalent
98-
99115
### CVE Queries for Latest Security Patch
100116

101117
#### Query: "What CVEs were fixed in the latest .NET 8.0 security patch?"
@@ -266,6 +282,31 @@ done
266282
# 8.0 | 05 | dotnet-sdk | CVE-2025-26646
267283
```
268284

285+
**llms-index:** Uses `_embedded.latest_patches` with `latest-security` link for direct access:
286+
287+
```bash
288+
LLMS="https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/llms.json"
289+
290+
# Direct jump to 8.0's latest security patch via latest-security link
291+
PATCH_HREF=$(curl -s "$LLMS" | jq -r '._embedded.latest_patches[] | select(.release == "8.0") | ._links["latest-security"].href')
292+
293+
# Walk back 3 security patches using prev-security links
294+
for i in {1..3}; do
295+
DATA=$(curl -s "$PATCH_HREF")
296+
VERSION=$(echo "$DATA" | jq -r '.version')
297+
MONTH=$(echo "$DATA" | jq -r '.date | split("T")[0] | split("-")[1]')
298+
echo "$DATA" | jq -r --arg ver "$VERSION" --arg month "$MONTH" \
299+
'._embedded.disclosures[] | "8.0 | \($month) | \(.affected_products[0]) | \(.id)"'
300+
PATCH_HREF=$(echo "$DATA" | jq -r '._links["prev-security"].href // empty')
301+
[ -z "$PATCH_HREF" ] && break
302+
done
303+
# 8.0 | 10 | dotnet-sdk | CVE-2025-55247
304+
# 8.0 | 10 | dotnet-runtime | CVE-2025-55248
305+
# 8.0 | 10 | dotnet-aspnetcore | CVE-2025-55315
306+
# 8.0 | 06 | dotnet-runtime | CVE-2025-30399
307+
# 8.0 | 05 | dotnet-sdk | CVE-2025-26646
308+
```
309+
269310
**releases-index:**
270311

271312
```bash
@@ -809,12 +850,12 @@ curl -s "$PACKAGES_URL" | jq -r '
809850
| List versions || ✅ (direct array) || 17% smaller |
810851
| Version lifecycle (EOL, LTS) |||| 17% smaller |
811852
| Latest patch per version || ✅ (embedded) || 37x smaller |
812-
| CVEs per version || ✅ (via link) || 37x smaller |
853+
| CVEs per version || ✅ (via `latest-security` link) || 37x smaller |
813854
| CVEs per month |||||
814855
| CVE details (severity, fixes) |||||
815856
| Timeline navigation |||||
816857
| Security history navigation (`prev-security`) |||||
817-
| SDK-first navigation |||||
858+
| SDK-first navigation ||(via `latest-sdk` link) |||
818859
| Target frameworks (TFMs, platform versions) |||| hal-index only |
819860
| Breaking changes by category |||| hal-index only |
820861
| OS package dependencies |||| hal-index only |
@@ -869,4 +910,4 @@ The HAL `_embedded` pattern ensures that any data referenced within a document i
869910

870911
The hal-index schema is optimized for the queries that matter most to security operations, while maintaining cache coherency across CDN deployments. The use of boolean properties (`supported`) instead of enum comparisons (`support-phase == "active"`) reduces query complexity and eliminates the need to know the vocabulary of valid enum values. Counterintuitively, the deeper HAL link structure (`._links.self.href`) is more ergonomic than flat URL properties (`.["releases.json"]`) because consistent snake_case naming enables dot notation throughout the query path.
871912

872-
The llms-index provides additional efficiency for AI workloads by embedding `latest_patches[]` with direct `latest-security` links for each version. It is not suitable for mission-critical cloud-native scenarios due to its higher update frequency, but offers significant fetch savings for interactive AI assistants (e.g., 2.5x smaller for version-specific CVE queries by skipping the 20 KB version index fetch).
913+
The llms-index provides additional efficiency for AI workloads by embedding `latest_patches[]` with direct `latest-security` and `latest-sdk` links for each version. It is not suitable for mission-critical cloud-native scenarios due to its higher update frequency, but offers significant fetch savings for interactive AI assistants (e.g., 2.5x smaller for version-specific CVE queries by skipping the 20 KB version index fetch).

0 commit comments

Comments
 (0)