Repository navigation
Conversation
There was a problem hiding this comment.
Code Review
This pull request updates the documentation and release notes for Harper v5.3.0 to reflect changes in subscription catch-up behavior, where table subscriptions and MQTT durable-session reconnects now skip superseded record updates by default. It documents the new includeSuperseded and rawEvents subscription options. The review feedback recommends avoiding the use of the <VersionBadge> component inline within table cells, suggesting plain text instead to maintain consistent formatting.
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-679 This preview will update automatically when you push new commits. |
1 similar comment
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-679 This preview will update automatically when you push new commits. |
d0ffcb1 to
910f8d3
Compare
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-679 This preview will update automatically when you push new commits. |
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-679 This preview will update automatically when you push new commits. |
Rebase conflict resolution merged the section without the blank line prettier requires before a heading. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Dispatch-Task: pr-maint-92e4b54bf5b8178a01b68ecdd48dc2b0
…QoS 1/2 The Upgrade Notes bullet said durable MQTT subscriptions unconditionally receive every publication, but core only sets includeSuperseded for durable QoS 1/2 sessions -- QoS 0 durable subscriptions get current-state delivery like everything else. That contradicted the new Subscription Catch-up section landed just below it. Cross-model pre-push review caught the self-contradiction (harper-domain adjudication, finding 5.3.md:27). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Dispatch-Task: pr-maint-92e4b54bf5b8178a01b68ecdd48dc2b0
Rebase conflict resolution introduced ragged column widths when merging the databaseGeneration row into the SubscriptionRequest options table; prettier re-pads it. Dispatch-Task: pr-maint-92e4b54bf5b8178a01b68ecdd48dc2b0 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
d49f235 to
2a6c18b
Compare
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-679 This preview will update automatically when you push new commits. |
…label
Post-push review: 5.3's durable QoS 1/2 claim ("preserving intermediate
retained publications") overclaimed once 5.4's release notes documented
that a saved position could still skip an unacknowledged message sharing
a transaction with one already acknowledged — fixed only in 5.4. Add that
caveat with a link to the 5.4 fix. Also fix the link label mismatch
("Subscription options and migration" -> "Superseded record updates") to
match its target heading.
Dispatch-Task: pr-maint-92e4b54bf5b8178a01b68ecdd48dc2b0
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-679 This preview will update automatically when you push new commits. |
….3's actual behavior The Upgrade Notes bullet repeated the same "still receive every retained publication" overclaim already scoped in the Subscription Catch-up section (release-notes/v5-lincoln/5.3.md:85) — caught by delta pre-push review after that fix. Dispatch-Task: pr-maint-92e4b54bf5b8178a01b68ecdd48dc2b0 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-679 This preview will update automatically when you push new commits. |
Document the v5.3 subscription default: catch-up suppresses record mutations whose version does not match the current stored primary entry, consistently with live delivery. Explain the
includeSupersededopt-in, retained-history limits, and the explicit opt-in that preserves intermediate publications for durable MQTT QoS 1/2 subscriptions.Companion implementation: Skip superseded subscription updates during catch-up.
For the human reviewer
previousCountretains its bounded scan and does not promise a complete history.mainunderneath this branch: rebasing mergeddatabaseGeneration/resumeVerified(Resuming from a position) with this PR'sincludeSupersededtable rows and section, in version order (5.3.0 before 5.4.0). > ❓ Your call: theincludeSupersededmigration example sits directly above the new position-check section but doesn't wait onresumeVerifiedor passdatabaseGeneration— left as-is since it demonstrates a different, independent option (version filtering, not position verification); flagged by review as a nit, not wrong.Post-review delta: four changed lines in the MQTT reference and release notes, not re-reviewed; these narrowly resolve the reviewed ordering contradiction and migration-warning omissions. Further delta after the rebase above: two lines in
release-notes/v5-lincoln/5.3.mdnarrowed an overclaim ("durable MQTT QoS 1/2 still receive every retained publication") that a newly-merged 5.4 release note (documenting a same-transaction acknowledgement fix) revealed as no longer accurate for 5.3.x, plus a link-label fix.Changes
reference/resources/resource-api.mddocuments option defaults and explicit overrides; matching tombstones, missing-primary and publication-version behavior; and historical reconstruction and the awaited opt-in example. Shared cursors and accepted-event history limits are described above.reference/mqtt/overview.mddistinguishes durable QoS 1/2 historical delivery from ordinary version-filtered subscriptions, including distributed ordering and audit retention.release-notes/v5-lincoln/5.3.mdadds the migration warning covering superseded updates, publication-advanced metadata, and removed records/tombstones, plus the durable MQTT exception — now scoped to exclude the 5.3 same-transaction ack gap fixed in 5.4.Verification
npm run buildpassed, generating the static site with the new links and version badges. Later corrections change prose only.npm run format:write,npm run format:check, andgit diff --checkpassed.cc5524841259.mainafter it added position-checked resume (databaseGeneration/resumeVerified) to the same two reference files; resolved three real conflicts by merging both features rather than picking a side (see item 4 above), then ran a fresh full outside review plus two delta rounds, converging with no remaining in-scope actionable findings. The companion core change tracks runtime behavior and MQTT regression tests.Related PRs: #683 overlaps, #691 overlaps, #704 overlaps, #688 independent, #700 independent, #701 independent, #699 independent, #693 independent, #686 independent, #696 independent, #692 independent, #685 independent, #682 independent
Complexity: medium
Origin — the dispatch brief this PR was written from
Document consistent subscription catch-up and live delivery
Maintain #679 (Document consistent subscription catch-up and live delivery) on branch kris/subscription-superseded. Read the current PR head, mergeability, and latest check runs before acting; the dispatch observation may be stale. First read the remote head for refs/heads/kris/subscription-superseded without updating local refs and require it to equal this task's observed head d0ffcb1; if it differs, stop with needs-input because remote history changed after dispatch. Then fetch only refs/heads/main from origin into refs/remotes/origin/main. If Git reports a paused rebase for this task's exact generation branch, require that rebase's recorded original head to equal d0ffcb1 and its recorded onto commit to equal the fetched origin/main tip; stop with needs-input on either mismatch. Only then resume it without repeating the local-HEAD ancestry check or starting another rebase. Otherwise record the remote SHA, verify it is an ancestor of local HEAD, and rebase onto the fetched base. If Context carries companion instructions, follow them exactly for every named gitlink; they override ordinary conflict handling. Preserve both sides' intent for every other conflict. Stop with needs-input on semantic conflicts. Force-with-lease is authorized only for this rebase. Immediately before pushing, re-read the PR's base ref and body plus every companion PR head/state named in Context. The base must still be main, and the declarations and submodule bindings must still match Context. If an open companion advanced, update its named gitlink to the new exact head and rerun relevant tests. If it merged, point the named gitlink at the companion repository's current default-branch tip after verifying that tip contains the merge, then rerun relevant tests. If it closed without merging, stop with needs-input and do not publish its abandoned head. If the base, declaration, binding or any other companion state changed ambiguously, stop with needs-input. Then push the rebased head with
git push --force-with-lease=refs/heads/kris/subscription-superseded:EXPECTED_HEAD_SHA origin HEAD:refs/heads/kris/subscription-superseded, substituting the recorded SHA. If the remote head changes, stop with needs-input; never overwrite intervening remote work. Do this before evaluating CI. Then inspect CI for the resulting current PR head, not old-head failures. Wait for relevant pending checks, diagnose remaining failures, fix them, run relevant tests, and push in THIS task. Do not create a separate CI-fix task. Stop with needs-input for judgment calls or an unavailable CI result; report exactly what was verified. No merge is authorized.Dispatch: task
pr-maint-92e4b54bf5b8178a01b68ecdd48dc2b0· queued by automation · ran by claude/sonnet/high · worker kzyp-xps-1Review-Coverage: authored=claude; ran=codex,gemini; adjudicated=domain; declined=cursor-grok,cursor-composer,cursor-kimi,cursor-muse; rounds=6; full=2 @ d0464bd
Review-Attention: skim ~2m (decisions: publication-suppression-as-documented-rule, carve-out-placement) @ d0464bd