refactor(identity): establish canonical ID foundation#258
Draft
chhoumann wants to merge 3 commits into
Draft
Conversation
Deploying podnotes with
|
| Latest commit: |
e8f7848
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://7496ea8e.podnotes.pages.dev |
| Branch Preview URL: | https://refactor-canonical-identifie.podnotes.pages.dev |
a5472f5 to
f299477
Compare
ee2f13b to
e8f7848
Compare
f299477 to
d7deb9d
Compare
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.
Stack
This draft is stacked on #257 (
feat/secret-storage), which is stacked on #256. Review this PR as the canonical identity foundation only. It must not merge before its base.Summary
@noble/hashespackage.podcast:guidis retained as evidence but never used to merge feeds.urlfallback to the feed URL.PodcastFeedandEpisodewithout changing existing public fields.Deliberate non-goals
This PR does not bump the data schema, re-key any persisted map, change
getEpisodeKey, alter queue/progress/download behavior, bump the feed cache, or change URI/API methods. The next stacked PR will perform the schema-v3 and consumer cutover atomically so no mixed title/ID key model can ship.Identity and security invariants
pnf1_orpne1_plus the full SHA-256 base64url digest and are always 48 characters.Verification
All verification ran under Node 22.20.0.
npm cinpm run lintnpm run format:checknpm run typechecknpm run buildnpm test- 75 files, 1,021 tests, zero Svelte warnings/errorsuv run --with-requirements docs/requirements.txt mkdocs build -f docs/mkdocs.yml -d sitenpm audit --audit-level=low- zero vulnerabilitiesProduction bundle impact against the exact base: +10,147 bytes raw and +4,115 bytes gzip.
Risk and migration
There is no migration in this PR. New fields are additive and existing schema/map/URI behavior stays intact. The main review surface is identity determinism, ambiguity handling, hostile-input validation, and reconciliation correctness.