transitPR #225head 6f6de1ebase 11f8787commits 2Ready / LGTM

PR #225 — Fix T-1800: refresh open task-detail comments

Independent review of exact head 6f6de1ee78cefd4910c519a46ffdfb64bae480f0 against exact base 11f8787a9e0602d68875fb383fd8f5e91399885a. The local worktree is clean and the base is the candidate’s merge base.

Verdict

Ready / LGTM

No findings. No qualifying correctness, security, performance, or maintainability issue was found in the exact merge diff.

Exact-head health

  • CI run 30919784223: success, pull-request event, exact head 6f6de1e.
  • GitHub GraphQL returned zero unresolved review threads at that head.
  • Fresh local exact-head validation: make lint, make test-quick, and make build all passed.

Semantic equivalence after rebase

CheckResult
Reviewed implementation97c46af0fbc467ecaea49da78cbf8041cf887ab3 over ddfcc7a
Rebased implementation6f6de1ee78cefd4910c519a46ffdfb64bae480f0 over 11f8787a
git range-diffThe descriptor-unification commit is an exact = match. The refresh commit differs only in the contextual CHANGELOG.md hunk created by the newer base.
Non-changelog diff identitygit diff --binary … -- . ':(exclude)CHANGELOG.md' compared byte-for-byte IDENTICAL. Both stable patch IDs are a098f7e1b8d1c863b244f99697371257c07495bb.
Rebase contentsThe base adds T-1628 and T-1657 work (including their tests/reports) plus its own changelog entry. The exact T-1800 merge diff modifies only its six documented paths; no T-1628/T-1657 behavior is introduced by this PR.
Patch hygienegit diff --check is clean for both the reviewed and rebased ranges.

Implementation review

Task-scoped reactive query. TaskDetailView initializes @Query with CommentService.descriptor(for: task.id). The observed result is passed to CommentsSection and to the Share export, so visible comments and exported text use the same current collection.
CloudKit-safe relation and ordering. The shared descriptor queries the optional child relation with $0.task?.id == taskID, not the optional task-to-many relationship. It sorts forward by creationDate, then id, preserving deterministic equal-timestamp output. fetchComments(for:) uses this same descriptor, preventing service/UI drift.
Mutation freshness. The child view receives immutable query output and retains only mutation actions. Manual reloads were removed, eliminating snapshot divergence after local add/delete and allowing the parent query to reflect MCP mutations in the shared model context.

Regression coverage

ShareTextTests.taskScopedCommentsReflectExternalInsertionDeletionAndKeepShareCurrent directly exercises the descriptor installed by the view. It proves all of the following:

Validation caveat

Baseline-equivalent UI failures, not a T-1800 blocker. The previously completed repeated audit recorded the same selected failures at the same failure points in two exact-base ddfcc7a runs and the same-state reviewed candidate 97c46af run: TransitUITests.testClearAll(), TransitUITests.testEditViewPreservesTaskMilestone(), and DataMaintenanceUITests.testDataMaintenanceGoldenPath(). The non-changelog implementation is byte-identical after rebase, so this evidence remains applicable to 6f6de1e. It is a residual validation caveat, not a candidate-specific failure.
Conclusion. LGTM — Ready. The exact rebased head preserves the reviewed implementation, safely observes task comments through one shared descriptor, maintains stable filtering and ordering, and is covered for external-style insertion, deletion, task isolation, and Share freshness. No source was edited, pushed, or merged during this review.