Repository navigation
docs(pnpr): authorize publication retries, clarify note URLs, store-enforced tombstones - #67
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Publication fields pnpr/text/0000-release-notes.md |
The publication id is the catalog generation that committed it. Clients locate the note using the absolute-path url, including the pnpr serving prefix. The org, id, and name fields identify the publication for display. |
Metadata storage invariant
| Layer / File(s) | Summary |
|---|---|
Tombstone and cache invariant pnpr/text/0000-sql-metadata-storage.md |
The metadata store retains identities of removed versions and rejects their reacceptance, including during interrupted-publication recovery. The per-version cache key and rendering behavior remain unchanged. |
Publication retry authorization
| Layer / File(s) | Summary |
|---|---|
Authorized retry outcomes pnpr/text/0000-atomic-workspace-publication.md |
A matching retry returns its recorded outcome only after current publication authorization. Reusing the key for a different request remains a catalog-scoped conflict. A publisher whose permission was revoked must use read-authorized routes to learn the outcome. |
Estimated code review effort: 2 (Simple) | ~8 minutes
Possibly related PRs
- pnpm/rfcs#63: Defines the publication-note URL rule that this change also applies to publication entries.
- pnpm/rfcs#60: Defines matching-retry outcomes, whose authorization rule this change updates.
- pnpm/rfcs#64: Defines the retry authorization rule that this change reverses.
Merge Risk: 
Minimal · up to f4490
-
The clarifications have no identified merge-blocking risk.
Pre-merge checks: 
5
-
Full details: Docstring Coverage
-
Explanation
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)
-
Finishing Touches
-
Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
A rabbit reads the notes at dawn,
The path and generation now are drawn.
Removed versions keep their names,
A matching retry checks its claims.
I hop past keys that do not align,
And nibble clover by the line.
PR Summary by QodoClarify publication note URLs and tombstone enforcement
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
A principal whose publish permission was revoked after the commit reads the outcome instead of replaying it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Recovery of an interrupted publication bypasses the publish path's tombstone check, so the store itself must refuse a removed version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Clarifications found while implementing the merged RFCs in pnpm/pnpm#17553, pnpm/pnpm#17557 and pnpm/pnpm#17558:
urlincludes any path prefix pnpr is served under. A client resolves it against the server origin and finds the note byurlalone;org,idandnameonly identify the publication for display. The example'sidis now a catalog generation (4182), which is what a publication id is.Written by an agent (Claude Code, claude-opus-5-5).
🤖 Generated with Claude Code
Summary by CodeRabbit