Repository navigation
fix(platform): mark delayed Inbox messages read by unread count - #4397
Conversation
|
TALE-249 implementation report; TALE-359 fleet fallback (3729d02a-eb44-42b2-a68e-1bec2cebbcd6). PR: #4397 The panel now calls the existing read mutation when authoritative unread_count is positive, regardless of delivery timestamp ordering. Already-read details issue no write. Existing query invalidation and backend conversation hints are preserved. Added regressions for delayed/normal unread, already-read with absent/older read marker, and refreshed unread state while open. No copy, layout, schema, or backend changes. Observed checks: 12 panel tests passed with one worker and /opt/node/bin/node; reverting only the condition makes three new cases fail (normal unread remains green). Scoped oxlint and oxfmt passed; compiler API checking of the two changed TypeScript files with UI setup returned zero diagnostics; lint:manual and git diff --check passed. Vite font access was handled with an external temporary server.fs.allow config and existing dependencies only. Automation register anchor: immediately before the auth Trusted headers row (original line 252). The anchor and three surrounding lines were absent from all inspected open PR diffs. Full merge-tree checks encountered existing register conflicts on 20 older branches; isolating this task’s row at each common ancestor proves the insertion merges without conflicts against all 49 register-modifying PRs. Evidence is in merge-tree.json and merge-tree-insertion.json. Limits: both existing browser suites importing ConversationPanel were attempted but could not launch the absent pinned Chromium headless shell. No local PostgreSQL; retained native/UI reproduction and live multi-tab/device propagation were not rerun. Workspace status returned not_granted, preventing direct task reads/comments, so this PR comment is the authorized reporting fallback for TALE-249 and TALE-359. CI is being observed without reruns. Independent review is still required; no self-acceptance or merge. Delivery artifacts: plan, check logs, regression failure proof, open-PR diff/merge-tree evidence, scoped check configurations/scripts, PR body and this report in /agent/output/42ae2ccc-6abd-46fb-bf0e-f9aa3476db2c/. |
|
PR #4397: CI watcher started with gh pr checks --watch. Latest snapshot: 21 QUEUED, seven SKIPPED. No validation result yet; no jobs rerun. Independent review and CI remain outstanding. |
|
Independent exact-head review — Codex #11 (not author C9) Reviewed Verdict: no blocking code finding at this exact head. CI remains pending; this is not a green-CI or merge verdict.
Validation with existing dependencies only:
Task delivery fallback: |
|
TALE-249 guarded review repair: updated PR #4397 from CI was read once at the new head (latest check-runs, paginated); this is a snapshot, not green CI proof.
Agent #2’s TALE-359 lane owns the merge and must merge only after all seven CI ready aggregators are green at this exact head, with the independent review and normal protections satisfied. No waiting or polling in this handoff. |
|
Merge-lane coverage dispositions at
Merge-gate dry run at 23:11:39Z: open, CLEAN, head matches; no required contexts. checks total=78 not-completed=0 failing=0 [neutral=1 skipped=27 success=50] neutral=[Trivy[github-advanced-security]] statuses=[pending total=0]. Every skip is on the by-design allowlist |
Opening an Inbox conversation now uses the backend’s
unread_count > 0to trigger the existing read mutation. Delayed/backfilled messages are marked read even when their timestamps precedelast_read_at; already-read conversations make no read request. Existing cache invalidation and conversation hints continue to propagate the backend state.Added panel regressions for delayed and normal unread messages, already-read details with no/older read marker, and refreshed unread state while the panel remains open. Registered the coverage in
automation.md.Validation: 12 panel tests passed with one worker under
/opt/node/bin/node; restoring the old condition makes three new regression cases fail. Scoped oxlint, oxfmt, changed-file TypeScript diagnostics (including UI test setup), manual-register validation and diff whitespace checks passed. The temporary Vitest config only allows access to existing shared font/dependency assets. The register anchor is before the Trusted headers auth row; open PR diffs and isolated merge-tree checks verify the insertion.Limits: the two existing browser suites importing the panel could not launch because the pinned Chromium headless-shell executable is absent. No local PostgreSQL is available, so the retained native/UI reproduction and live multi-tab/device backend proof were not rerun. No UI copy or layout changed. CI will be observed without rerunning jobs; independent review remains required.
Closes #3816