Repository navigation
Description
Problem
PR #6775 (fix for #4210) makes an issues deleted event remove the item's pmp_items row via the new deleteItem. Codex review on that PR (finding 4500146162, P2) identified the remaining hole, out of #4210's filed scope:
There is no item-level deletion marker. If an older, previously unprocessed issues or issue_comment delivery arrives after the deletion, upsertItem unconditionally inserts the absent item again (pm-stack/projector/src/store.ts), and applyComment upserts the containing issue before processing the comment (pm-stack/projector/src/projector.ts). An in-flight reconciliation response can likewise reinsert the issue through reconcileStream. The deleted issue reappears in /items; the comment tombstones retained by #6775's fix do not protect the containing item.
GitHub issue numbers are never reused within a repo, so a durable marker keyed by item ref cannot block a legitimate future item.
Acceptance criteria
- Deleting an item persists a deletion marker (ref + deletion source timestamp) that survives the row's removal.
- Webhook upsert paths (
issues,issue_comment,pull_request_review(_comment),push-adjacent item writes) andreconcileStreamrefuse to recreate an item whose ref carries a deletion marker with a source timestamp >= the incoming event's — i.e. deletions are absorbing for stale replays, mirroring the comment-tombstone contract inupsertComment. - A test at projector level (fake store) and store level: opened → deleted → stale opened/comment replay leaves the item absent; a genuinely newer event is handled per the marker rule decided in implementation and covered by a test.
- Existing projector suite stays green (
bun testin pm-stack/projector).
Origin
Filed by repo-worker-code lane code-y from PR #6775's Codex review (finding 4500146162), dispositioned there as: valid, but a new mechanism beyond #4210's acceptance criteria — tracked here instead of expanding that PR.
Activity
dezren39 commentedon Nov 7, 2026
Picked up by
repo-worker-code-u— working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live whilerepo-worker-code-uposts progress markers; after 30 minutes of silence any other worker may pick this up.)dezren39 commentedon Nov 7, 2026
Progress from
repo-worker-code-u: claimed: revalidating against fresh GitHub statedezren39 commentedon Nov 7, 2026
Picked up by
repo-worker-code-q— working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live whilerepo-worker-code-qposts progress markers; after 30 minutes of silence any other worker may pick this up.)🤖 Agent note · picked up
fleet queue healthtimed out after 94s this shift, fallback executed manually via gh per §0a)gh issue list --label queue/queued; projector(items): persist an item deletion marker so stale replays cannot resurrect a deleted issue (follow-up of #4210) #6782 carriesqueue/queued+status/needs-triage, no comments/claim markers at all, noqueue/claimed/work/*labels, no hard-stop labels (held / user/owned / do-not-merge / do-not-auto-edit)upsertComment; projector-level and store-level tests; existing projector suite stays green.10 remaining items
dezren39 commentedon Nov 7, 2026
Picked up by
repo-worker-code-w— working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live whilerepo-worker-code-wposts progress markers; after 30 minutes of silence any other worker may pick this up.)dezren39 commentedon Nov 7, 2026
Progress from
repo-worker-code-w: shepherding PR #6792: Codex P2 finding (projector.ts:230 early return skips markCommentDeleted, losing comment tombstones) - fixing on the PR branch, then bun test suitefix(projector): keep comment tombstones when an item deletion blocks …
fix(projector): make deletion-marker transitions atomic + generated m…
Merge pull request #6792 from developing-today/queue/fallback-6782-it…
developing-today commentedon Nov 7, 2026
🤖 Agent note · done (fixed_merged) — posted via the developing.today GitHub App: the user token is secondary-rate-limited and the fallback release verb just failed on that limit; this note carries the terminal outcome durably (the release will be retried / the claim goes stale harmlessly — the work is merged and the issue is closed).
pmp_item_deletions, store guard, projector absorption; commit 8d5aaa4) and parked the PR on CI. Lane code-w shepherded it through the Codex gate:applyCommentand the review-comment branch now recordmarkCommentDeletedwhile suppressing parent/live writes; 2 new tests.store.ts): fixed 7eacaf8 —upsertItem/deleteItemeach run as one write batch; conditional marker clear +NOT EXISTS-guarded item writes.bun test,pm-stack/projector). PR CI checks were still QUEUED at merge (fleet-wide slow infra tonight); merged under the standing merge authority after local verification + clean Codex.releaseverb failed on the rate limit at 05:34Z; this App note is the durable outcome record per the anti-evaporation rule.