feat(mcp): add get_event_raw, and surface the master's recurrence properties #18
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat-event-raw"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs #16, step 2 of the build order. Nothing else in that sequence can be validated without it.
What was unreachable
list_eventsREPORTs with<c:expand>, and RFC 4791 §9.6.5 requires a server to stripRRULE,EXDATEandRDATEwhen expanding. Every tool we shipped read through that path, so the master's recurrence properties were not obtainable at all — not lost by our parser, never sent.get_event_rawreturns the object exactly as stored, itsETag, and everyVEVENTin it. It is the sameGETupdate_eventalready performs before patching, so it inherits the existing href resolution, the same-origin check and the 16 MiB response cap rather than adding a new fetch path.Eventadditionsis_override— true for components carrying aRECURRENCE-ID.exdates/rdates— verbatim, as{value, tzid, is_date}.There is no
master_href. Every component of a series lives in one calendar object, so it would always equalhref, and a second field that can never differ from another is a second source that can only agree — it costs a field and buys nothing.hrefis the master href for every instance and the doc comment says so.Why
exdatesis a list of structs rather than stringsEXDATEandRDATEmay each repeat, each may carry a comma-separated list, andTZID/VALUE=DATEbelong to the property rather than to any one value. Flattening to bare strings loses the parameters, and an exclusion built from a value without itsTZIDmatches nothing — the silent failure #16 is about. Entries are flattened with their parameters copied down, and a date-shaped value is treated as a date even whenVALUE=DATEis absent.Verified by mutation
recurrence_dates_are_flattened_with_their_parameters, aloneTZIDnot carried down to each valueget_event_raw_returns_the_master_with_its_recurrence_propertiesVALUE=DATEa_bare_date_value_is_recognised_without_the_parameter, aloneis_overridehardcoded falseget_event_raw_returns_the_master_with_its_recurrence_properties, aloneThe first attempt at that table was wrong and the correction is in
AGENTS.md. Two of the four mutations reported "no test died" for reasons that had nothing to do with the tests: a scriptedstr.replacewhose pattern no longer matched aftercargo fmtreflowed the loop across four lines, andcargo test --libon a crate with no library target, which exits 101 and prints notest result:line at all while my grep reported nothing found. A mutation that never applied looks exactly like a suite that caught nothing. Re-run with the pattern asserted and--bins, every mutation kills the test it should.Gates
cargo fmt --check,cargo clippy -D warnings,cargo test --all-features(110 + 9),cargo audit,cargo deny check bans licenses sources— green onrustc 1.98.0, through the shared build slot.Next
delete_occurrenceandupdate_occurrencefor series with noATTENDEE, refusing when attendees are present, per the decision recorded on #16. TheEXDATEbehaviour gets measured against Clark's throwaway account before anything depends on an exclusion landing.