Skip to content

fix: recover timestamp-only legacy claims - #313

Merged
Joncallim merged 1 commit into
codex/pr198-f4-task-event-publisher-reusefrom
codex/pr198-f5-legacy-claim-recovery
Jul 30, 2026
Merged

fix: recover timestamp-only legacy claims#313
Joncallim merged 1 commit into
codex/pr198-f4-task-event-publisher-reusefrom
codex/pr198-f5-legacy-claim-recovery

Conversation

@Joncallim

@Joncallim Joncallim commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Source Issue

Issue: #179

What changed

The legacy processing-list recovery branch now accepts the one historic claim shape: a positive Redis-authored timestamp with no suffix. It validates that timestamp strictly, uses it to decide freshness, and requeues stale legacy work through the existing atomic conversion.

Current occurrence envelopes still require the full timestamp:UUID marker. This closes PR #198 finding PRRT_kwDOS9dWe86VJqj2 without broadening current ownership parsing.

Safety boundary

  • zero, leading-zero, fractional, non-numeric, unsafe, future, and timestamp-plus-suffix legacy values fail closed
  • current-envelope marker validation is unchanged
  • stale conversion is idempotent through the existing exact-source Lua transition
  • no new queue key, receipt, schema, or diagnostic payload was added

Base and scope

  • Base branch: codex/pr198-f4-task-event-publisher-reuse
  • Exact base SHA: 5f18dee092c956f84c2a6b97767e89d2dea54271
  • Exact head SHA: 7b7dc990b7c1c1e90cb627011ade259ab5bc4957
  • Files: queue implementation and the two existing focused queue proof files

Validation

  • Queue source contract: 31 passed
  • Disposable real Redis proof: 3/3 passed
  • Integrated unit suite: 1,738 passed; 16 service-gated tests excluded/skipped by the repository command
  • Changed-file ESLint: passed
  • TypeScript: passed
  • Production build: passed
  • git diff --check: passed
  • Hosted Web CI run 30560042976, job 90930397454: passed with 1,754/1,754 units, 16/16 S4 PostgreSQL, Redis 3/3, Redis ACL 3/3, cross-sink 1/1, S3 16/16, ingress 1/1, and E2E 17 passed
  • Hosted Contract run 30560043412, job 90930399038: passed
  • GitGuardian: passed

Stack

This is the top draft child. The required progressive merge order is F5 → F4 → F3 → #310#309#198.

@Joncallim
Joncallim force-pushed the codex/pr198-f4-task-event-publisher-reuse branch from 5248f3c to 5f18dee Compare July 30, 2026 16:07
@Joncallim
Joncallim force-pushed the codex/pr198-f5-legacy-claim-recovery branch from ad8cf59 to 7b7dc99 Compare July 30, 2026 16:07
@Joncallim
Joncallim marked this pull request as ready for review July 30, 2026 16:37
@Joncallim
Joncallim merged commit c1d3961 into codex/pr198-f4-task-event-publisher-reuse Jul 30, 2026
5 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7b7dc990b7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread web/worker/queue.ts
Comment on lines +688 to 690
local timestamp = legacy_marker_timestamp(current_marker, now_ms)
if not timestamp then
error('forge_queue_claim_marker_invalid')

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve nonce-bearing legacy claim markers

When an upgrade leaves an in-flight raw job claimed by the queue implementation introduced in 7245157, its claim hash contains the valid historical timestamp:UUID marker. The previous valid_marker path recovered that job, but legacy_marker_timestamp now rejects it, causing every recovery sweep to report Queue legacy occurrence recovery failed while the job remains permanently stranded in the processing list. Accept both strictly validated historical marker formats and extract the timestamp from either.

Useful? React with 👍 / 👎.

@Joncallim
Joncallim deleted the codex/pr198-f5-legacy-claim-recovery branch August 2, 2026 18:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant