Repository navigation
Conversation
Authenticated draft endpoint, shared cache, bounded publication retry lifecycle and concurrency guards. Codex-Thread: 01a15b08-d4ad-7e72-8725-b3ea1fde71ce
Keep each layer based on the updated predecessor without rewriting history. Codex-Thread: 01a15b08-d4ad-7e72-8725-b3ea1fde71ce
Keep the layer based on its updated predecessor without rewriting history. Codex-Thread: 01a15b08-d4ad-7e72-8725-b3ea1fde71ce
This was referenced Oct 26, 2026
Codex-Thread: 01a15b08-d4ad-7e72-8725-b3ea1fde71ce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Queues authenticated draft previews through the existing URL-hash cache. Publication reuses fetched metadata and grants transient draft failures one bounded retry cycle.
Stack 4/6, split from closed #891. Depends on
feat/external-gif-playback. This PR is in the fork to keep the review diff limited to this layer; open it upstream after its dependency lands.Changes
Diff against this PR's base: 19 files, +1,110/-35. 72% of changed lines are tests, fixtures, or test support.
Visual explanation
flowchart TD D["Authenticated, validated draft URL"] --> C{"Shared URL-hash cache"} C -- Hit --> R["Return cached or pending preview"] C -- Miss --> N["Create shared row"] N --> Q["Queue UnfurlLink for this row"] Q --> W["Unique job and serialized worker"] W --> F["Guarded fetch and metadata completion"] F --> R R --> P["Publication reuses the same row"] P -- Recorded transient failure --> T["One atomic publication retry"] T --> QStack and merge order
Layers 2–6 target their immediate predecessor in the fork. Submit them upstream in order after their dependency lands; each review diff contains only its layer.
Validation
PreviewLinknow lives underApp\Contracts\Services(namespace-only follow-up, headd4daa17f998a820dd163d10f1b1382517dbc1430). Focused fetching/verification suites and the final stack’s required checks passed after the move; the earlier per-layer results and implementation review below remain the baseline.Container checks passed on PHP 8.5.12: 4,650 PHP tests / 25,764 assertions, 100% PHP coverage and type coverage, 223 Node tests, and 631 component tests across 50 files. PHPStan, TypeScript, lint, and production build pass (19 lint warnings, no errors).
Lint: Pint, Rector
--dry-run --debug(same rules, serial execution), and Bun lint. Other commands:composer test:types,composer test:type-coverage, full parallel Pest CI coverage at exactly 100%,bun run test:unit, andbun run build.No UI or mobile interaction changes in this layer.
Independent review
Independent code review: PASS, base
b8d3f368a56be51feb0d414d0b6a821565b5d34a, head5277cd0fc4549392fb4899e830f7505df7664d52. Visual review is inapplicable to this backend/tooling-only layer.Limitations
Hosted CI has not been verified for this new PR. Workers hold the row lock during DNS/HTTP to serialize fetches. Releasing it safely needs a durable claim and crash recovery; synchronous DNS remains outside the HTTP deadline. Selected draft URLs and metadata remain in the shared cache even if never published. The URL is sent as a query parameter, so deployment access logs may contain it; host-only logging applies to the structured application audit line.
Codex-Thread: 01a15b08-d4ad-7e72-8725-b3ea1fde71ce