-
released this
2026-08-24 21:16:07 -05:00 | 75 commits to main since this releaseCanvas C5, half of it:
get_discussion. Scheduled by use rather than by
plan — a real session asked what a graded discussion required, and every tool on
the tenant could say it was due on Friday and worth 2.5 points while none could
say what it asked for. Two defects came out of building it, both shipped in
0.43.0 and both silent.Added
-
get_discussion— a discussion's prompt, and for a graded one its due
date and point value from the assignment object Canvas returns inline. It
reads the PROMPT only:list_discussion_entries— every student's replies —
stays declined, and this server still cannot post.It also hands over
assignment_id, which is a different id from the
topic's. That distinction is the reason the tool exists at all. -
Every item that names a reader now hands over the id that reader takes.
Module items carryassignment_id,topic_idorpage_urlbeside
opens_with; planner items carryassignment_idortopic_id.
Fixed
-
list_modulesnamed a tool and handed over an id that tool rejects. A
module item has two ids —idis its place in the module,content_idis the
thing it points at — and 0.43.0 emitted only the first while labelling
Assignment itemsopens_with: get_assignment. Measured on two live courses:
that id returns 404 from the assignments endpoint andcontent_id
returns the assignment. Pages were unaffected, becausepage_urlwas added
when the same trap was spotted there and nothing checked the other kinds.An item whose handle is missing now names no tool at all, rather than making a
promise that 404s. -
A module lock was reported as emptiness, in three different ways. Measured
across all three courses on 2026-08-24, one condition and three behaviours:Tool What Canvas returns when locked What 0.43.0 said get_pagebodyis null, reason inlock_explanation"This page exists but has no text in it… do not retry" get_assignmentdescriptionis null, samean assignment with no instructions get_discussionmessageIS the lock notice, byte for byte(new tool — caught on its first live run) Twelve locked assignments and two locked pages on the account the day this was
measured, so none of it was hypothetical. All three now carrylockedand a
strippedlock_explanation, and the notes distinguish "Canvas is withholding
this" from "the instructor left it blank". A withheld discussion prompt comes
back empty withprompt_withheld: truerather than as 155 characters of
plausible prose in the field the instructions live in.
Verified
-
Live pass 2026-08-24 through the tool layer, 35 checks, all green. The
planner labels a discussionget_discussionand an assignment
get_assignment; every module item's handle opens its own reader; the graded
topic reportsprompt_withheldwith the module holding it named; and the call
that started this — a topic id sent toget_assignment— still fails, which
is correct, while theassignment_idthe topic hands over succeeds. -
probes/canvas_probe_c5.pyholds the measurements the design rests on —
gitignored like every other probe, so what it established is written down
here, inCLAUDE.mdand in the fixtures rather than only in the script.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-