breadpad/breadpad-test/corpus.json
2026-05-25 19:53:50 +08:00

506 lines
15 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[
{
"input": "buy milk on the way home",
"expected_type": "todo",
"expected_time": null,
"expected_body": "buy milk on the way home",
"expected_rrule": null,
"notes": "plain todo, no time signal"
},
{
"input": "pick up dry cleaning",
"expected_type": "todo",
"expected_time": null,
"expected_body": "pick up dry cleaning",
"expected_rrule": null,
"notes": null
},
{
"input": "fix the leaky tap in the bathroom",
"expected_type": "todo",
"expected_time": null,
"expected_body": "fix the leaky tap in the bathroom",
"expected_rrule": null,
"notes": "starts with 'fix'"
},
{
"input": "write release notes for v0.2",
"expected_type": "todo",
"expected_time": null,
"expected_body": "write release notes for v0.2",
"expected_rrule": null,
"notes": "starts with 'write'"
},
{
"input": "email the accountant about last quarter",
"expected_type": "todo",
"expected_time": null,
"expected_body": "email the accountant about last quarter",
"expected_rrule": null,
"notes": "starts with 'email'"
},
{
"input": "check the breadpad logs for errors",
"expected_type": "todo",
"expected_time": null,
"expected_body": "check the breadpad logs for errors",
"expected_rrule": null,
"notes": "starts with 'check'"
},
{
"input": "finish implementing the notification popup",
"expected_type": "todo",
"expected_time": null,
"expected_body": "finish implementing the notification popup",
"expected_rrule": null,
"notes": "starts with 'finish'"
},
{
"input": "update the workspace dependencies",
"expected_type": "todo",
"expected_time": null,
"expected_body": "update the workspace dependencies",
"expected_rrule": null,
"notes": "starts with 'update'"
},
{
"input": "clean up the old git branches",
"expected_type": "todo",
"expected_time": null,
"expected_body": "clean up the old git branches",
"expected_rrule": null,
"notes": "contains 'clean '"
},
{
"input": "call mum at 7pm",
"expected_type": "reminder",
"expected_time": "19:00",
"expected_body": "call mum",
"expected_rrule": null,
"notes": "12h reminder; body should have time phrase stripped"
},
{
"input": "dentist appointment at 3pm",
"expected_type": "reminder",
"expected_time": "15:00",
"expected_body": "dentist appointment",
"expected_rrule": null,
"notes": null
},
{
"input": "pack calculator in bag at 7pm",
"expected_type": "reminder",
"expected_time": "19:00",
"expected_body": "pack calculator in bag",
"expected_rrule": null,
"notes": "time stripped from middle of sentence"
},
{
"input": "meeting prep at 14:30",
"expected_type": "reminder",
"expected_time": "14:30",
"expected_body": "meeting prep",
"expected_rrule": null,
"notes": "24h time with minutes"
},
{
"input": "check the deploy at 23:00",
"expected_type": "reminder",
"expected_time": "23:00",
"expected_body": "check the deploy",
"expected_rrule": null,
"notes": "24h late-night reminder"
},
{
"input": "lunch at 12pm",
"expected_type": "reminder",
"expected_time": "12:00",
"expected_body": "lunch",
"expected_rrule": null,
"notes": "noon edge case"
},
{
"input": "buy milk at the store",
"expected_type": "todo",
"expected_time": null,
"expected_body": "buy milk at the store",
"expected_rrule": null,
"notes": "'at the store' has no digit — should not be parsed as time"
},
{
"input": "take a break in 20 minutes",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "take a break",
"expected_rrule": null,
"notes": "numeric relative time; expected_time null because offset from now is not assertable"
},
{
"input": "review the PR in 2 hours",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "review the PR",
"expected_rrule": null,
"notes": "relative hours"
},
{
"input": "follow up in 3 days",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "follow up",
"expected_rrule": null,
"notes": "relative days"
},
{
"input": "check on the deployment in an hour",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "check on the deployment",
"expected_rrule": null,
"notes": "word-form duration: 'an hour' = 1h"
},
{
"input": "in a couple of hours remind me to check the oven",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "remind me to check the oven",
"expected_rrule": null,
"notes": "word-form duration: 'a couple of hours' = 2h"
},
{
"input": "in a few hours I need to submit this form",
"expected_type": "reminder",
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "word-form duration: 'a few hours' = 3h"
},
{
"input": "in half an hour submit the report",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "submit the report",
"expected_rrule": null,
"notes": "word-form duration: 'half an hour' = 30 min"
},
{
"input": "standup tomorrow morning",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "standup",
"expected_rrule": null,
"notes": "tomorrow morning → tomorrow at 08:00; time not asserted (date-relative)"
},
{
"input": "dentist appointment tomorrow",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "dentist appointment",
"expected_rrule": null,
"notes": "bare 'tomorrow' uses morning default"
},
{
"input": "call family tomorrow evening",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "call family",
"expected_rrule": null,
"notes": "tomorrow evening → tomorrow at 18:00"
},
{
"input": "dentist next monday",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "dentist",
"expected_rrule": null,
"notes": "next weekday; time not asserted (date-relative)"
},
{
"input": "team lunch next friday",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "team lunch",
"expected_rrule": null,
"notes": null
},
{
"input": "tonight put the bins out",
"expected_type": "reminder",
"expected_time": "21:00",
"expected_body": "put the bins out",
"expected_rrule": null,
"notes": "'tonight' anchors to 21:00; word stripped from body"
},
{
"input": "watch the football tonight",
"expected_type": "reminder",
"expected_time": "21:00",
"expected_body": "watch the football",
"expected_rrule": null,
"notes": "'tonight' at end of sentence"
},
{
"input": "this evening water the plants",
"expected_type": "reminder",
"expected_time": "21:00",
"expected_body": "water the plants",
"expected_rrule": null,
"notes": "'this evening' synonym for tonight"
},
{
"input": "call dad tonight at 8pm",
"expected_type": "reminder",
"expected_time": "20:00",
"expected_body": "call dad",
"expected_rrule": null,
"notes": "explicit 'at 8pm' overrides 'tonight'; at_time takes precedence"
},
{
"input": "later today sort out the inbox",
"expected_type": null,
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "vague relative time; Tier 1 cannot parse 'later today' — no assertion"
},
{
"input": "every sunday night check the bins",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "check the bins",
"expected_rrule": "BYDAY=SU",
"notes": "weekly recurrence; 'night' stripped from body via morning_evening cleanup"
},
{
"input": "every weekday morning check email",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "check email",
"expected_rrule": "BYDAY=MO,TU,WE,TH,FR",
"notes": "MonFri recurrence; 'morning' maps to default_morning time"
},
{
"input": "every weekday at 9am standup",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "standup",
"expected_rrule": "BYDAY=MO,TU,WE,TH,FR",
"notes": "MonFri recurrence with explicit time"
},
{
"input": "every tuesday at 6pm call dad",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "call dad",
"expected_rrule": "BYDAY=TU",
"notes": "named weekday recurrence with time"
},
{
"input": "every friday at 1pm team lunch",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "team lunch",
"expected_rrule": "BYDAY=FR",
"notes": null
},
{
"input": "every saturday morning review the week",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "review the week",
"expected_rrule": "BYDAY=SA",
"notes": "named weekday recurrence; 'morning' stripped from body"
},
{
"input": "take my meds every day at 8am",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "take my meds",
"expected_rrule": "FREQ=DAILY",
"notes": "daily recurrence with explicit time"
},
{
"input": "every day take vitamins",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "take vitamins",
"expected_rrule": "FREQ=DAILY",
"notes": "daily recurrence; 'every day' at start"
},
{
"input": "retro every week at 4pm",
"expected_type": "reminder",
"expected_time": null,
"expected_body": "retro",
"expected_rrule": "FREQ=WEEKLY",
"notes": "every_week pattern still works after adding every_weekdays"
},
{
"input": "what if breadman had a calendar view",
"expected_type": "idea",
"expected_time": null,
"expected_body": "what if breadman had a calendar view",
"expected_rrule": null,
"notes": "classic what-if idea"
},
{
"input": "idea: dark mode toggle in breadman",
"expected_type": "idea",
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "explicit idea: prefix"
},
{
"input": "maybe we could add export to CSV",
"expected_type": "idea",
"expected_time": null,
"expected_body": "maybe we could add export to CSV",
"expected_rrule": null,
"notes": "contains 'maybe'"
},
{
"input": "could the sidebar show counts per type",
"expected_type": "idea",
"expected_time": null,
"expected_body": "could the sidebar show counts per type",
"expected_rrule": null,
"notes": "contains 'could'"
},
{
"input": "should we add a dark mode to breadman",
"expected_type": "idea",
"expected_time": null,
"expected_body": "should we add a dark mode to breadman",
"expected_rrule": null,
"notes": "contains 'should we '"
},
{
"input": "what if we switched to SQLite instead of JSONL",
"expected_type": "idea",
"expected_time": null,
"expected_body": "what if we switched to SQLite instead of JSONL",
"expected_rrule": null,
"notes": "starts with 'what if'"
},
{
"input": "why does nmcli drop on suspend?",
"expected_type": "question",
"expected_time": null,
"expected_body": "why does nmcli drop on suspend?",
"expected_rrule": null,
"notes": "starts with 'why'"
},
{
"input": "how do I configure zbus async",
"expected_type": "question",
"expected_time": null,
"expected_body": "how do I configure zbus async",
"expected_rrule": null,
"notes": "starts with 'how'"
},
{
"input": "what is the best way to handle GTK signals in Rust?",
"expected_type": "question",
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "starts with 'what' (not 'what if') — question, not idea"
},
{
"input": "is this thread safe?",
"expected_type": "question",
"expected_time": null,
"expected_body": "is this thread safe?",
"expected_rrule": null,
"notes": "ends with ? without a known question-word prefix"
},
{
"input": "does the ONNX runtime cache model weights between runs?",
"expected_type": "question",
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "ends with ?"
},
{
"input": "meeting went well, follow up needed",
"expected_type": "note",
"expected_time": null,
"expected_body": "meeting went well, follow up needed",
"expected_rrule": null,
"notes": "plain observation; no action verbs, no time, no question"
},
{
"input": "the new mechanical keyboard is noisy but I like it",
"expected_type": "note",
"expected_time": null,
"expected_body": "the new mechanical keyboard is noisy but I like it",
"expected_rrule": null,
"notes": "general note, no strong signals"
},
{
"input": "finally got the ONNX model running on CPU",
"expected_type": "note",
"expected_time": null,
"expected_body": "finally got the ONNX model running on CPU",
"expected_rrule": null,
"notes": "observation without actionable signal"
},
{
"input": "i should probably sort out that thing with the lights",
"expected_type": null,
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "ambiguous; Tier 1 returns note — no assertion, good Tier 2 test case"
},
{
"input": "get around to fixing the shelf at some point",
"expected_type": null,
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "'at some point' has no digit after 'at' so time not extracted; 'fixing' not a recognised prefix"
},
{
"input": "idea: remind me to think about this every monday",
"expected_type": "reminder",
"expected_time": null,
"expected_body": null,
"expected_rrule": "BYDAY=MO",
"notes": "mixed signals: idea: prefix but recurrence takes precedence — type must be reminder"
},
{
"input": "buy milk tonight and remind me to call the doctor tomorrow",
"expected_type": "reminder",
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "multi-intent: 'tomorrow' triggers time extraction; 'tonight' word stripped from body"
},
{
"input": "sort out that thing with the router at some point",
"expected_type": null,
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "unstructured; 'at some point' not parsed as time"
},
{
"input": "rmind me abt dentist appt tmrw",
"expected_type": null,
"expected_time": null,
"expected_body": null,
"expected_rrule": null,
"notes": "typo-heavy; Tier 1 cannot parse this; Tier 2/3 may or may not handle it"
},
{
"input": "pls remind me abt the call at 3pm",
"expected_type": "reminder",
"expected_time": "15:00",
"expected_body": null,
"expected_rrule": null,
"notes": "'at 3pm' matches rule-based despite informal phrasing around it"
}
]