Update to Riverside
Snapshot Oct 8, 2026 · 12:02 UTC · version 1.1.1
Package or technical metadata updated
Package contents changed in 22 files: .app.json, .codex-plugin/plugin.json, .mcp.json, …. Open the file diff to inspect the edits.
Observed in package metadata. These changes alone do not establish a new customer-facing feature.
Short excerpts from up to four changed fields. Open the full comparison for all changes.
File entries below show saved metadata, such as size and fingerprint. Open a changed file in the full comparison to read its text edits.
Package file
Sep 30, 2026 · 23:19 UTC
8b1784f5e87c6a73520d1b47ff345d8e153482a26427459f1f37fe3a15da4aaf
Oct 8, 2026 · 12:02 UTC
5208b4c7267d13d0ffff729c60d524567d239a1ee787e10d24ede3e1a4430c94
Package file
Sep 30, 2026 · 23:19 UTC
127
Oct 8, 2026 · 12:02 UTC
101
Package file
Sep 30, 2026 · 23:19 UTC
2dc442c526abaf3907e11337cacd8ea30ea40292ba601fd4195808478744b71b
Oct 8, 2026 · 12:02 UTC
21ba966d1f720fc80661f43b527e3c83af1c46b55374e74c0401be819f99c0ae
Package file
Sep 30, 2026 · 23:19 UTC
1571
Oct 8, 2026 · 12:02 UTC
12690
Compare saved observations
Download comparison JSONChanged files
Choose a file to see its text changes. Binary or large files show metadata only.
LICENSE →
skills/content-discovery/SKILL.md →
skills/content-discovery/references/cross-skill-handoffs.md →
skills/content-discovery/references/hierarchy-navigation.md →
skills/podcast-hosting/SKILL.md →
skills/podcast-hosting/agents/openai.yaml →
skills/social-publishing/SKILL.md →
skills/social-publishing/agents/openai.yaml →
skills/social-publishing/references/results-and-recovery.md →
skills/social-publishing/references/scheduling-and-draft-export.md →
skills/social-publishing/references/results-and-recovery.md
Lines starting with − were removed; lines starting with + were added. Other lines provide context.
--- before +++ after @@ -1,48 +1,81 @@ -# Results and recovery +# Results, management and recovery -Outcome interpretation, retry admissibility, and error-specific recovery after a -publish is processing, partial, or failed, or after a timeout, transport failure, -missing result, or any other unknown outcome. The main skill file's safety -contract still governs every follow-up here. - -## Classify the outcome - -- **Processing or accepted for later completion:** explain that processing is - underway and the post should follow automatically. Relay a returned - user-facing message when present; do not expose a raw internal status or - resend the call. -- **Timeout, transport failure, missing response, or unknown result:** say that - submission could have happened but cannot be confirmed. Stop. With no - idempotency key or authoritative status readback, retrying could duplicate a - live post. -- **Explicit per-target failure:** fetch fresh platform guidance and evaluate - the retry gate below. A failure on one target does not undo or change another - target's result. - -## Retry gate - -A retry is admissible only when both the returned failure and current -`social_get_publishing_guidelines` recovery guidance explicitly establish that -no post was created and that retrying this failure is safe. Never retry a -success, processing result, partial or ambiguous result, timeout, transport -failure, or unknown outcome. - -Passing this gate makes a retry eligible; it does not authorize the call. Return -to the main preview and obtain the required new confirmation, whether or not the -payload changed. If the same explicit failure repeats after one clean retry, -stop and report the platform's result. - -## Error-specific recovery - -Use the fresh live guidance for the failure in hand rather than a remembered -error-code catalogue. - -- **Export required:** re-run the main routing table; this outcome matches its - scheduling-and-draft-export row, which supplies current compose choices. - Retry only if the explicit failure passes the retry gate, and return to the - main preview because the payload changed. -- **Metadata or media rejected:** correct only what the live guidance and - returned failure identify, then return to the main preview and confirmation. -- **YouTube copyright / Content-ID signal:** use video-editing's - `editing_get_export_publish_data` to inspect the edit's media and surface a - flagged match instead of retrying over it. +## Find and inspect + +`social_list_uploads` needs studio/production ids. Default is the next 30 days; +use past dates for published posts. Page with `offset`/`hasMore`; window totals +are before platform/status filters, not filtered-row totals. + +Read `social_get_upload` before mutations. Independently check `editable`, +`mediaEditable`, `cancellable`: rendering may allow only cancellation; failed +may allow only editing. Match the account with connected platforms. Only +`COMPLETED` proves live. Relay returned `postUrl`; null does not prove failure. +Do not invent Facebook URLs. + +## Update or cancel + +Preview current account/platform, content, schedule, change and consequences; +confirm each mutation. Refresh/reconfirm if material values changed. + +- `social_update_upload` requires `editable`. Send changing fields only and the + matching platform object; returned `content` is not an input template and + nulls cannot be sent back. `publishNow` posts immediately and cannot be undone; + never combine it with future `scheduledAt`. Use the main scheduling route. +- Media changes require `mediaEditable`. Video cannot be removed or converted + to images, or vice versa. `assets` replaces all images; `[]` removes them only + on text-only platforms. X replies and LinkedIn comments replace whole lists: + start with current entries, preserve unchanged ones and X reply ids, and + preview deletions explicitly. +- `social_cancel_upload` requires `cancellable`; it permanently removes the + post from Content Planner, with no restore or platform deletion. Success is + confirmed by its own response. Do not read back: cancelled ids now return + an authorization error. + +Live edits/removal happen on the platform. Never blindly repeat uncertain +mutations, especially publish-now/cancellation. + +## Accounts + +Resolve required studio id/slug and production id through content-discovery. +`social_connect_social_account` gives a user consent link. After they report +completion, read connected platforms and compare ids +with `connectedPlatformAccountIds`. If that snapshot is null, list accounts and +ask which was added. If none appeared, ask about the browser result before a +fresh link. Never poll by restarting connections. `isAddingAccount` selects an +additional Instagram/X account; omit `returnTo` unless a current Riverside URL +is known. + +Before `social_disconnect_social_account`, read accounts, name the target and +warn that all its scheduled uploads are permanently cancelled; get explicit +confirmation. For Facebook, every Page under that login is disconnected: name +all affected Pages first. Other logins stay connected. Reconnection does not +restore cancelled uploads. + +## Analytics + +`social_get_upload_analytics` reads a published post found by listing. Pass +known `studioId` to diagnose permissions. Relay `asOf`; counts are not live. `hasData: false`, null metrics/days mean unavailable, +never zero. Daily values are already differenced: do not sum/difference them. +`frozen` means collection ended. `MISSING_ANALYTICS_SCOPE` requires reconnecting, +not read retries. In listing views, missing fields mean lookup failed; null +means no collected/available count. + +## Recovery + +Processing: report without resending. Timeout/transport failure/unusable result: +stop publishing. Listing may investigate, but no matching row cannot prove no +post; there is no idempotency key. + +For explicit failures, fetch fresh guidance. Both failure and guidance must +prove no post and safe retry before a fresh upload is eligible. Never retry +success, processing, partial/unknown outcomes. Preview/confirm again; stop if +the failure repeats after one clean retry. + +Prefer in-place recovery. Re-read status/capabilities. `UNKNOWN`/missing failure +category needs platform or Support verification before republishing. Expired +connections may revive scheduled posts after reconnect: no new publish or +`publishNow` until its fresh outcome is reconciled. Other confirmed failures may +use eligible in-place update with the confirmation contract above. + +Export-required matches the draft-export route. Fix only identified metadata/ +media errors, then preview/confirm again. Keep the main YouTube copyright gate.
Full technical diff · 33 changed fields
changed /files/.app.json/sha256
"8b1784f5e87c6a73520d1b47ff345d8e153482a26427459f1f37fe3a15da4aaf"
"5208b4c7267d13d0ffff729c60d524567d239a1ee787e10d24ede3e1a4430c94"
changed /files/.app.json/size
127
101
changed /files/.codex-plugin~1plugin.json/sha256
"2dc442c526abaf3907e11337cacd8ea30ea40292ba601fd4195808478744b71b"
"21ba966d1f720fc80661f43b527e3c83af1c46b55374e74c0401be819f99c0ae"
changed /files/.codex-plugin~1plugin.json/size
1571
12690
added /files/.mcp.json
Field was absent
{
"sha256": "30ff86c6f3d3b6532dfb4cdfec9682dca4cc8c6e86beef3529c99ed30b072cd4",
"size": 118
}added /files/CHANGELOG.md
Field was absent
{
"sha256": "4e8e8665e7e81652f363b178e71194041926c958049fd0525ce1fbea9270f1b7",
"size": 25751
}added /files/LICENSE
Field was absent
{
"sha256": "8790ba96ccfbe5b3ac265dc39d69292ff7c6db916b29ee077e830949e49da64a",
"size": 1075
}added /files/README.md
Field was absent
{
"sha256": "39d3c7bd8430844592ec597513b488a8afbdbf4b718b8ab5a5d54b8d1adc9a42",
"size": 4993
}added /files/SECURITY.md
Field was absent
{
"sha256": "57be735bae95ee34e6e1c84a042c569ce3bd9a34e91f0f066f79bcb5e228d3f2",
"size": 1749
}added /files/agents~1openai.yaml
Field was absent
{
"sha256": "838e01831125eb9d06f65f209af0026d7bbc75c06638a9bc2e431726c734fce7",
"size": 285
}added /files/assets~1logo.png
Field was absent
{
"sha256": "9dfe43ecfec98613587108cf9af176d6f32ee354145b4b2b1e6bc80b89772aa0",
"size": 8908
}added /files/docs~1cursor-testing.md
Field was absent
{
"sha256": "287e3f4108c5f651337bd913fd3fd709ffc8308e50481ad6ebc1d232a73b1276",
"size": 1969
}changed /files/skills~1content-discovery~1SKILL.md/sha256
"3b6b1048cc7a0be31c31a6ebb8efe9efa9f935762014c410e82f8d4dbf83e737"
"3a36dc21cf4c6d95c4e777a885e25251e6aceea9eb6a29c734eb6828ae48cd67"
changed /files/skills~1content-discovery~1SKILL.md/size
4406
4433
changed /files/skills~1content-discovery~1references~1cross-skill-handoffs.md/sha256
"892f8e1bcfe0fae36bfcaa0bd05089e3c1076c8520e1066d40e6536958a24140"
"8b24a7bc577dbb4d47397a0f59ad90f17f8b2ec1f5a2278f4684ca9972faa8a6"
changed /files/skills~1content-discovery~1references~1cross-skill-handoffs.md/size
3535
3507
changed /files/skills~1content-discovery~1references~1hierarchy-navigation.md/sha256
"6cc5732844951274047786cb584bd3a8aad8febd750548f312334a6bbcf3e76a"
"2f708dcf59756c9c8d871aab6da60790207bd422d477addc2d79a7440516d820"
changed /files/skills~1content-discovery~1references~1hierarchy-navigation.md/size
5759
5630
added /files/skills~1podcast-hosting~1SKILL.md
Field was absent
{
"sha256": "1209277b827acbb29a2941b762e564644b45ebf88dc26288bcae572438b2c328",
"size": 5343
}added /files/skills~1podcast-hosting~1agents~1openai.yaml
Field was absent
{
"sha256": "65d0f15b026deb1d44d3d48be3db804c298c0e7fed9a6ccfc0e38cdb2dfe523a",
"size": 438
}changed /files/skills~1setup~1SKILL.md/sha256
"cbb22ffd043ecce208185c2d21595aa6b4aec736ed64376ea41a0b97709fcad4"
"eebcfdfe619456a89c9022ee77a465204346ea20a29de54258d38a2fd290f738"
changed /files/skills~1setup~1SKILL.md/size
6808
6864
changed /files/skills~1social-publishing~1SKILL.md/sha256
"32b57df8b4b8801db5e6ca8a9f3b1a0b1a5ed03393ddedadbdc3fbc79fb33492"
"3e469f1f689d4aa94ef8395ffd45a7070e2051e5197a05d1acff7b405c7433f3"
changed /files/skills~1social-publishing~1SKILL.md/size
5327
3545
changed /files/skills~1social-publishing~1agents~1openai.yaml/sha256
"06d23ae7425491bbfca0b12a8e7d3b8c59e29c6a14fa73270de83fe51b4e11d5"
"c90b3607117403cb98f91aca5078ea224d1f4d7703a02d370d52ceee886f8d01"
changed /files/skills~1social-publishing~1agents~1openai.yaml/size
498
489
changed /files/skills~1social-publishing~1references~1results-and-recovery.md/sha256
"37ba93f4c88cfa2f2182df89e234acdbabecb617c255e6e6d51e90d903f3f877"
"379ce87be9e834569ea2b1b0de9b9b5343935bf5e3531fa5b8a326ba59f7a35b"
changed /files/skills~1social-publishing~1references~1results-and-recovery.md/size
2365
4222
changed /files/skills~1social-publishing~1references~1scheduling-and-draft-export.md/sha256
"0967a739ff57bda775c5feb289f05bb764a9ae67c82335712376068bdb7e4146"
"64366be3dd790e65de63a0ceec4810493142e99aa6220c73828bf80c6abe875e"
changed /files/skills~1social-publishing~1references~1scheduling-and-draft-export.md/size
1935
2037
added /files/skills~1social-publishing~1references~1upload-status.md
Field was absent
{
"sha256": "abf28bc7d22877d02fee27c8e6e1087bd8cf4b4a640302bede582d84c8d7bee7",
"size": 1973
}changed /files/skills~1video-editing~1SKILL.md/sha256
"236283bc92ab461faa1913f37f0a51c627523ac29e23c196e2885052888e97ef"
"98f0764161ca1e49a6c7cb7c4284a4be8135c2e80a42a44fd24cb3c788665bde"
changed /files/skills~1video-editing~1SKILL.md/size
8506
8490
Full snapshot data
{
"files": {
".app.json": {
"sha256": "5208b4c7267d13d0ffff729c60d524567d239a1ee787e10d24ede3e1a4430c94",
"size": 101
},
".codex-plugin/plugin.json": {
"sha256": "21ba966d1f720fc80661f43b527e3c83af1c46b55374e74c0401be819f99c0ae",
"size": 12690
},
".mcp.json": {
"sha256": "30ff86c6f3d3b6532dfb4cdfec9682dca4cc8c6e86beef3529c99ed30b072cd4",
"size": 118
},
"CHANGELOG.md": {
"sha256": "4e8e8665e7e81652f363b178e71194041926c958049fd0525ce1fbea9270f1b7",
"size": 25751
},
"LICENSE": {
"sha256": "8790ba96ccfbe5b3ac265dc39d69292ff7c6db916b29ee077e830949e49da64a",
"size": 1075
},
"README.md": {
"sha256": "39d3c7bd8430844592ec597513b488a8afbdbf4b718b8ab5a5d54b8d1adc9a42",
"size": 4993
},
"SECURITY.md": {
"sha256": "57be735bae95ee34e6e1c84a042c569ce3bd9a34e91f0f066f79bcb5e228d3f2",
"size": 1749
},
"agents/openai.yaml": {
"sha256": "838e01831125eb9d06f65f209af0026d7bbc75c06638a9bc2e431726c734fce7",
"size": 285
},
"assets/logo.png": {
"sha256": "9dfe43ecfec98613587108cf9af176d6f32ee354145b4b2b1e6bc80b89772aa0",
"size": 8908
},
"docs/cursor-testing.md": {
"sha256": "287e3f4108c5f651337bd913fd3fd709ffc8308e50481ad6ebc1d232a73b1276",
"size": 1969
},
"skills/content-discovery/SKILL.md": {
"sha256": "3a36dc21cf4c6d95c4e777a885e25251e6aceea9eb6a29c734eb6828ae48cd67",
"size": 4433
},
"skills/content-discovery/agents/openai.yaml": {
"sha256": "4735db0277a6a7fddec4e9f514eb4c106316c135d69b7963bc98d165fd79c798",
"size": 521
},
"skills/content-discovery/references/cross-skill-handoffs.md": {
"sha256": "8b24a7bc577dbb4d47397a0f59ad90f17f8b2ec1f5a2278f4684ca9972faa8a6",
"size": 3507
},
"skills/content-discovery/references/hierarchy-navigation.md": {
"sha256": "2f708dcf59756c9c8d871aab6da60790207bd422d477addc2d79a7440516d820",
"size": 5630
},
"skills/content-discovery/references/search.md": {
"sha256": "d66388bee1eb00062ee184eb438b978b9c930b72da0827abd0cfff5b97d83deb",
"size": 3922
},
"skills/podcast-hosting/SKILL.md": {
"sha256": "1209277b827acbb29a2941b762e564644b45ebf88dc26288bcae572438b2c328",
"size": 5343
},
"skills/podcast-hosting/agents/openai.yaml": {
"sha256": "65d0f15b026deb1d44d3d48be3db804c298c0e7fed9a6ccfc0e38cdb2dfe523a",
"size": 438
},
"skills/setup/SKILL.md": {
"sha256": "eebcfdfe619456a89c9022ee77a465204346ea20a29de54258d38a2fd290f738",
"size": 6864
},
"skills/setup/agents/openai.yaml": {
"sha256": "822b6ef9df7b862de4475b6bd85b14d145ae93208a7bdafd39067e392dae9a1f",
"size": 530
},
"skills/social-publishing/SKILL.md": {
"sha256": "3e469f1f689d4aa94ef8395ffd45a7070e2051e5197a05d1acff7b405c7433f3",
"size": 3545
},
"skills/social-publishing/agents/openai.yaml": {
"sha256": "c90b3607117403cb98f91aca5078ea224d1f4d7703a02d370d52ceee886f8d01",
"size": 489
},
"skills/social-publishing/references/results-and-recovery.md": {
"sha256": "379ce87be9e834569ea2b1b0de9b9b5343935bf5e3531fa5b8a326ba59f7a35b",
"size": 4222
},
"skills/social-publishing/references/scheduling-and-draft-export.md": {
"sha256": "64366be3dd790e65de63a0ceec4810493142e99aa6220c73828bf80c6abe875e",
"size": 2037
},
"skills/social-publishing/references/upload-status.md": {
"sha256": "abf28bc7d22877d02fee27c8e6e1087bd8cf4b4a640302bede582d84c8d7bee7",
"size": 1973
},
"skills/video-editing/SKILL.md": {
"sha256": "98f0764161ca1e49a6c7cb7c4284a4be8135c2e80a42a44fd24cb3c788665bde",
"size": 8490
},
"skills/video-editing/agents/openai.yaml": {
"sha256": "d444bf957a3f6ed2174e1320f15610a7abb76dee670cc2488022121f5660d917",
"size": 514
},
"skills/video-editing/references/captions-and-brand.md": {
"sha256": "1c784b10d3924a49c4d91a253bbc03661c3ade3876cbfba596232333d90ce178",
"size": 3781
},
"skills/video-editing/references/cuts-and-audio.md": {
"sha256": "7f73b33da81628ad8c1b04c9416c044637406f979980e5063db6ec711d3f5ba9",
"size": 4906
},
"skills/video-editing/references/edit-lifecycle.md": {
"sha256": "232fccf158f71fe450481bf3f8ddf98da85cc533879c21eaf94966a357852d22",
"size": 5631
},
"skills/video-editing/references/transcript-editing.md": {
"sha256": "e86a50b584d66724dbb08117459672a7aca4566143682b15d107c2dece29186c",
"size": 4484
},
"skills/video-editing/references/visuals-and-media.md": {
"sha256": "9111069d7c322e00e35e95040c7a641951b9a1e8ede48597378d2caeadae5728",
"size": 5098
}
}
}SHA-256 of public snapshot: 6e0490b4cf5076089d234d048d7dfd7a5d39c20b5aa8b78d674e6a1fc630ec4f