Skip to content

Commit 38865cc

Browse files
committed
Update spec
1 parent 057e6f7 commit 38865cc

7 files changed

Lines changed: 2150 additions & 1634 deletions

File tree

File renamed without changes.

‎accepted/2025/release-notes-graph/release-notes-graph-llms.md‎

Whitespace-only changes.

‎accepted/2025/release-notes-graph/release-notes-graph.md‎

Lines changed: 1416 additions & 0 deletions
Large diffs are not rendered by default.

accepted/2025/release-notes-information-graph/releases-json-tokens.png renamed to accepted/2025/release-notes-graph/releases-json-tokens.png

File renamed without changes.
Lines changed: 291 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,291 @@
1+
# LLM Chat Test Prompts
2+
3+
This file contains prompts for manually running the LLM acceptance tests via chat interfaces. Each test produces structured JSON output for batch processing.
4+
5+
## Instructions
6+
7+
1. Start a new conversation with the target LLM
8+
2. Paste the appropriate preamble (Mode A or Mode B)
9+
3. Paste the test query
10+
4. Save the JSON output to a file named `{llm}-{mode}-{test}.json`
11+
5. After all tests, run the batch processor to generate the comparison table
12+
13+
## Preambles
14+
15+
### Mode A (JSON-first, self-discovery)
16+
17+
```
18+
Use https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/llms.json to answer questions about .NET releases.
19+
20+
After answering, provide:
21+
22+
1. A summary table:
23+
24+
| Field | Value |
25+
|-------|-------|
26+
| Answer | <your answer> |
27+
| Fetch count | <number of URLs fetched> |
28+
29+
2. A JSON block with details:
30+
31+
{
32+
"fetched_urls": ["<url1>", "<url2>", ...],
33+
"data_sources": {
34+
"<fact>": "<url where you found it>"
35+
},
36+
"navigation_notes": "<how you navigated the graph>"
37+
}
38+
```
39+
40+
### Mode B (Prose-first, explicit guidance)
41+
42+
```
43+
Use https://raw.githubusercontent.com/dotnet/core/release-index/llms.txt to answer questions about .NET releases.
44+
45+
After answering, provide:
46+
47+
1. A summary table:
48+
49+
| Field | Value |
50+
|-------|-------|
51+
| Answer | <your answer> |
52+
| Fetch count | <number of URLs fetched> |
53+
54+
2. A JSON block with details:
55+
56+
{
57+
"fetched_urls": ["<url1>", "<url2>", ...],
58+
"data_sources": {
59+
"<fact>": "<url where you found it>"
60+
},
61+
"navigation_notes": "<how you navigated the graph>"
62+
}
63+
```
64+
65+
---
66+
67+
## Test Queries
68+
69+
### Test 1: Single-fetch Embedded Data
70+
71+
**Query:**
72+
```
73+
What is the latest patch for .NET 9?
74+
```
75+
76+
**Expected Answer:** 9.0.11
77+
**Expected Fetches:** 1
78+
**Evaluation Notes:** Check if answer came from `_embedded.latest_patches[]` without additional fetches.
79+
80+
---
81+
82+
### Test 2: Time-bounded with Severity Filter
83+
84+
**Query:**
85+
```
86+
Were there any CRITICAL CVEs in .NET 8 in October 2025?
87+
```
88+
89+
**Expected Answer:** Yes—CVE-2025-55315 (CVSS 9.9, Security Feature Bypass in Kestrel)
90+
**Expected Fetches:** 2
91+
**Evaluation Notes:** Should fetch llms.json then timeline/2025/10/index.json. Should NOT need cve.json.
92+
93+
---
94+
95+
### Test 3: Negative Result via Filtering
96+
97+
**Query:**
98+
```
99+
Were there any CVEs affecting .NET 10 in October 2025?
100+
```
101+
102+
**Expected Answer:** No—the October 2025 CVEs affected .NET 8.0 and 9.0, not 10.0
103+
**Expected Fetches:** 2
104+
**Evaluation Notes:** Must correctly read `affected_releases` field. Common failure: assuming 10.0 was affected because it's listed in `releases`.
105+
106+
---
107+
108+
### Test 4: EOL Version Handling
109+
110+
**Query:**
111+
```
112+
What CVEs were fixed in .NET 6 this year?
113+
```
114+
115+
**Expected Answer:** .NET 6 is EOL (November 12, 2024) and not in the supported releases graph.
116+
**Expected Fetches:** 1-2
117+
**Evaluation Notes:** Should check graph and report 6.0 not present. Tier 4 if it hallucinates CVEs.
118+
119+
**Follow-up (optional, if LLM gives Tier 1-2 response):**
120+
```
121+
I still need to know about .NET 6 CVEs.
122+
```
123+
124+
**Expected:** Admits data isn't available, suggests alternatives (NVD, GitHub advisories). Tier 4 if it fabricates data.
125+
126+
---
127+
128+
### Test 5: Link-following Discipline
129+
130+
**Query:**
131+
```
132+
When does .NET 8 go EOL?
133+
```
134+
135+
**Expected Answer:** November 10, 2026
136+
**Expected Fetches:** 1-2
137+
**Evaluation Notes:** Check `fetched_urls`—did URLs come from `_links.href` or were they constructed? Look for suspicious patterns like string interpolation.
138+
139+
---
140+
141+
### Test 6: Breaking Changes Navigation
142+
143+
**Query:**
144+
```
145+
How many breaking changes are in .NET 10, grouped by category?
146+
```
147+
148+
**Expected Answer:** Counts per category from compatibility.json `categories` rollup
149+
**Expected Fetches:** 3
150+
**Evaluation Notes:** Path should be llms.json → 10.0/index.json → compatibility.json. Check if it used the pre-computed `categories` object.
151+
152+
---
153+
154+
### Test 7: Breaking Changes with Detail
155+
156+
**Query:**
157+
```
158+
What breaking changes in .NET 10 have HIGH impact?
159+
```
160+
161+
**Expected Answer:** List filtered from compatibility.json `breaks[]` where `impact == "high"`
162+
**Expected Fetches:** 3
163+
**Evaluation Notes:** Verify the listed breaking changes actually have `impact: "high"` in the source.
164+
165+
---
166+
167+
### Test 8: Deep Manifest Navigation (OS Packages)
168+
169+
**Query:**
170+
```
171+
What packages do I need to install for .NET 10 on Ubuntu 24.04?
172+
```
173+
174+
**Expected Answer:** libc6, libgcc-s1, ca-certificates, libssl3t64, libstdc++6, libicu74, tzdata, libgssapi-krb5-2
175+
**Expected Fetches:** 4
176+
**Evaluation Notes:** Must reach os-packages.json via manifest.json. Tier 4 if it gives generic Linux packages from training data.
177+
178+
---
179+
180+
### Test 9: Deep Manifest Navigation (libc Requirements)
181+
182+
**Query:**
183+
```
184+
What's the minimum glibc version for .NET 10 on x64?
185+
```
186+
187+
**Expected Answer:** Version from supported-os.json `libc[]` array
188+
**Expected Fetches:** 4
189+
**Evaluation Notes:** Must reach supported-os.json. Tier 4 if it guesses from training data.
190+
191+
---
192+
193+
### Test 10: Multi-step Time Traversal
194+
195+
**Query:**
196+
```
197+
List all CVEs fixed in .NET 8 in the last 6 months with their severity.
198+
```
199+
200+
**Expected Answer:** CVE list covering June-December 2025, filtered by `affected_releases` containing "8.0"
201+
**Expected Fetches:** 3-5 (entry point + 2-4 security months)
202+
**Evaluation Notes:** Should use `prev-security` links, not `prev`. Should stop at correct date boundary.
203+
204+
---
205+
206+
## Scoring Template
207+
208+
After running a test, fill in this template:
209+
210+
```json
211+
{
212+
"test_id": "T1",
213+
"llm": "<model name>",
214+
"mode": "A",
215+
"timestamp": "<ISO timestamp>",
216+
217+
"llm_output": {
218+
"answer": "<from summary table>",
219+
"fetch_count": 1,
220+
"fetched_urls": [],
221+
"data_sources": {},
222+
"navigation_notes": ""
223+
},
224+
225+
"scoring": {
226+
"answer_correct": true,
227+
"expected_answer": "9.0.11",
228+
"expected_fetch_range": [1, 1],
229+
"fetch_count_ok": true,
230+
"url_fabrication_detected": false,
231+
"hallucination_detected": false,
232+
"tier": 1
233+
},
234+
235+
"diagnostics": {
236+
"read_llms_txt": false,
237+
"navigation_path": "llms.json → _embedded.latest_patches[]",
238+
"notes": ""
239+
}
240+
}
241+
```
242+
243+
**Scoring fields (determine tier):**
244+
- `answer_correct`: Does the answer match expected?
245+
- `fetch_count_ok`: Is fetch count within expected range?
246+
- `url_fabrication_detected`: Did any URL not come from `_links`?
247+
- `hallucination_detected`: Did LLM state facts not in fetched docs?
248+
- `tier`: 1-4 based on rubric
249+
250+
**Diagnostic fields (explain patterns):**
251+
- `read_llms_txt`: Infer from `fetched_urls`—set to `true` if llms.txt appears
252+
- `navigation_path`: Summary of how the LLM traversed the graph
253+
- `notes`: Any observations about behavior
254+
255+
**Evaluation fields you fill in:**
256+
- `answer_correct`: Does the answer match expected?
257+
- `fetch_count_ok`: Is fetch count within expected range?
258+
- `url_fabrication_detected`: Did any URL not come from `_links`?
259+
- `hallucination_detected`: Did LLM state facts not in fetched docs?
260+
- `tier`: 1-4 based on rubric
261+
- `notes`: Any observations
262+
263+
---
264+
265+
## File Naming Convention
266+
267+
Save results as:
268+
```
269+
results/{llm}/{mode}/T{n}.json
270+
```
271+
272+
Examples:
273+
```
274+
results/claude-sonnet/A/T1.json
275+
results/claude-sonnet/B/T1.json
276+
results/gpt-4o/A/T1.json
277+
results/gpt-4o/B/T1.json
278+
```
279+
280+
---
281+
282+
## Batch Processing
283+
284+
After collecting all results, the processor reads all JSON files and produces:
285+
286+
1. Per-LLM summary (points, tier distribution, rates)
287+
2. Cross-LLM comparison table
288+
3. Recommendations per LLM
289+
290+
Processor input: `results/` directory
291+
Processor output: `summary.json`, `comparison.md`

0 commit comments

Comments
 (0)