Sign outbound ActivityPub follow actor retrieval #25
No reviewers
Labels
No labels
bug
priority:high
status:active
status:inprogress
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
erik/erikvancraddock.com!25
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/task-b5f8d008-signed-actor-fetch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Fix
task-b5f8d008: sign outbound Follow target actor GETs with Fedify using the website's configured primary actor, persisted keys, and existing compatibleacct:identity. Hachyderm's signed-fetch requirement previously caused unsigned resolution to fail with HTTP 401, exposed through the API as HTTP 422.SlugKit boundary
The SlugKit template resolver is identical to the website's pre-fix resolver.
@evcraddock/slug-federation0.1.0 does not provide actor retrieval, and its sender helper's#multikey-1identity is not interchangeable with the site-localacct:compatibility wrapper. No package release is needed here because Fedify already supplies signing. Consider a reusable constrained-fetch helper accepting explicit signer/fetcher/policy, leaving actor/key/origin/persistence ownership site-local.Created required linked SlugKit follow-up task-6e0ed12f — Port signed follow resolution to the SlugKit template, including root cause, solution, affected code, library assessment, and verification evidence. Linked from the website task and
docs/activitypub-signed-follow-resolution.md.Validation
npm ci:npm test— 556 passed across 55 files.npm run test:ci— 480 passed across 48 files.npm run lint,npm run typecheck,npm run build, andgit diff --checkpassed.Acceptance and approval gates
Controlled tests observe pending persistence and one queued Follow from the configured website actor. This is not remote acceptance. No live Follow, production inspection/change, release, deployment, key rotation, or restart was performed. Merge, publishing, deployment, live verification, and task closure remain subject to their explicit approval gates. This PR does not close the task.
Review update
erik/erikvancraddock.com#25— open; reviewed headcda377866b21673e5af6ca241ac48c565ee5182cfortask-b5f8d008.acct:signature identity into actor GETs through Fedify, leaves WebFinger unsigned, preserves the constrained fetch wrapper, sanitizes retrieval errors, and adds meaningful signature-verification and failure tests. No code correctness blocker was identified in the reviewed diff and directly relevant files.cda377866b(provided evidence, not independently rerun). Review was read-only; no broad checks, live requests, Follow submission, merge, publishing or deployment occurred.Acceptance criteria
src/api/routes/following.tsinjects the lazy signer;src/federation/keys.tsreads existing primary-actor keys without generating them;src/following/following.tssigns inside the existing HTTPS/private-host, timeout, size and redirect restrictions. URL credentials are rejected; transport/signing errors are sanitized; no unsigned retry is introduced.task-6e0ed12fis created and linked from the bug and documentation. The task's existing update records root cause, solution, affected template code, local verification evidence and the library-boundary assessment. No additional SlugKit implementation is part of this PR.Blocking issues: 2
Warnings: 1
Final verdict
changes-requested: 5 criteria total; 3 met, 1 partial, 1 not-evident; 2 not fully met (
criteria_missing=2). The shared contract requires this verdict for any not-evident criterion. No implementation change is prescribed by this review; operational acceptance must remain pending until separately authorized work supplies evidence. No implementation approval or merge authorization is requested or granted.