@@ -24,10 +24,10 @@ The tables below show theoretical update frequency based on practice and design,
2424| ------| ------| --------------| -------------|
2525| ` index.json ` | 5 KB | ~ 1 | Root index with all major versions |
2626| ` 10.0/index.json ` | 10 KB | ~ 12 | All 10.0 patches (fewer releases so far) |
27- | ` 9.0/index.json ` | 21 KB | ~ 12 | All 9.0 patches with CVE references |
28- | ` 8.0/index.json ` | 24 KB | ~ 12 | All 8.0 patches with CVE references |
29- | ` timeline/index.json ` | 5 KB | ~ 1 | Timeline root (all years) |
30- | ` timeline/2025/index.json ` | 13 KB | ~ 12 | Year index (all months) |
27+ | ` 9.0/index.json ` | 20 KB | ~ 12 | All 9.0 patches with CVE references |
28+ | ` 8.0/index.json ` | 23 KB | ~ 12 | All 8.0 patches with CVE references |
29+ | ` timeline/index.json ` | 4 KB | ~ 1 | Timeline root (all years) |
30+ | ` timeline/2025/index.json ` | 12 KB | ~ 12 | Year index (all months) |
3131| ` timeline/2025/10/index.json ` | 9 KB | ~ 1 | Month index with embedded CVE summaries |
3232| ` timeline/2025/01/cve.json ` | 14 KB | ~ 1 | Full CVE details for a month |
3333
@@ -185,13 +185,52 @@ curl -s "$ROOT" | jq -r '.["releases-index"][] | select(.["support-phase"] == "a
185185
186186** 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.
187187
188+ ### Target Framework Queries
189+
190+ #### Query: "What Android platform version does each supported .NET version target?"
191+
192+ | Schema | Files Required | Total Transfer |
193+ | --------| ----------------| ----------------|
194+ | hal-index | ` index.json ` → ` {version}/target-frameworks.json ` per version | ** ~ 20 KB** |
195+ | releases-index | N/A | N/A (not available) |
196+
197+ ** hal-index:**
198+
199+ ``` bash
200+ ROOT=" https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/index.json"
201+
202+ # Get target-frameworks.json for each supported version and extract Android TFM
203+ curl -s " $ROOT " | jq -r ' ._embedded.releases[] | select(.supported) | ._links.self.href' | while read VERSION_HREF; do
204+ TFM_HREF=$( curl -s " $VERSION_HREF " | jq -r ' ._links["target-frameworks-json"].href' )
205+ curl -s " $TFM_HREF " | jq -r ' .frameworks[] | select(.platform == "android") | "\(.tfm) (Android \(.platform_version))"'
206+ done
207+ ```
208+
209+ ** Output:**
210+
211+ ``` text
212+ net10.0-android (Android 36.0)
213+ net9.0-android (Android 35.0)
214+ net8.0-android (Android 34.0)
215+ ```
216+
217+ ** releases-index:** Not available.
218+
219+ ** Analysis:**
220+
221+ - ** 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.
222+ - ** Upgrade planning:** Knowing the platform version helps teams plan SDK requirements when upgrading .NET versions.
223+ - ** Discoverability:** The ` target-frameworks-json ` link makes this data accessible through HAL navigation.
224+
225+ ** Winner:** hal-index only
226+
188227### CVE Queries for Latest Security Patch
189228
190229#### Query: "What CVEs were fixed in the latest .NET 8.0 security patch?"
191230
192231| Schema | Files Required | Total Transfer |
193232| --------| ----------------| ----------------|
194- | hal-index | ` index.json ` → ` 8.0/index.json ` → ` 8.0/8.0.21/index.json ` | ** 39 KB** |
233+ | hal-index | ` index.json ` → ` 8.0/index.json ` → ` 8.0/8.0.21/index.json ` | ** 37 KB** |
195234| releases-index | ` releases-index.json ` + ` 8.0/releases.json ` | ** 1,240 KB** |
196235
197236** hal-index:**
@@ -245,7 +284,7 @@ curl -s "$RELEASES_URL" | jq -r '[.releases[] | select(.security == true)] | .[0
245284
246285| Schema | Files Required | Total Transfer |
247286| --------| ----------------| ----------------|
248- | hal-index | ` index.json ` → ` 8.0/index.json ` → ` 8.0/8.0.21/index.json ` | ** 39 KB** |
287+ | hal-index | ` index.json ` → ` 8.0/index.json ` → ` 8.0/8.0.21/index.json ` | ** 37 KB** |
249288| releases-index | ` releases-index.json ` + ` 8.0/releases.json ` | ** 1,240 KB** (cannot answer) |
250289
251290** hal-index:**
@@ -293,7 +332,7 @@ curl -s "$RELEASES_URL" | jq -r '[.releases[] | select(.security == true)] | .[0
293332
294333| Schema | Files Required | Total Transfer |
295334| --------| ----------------| ----------------|
296- | hal-index | ` index.json ` → ` 8.0/index.json ` → 3 patch indexes (via ` prev-security ` ) | ** 51 KB** |
335+ | hal-index | ` index.json ` → ` 8.0/index.json ` → 3 patch indexes (via ` prev-security ` ) | ** 55 KB** |
297336| releases-index | ` releases-index.json ` + ` 8.0/releases.json ` | ** 1,240 KB** |
298337
299338** hal-index:**
@@ -356,7 +395,7 @@ curl -s "$RELEASES_URL" | jq -r '
356395
357396| Schema | Files Required | Total Transfer |
358397| --------| ----------------| ----------------|
359- | hal-index | ` timeline/index.json ` → ` timeline/2025/index.json ` → ` timeline/2025/01/cve.json ` | ** 32 KB** |
398+ | hal-index | ` timeline/index.json ` → ` timeline/2025/index.json ` → ` timeline/2025/01/cve.json ` | ** 30 KB** |
360399| releases-index | All releases.json (13 versions) | ** 8.2 MB** (cannot answer) |
361400
362401** hal-index:**
@@ -413,7 +452,7 @@ done | sort -u
413452
414453| Schema | Files Required | Total Transfer |
415454| --------| ----------------| ----------------|
416- | hal-index | ` timeline/index.json ` → ` timeline/2025/index.json ` → 6 month indexes (via ` prev-security ` ) | ** 60 KB** |
455+ | hal-index | ` timeline/index.json ` → ` timeline/2025/index.json ` → 6 month indexes (via ` prev-security ` ) | ** 55 KB** |
417456| releases-index | All version releases.json files | ** 2.4 MB** |
418457
419458** hal-index:**
@@ -478,7 +517,7 @@ done | sort -u | head -12
478517
479518| Schema | Files Required | Total Transfer |
480519| --------| ----------------| ----------------|
481- | hal-index | ` timeline/index.json ` → ` timeline/2025/index.json ` → ` timeline/2025/10/index.json ` | ** 27 KB** |
520+ | hal-index | ` timeline/index.json ` → ` timeline/2025/index.json ` → ` timeline/2025/10/index.json ` | ** 25 KB** |
482521| releases-index | ` releases-index.json ` + all supported releases.json | ** 2.4 MB** (incomplete—no severity data) |
483522
484523** hal-index:**
@@ -532,7 +571,7 @@ done | sort -u
532571
533572| Schema | Files Required | Total Transfer |
534573| --------| ----------------| ----------------|
535- | hal-index | ` index.json ` → ` 10.0/index.json ` → ` 10.0/compatibility.json ` | ** 155 KB** |
574+ | hal-index | ` index.json ` → ` 10.0/index.json ` → ` 10.0/compatibility.json ` | ** 151 KB** |
536575| releases-index | N/A | N/A (not available) |
537576
538577** hal-index:**
@@ -579,7 +618,7 @@ curl -s "$BC_HREF" | jq -r '[.breaks[].category] | group_by(.) | map({category:
579618
580619| Schema | Files Required | Total Transfer |
581620| --------| ----------------| ----------------|
582- | hal-index | ` index.json ` → ` 10.0/index.json ` → ` 10.0/compatibility.json ` | ** 155 KB** |
621+ | hal-index | ` index.json ` → ` 10.0/index.json ` → ` 10.0/compatibility.json ` | ** 151 KB** |
583622| releases-index | N/A | N/A (not available) |
584623
585624** hal-index:**
@@ -628,7 +667,7 @@ curl -s "$BC_HREF" | jq -r --arg cat "core-libraries" '.breaks[] | select(.categ
628667
629668| Schema | Files Required | Total Transfer |
630669| --------| ----------------| ----------------|
631- | hal-index | ` index.json ` → ` 10.0/index.json ` → ` 10.0/compatibility.json ` | ** 155 KB** |
670+ | hal-index | ` index.json ` → ` 10.0/index.json ` → ` 10.0/compatibility.json ` | ** 151 KB** |
632671| releases-index | N/A | N/A (not available) |
633672
634673** hal-index:**
@@ -726,6 +765,7 @@ curl -s "$PACKAGES_URL" | jq -r '
726765| Timeline navigation | ✅ | ❌ | — |
727766| Security history navigation (` prev-security ` ) | ✅ | ❌ | — |
728767| SDK-first navigation | ✅ | ❌ | — |
768+ | Target frameworks (TFMs, platform versions) | ✅ | ❌ | hal-index only |
729769| Breaking changes by category | ✅ | ❌ | hal-index only |
730770| OS package dependencies | ✅ | ❌ | hal-index only |
731771
@@ -762,9 +802,9 @@ The HAL `_embedded` pattern ensures that any data referenced within a document i
762802| Metric | hal-index | releases-index |
763803| --------| -------------| ----------------|
764804| Basic version queries | 5 KB | 6 KB |
765- | CVE queries (latest security patch) | 39 KB | 1,240 KB |
766- | Last 3 security releases (version) | 51 KB | 1,240 KB |
767- | Last 6 security months (timeline) | 60 KB | 2.4 MB |
805+ | CVE queries (latest security patch) | 37 KB | 1,240 KB |
806+ | Last 3 security releases (version) | 55 KB | 1,240 KB |
807+ | Last 6 security months (timeline) | 55 KB | 2.4 MB |
768808| Cache coherency | ✅ Atomic | ❌ TTL mismatch risk |
769809| Query syntax | snake_case (dot notation) | kebab-case (bracket notation) |
770810| Link traversal | ` ._links.self.href ` | ` .["releases.json"] ` |
0 commit comments