-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_cases.json
More file actions
225 lines (225 loc) · 7.56 KB
/
_cases.json
File metadata and controls
225 lines (225 loc) · 7.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
{
"mcp-assistant-workflows": {
"affects": [
{
"module": "mcp",
"capability": "tool-groups"
},
{
"module": "overview",
"capability": "assistant-dashboard-snapshot"
},
{
"module": "subscription",
"capability": "batch-subscribe-by-codes"
},
{
"module": "ical",
"capability": "personal-calendar-subscription"
},
{
"module": "todo",
"capability": "todo-list"
},
{
"module": "bus",
"capability": "bus-dashboard"
},
{
"module": "bus",
"capability": "bus-route-search"
},
{
"module": "bus",
"capability": "bus-next-departures"
}
],
"rules": {
"aggregate-first": [
"Prefer get_my_dashboard or other task-oriented aggregate tools before stitching together multiple lower-level tool calls."
],
"preview-before-write": [
"Batch or fuzzy write flows should offer a read-only preview tool before the mutation tool."
],
"focused-over-raw-for-common-questions": [
"For prompts such as 'what is my next class?' or 'when is the next bus?', use focused extract tools instead of raw dataset mirrors."
],
"summary-privacy-default": [
"Summary/default outputs should stay compact and redact token-bearing URLs or repeated low-value nested objects."
]
},
"decisions": [
"Assistant-oriented MCP additions should land as aggregate snapshots or filtered convenience tools, not only as raw dataset mirrors.",
"Tool documentation should call out the preferred first tool, focused alternative, default parameters, and privacy redaction behavior for common prompts."
]
},
"semester": {
"affects": [
{
"module": "overview",
"capability": "authenticated-overview"
},
{
"module": "subscription",
"capability": "batch-subscribe-by-codes"
},
{
"module": "subscribed-sections",
"capability": "subscribed-sections-tab"
}
],
"rules": {
"no-current-semester": [
"The home page should display a recoverable empty state.",
"Users should be guided to browse or import sections."
],
"only-non-current-semester-subscriptions": [
"The home page must not pretend to have current learning tasks.",
"Must clearly indicate that no sections are subscribed for the current semester."
],
"cross-semester-browsing": [
"Courses must display semester.",
"Sections must display semester.",
"Homework must display semester.",
"Exams must display semester."
]
},
"decisions": [
"When the current semester does not exist, the home page should enter a recoverable empty state rather than rendering a misleading empty list.",
"When only non-current-semester sections are subscribed, the user must be clearly told 'no content subscribed for the current semester' rather than pretending everything is normal."
]
},
"disambiguation": {
"affects": [
{
"module": "course",
"capability": "course-list"
},
{
"module": "section",
"capability": "section-list"
},
{
"module": "subscription",
"capability": "batch-subscribe-by-codes"
}
],
"rules": {
"duplicate-course-names": [
"Course code or other disambiguation information should be displayed."
],
"multiple-sections-same-course": [
"Section code and semester should be displayed."
],
"required-disambiguation-contexts": [
"Section search.",
"Child sections in course detail.",
"Batch import results."
]
},
"decisions": [
"Whenever there is a risk of ambiguity, list views must prioritize displaying fields that help make a selection.",
"Courses with the same name and multiple sections under the same course must not display only the course name.",
"In cross-semester or multi-section scenarios, semester and section code are mandatory information to retain."
]
},
"missing-data": {
"affects": [
{
"module": "schedule",
"capability": "section-schedule"
},
{
"module": "exam",
"capability": "section-exam-info"
},
{
"module": "homework",
"capability": "section-homework-tab"
},
{
"module": "ical"
}
],
"rules": {
"section-missing-teacher-location-or-exam": [
"A default empty state should be displayed.",
"The entire object must not be hidden."
],
"homework-no-due-date": [
"Does not enter the 'upcoming due' sort.",
"Can still be viewed in the homework list."
],
"ical-no-events": [
"A valid but empty or informational calendar content should be returned."
]
},
"decisions": [
"When fields are missing, prefer showing a default empty state rather than hiding the entire object.",
"Homework with no due date retains visibility but does not mix into upcoming due date sorting.",
"When iCal has no events, a valid result should still be returned to prevent clients from failing on 'empty'."
]
},
"account": {
"affects": [
{
"module": "user",
"capability": "settings"
},
{
"module": "user",
"capability": "public-profile"
}
],
"rules": {
"username-change": [
"The new profile page should be accessible.",
"The old username must not continue to represent the user."
],
"oauth-connection-error": [
"Duplicate OAuth connection should give a clear error response.",
"Disconnecting the last account should give a clear error response."
],
"account-deletion": [
"The user must be required to enter a confirmation word.",
"After successful deletion, the current session should be terminated and the settings page exited."
]
},
"decisions": [
"After a username change, the new address should immediately become the canonical entry.",
"The old username must not continue to represent the user for an extended period to avoid identity confusion.",
"Disconnecting the last sign-in account is an error operation that must be blocked, not an ordinary failure-retry scenario.",
"Account deletion carries higher risk than ordinary destructive operations; the current implementation requires entering the fixed confirmation word DELETE."
]
},
"content-security": {
"affects": [
{
"module": "comment",
"capability": "object-comment-section"
},
{
"module": "upload",
"capability": "comment-attachment-download"
},
{
"module": "security",
"capability": "destructive-action-confirmation"
}
],
"rules": {
"suspended-user": ["Cannot post new comments."],
"upload-attachment-download": ["Access permissions must be validated."],
"destructive-actions": [
"Deletion must have explicit feedback.",
"Suspension must have explicit feedback.",
"Hiding must have explicit feedback."
]
},
"decisions": [
"Suspended users cannot post new comments; this restriction must hold at both the product layer and the permission layer.",
"Upload attachment download must re-validate access permissions; it must not assume that having the link is sufficient to download.",
"High-risk operations use explicit feedback mechanisms."
]
}
}